61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncCopyright 1991, 1993, 1994, 1998 The Open Group
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncthe above copyright notice appear in all copies and that both that
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynccopyright notice and this permission notice appear in supporting
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncdocumentation.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncThe above copyright notice and this permission notice shall be included in
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncall copies or substantial portions of the Software.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncin this Software without prior written authorization from The Open Group.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/***********************************************************
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncCopyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncand Olivetti Research Limited, Cambridge, England.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync All Rights Reserved
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPermission to use, copy, modify, and distribute this software and its
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncdocumentation for any purpose and without fee is hereby granted,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncprovided that the above copyright notice appear in all copies and that
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncboth that copyright notice and this permission notice appear in
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncsupporting documentation, and that the names of Digital or Olivetti
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncnot be used in advertising or publicity pertaining to distribution of the
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncsoftware without specific, written prior permission.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncDIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncFITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncUSE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPERFORMANCE OF THIS SOFTWARE.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync******************************************************************/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef _SYNCSRV_H_
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _SYNCSRV_H_
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "list.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "misync.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "misyncstr.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * The System Counter interface
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef enum {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XSyncCounterNeverChanges,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XSyncCounterNeverIncreases,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XSyncCounterNeverDecreases,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XSyncCounterUnrestricted
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SyncCounterType;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef void (*SyncSystemCounterQueryValue)(void *counter,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 *value_return
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef void (*SyncSystemCounterBracketValues)(void *counter,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 *pbracket_less,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 *pbracket_greater
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _SysCounterInfo {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncCounter *pCounter;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *name;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 resolution;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 bracket_greater;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 bracket_less;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncCounterType counterType; /* how can this counter change */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncSystemCounterQueryValue QueryValue;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncSystemCounterBracketValues BracketValues;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *private;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync struct xorg_list entry;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SysCounterInfo;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _SyncAlarmClientList {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ClientPtr client;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XID delete_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync struct _SyncAlarmClientList *next;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SyncAlarmClientList;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _SyncAlarm {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncTrigger trigger;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ClientPtr client;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XSyncAlarm alarm_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 delta;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int events;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int state;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncAlarmClientList *pEventClients;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SyncAlarm;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ClientPtr client;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD32 delete_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int num_waitconditions;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SyncAwaitHeader;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncTrigger trigger;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 event_threshold;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncAwaitHeader *pHeader;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SyncAwait;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef union {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncAwaitHeader header;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncAwait await;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SyncAwaitUnion;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern SyncCounter* SyncCreateSystemCounter(const char *name,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 initial_value,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 resolution,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncCounterType counterType,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncSystemCounterQueryValue QueryValue,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncSystemCounterBracketValues BracketValues
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern void SyncChangeCounter(SyncCounter *pCounter,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD64 new_value
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync );
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern void SyncDestroySystemCounter(void *pCounter);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern SyncCounter *SyncInitDeviceIdleTime(DeviceIntPtr dev);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern void SyncRemoveDeviceIdleTime(SyncCounter *counter);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncint
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncSyncCreateFenceFromFD(ClientPtr client, DrawablePtr pDraw, XID id, int fd, BOOL initially_triggered);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncint
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncSyncFDFromFence(ClientPtr client, DrawablePtr pDraw, SyncFence *fence);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncSyncDeleteTriggerFromSyncObject(SyncTrigger * pTrigger);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncint
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncSyncAddTriggerToSyncObject(SyncTrigger * pTrigger);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif /* _SYNCSRV_H_ */