#ifndef _SYNCSTR_H_
#define _SYNCSTR_H_
#include "sync.h"
#ifndef _SYNC_OS
#define XSyncCounter CARD32
#define XSyncAlarm CARD32
typedef struct _xSyncInitialize {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
CARD8 majorVersion;
CARD8 minorVersion;
CARD16 pad B16;
} xSyncInitializeReq;
#define sz_xSyncInitializeReq 8
typedef struct {
BYTE type;
CARD8 unused;
CARD16 sequenceNumber B16;
CARD32 length B32;
CARD8 majorVersion;
CARD8 minorVersion;
CARD16 pad B16;
CARD32 pad0 B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
} xSyncInitializeReply;
#define sz_xSyncInitializeReply 32
typedef struct _xSyncListSystemCounters
{
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
} xSyncListSystemCountersReq;
#define sz_xSyncListSystemCountersReq 4
typedef struct {
BYTE type;
CARD8 unused;
CARD16 sequenceNumber B16;
CARD32 length B32;
INT32 nCounters B32;
CARD32 pad0 B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
} xSyncListSystemCountersReply;
#define sz_xSyncListSystemCountersReply 32
typedef struct {
XSyncCounter counter B32;
INT32 resolution_hi B32;
CARD32 resolution_lo B32;
CARD16 name_length B16;
} xSyncSystemCounter;
#define sz_xSyncSystemCounter 14
typedef struct _xSyncCreateCounterReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncCounter cid B32;
INT32 initial_value_hi B32;
CARD32 initial_value_lo B32;
} xSyncCreateCounterReq;
#define sz_xSyncCreateCounterReq 16
typedef struct _xSyncChangeCounterReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncCounter cid B32;
INT32 value_hi B32;
CARD32 value_lo B32;
} xSyncChangeCounterReq;
#define sz_xSyncChangeCounterReq 16
typedef struct _xSyncSetCounterReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncCounter cid B32;
INT32 value_hi B32;
CARD32 value_lo B32;
} xSyncSetCounterReq;
#define sz_xSyncSetCounterReq 16
typedef struct _xSyncDestroyCounterReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncCounter counter B32;
} xSyncDestroyCounterReq;
#define sz_xSyncDestroyCounterReq 8
typedef struct _xSyncQueryCounterReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncCounter counter B32;
} xSyncQueryCounterReq;
#define sz_xSyncQueryCounterReq 8
typedef struct {
BYTE type;
CARD8 unused;
CARD16 sequenceNumber B16;
CARD32 length B32;
INT32 value_hi B32;
CARD32 value_lo B32;
CARD32 pad0 B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
} xSyncQueryCounterReply;
#define sz_xSyncQueryCounterReply 32
typedef struct _xSyncAwaitReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
} xSyncAwaitReq;
#define sz_xSyncAwaitReq 4
typedef struct _xSyncWaitCondition {
XSyncCounter counter B32;
CARD32 value_type B32;
INT32 wait_value_hi B32;
CARD32 wait_value_lo B32;
CARD32 test_type B32;
INT32 event_threshold_hi B32;
CARD32 event_threshold_lo B32;
} xSyncWaitCondition;
#define sz_xSyncWaitCondition 28
typedef struct _xSyncCreateAlarmReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncAlarm id B32;
CARD32 valueMask B32;
} xSyncCreateAlarmReq;
#define sz_xSyncCreateAlarmReq 12
typedef struct _xSyncDestroyAlarmReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncAlarm alarm B32;
} xSyncDestroyAlarmReq;
#define sz_xSyncDestroyAlarmReq 8
typedef struct _xSyncQueryAlarmReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncAlarm alarm B32;
} xSyncQueryAlarmReq;
#define sz_xSyncQueryAlarmReq 8
typedef struct {
BYTE type;
CARD8 unused;
CARD16 sequenceNumber B16;
CARD32 length B32;
XSyncCounter counter B32;
CARD32 value_type B32;
INT32 wait_value_hi B32;
CARD32 wait_value_lo B32;
CARD32 test_type B32;
INT32 delta_hi B32;
CARD32 delta_lo B32;
BOOL events;
BYTE state;
BYTE pad0;
BYTE pad1;
} xSyncQueryAlarmReply;
#define sz_xSyncQueryAlarmReply 40
typedef struct _xSyncChangeAlarmReq {
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
XSyncAlarm alarm B32;
CARD32 valueMask B32;
} xSyncChangeAlarmReq;
#define sz_xSyncChangeAlarmReq 12
typedef struct _xSyncSetPriority{
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
CARD32 id B32;
INT32 priority B32;
} xSyncSetPriorityReq;
#define sz_xSyncSetPriorityReq 12
typedef struct _xSyncGetPriority{
CARD8 reqType;
CARD8 syncReqType;
CARD16 length B16;
CARD32 id B32;
} xSyncGetPriorityReq;
#define sz_xSyncGetPriorityReq 8
typedef struct {
BYTE type;
CARD8 unused;
CARD16 sequenceNumber B16;
CARD32 length B32;
INT32 priority B32;
CARD32 pad0 B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
} xSyncGetPriorityReply;
#define sz_xSyncGetPriorityReply 32
typedef struct _xSyncCounterNotifyEvent {
BYTE type;
BYTE kind;
CARD16 sequenceNumber B16;
XSyncCounter counter B32;
INT32 wait_value_hi B32;
CARD32 wait_value_lo B32;
INT32 counter_value_hi B32;
CARD32 counter_value_lo B32;
CARD32 time B32;
CARD16 count B16;
BOOL destroyed;
BYTE pad0;
} xSyncCounterNotifyEvent;
typedef struct _xSyncAlarmNotifyEvent {
BYTE type;
BYTE kind;
CARD16 sequenceNumber B16;
XSyncAlarm alarm B32;
INT32 counter_value_hi B32;
CARD32 counter_value_lo B32;
INT32 alarm_value_hi B32;
CARD32 alarm_value_lo B32;
CARD32 time B32;
CARD8 state;
BYTE pad0;
BYTE pad1;
BYTE pad2;
} xSyncAlarmNotifyEvent;
#undef XSyncCounter
#undef XSyncAlarm
#endif
#ifdef _SYNC_SERVER
#define CARD64 XSyncValue
typedef struct _SyncCounter {
ClientPtr client;
XSyncCounter id;
CARD64 value;
struct _SyncTriggerList *pTriglist;
Bool beingDestroyed;
struct _SysCounterInfo *pSysCounterInfo;
} SyncCounter;
typedef enum {
XSyncCounterNeverChanges,
XSyncCounterNeverIncreases,
XSyncCounterNeverDecreases,
XSyncCounterUnrestricted
} SyncCounterType;
typedef struct _SysCounterInfo {
char *name;
CARD64 resolution;
CARD64 bracket_greater;
CARD64 bracket_less;
SyncCounterType counterType;
void (*QueryValue)(
pointer ,
CARD64 *
);
void (*BracketValues)(
pointer ,
CARD64 * ,
CARD64 *
);
} SysCounterInfo;
typedef struct _SyncTrigger {
SyncCounter *pCounter;
CARD64 wait_value;
unsigned int value_type;
unsigned int test_type;
CARD64 test_value;
Bool (*CheckTrigger)(
struct _SyncTrigger * ,
CARD64
);
void (*TriggerFired)(
struct _SyncTrigger *
);
void (*CounterDestroyed)(
struct _SyncTrigger *
);
} SyncTrigger;
typedef struct _SyncTriggerList {
SyncTrigger *pTrigger;
struct _SyncTriggerList *next;
} SyncTriggerList;
typedef struct _SyncAlarmClientList {
ClientPtr client;
XID delete_id;
struct _SyncAlarmClientList *next;
} SyncAlarmClientList;
typedef struct _SyncAlarm {
SyncTrigger trigger;
ClientPtr client;
XSyncAlarm alarm_id;
CARD64 delta;
int events;
int state;
SyncAlarmClientList *pEventClients;
} SyncAlarm;
typedef struct {
ClientPtr client;
CARD32 delete_id;
int num_waitconditions;
} SyncAwaitHeader;
typedef struct {
SyncTrigger trigger;
CARD64 event_threshold;
SyncAwaitHeader *pHeader;
} SyncAwait;
typedef union {
SyncAwaitHeader header;
SyncAwait await;
} SyncAwaitUnion;
extern pointer SyncCreateSystemCounter(
char * ,
CARD64 ,
CARD64 ,
SyncCounterType ,
void (* ) (
pointer ,
CARD64 * ),
void (* ) (
pointer ,
CARD64 * ,
CARD64 * )
);
extern void SyncChangeCounter(
SyncCounter * ,
CARD64
);
extern void SyncDestroySystemCounter(
pointer pCounter
);
extern void InitServertime(void);
#endif
#endif