f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncCopyright 1991, 1993, 1994, 1998 The Open Group
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncthe above copyright notice appear in all copies and that both that
f0ab104f070bc7f569404826fea1828ed985638cvboxsynccopyright notice and this permission notice appear in supporting
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncdocumentation.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncThe above copyright notice and this permission notice shall be included in
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncall copies or substantial portions of the Software.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncin this Software without prior written authorization from The Open Group.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync*/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/***********************************************************
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncCopyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncand Olivetti Research Limited, Cambridge, England.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync All Rights Reserved
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncPermission to use, copy, modify, and distribute this software and its
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncdocumentation for any purpose and without fee is hereby granted,
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncprovided that the above copyright notice appear in all copies and that
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncboth that copyright notice and this permission notice appear in
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncsupporting documentation, and that the names of Digital or Olivetti
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncnot be used in advertising or publicity pertaining to distribution of the
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncsoftware without specific, written prior permission.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncDIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncFITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncUSE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncPERFORMANCE OF THIS SOFTWARE.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync******************************************************************/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#ifndef _SYNCSRV_H_
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define _SYNCSRV_H_
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "misync.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "misyncstr.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * The System Counter interface
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef enum {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XSyncCounterNeverChanges,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XSyncCounterNeverIncreases,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XSyncCounterNeverDecreases,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XSyncCounterUnrestricted
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} SyncCounterType;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _SysCounterInfo {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync const char *name;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 resolution;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 bracket_greater;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 bracket_less;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncCounterType counterType; /* how can this counter change */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync void (*QueryValue)(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer /*pCounter*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 * /*freshvalue*/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync void (*BracketValues)(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer /*pCounter*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 * /*lessthan*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 * /*greaterthan*/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} SysCounterInfo;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _SyncAlarmClientList {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ClientPtr client;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XID delete_id;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync struct _SyncAlarmClientList *next;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} SyncAlarmClientList;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct _SyncAlarm {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncTrigger trigger;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ClientPtr client;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XSyncAlarm alarm_id;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 delta;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int events;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int state;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncAlarmClientList *pEventClients;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} SyncAlarm;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ClientPtr client;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 delete_id;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int num_waitconditions;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} SyncAwaitHeader;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncTrigger trigger;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 event_threshold;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncAwaitHeader *pHeader;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} SyncAwait;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef union {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncAwaitHeader header;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncAwait await;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} SyncAwaitUnion;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern pointer SyncCreateSystemCounter(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync const char */* name */,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 /* inital_value */,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 /* resolution */,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncCounterType /* change characterization */,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync void (* /*QueryValue*/ ) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer /* pCounter */,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 * /* pValue_return */), /* XXX prototype */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync void (* /*BracketValues*/) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer /* pCounter */,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 * /* pbracket_less */,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 * /* pbracket_greater */)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern void SyncChangeCounter(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync SyncCounter * /* pCounter*/,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD64 /* new_value */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern void SyncDestroySystemCounter(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync pointer pCounter
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern void InitServertime(void);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern void SyncExtensionInit(void);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif /* _SYNCSRV_H_ */