1
/* $Xorg: syncstr.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
4
Copyright 1991, 1993, 1994, 1998 The Open Group
6
Permission to use, copy, modify, distribute, and sell this software and its
7
documentation for any purpose is hereby granted without fee, provided that
8
the above copyright notice appear in all copies and that both that
9
copyright notice and this permission notice appear in supporting
12
The above copyright notice and this permission notice shall be included in
13
all copies or substantial portions of the Software.
15
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
19
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
Except as contained in this notice, the name of The Open Group shall not be
23
used in advertising or otherwise to promote the sale, use or other dealings
24
in this Software without prior written authorization from The Open Group.
28
/***********************************************************
29
Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
30
and Olivetti Research Limited, Cambridge, England.
34
Permission to use, copy, modify, and distribute this software and its
35
documentation for any purpose and without fee is hereby granted,
36
provided that the above copyright notice appear in all copies and that
37
both that copyright notice and this permission notice appear in
38
supporting documentation, and that the names of Digital or Olivetti
39
not be used in advertising or publicity pertaining to distribution of the
40
software without specific, written prior permission.
42
DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
43
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
44
FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
45
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
46
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
47
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
48
PERFORMANCE OF THIS SOFTWARE.
50
******************************************************************/
56
/* cover up types from sync.h to make sure they're the right size for
57
* protocol packaging. These will be undef'ed after all the protocol
58
* structures are defined.
60
#define XSyncCounter CARD32
61
#define XSyncAlarm CARD32
66
typedef struct _xSyncInitialize {
74
#define sz_xSyncInitializeReq 8
79
CARD16 sequenceNumber B16;
89
} xSyncInitializeReply;
90
#define sz_xSyncInitializeReply 32
95
typedef struct _xSyncListSystemCounters
100
} xSyncListSystemCountersReq;
101
#define sz_xSyncListSystemCountersReq 4
106
CARD16 sequenceNumber B16;
114
} xSyncListSystemCountersReply;
115
#define sz_xSyncListSystemCountersReply 32
118
XSyncCounter counter B32;
119
INT32 resolution_hi B32;
120
CARD32 resolution_lo B32;
121
CARD16 name_length B16;
122
} xSyncSystemCounter;
123
#define sz_xSyncSystemCounter 14
128
typedef struct _xSyncCreateCounterReq {
132
XSyncCounter cid B32;
133
INT32 initial_value_hi B32;
134
CARD32 initial_value_lo B32;
135
} xSyncCreateCounterReq;
136
#define sz_xSyncCreateCounterReq 16
141
typedef struct _xSyncChangeCounterReq {
145
XSyncCounter cid B32;
148
} xSyncChangeCounterReq;
149
#define sz_xSyncChangeCounterReq 16
154
typedef struct _xSyncSetCounterReq {
158
XSyncCounter cid B32;
161
} xSyncSetCounterReq;
162
#define sz_xSyncSetCounterReq 16
167
typedef struct _xSyncDestroyCounterReq {
171
XSyncCounter counter B32;
172
} xSyncDestroyCounterReq;
173
#define sz_xSyncDestroyCounterReq 8
178
typedef struct _xSyncQueryCounterReq {
182
XSyncCounter counter B32;
183
} xSyncQueryCounterReq;
184
#define sz_xSyncQueryCounterReq 8
190
CARD16 sequenceNumber B16;
198
} xSyncQueryCounterReply;
199
#define sz_xSyncQueryCounterReply 32
204
typedef struct _xSyncAwaitReq {
209
#define sz_xSyncAwaitReq 4
211
typedef struct _xSyncWaitCondition {
212
XSyncCounter counter B32;
213
CARD32 value_type B32;
214
INT32 wait_value_hi B32;
215
CARD32 wait_value_lo B32;
216
CARD32 test_type B32;
217
INT32 event_threshold_hi B32;
218
CARD32 event_threshold_lo B32;
219
} xSyncWaitCondition;
220
#define sz_xSyncWaitCondition 28
225
typedef struct _xSyncCreateAlarmReq {
230
CARD32 valueMask B32;
231
} xSyncCreateAlarmReq;
232
#define sz_xSyncCreateAlarmReq 12
237
typedef struct _xSyncDestroyAlarmReq {
241
XSyncAlarm alarm B32;
242
} xSyncDestroyAlarmReq;
243
#define sz_xSyncDestroyAlarmReq 8
248
typedef struct _xSyncQueryAlarmReq {
252
XSyncAlarm alarm B32;
253
} xSyncQueryAlarmReq;
254
#define sz_xSyncQueryAlarmReq 8
259
CARD16 sequenceNumber B16;
261
XSyncCounter counter B32;
262
CARD32 value_type B32;
263
INT32 wait_value_hi B32;
264
CARD32 wait_value_lo B32;
265
CARD32 test_type B32;
272
} xSyncQueryAlarmReply;
273
#define sz_xSyncQueryAlarmReply 40
278
typedef struct _xSyncChangeAlarmReq {
282
XSyncAlarm alarm B32;
283
CARD32 valueMask B32;
284
} xSyncChangeAlarmReq;
285
#define sz_xSyncChangeAlarmReq 12
290
typedef struct _xSyncSetPriority{
296
} xSyncSetPriorityReq;
297
#define sz_xSyncSetPriorityReq 12
302
typedef struct _xSyncGetPriority{
306
CARD32 id B32; /*XXX XID? */
307
} xSyncGetPriorityReq;
308
#define sz_xSyncGetPriorityReq 8
313
CARD16 sequenceNumber B16;
321
} xSyncGetPriorityReply;
322
#define sz_xSyncGetPriorityReply 32
328
typedef struct _xSyncCounterNotifyEvent {
331
CARD16 sequenceNumber B16;
332
XSyncCounter counter B32;
333
INT32 wait_value_hi B32;
334
CARD32 wait_value_lo B32;
335
INT32 counter_value_hi B32;
336
CARD32 counter_value_lo B32;
341
} xSyncCounterNotifyEvent;
343
typedef struct _xSyncAlarmNotifyEvent {
346
CARD16 sequenceNumber B16;
347
XSyncAlarm alarm B32;
348
INT32 counter_value_hi B32;
349
CARD32 counter_value_lo B32;
350
INT32 alarm_value_hi B32;
351
CARD32 alarm_value_lo B32;
357
} xSyncAlarmNotifyEvent;
362
#endif /* _SYNC_OS */
366
#define CARD64 XSyncValue /* XXX temporary! need real 64 bit values for Alpha */
368
typedef struct _SyncCounter {
369
ClientPtr client; /* Owning client. 0 for system counters */
370
XSyncCounter id; /* resource ID */
371
CARD64 value; /* counter value */
372
struct _SyncTriggerList *pTriglist; /* list of triggers */
373
Bool beingDestroyed; /* in process of going away */
374
struct _SysCounterInfo *pSysCounterInfo; /* NULL if not a system counter */
378
* The System Counter interface
382
XSyncCounterNeverChanges,
383
XSyncCounterNeverIncreases,
384
XSyncCounterNeverDecreases,
385
XSyncCounterUnrestricted
388
typedef struct _SysCounterInfo {
391
CARD64 bracket_greater;
393
SyncCounterType counterType; /* how can this counter change */
395
#if NeedNestedPrototypes
396
pointer /*pCounter*/,
397
CARD64 * /*freshvalue*/
400
void (*BracketValues)(
401
#if NeedNestedPrototypes
402
pointer /*pCounter*/,
403
CARD64 * /*lessthan*/,
404
CARD64 * /*greaterthan*/
411
typedef struct _SyncTrigger {
412
SyncCounter *pCounter;
413
CARD64 wait_value; /* wait value */
414
unsigned int value_type; /* Absolute or Relative */
415
unsigned int test_type; /* transition or Comparision type */
416
CARD64 test_value; /* trigger event threshold value */
417
Bool (*CheckTrigger)(
418
#if NeedNestedPrototypes
419
struct _SyncTrigger * /*pTrigger*/,
423
void (*TriggerFired)(
424
#if NeedNestedPrototypes
425
struct _SyncTrigger * /*pTrigger*/
428
void (*CounterDestroyed)(
429
#if NeedNestedPrototypes
430
struct _SyncTrigger * /*pTrigger*/
435
typedef struct _SyncTriggerList {
436
SyncTrigger *pTrigger;
437
struct _SyncTriggerList *next;
440
typedef struct _SyncAlarmClientList {
443
struct _SyncAlarmClientList *next;
444
} SyncAlarmClientList;
446
typedef struct _SyncAlarm {
453
SyncAlarmClientList *pEventClients;
459
int num_waitconditions;
464
CARD64 event_threshold;
465
SyncAwaitHeader *pHeader;
469
SyncAwaitHeader header;
474
extern pointer SyncCreateSystemCounter(
475
#if NeedFunctionPrototypes
477
CARD64 /* inital_value */,
478
CARD64 /* resolution */,
479
SyncCounterType /* change characterization */,
480
void (* /*QueryValue*/ ) (), /* XXX prototype */
481
void (* /*BracketValues*/) ()
485
extern void SyncChangeCounter(
486
#if NeedFunctionPrototypes
487
SyncCounter * /* pCounter*/,
488
CARD64 /* new_value */
492
extern void SyncDestroySystemCounter(
493
#if NeedFunctionPrototypes
497
extern void InitServertime();
499
#endif /* _SYNC_SERVER */