117ca54c3Smrg/* 217ca54c3Smrg 317ca54c3SmrgCopyright 1991, 1993, 1994, 1998 The Open Group 417ca54c3Smrg 517ca54c3SmrgPermission to use, copy, modify, distribute, and sell this software and its 617ca54c3Smrgdocumentation for any purpose is hereby granted without fee, provided that 717ca54c3Smrgthe above copyright notice appear in all copies and that both that 817ca54c3Smrgcopyright notice and this permission notice appear in supporting 917ca54c3Smrgdocumentation. 1017ca54c3Smrg 1117ca54c3SmrgThe above copyright notice and this permission notice shall be included in 1217ca54c3Smrgall copies or substantial portions of the Software. 1317ca54c3Smrg 1417ca54c3SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1517ca54c3SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1617ca54c3SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1717ca54c3SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 1817ca54c3SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1917ca54c3SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2017ca54c3Smrg 2117ca54c3SmrgExcept as contained in this notice, the name of The Open Group shall not be 2217ca54c3Smrgused in advertising or otherwise to promote the sale, use or other dealings 2317ca54c3Smrgin this Software without prior written authorization from The Open Group. 2417ca54c3Smrg 2517ca54c3Smrg*/ 2617ca54c3Smrg 2717ca54c3Smrg/*********************************************************** 2817ca54c3SmrgCopyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts, 2917ca54c3Smrgand Olivetti Research Limited, Cambridge, England. 3017ca54c3Smrg 3117ca54c3Smrg All Rights Reserved 3217ca54c3Smrg 33ea1d6981SmrgPermission to use, copy, modify, and distribute this software and its 34ea1d6981Smrgdocumentation for any purpose and without fee is hereby granted, 3517ca54c3Smrgprovided that the above copyright notice appear in all copies and that 36ea1d6981Smrgboth that copyright notice and this permission notice appear in 3717ca54c3Smrgsupporting documentation, and that the names of Digital or Olivetti 3817ca54c3Smrgnot be used in advertising or publicity pertaining to distribution of the 39ea1d6981Smrgsoftware without specific, written prior permission. 4017ca54c3Smrg 4117ca54c3SmrgDIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS 4217ca54c3SmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 4317ca54c3SmrgFITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR 4417ca54c3SmrgCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 4517ca54c3SmrgUSE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 4617ca54c3SmrgOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 4717ca54c3SmrgPERFORMANCE OF THIS SOFTWARE. 4817ca54c3Smrg 4917ca54c3Smrg******************************************************************/ 5017ca54c3Smrg 5117ca54c3Smrg#ifndef _SYNCSTR_H_ 5217ca54c3Smrg#define _SYNCSTR_H_ 5317ca54c3Smrg 5417ca54c3Smrg#include <X11/extensions/syncproto.h> 5517ca54c3Smrg 5617ca54c3Smrg#ifdef _SYNC_SERVER 5717ca54c3Smrg 5817ca54c3Smrg#define CARD64 XSyncValue /* XXX temporary! need real 64 bit values for Alpha */ 5917ca54c3Smrg 6017ca54c3Smrgtypedef struct _SyncCounter { 6117ca54c3Smrg ClientPtr client; /* Owning client. 0 for system counters */ 6217ca54c3Smrg XSyncCounter id; /* resource ID */ 6317ca54c3Smrg CARD64 value; /* counter value */ 6417ca54c3Smrg struct _SyncTriggerList *pTriglist; /* list of triggers */ 6517ca54c3Smrg Bool beingDestroyed; /* in process of going away */ 6617ca54c3Smrg struct _SysCounterInfo *pSysCounterInfo; /* NULL if not a system counter */ 6717ca54c3Smrg} SyncCounter; 6817ca54c3Smrg 6917ca54c3Smrg/* 7017ca54c3Smrg * The System Counter interface 7117ca54c3Smrg */ 7217ca54c3Smrg 7317ca54c3Smrgtypedef enum { 7417ca54c3Smrg XSyncCounterNeverChanges, 7517ca54c3Smrg XSyncCounterNeverIncreases, 7617ca54c3Smrg XSyncCounterNeverDecreases, 7717ca54c3Smrg XSyncCounterUnrestricted 7817ca54c3Smrg} SyncCounterType; 7917ca54c3Smrg 8017ca54c3Smrgtypedef struct _SysCounterInfo { 8117ca54c3Smrg char *name; 8217ca54c3Smrg CARD64 resolution; 8317ca54c3Smrg CARD64 bracket_greater; 8417ca54c3Smrg CARD64 bracket_less; 8517ca54c3Smrg SyncCounterType counterType; /* how can this counter change */ 8617ca54c3Smrg void (*QueryValue)( 8717ca54c3Smrg pointer /*pCounter*/, 8817ca54c3Smrg CARD64 * /*freshvalue*/ 8917ca54c3Smrg); 9017ca54c3Smrg void (*BracketValues)( 9117ca54c3Smrg pointer /*pCounter*/, 9217ca54c3Smrg CARD64 * /*lessthan*/, 9317ca54c3Smrg CARD64 * /*greaterthan*/ 9417ca54c3Smrg); 9517ca54c3Smrg} SysCounterInfo; 9617ca54c3Smrg 9717ca54c3Smrg 9817ca54c3Smrg 9917ca54c3Smrgtypedef struct _SyncTrigger { 10017ca54c3Smrg SyncCounter *pCounter; 10117ca54c3Smrg CARD64 wait_value; /* wait value */ 10217ca54c3Smrg unsigned int value_type; /* Absolute or Relative */ 103d63b911fSmrg unsigned int test_type; /* transition or Comparison type */ 10417ca54c3Smrg CARD64 test_value; /* trigger event threshold value */ 10517ca54c3Smrg Bool (*CheckTrigger)( 10617ca54c3Smrg struct _SyncTrigger * /*pTrigger*/, 10717ca54c3Smrg CARD64 /*newval*/ 10817ca54c3Smrg ); 10917ca54c3Smrg void (*TriggerFired)( 11017ca54c3Smrg struct _SyncTrigger * /*pTrigger*/ 11117ca54c3Smrg ); 11217ca54c3Smrg void (*CounterDestroyed)( 11317ca54c3Smrg struct _SyncTrigger * /*pTrigger*/ 11417ca54c3Smrg ); 11517ca54c3Smrg} SyncTrigger; 11617ca54c3Smrg 11717ca54c3Smrgtypedef struct _SyncTriggerList { 11817ca54c3Smrg SyncTrigger *pTrigger; 11917ca54c3Smrg struct _SyncTriggerList *next; 12017ca54c3Smrg} SyncTriggerList; 12117ca54c3Smrg 12217ca54c3Smrgtypedef struct _SyncAlarmClientList { 12317ca54c3Smrg ClientPtr client; 12417ca54c3Smrg XID delete_id; 12517ca54c3Smrg struct _SyncAlarmClientList *next; 12617ca54c3Smrg} SyncAlarmClientList; 12717ca54c3Smrg 12817ca54c3Smrgtypedef struct _SyncAlarm { 12917ca54c3Smrg SyncTrigger trigger; 13017ca54c3Smrg ClientPtr client; 13117ca54c3Smrg XSyncAlarm alarm_id; 13217ca54c3Smrg CARD64 delta; 13317ca54c3Smrg int events; 13417ca54c3Smrg int state; 13517ca54c3Smrg SyncAlarmClientList *pEventClients; 13617ca54c3Smrg} SyncAlarm; 13717ca54c3Smrg 13817ca54c3Smrgtypedef struct { 13917ca54c3Smrg ClientPtr client; 14017ca54c3Smrg CARD32 delete_id; 14117ca54c3Smrg int num_waitconditions; 14217ca54c3Smrg} SyncAwaitHeader; 14317ca54c3Smrg 14417ca54c3Smrgtypedef struct { 14517ca54c3Smrg SyncTrigger trigger; 14617ca54c3Smrg CARD64 event_threshold; 14717ca54c3Smrg SyncAwaitHeader *pHeader; 14817ca54c3Smrg} SyncAwait; 14917ca54c3Smrg 15017ca54c3Smrgtypedef union { 15117ca54c3Smrg SyncAwaitHeader header; 15217ca54c3Smrg SyncAwait await; 15317ca54c3Smrg} SyncAwaitUnion; 15417ca54c3Smrg 15517ca54c3Smrg 15617ca54c3Smrgextern pointer SyncCreateSystemCounter( 15717ca54c3Smrg char * /* name */, 158ea1d6981Smrg CARD64 /* initial_value */, 15917ca54c3Smrg CARD64 /* resolution */, 16017ca54c3Smrg SyncCounterType /* change characterization */, 16117ca54c3Smrg void (* /*QueryValue*/ ) ( 16217ca54c3Smrg pointer /* pCounter */, 16317ca54c3Smrg CARD64 * /* pValue_return */), /* XXX prototype */ 16417ca54c3Smrg void (* /*BracketValues*/) ( 165ea1d6981Smrg pointer /* pCounter */, 16617ca54c3Smrg CARD64 * /* pbracket_less */, 16717ca54c3Smrg CARD64 * /* pbracket_greater */) 16817ca54c3Smrg); 16917ca54c3Smrg 17017ca54c3Smrgextern void SyncChangeCounter( 17117ca54c3Smrg SyncCounter * /* pCounter*/, 17217ca54c3Smrg CARD64 /* new_value */ 17317ca54c3Smrg); 17417ca54c3Smrg 17517ca54c3Smrgextern void SyncDestroySystemCounter( 17617ca54c3Smrg pointer pCounter 17717ca54c3Smrg); 17817ca54c3Smrgextern void InitServertime(void); 17917ca54c3Smrg 18017ca54c3Smrg#endif /* _SYNC_SERVER */ 18117ca54c3Smrg 18217ca54c3Smrg#endif /* _SYNCSTR_H_ */ 183