Initial Fence Sync support

Defines the protocol for creation and basic
management of binary state sync objects.
The following operations are defined:

 -Creation
 -Destruction
 -Trigger
 -Reset

Signed-off-by: James Jones <jajones@nvidia.com>
Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com>
This commit is contained in:
James Jones 2010-02-12 16:38:08 -08:00
parent 9ba2065b63
commit d079ee2107
2 changed files with 60 additions and 2 deletions

View file

@ -54,7 +54,7 @@ PERFORMANCE OF THIS SOFTWARE.
#define SYNC_NAME "SYNC"
#define SYNC_MAJOR_VERSION 3
#define SYNC_MINOR_VERSION 0
#define SYNC_MINOR_VERSION 1
#define XSyncCounterNotify 0
@ -65,7 +65,8 @@ PERFORMANCE OF THIS SOFTWARE.
#define XSyncBadCounter 0L
#define XSyncBadAlarm 1L
#define XSyncNumberErrors (XSyncBadAlarm + 1)
#define XSyncBadFence 2L
#define XSyncNumberErrors (XSyncBadFence + 1)
/*
* Flags for Alarm Attributes
@ -172,6 +173,7 @@ typedef enum {
typedef XID XSyncCounter;
typedef XID XSyncAlarm;
typedef XID XSyncFence;
typedef struct _XSyncValue {
int hi;
unsigned int lo;

View file

@ -67,6 +67,10 @@ PERFORMANCE OF THIS SOFTWARE.
#define X_SyncDestroyAlarm 11
#define X_SyncSetPriority 12
#define X_SyncGetPriority 13
#define X_SyncCreateFence 14
#define X_SyncTriggerFence 15
#define X_SyncResetFence 16
#define X_SyncDestroyFence 17
/* cover up types from sync.h to make sure they're the right size for
* protocol packaging. These will be undef'ed after all the protocol
@ -74,6 +78,8 @@ PERFORMANCE OF THIS SOFTWARE.
*/
#define XSyncCounter CARD32
#define XSyncAlarm CARD32
#define XSyncFence CARD32
#define Drawable CARD32
/*
* Initialize
@ -336,6 +342,54 @@ typedef struct {
} xSyncGetPriorityReply;
#define sz_xSyncGetPriorityReply 32
/*
* Create Fence
*/
typedef struct _xSyncCreateFenceReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
Drawable d B32;
XSyncFence fid B32;
BOOL initially_triggered;
CARD8 pad0;
CARD16 pad1;
} xSyncCreateFenceReq;
#define sz_xSyncCreateFenceReq 16
/*
* Put a fence object in the "triggered" state.
*/
typedef struct _xSyncTriggerFenceReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncFence fid B32;
} xSyncTriggerFenceReq;
#define sz_xSyncTriggerFenceReq 8
/*
* Put a fence in the "untriggered" state.
*/
typedef struct _xSyncResetFenceReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncFence fid B32;
} xSyncResetFenceReq;
#define sz_xSyncResetFenceReq 8
/*
* Destroy a fence object
*/
typedef struct _xSyncDestroyFenceReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncFence fid B32;
} xSyncDestroyFenceReq;
#define sz_xSyncDestroyFenceReq 8
/*
* Events
*/
@ -373,6 +427,8 @@ typedef struct _xSyncAlarmNotifyEvent {
#undef XSyncCounter
#undef XSyncAlarm
#undef XSyncFence
#undef Drawable
#endif /* _SYNCPROTO_H_ */