Adds MIT-SHM AttachFd and CreateSegment requests

Passes shared memory segments by file descriptor, AttachFd passes from
client to server, CreateSegment passes from server to client.

Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Keith Packard 2013-01-17 13:48:15 -08:00
parent 18515392d3
commit be14835635
2 changed files with 43 additions and 1 deletions

2
shm.h
View file

@ -32,7 +32,7 @@ in this Software without prior written authorization from The Open Group.
#define SHMNAME "MIT-SHM"
#define SHM_MAJOR_VERSION 1 /* current version numbers */
#define SHM_MINOR_VERSION 1
#define SHM_MINOR_VERSION 2
#define ShmCompletion 0
#define ShmNumberEvents (ShmCompletion + 1)

View file

@ -43,6 +43,8 @@ in this Software without prior written authorization from The Open Group.
#define X_ShmPutImage 3
#define X_ShmGetImage 4
#define X_ShmCreatePixmap 5
#define X_ShmAttachFd 6
#define X_ShmCreateSegment 7
typedef struct _ShmQueryVersion {
CARD8 reqType; /* always ShmReqCode */
@ -178,6 +180,46 @@ typedef struct _ShmCompletion {
} xShmCompletionEvent;
#define sz_xShmCompletionEvent 32
/* Version 1.2 additions */
typedef struct _ShmAttachFd {
CARD8 reqType; /* always ShmReqCode */
CARD8 shmReqType; /* always X_ShmAttachFd */
CARD16 length B16;
ShmSeg shmseg B32;
BOOL readOnly;
BYTE pad0;
CARD16 pad1 B16;
} xShmAttachFdReq;
/* File descriptor is passed with this request */
#define sz_xShmAttachFdReq 12
typedef struct _ShmCreateSegment {
CARD8 reqType; /* always ShmReqCode */
CARD8 shmReqType; /* always X_ShmAttachFd */
CARD16 length B16;
ShmSeg shmseg B32;
CARD32 size B32;
BOOL readOnly;
BYTE pad0;
CARD16 pad1 B16;
} xShmCreateSegmentReq;
#define sz_xShmCreateSegmentReq 16
typedef struct {
CARD8 type; /* must be X_Reply */
CARD8 nfd; /* must be 1 */
CARD16 sequenceNumber B16; /* last sequence number */
CARD32 length B32; /* 0 */
CARD32 pad2 B32; /* unused */
CARD32 pad3 B32; /* unused */
CARD32 pad4 B32; /* unused */
CARD32 pad5 B32; /* unused */
CARD32 pad6 B32; /* unused */
CARD32 pad7 B32; /* unused */
} xShmCreateSegmentReply;
/* File descriptor is passed with this reply */
#define sz_xShmCreateSegmentReply 32
#undef ShmSeg
#undef Drawable
#undef VisualID