8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncCopyright 1991, 1993, 1994, 1998 The Open Group
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncthe above copyright notice appear in all copies and that both that
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynccopyright notice and this permission notice appear in supporting
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncdocumentation.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncThe above copyright notice and this permission notice shall be included in
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncall copies or substantial portions of the Software.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncin this Software without prior written authorization from The Open Group.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync*/
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/***********************************************************
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncCopyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncand Olivetti Research Limited, Cambridge, England.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync All Rights Reserved
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncPermission to use, copy, modify, and distribute this software and its
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncdocumentation for any purpose and without fee is hereby granted,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncprovided that the above copyright notice appear in all copies and that
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncboth that copyright notice and this permission notice appear in
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncsupporting documentation, and that the names of Digital or Olivetti
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncnot be used in advertising or publicity pertaining to distribution of the
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncsoftware without specific, written prior permission.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncDIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncFITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncUSE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncPERFORMANCE OF THIS SOFTWARE.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync******************************************************************/
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#ifndef _SYNCSRV_H_
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define _SYNCSRV_H_
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "misync.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "misyncstr.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The System Counter interface
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef enum {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XSyncCounterNeverChanges,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XSyncCounterNeverIncreases,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XSyncCounterNeverDecreases,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XSyncCounterUnrestricted
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SyncCounterType;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _SysCounterInfo {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char *name;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 resolution;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 bracket_greater;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 bracket_less;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncCounterType counterType; /* how can this counter change */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*QueryValue)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer /*pCounter*/,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 * /*freshvalue*/
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*BracketValues)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer /*pCounter*/,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 * /*lessthan*/,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 * /*greaterthan*/
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SysCounterInfo;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _SyncAlarmClientList {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ClientPtr client;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XID delete_id;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync struct _SyncAlarmClientList *next;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SyncAlarmClientList;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _SyncAlarm {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncTrigger trigger;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ClientPtr client;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync XSyncAlarm alarm_id;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 delta;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int events;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int state;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncAlarmClientList *pEventClients;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SyncAlarm;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ClientPtr client;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD32 delete_id;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int num_waitconditions;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SyncAwaitHeader;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncTrigger trigger;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 event_threshold;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncAwaitHeader *pHeader;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SyncAwait;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef union {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncAwaitHeader header;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncAwait await;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} SyncAwaitUnion;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern pointer SyncCreateSystemCounter(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync char * /* name */,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 /* inital_value */,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 /* resolution */,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncCounterType /* change characterization */,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (* /*QueryValue*/ ) (
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer /* pCounter */,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 * /* pValue_return */), /* XXX prototype */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (* /*BracketValues*/) (
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer /* pCounter */,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 * /* pbracket_less */,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 * /* pbracket_greater */)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern void SyncChangeCounter(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync SyncCounter * /* pCounter*/,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD64 /* new_value */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern void SyncDestroySystemCounter(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer pCounter
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern void InitServertime(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern void SyncExtensionInit(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#endif /* _SYNCSRV_H_ */