1<?xml version="1.0" encoding="utf-8"?>
2<!--
3Copyright (C) 2004 Mikko Torni and Josh Triplett.
4All Rights Reserved.  See the file COPYING in this directory
5for licensing information.
6-->
7<xcb header="sync" extension-xname="SYNC" extension-name="Sync"
8    major-version="3" minor-version="1">
9  <import>xproto</import>
10
11  <xidtype name="ALARM" />
12
13  <enum name="ALARMSTATE">
14    <item name="Active">    <value>0</value> </item>
15    <item name="Inactive">  <value>1</value> </item>
16    <item name="Destroyed"> <value>2</value> </item>
17  </enum>
18
19  <xidtype name="COUNTER" />
20
21  <xidtype name="FENCE" />
22
23  <enum name="TESTTYPE">
24    <item name="PositiveTransition"> <value>0</value> </item>
25    <item name="NegativeTransition"> <value>1</value> </item>
26    <item name="PositiveComparison"> <value>2</value> </item>
27    <item name="NegativeComparison"> <value>3</value> </item>
28  </enum>
29
30  <enum name="VALUETYPE">
31    <item name="Absolute"> <value>0</value> </item>
32    <item name="Relative"> <value>1</value> </item>
33  </enum>
34
35  <enum name="CA">
36    <item name="Counter">  <bit>0</bit></item>
37    <item name="ValueType"><bit>1</bit></item>
38    <item name="Value">    <bit>2</bit></item>
39    <item name="TestType"> <bit>3</bit></item>
40    <item name="Delta">    <bit>4</bit></item>
41    <item name="Events">   <bit>5</bit></item>
42  </enum>
43
44  <struct name="INT64">
45    <field type="INT32" name="hi" />
46    <field type="CARD32" name="lo" />
47  </struct>
48
49  <struct name="SYSTEMCOUNTER">
50    <field type="COUNTER" name="counter" />
51    <field type="sync:INT64" name="resolution" />
52    <field type="CARD16" name="name_len" />
53    <list type="char" name="name">
54      <fieldref>name_len</fieldref>
55    </list>
56    <pad align="4" />
57  </struct>
58
59  <struct name="TRIGGER">
60    <field type="COUNTER" name="counter" />
61    <field type="CARD32" name="wait_type" enum="VALUETYPE" />
62    <field type="sync:INT64" name="wait_value" />
63    <field type="CARD32" name="test_type" enum="TESTTYPE" />
64  </struct>
65
66  <struct name="WAITCONDITION">
67    <field type="TRIGGER" name="trigger" />
68    <field type="sync:INT64" name="event_threshold" />
69  </struct>
70
71  <error name="Counter" number="0">
72    <field type="CARD32" name="bad_counter" />
73    <field type="CARD16" name="minor_opcode" />
74    <field type="CARD8" name="major_opcode" />
75  </error>
76
77  <error name="Alarm" number="1">
78    <field type="CARD32" name="bad_alarm" />
79    <field type="CARD16" name="minor_opcode" />
80    <field type="CARD8" name="major_opcode" />
81  </error>
82    
83  <request name="Initialize" opcode="0">
84    <field type="CARD8" name="desired_major_version" />
85    <field type="CARD8" name="desired_minor_version" />
86    <reply>
87      <pad bytes="1" />
88      <field type="CARD8" name="major_version" />
89      <field type="CARD8" name="minor_version" />
90      <pad bytes="22" />
91    </reply>
92  </request>
93
94  <request name="ListSystemCounters" opcode="1">
95    <reply>
96      <pad bytes="1" />
97      <field type="CARD32" name="counters_len" />
98      <pad bytes="20" />
99      <list type="SYSTEMCOUNTER" name="counters">
100        <fieldref>counters_len</fieldref>
101      </list>
102    </reply>
103  </request>
104
105  <request name="CreateCounter" opcode="2">
106    <field type="COUNTER" name="id" />
107    <field type="sync:INT64" name="initial_value" />
108  </request>
109
110  <request name="DestroyCounter" opcode="6">
111    <field type="COUNTER" name="counter" />
112  </request>
113
114  <request name="QueryCounter" opcode="5">
115    <field type="COUNTER" name="counter" />
116    <reply>
117      <pad bytes="1" />
118      <field type="sync:INT64" name="counter_value" />
119    </reply>
120  </request>
121
122  <request name="Await" opcode="7">
123    <list type="WAITCONDITION" name="wait_list" />
124  </request>
125
126  <request name="ChangeCounter" opcode="4">
127    <field type="COUNTER" name="counter" />
128    <field type="sync:INT64" name="amount" />
129  </request>
130
131  <request name="SetCounter" opcode="3">
132    <field type="COUNTER" name="counter" />
133    <field type="sync:INT64" name="value" />
134  </request>
135
136  <request name="CreateAlarm" opcode="8">
137    <field type="ALARM" name="id" />
138    <field type="CARD32" name="value_mask" mask="CA" />
139    <switch name="value_list">
140      <fieldref>value_mask</fieldref>
141      <bitcase>
142        <enumref ref="CA">Counter</enumref>
143        <field type="COUNTER" name="counter" />
144      </bitcase>
145      <bitcase>
146        <enumref ref="CA">ValueType</enumref>
147        <field type="CARD32" name="valueType" enum="VALUETYPE" />
148      </bitcase>
149      <bitcase>
150        <enumref ref="CA">Value</enumref>
151        <field type="sync:INT64" name="value" />
152      </bitcase>
153      <bitcase>
154        <enumref ref="CA">TestType</enumref>
155        <field type="CARD32" name="testType" enum="TESTTYPE" />
156      </bitcase>
157      <bitcase>
158        <enumref ref="CA">Delta</enumref>
159        <field type="sync:INT64" name="delta" />
160      </bitcase>
161      <bitcase>
162        <enumref ref="CA">Events</enumref>
163        <field type="CARD32" name="events" />
164      </bitcase>
165    </switch>
166  </request>
167
168  <request name="ChangeAlarm" opcode="9">
169    <field type="ALARM" name="id" />
170    <field type="CARD32" name="value_mask" mask="CA" />
171    <switch name="value_list">
172      <fieldref>value_mask</fieldref>
173      <bitcase>
174        <enumref ref="CA">Counter</enumref>
175        <field type="COUNTER" name="counter" />
176      </bitcase>
177      <bitcase>
178        <enumref ref="CA">ValueType</enumref>
179        <field type="CARD32" name="valueType" enum="VALUETYPE" />
180      </bitcase>
181      <bitcase>
182        <enumref ref="CA">Value</enumref>
183        <field type="sync:INT64" name="value" />
184      </bitcase>
185      <bitcase>
186        <enumref ref="CA">TestType</enumref>
187        <field type="CARD32" name="testType" enum="TESTTYPE" />
188      </bitcase>
189      <bitcase>
190        <enumref ref="CA">Delta</enumref>
191        <field type="sync:INT64" name="delta" />
192      </bitcase>
193      <bitcase>
194        <enumref ref="CA">Events</enumref>
195        <field type="CARD32" name="events" />
196      </bitcase>
197    </switch>
198  </request>
199
200  <request name="DestroyAlarm" opcode="11">
201    <field type="ALARM" name="alarm" />
202  </request>
203
204  <request name="QueryAlarm" opcode="10">
205    <field type="ALARM" name="alarm" />
206    <reply>
207      <pad bytes="1" />
208      <field type="TRIGGER" name="trigger" />
209      <field type="sync:INT64" name="delta" />
210      <field type="BOOL" name="events" />
211      <field type="CARD8" name="state" enum="ALARMSTATE" />
212      <pad bytes="2" />
213    </reply>
214  </request>
215
216  <request name="SetPriority" opcode="12">
217    <field type="CARD32" name="id" />
218    <field type="INT32" name="priority" />
219  </request>
220    
221  <request name="GetPriority" opcode="13">
222    <field type="CARD32" name="id" />
223    <reply>
224      <pad bytes="1" />
225      <field type="INT32" name="priority" />
226    </reply>
227  </request>
228
229  <request name="CreateFence" opcode="14">
230    <field type="DRAWABLE" name="drawable" />
231    <field type="FENCE" name="fence" />
232    <field type="BOOL" name="initially_triggered" />
233  </request>
234
235  <request name="TriggerFence" opcode="15">
236    <field type="FENCE" name="fence" />
237  </request>
238
239  <request name="ResetFence" opcode="16">
240    <field type="FENCE" name="fence" />
241  </request>
242
243  <request name="DestroyFence" opcode="17">
244    <field type="FENCE" name="fence" />
245  </request>
246
247  <request name="QueryFence" opcode="18">
248    <field type="FENCE" name="fence" />
249    <reply>
250      <pad bytes="1" />
251      <field type="BOOL" name="triggered" />
252      <pad bytes="23" />
253    </reply>
254  </request>
255
256  <request name="AwaitFence" opcode="19">
257    <list type="FENCE" name="fence_list" />
258  </request>
259
260  <event name="CounterNotify" number="0">
261    <field type="CARD8" name="kind" />
262    <field type="COUNTER" name="counter" />
263    <field type="sync:INT64" name="wait_value" />
264    <field type="sync:INT64" name="counter_value" />
265    <field type="TIMESTAMP" name="timestamp" />
266    <field type="CARD16" name="count" />
267    <field type="BOOL" name="destroyed" />
268    <pad bytes="1" />
269  </event>
270
271  <event name="AlarmNotify" number="1">
272    <field type="CARD8" name="kind" />
273    <field type="ALARM" name="alarm" />
274    <field type="sync:INT64" name="counter_value" />
275    <field type="sync:INT64" name="alarm_value" />
276    <field type="TIMESTAMP" name="timestamp" />
277    <field type="CARD8" name="state" enum="ALARMSTATE" />
278    <pad bytes="3" />
279  </event>
280</xcb>
281