03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncCopyright 1991, 1993, 1994, 1998 The Open Group
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncthe above copyright notice appear in all copies and that both that
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynccopyright notice and this permission notice appear in supporting
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncdocumentation.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncThe above copyright notice and this permission notice shall be included in
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncall copies or substantial portions of the Software.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncin this Software without prior written authorization from The Open Group.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync*/
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/***********************************************************
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncCopyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncand Olivetti Research Limited, Cambridge, England.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync All Rights Reserved
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncPermission to use, copy, modify, and distribute this software and its
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncdocumentation for any purpose and without fee is hereby granted,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncprovided that the above copyright notice appear in all copies and that
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncboth that copyright notice and this permission notice appear in
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncsupporting documentation, and that the names of Digital or Olivetti
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncnot be used in advertising or publicity pertaining to distribution of the
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncsoftware without specific, written prior permission.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncDIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncFITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncUSE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncPERFORMANCE OF THIS SOFTWARE.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync******************************************************************/
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifndef _SYNCSRV_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define _SYNCSRV_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "list.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "misync.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "misyncstr.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * The System Counter interface
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef enum {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XSyncCounterNeverChanges,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XSyncCounterNeverIncreases,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XSyncCounterNeverDecreases,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XSyncCounterUnrestricted
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} SyncCounterType;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef void (*SyncSystemCounterQueryValue)(pointer counter,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 *value_return
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync );
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef void (*SyncSystemCounterBracketValues)(pointer counter,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 *pbracket_less,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 *pbracket_greater
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync );
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _SysCounterInfo {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncCounter *pCounter;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync char *name;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 resolution;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 bracket_greater;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 bracket_less;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncCounterType counterType; /* how can this counter change */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncSystemCounterQueryValue QueryValue;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncSystemCounterBracketValues BracketValues;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void *private;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync struct xorg_list entry;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} SysCounterInfo;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _SyncAlarmClientList {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ClientPtr client;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XID delete_id;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync struct _SyncAlarmClientList *next;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} SyncAlarmClientList;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _SyncAlarm {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncTrigger trigger;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ClientPtr client;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XSyncAlarm alarm_id;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 delta;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int events;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int state;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncAlarmClientList *pEventClients;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} SyncAlarm;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ClientPtr client;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 delete_id;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int num_waitconditions;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} SyncAwaitHeader;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncTrigger trigger;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 event_threshold;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncAwaitHeader *pHeader;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} SyncAwait;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef union {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncAwaitHeader header;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncAwait await;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} SyncAwaitUnion;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern SyncCounter* SyncCreateSystemCounter(const char *name,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 initial_value,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 resolution,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncCounterType counterType,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncSystemCounterQueryValue QueryValue,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SyncSystemCounterBracketValues BracketValues
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync );
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern void SyncChangeCounter(SyncCounter *pCounter,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD64 new_value
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync );
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern void SyncDestroySystemCounter(pointer pCounter);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern SyncCounter *SyncInitDeviceIdleTime(DeviceIntPtr dev);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern void SyncRemoveDeviceIdleTime(SyncCounter *counter);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif /* _SYNCSRV_H_ */