syncproto.h revision ea1d6981
1/*
2
3Copyright 1991, 1993, 1994, 1998  The Open Group
4
5Permission to use, copy, modify, distribute, and sell this software and its
6documentation for any purpose is hereby granted without fee, provided that
7the above copyright notice appear in all copies and that both that
8copyright notice and this permission notice appear in supporting
9documentation.
10
11The above copyright notice and this permission notice shall be included in
12all copies or substantial portions of the Software.
13
14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
17OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
21Except as contained in this notice, the name of The Open Group shall not be
22used in advertising or otherwise to promote the sale, use or other dealings
23in this Software without prior written authorization from The Open Group.
24
25*/
26
27/***********************************************************
28Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
29and Olivetti Research Limited, Cambridge, England.
30
31                        All Rights Reserved
32
33Permission to use, copy, modify, and distribute this software and its
34documentation for any purpose and without fee is hereby granted,
35provided that the above copyright notice appear in all copies and that
36both that copyright notice and this permission notice appear in
37supporting documentation, and that the names of Digital or Olivetti
38not be used in advertising or publicity pertaining to distribution of the
39software without specific, written prior permission.
40
41DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
42SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
43FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
44CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
45USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
46OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
47PERFORMANCE OF THIS SOFTWARE.
48
49******************************************************************/
50
51#ifndef _SYNCPROTO_H_
52#define _SYNCPROTO_H_
53
54#include <X11/extensions/syncconst.h>
55
56#define X_SyncInitialize		0
57#define X_SyncListSystemCounters	1
58#define X_SyncCreateCounter		2
59#define X_SyncSetCounter		3
60#define X_SyncChangeCounter		4
61#define X_SyncQueryCounter              5
62#define X_SyncDestroyCounter		6
63#define X_SyncAwait			7
64#define X_SyncCreateAlarm               8
65#define X_SyncChangeAlarm	        9
66#define X_SyncQueryAlarm	       10
67#define X_SyncDestroyAlarm	       11
68#define X_SyncSetPriority   	       12
69#define X_SyncGetPriority   	       13
70#define X_SyncCreateFence	       14
71#define X_SyncTriggerFence	       15
72#define X_SyncResetFence	       16
73#define X_SyncDestroyFence	       17
74#define X_SyncQueryFence	       18
75#define X_SyncAwaitFence	       19
76
77/* cover up types from sync.h to make sure they're the right size for
78 * protocol packaging.  These will be undef'ed after all the protocol
79 * structures are defined.
80 */
81#define XSyncCounter CARD32
82#define XSyncAlarm   CARD32
83#define XSyncFence   CARD32
84#define Drawable     CARD32
85
86/*
87 * Initialize
88 */
89typedef struct _xSyncInitialize {
90    CARD8	reqType;
91    CARD8	syncReqType;
92    CARD16	length;
93    CARD8	majorVersion;
94    CARD8	minorVersion;
95    CARD16	pad;
96} xSyncInitializeReq;
97#define sz_xSyncInitializeReq		8
98
99typedef struct {
100    BYTE	type;
101    CARD8	unused;
102    CARD16	sequenceNumber;
103    CARD32	length;
104    CARD8	majorVersion;
105    CARD8	minorVersion;
106    CARD16	pad;
107    CARD32	pad0;
108    CARD32	pad1;
109    CARD32	pad2;
110    CARD32	pad3;
111    CARD32	pad4;
112} xSyncInitializeReply;
113#define sz_xSyncInitializeReply	32
114
115/*
116 * ListSystemCounters
117 */
118typedef struct _xSyncListSystemCounters
119{
120    CARD8	reqType;
121    CARD8	syncReqType;
122    CARD16	length;
123} xSyncListSystemCountersReq;
124#define sz_xSyncListSystemCountersReq	4
125
126typedef struct {
127    BYTE	type;
128    CARD8	unused;
129    CARD16	sequenceNumber;
130    CARD32	length;
131    INT32	nCounters;
132    CARD32	pad0;
133    CARD32	pad1;
134    CARD32	pad2;
135    CARD32	pad3;
136    CARD32	pad4;
137} xSyncListSystemCountersReply;
138#define sz_xSyncListSystemCountersReply	32
139
140typedef struct {
141    XSyncCounter counter;
142    INT32	resolution_hi;
143    CARD32	resolution_lo;
144    CARD16	name_length;
145} xSyncSystemCounter;
146#define sz_xSyncSystemCounter 14
147
148/*
149 * Create Counter
150 */
151typedef struct _xSyncCreateCounterReq {
152    CARD8	reqType;
153    CARD8	syncReqType;
154    CARD16	length;
155    XSyncCounter cid;
156    INT32	initial_value_hi;
157    CARD32	initial_value_lo;
158} xSyncCreateCounterReq;
159#define sz_xSyncCreateCounterReq	16
160
161/*
162 * Change Counter
163 */
164typedef struct _xSyncChangeCounterReq {
165    CARD8	reqType;
166    CARD8	syncReqType;
167    CARD16	length;
168    XSyncCounter cid;
169    INT32	value_hi;
170    CARD32	value_lo;
171} xSyncChangeCounterReq;
172#define sz_xSyncChangeCounterReq	16
173
174/*
175 * Set Counter
176 */
177typedef struct _xSyncSetCounterReq {
178    CARD8	reqType;
179    CARD8	syncReqType;
180    CARD16	length;
181    XSyncCounter cid;
182    INT32	value_hi;
183    CARD32	value_lo;
184} xSyncSetCounterReq;
185#define sz_xSyncSetCounterReq	16
186
187/*
188 * Destroy Counter
189 */
190typedef struct _xSyncDestroyCounterReq {
191    CARD8	reqType;
192    CARD8	syncReqType;
193    CARD16	length;
194    XSyncCounter counter;
195} xSyncDestroyCounterReq;
196#define sz_xSyncDestroyCounterReq	8
197
198/*
199 * Query Counter
200 */
201typedef struct _xSyncQueryCounterReq {
202    CARD8	reqType;
203    CARD8	syncReqType;
204    CARD16	length;
205    XSyncCounter counter;
206} xSyncQueryCounterReq;
207#define sz_xSyncQueryCounterReq		8
208
209
210typedef struct {
211    BYTE	type;
212    CARD8	unused;
213    CARD16	sequenceNumber;
214    CARD32	length;
215    INT32	value_hi;
216    CARD32	value_lo;
217    CARD32	pad0;
218    CARD32	pad1;
219    CARD32	pad2;
220    CARD32	pad3;
221} xSyncQueryCounterReply;
222#define sz_xSyncQueryCounterReply	32
223
224/*
225 * Await
226 */
227typedef struct _xSyncAwaitReq {
228    CARD8	reqType;
229    CARD8	syncReqType;
230    CARD16	length;
231} xSyncAwaitReq;
232#define sz_xSyncAwaitReq		4
233
234typedef struct _xSyncWaitCondition {
235    XSyncCounter counter;
236    CARD32	value_type;
237    INT32	wait_value_hi;
238    CARD32	wait_value_lo;
239    CARD32	test_type;
240    INT32	event_threshold_hi;
241    CARD32	event_threshold_lo;
242} xSyncWaitCondition;
243#define sz_xSyncWaitCondition		28
244
245/*
246 * Create Alarm
247 */
248typedef struct _xSyncCreateAlarmReq {
249    CARD8	reqType;
250    CARD8	syncReqType;
251    CARD16	length;
252    XSyncAlarm	id;
253    CARD32	valueMask;
254} xSyncCreateAlarmReq;
255#define sz_xSyncCreateAlarmReq		12
256
257/*
258 * Destroy Alarm
259 */
260typedef struct _xSyncDestroyAlarmReq {
261    CARD8	reqType;
262    CARD8	syncReqType;
263    CARD16	length;
264    XSyncAlarm	alarm;
265} xSyncDestroyAlarmReq;
266#define sz_xSyncDestroyAlarmReq		8
267
268/*
269 * Query Alarm
270 */
271typedef struct _xSyncQueryAlarmReq {
272    CARD8	reqType;
273    CARD8	syncReqType;
274    CARD16	length;
275    XSyncAlarm	alarm;
276} xSyncQueryAlarmReq;
277#define sz_xSyncQueryAlarmReq		8
278
279typedef struct {
280    BYTE	type;
281    CARD8	unused;
282    CARD16	sequenceNumber;
283    CARD32	length;
284    XSyncCounter counter;
285    CARD32	value_type;
286    INT32	wait_value_hi;
287    CARD32	wait_value_lo;
288    CARD32	test_type;
289    INT32	delta_hi;
290    CARD32	delta_lo;
291    BOOL        events;
292    BYTE        state;
293    BYTE	pad0;
294    BYTE	pad1;
295} xSyncQueryAlarmReply;
296#define sz_xSyncQueryAlarmReply		40
297
298/*
299 * Change Alarm
300 */
301typedef struct _xSyncChangeAlarmReq {
302    CARD8	reqType;
303    CARD8	syncReqType;
304    CARD16	length;
305    XSyncAlarm	alarm;
306    CARD32	valueMask;
307} xSyncChangeAlarmReq;
308#define sz_xSyncChangeAlarmReq		12
309
310/*
311 * SetPriority
312 */
313typedef struct _xSyncSetPriority{
314    CARD8   	reqType;
315    CARD8   	syncReqType;
316    CARD16  	length;
317    CARD32  	id;
318    INT32  	priority;
319} xSyncSetPriorityReq;
320#define sz_xSyncSetPriorityReq	    	12
321
322/*
323 * Get Priority
324 */
325typedef struct _xSyncGetPriority{
326    CARD8   	reqType;
327    CARD8   	syncReqType;
328    CARD16  	length;
329    CARD32  	id; /*XXX XID? */
330} xSyncGetPriorityReq;
331#define sz_xSyncGetPriorityReq	    	 8
332
333typedef struct {
334    BYTE	type;
335    CARD8	unused;
336    CARD16	sequenceNumber;
337    CARD32	length;
338    INT32  	priority;
339    CARD32  	pad0;
340    CARD32  	pad1;
341    CARD32  	pad2;
342    CARD32  	pad3;
343    CARD32  	pad4;
344} xSyncGetPriorityReply;
345#define sz_xSyncGetPriorityReply	32
346
347/*
348 * Create Fence
349 */
350typedef struct _xSyncCreateFenceReq {
351    CARD8	reqType;
352    CARD8	syncReqType;
353    CARD16	length;
354    Drawable	d;
355    XSyncFence	fid;
356    BOOL	initially_triggered;
357    CARD8	pad0;
358    CARD16	pad1;
359} xSyncCreateFenceReq;
360#define sz_xSyncCreateFenceReq		16
361
362/*
363 * Put a fence object in the "triggered" state.
364 */
365typedef struct _xSyncTriggerFenceReq {
366    CARD8	reqType;
367    CARD8	syncReqType;
368    CARD16	length;
369    XSyncFence	fid;
370} xSyncTriggerFenceReq;
371#define sz_xSyncTriggerFenceReq		8
372
373/*
374 * Put a fence in the "untriggered" state.
375 */
376typedef struct _xSyncResetFenceReq {
377    CARD8	reqType;
378    CARD8	syncReqType;
379    CARD16	length;
380    XSyncFence	fid;
381} xSyncResetFenceReq;
382#define sz_xSyncResetFenceReq		8
383
384/*
385 * Destroy a fence object
386 */
387typedef struct _xSyncDestroyFenceReq {
388    CARD8	reqType;
389    CARD8	syncReqType;
390    CARD16	length;
391    XSyncFence	fid;
392} xSyncDestroyFenceReq;
393#define sz_xSyncDestroyFenceReq		8
394
395/*
396 * Query a fence object
397 */
398typedef struct _xSyncQueryFenceReq {
399    CARD8	reqType;
400    CARD8	syncReqType;
401    CARD16	length;
402    XSyncFence	fid;
403} xSyncQueryFenceReq;
404#define sz_xSyncQueryFenceReq		8
405
406/*
407 * Wait for any of a list of fence sync objects
408 * to reach the "triggered" state.
409 */
410typedef struct _xSyncAwaitFenceReq {
411    CARD8	reqType;
412    CARD8	syncReqType;
413    CARD16	length;
414} xSyncAwaitFenceReq;
415#define sz_xSyncAwaitFenceReq		4
416
417typedef struct {
418    BYTE	type;
419    CARD8	unused;
420    CARD16	sequenceNumber;
421    CARD32	length;
422    BOOL	triggered;
423    BYTE	pad0;
424    CARD16	pad1;
425    CARD32	pad2;
426    CARD32	pad3;
427    CARD32	pad4;
428    CARD32	pad5;
429    CARD32	pad6;
430} xSyncQueryFenceReply;
431#define sz_xSyncQueryFenceReply		32
432
433/*
434 * Events
435 */
436
437typedef struct _xSyncCounterNotifyEvent {
438    BYTE	type;
439    BYTE	kind;
440    CARD16	sequenceNumber;
441    XSyncCounter counter;
442    INT32	wait_value_hi;
443    CARD32	wait_value_lo;
444    INT32	counter_value_hi;
445    CARD32	counter_value_lo;
446    CARD32	time;
447    CARD16	count;
448    BOOL	destroyed;
449    BYTE        pad0;
450} xSyncCounterNotifyEvent;
451
452typedef struct _xSyncAlarmNotifyEvent {
453    BYTE	type;
454    BYTE	kind;
455    CARD16	sequenceNumber;
456    XSyncAlarm	alarm;
457    INT32	counter_value_hi;
458    CARD32	counter_value_lo;
459    INT32	alarm_value_hi;
460    CARD32	alarm_value_lo;
461    CARD32	time;
462    CARD8       state;
463    BYTE        pad0;
464    BYTE        pad1;
465    BYTE        pad2;
466} xSyncAlarmNotifyEvent;
467
468#undef XSyncCounter
469#undef XSyncAlarm
470#undef XSyncFence
471#undef Drawable
472
473
474#endif /* _SYNCPROTO_H_ */
475