[PATCH] Adds MIT-SHM AttachFd and CreateSegment requests

Keith Packard keithp at keithp.com
Thu Oct 31 21:12:27 CET 2013


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 at keithp.com>
---
 shm.h      |  2 +-
 shmproto.h | 42 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/shm.h b/shm.h
index e076402..be49f5e 100644
--- a/shm.h
+++ b/shm.h
@@ -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)
diff --git a/shmproto.h b/shmproto.h
index e5de377..8136aa9 100644
--- a/shmproto.h
+++ b/shmproto.h
@@ -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
-- 
1.8.4.rc3



More information about the xorg-devel mailing list