Imported Upstream version 1.15.1
[deb_xorg-server.git] / include / os.h
CommitLineData
a09e091a
JB
1/***********************************************************
2
3Copyright 1987, 1998 The Open Group
4
5Permission to use, copy, modify, distribute, and sell this software and its
6documentation for any purpose is hereby granted without fee, provided that
7the above copyright notice appear in all copies and that both that
8copyright notice and this permission notice appear in supporting
9documentation.
10
11The above copyright notice and this permission notice shall be included in
12all copies or substantial portions of the Software.
13
14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
21Except as contained in this notice, the name of The Open Group shall not be
22used in advertising or otherwise to promote the sale, use or other dealings
23in this Software without prior written authorization from The Open Group.
24
25Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
26
27 All Rights Reserved
28
29Permission to use, copy, modify, and distribute this software and its
30documentation for any purpose and without fee is hereby granted,
31provided that the above copyright notice appear in all copies and that
32both that copyright notice and this permission notice appear in
33supporting documentation, and that the name of Digital not be
34used in advertising or publicity pertaining to distribution of the
35software without specific, written prior permission.
36
37DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
38ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
39DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
40ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
41WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
42ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
43SOFTWARE.
44
45******************************************************************/
46
47#ifndef OS_H
48#define OS_H
49
50#include "misc.h"
51#include <stdarg.h>
52#include <stdint.h>
53#include <string.h>
54
55#define SCREEN_SAVER_ON 0
56#define SCREEN_SAVER_OFF 1
57#define SCREEN_SAVER_FORCER 2
58#define SCREEN_SAVER_CYCLE 3
59
60#ifndef MAX_REQUEST_SIZE
61#define MAX_REQUEST_SIZE 65535
62#endif
63#ifndef MAX_BIG_REQUEST_SIZE
64#define MAX_BIG_REQUEST_SIZE 4194303
65#endif
66
67typedef struct _FontPathRec *FontPathPtr;
68typedef struct _NewClientRec *NewClientPtr;
69
70#ifndef xalloc
71#define xnfalloc(size) XNFalloc((unsigned long)(size))
72#define xnfcalloc(_num, _size) XNFcalloc((unsigned long)(_num)*(unsigned long)(_size))
73#define xnfrealloc(ptr, size) XNFrealloc((pointer)(ptr), (unsigned long)(size))
74
75#define xalloc(size) Xalloc((unsigned long)(size))
76#define xcalloc(_num, _size) Xcalloc((unsigned long)(_num)*(unsigned long)(_size))
77#define xrealloc(ptr, size) Xrealloc((pointer)(ptr), (unsigned long)(size))
78#define xfree(ptr) Xfree((pointer)(ptr))
79#define xstrdup(s) Xstrdup(s)
80#define xnfstrdup(s) XNFstrdup(s)
81#endif
82
83#include <stdio.h>
84#include <stdarg.h>
85
86#ifdef DDXBEFORERESET
87extern void ddxBeforeReset(void);
88#endif
89
90#ifdef DDXOSVERRORF
91extern _X_EXPORT void (*OsVendorVErrorFProc) (const char *,
92 va_list args)
93_X_ATTRIBUTE_PRINTF(1, 0);
94#endif
95
96extern _X_EXPORT int WaitForSomething(int * /*pClientsReady */
97 );
98
99extern _X_EXPORT int ReadRequestFromClient(ClientPtr /*client */ );
100
101#if XTRANS_SEND_FDS
102extern _X_EXPORT int ReadFdFromClient(ClientPtr client);
103
104extern _X_EXPORT int WriteFdToClient(ClientPtr client, int fd, Bool do_close);
105#endif
106
107extern _X_EXPORT Bool InsertFakeRequest(ClientPtr /*client */ ,
108 char * /*data */ ,
109 int /*count */ );
110
111extern _X_EXPORT void ResetCurrentRequest(ClientPtr /*client */ );
112
113extern _X_EXPORT void FlushAllOutput(void);
114
115extern _X_EXPORT void FlushIfCriticalOutputPending(void);
116
117extern _X_EXPORT void SetCriticalOutputPending(void);
118
119extern _X_EXPORT int WriteToClient(ClientPtr /*who */ , int /*count */ ,
120 const void * /*buf */ );
121
122extern _X_EXPORT void ResetOsBuffers(void);
123
124extern _X_EXPORT void InitConnectionLimits(void);
125
126extern _X_EXPORT void NotifyParentProcess(void);
127
128extern _X_EXPORT void CreateWellKnownSockets(void);
129
130extern _X_EXPORT void ResetWellKnownSockets(void);
131
132extern _X_EXPORT void CloseWellKnownConnections(void);
133
134extern _X_EXPORT XID AuthorizationIDOfClient(ClientPtr /*client */ );
135
136extern _X_EXPORT const char *ClientAuthorized(ClientPtr /*client */ ,
137 unsigned int /*proto_n */ ,
138 char * /*auth_proto */ ,
139 unsigned int /*string_n */ ,
140 char * /*auth_string */ );
141
142extern _X_EXPORT Bool EstablishNewConnections(ClientPtr /*clientUnused */ ,
143 pointer /*closure */ );
144
145extern _X_EXPORT void CheckConnections(void);
146
147extern _X_EXPORT void CloseDownConnection(ClientPtr /*client */ );
148
149extern _X_EXPORT void AddGeneralSocket(int /*fd */ );
150
151extern _X_EXPORT void RemoveGeneralSocket(int /*fd */ );
152
153extern _X_EXPORT void AddEnabledDevice(int /*fd */ );
154
155extern _X_EXPORT void RemoveEnabledDevice(int /*fd */ );
156
157extern _X_EXPORT int OnlyListenToOneClient(ClientPtr /*client */ );
158
159extern _X_EXPORT void ListenToAllClients(void);
160
161extern _X_EXPORT void IgnoreClient(ClientPtr /*client */ );
162
163extern _X_EXPORT void AttendClient(ClientPtr /*client */ );
164
165extern _X_EXPORT void MakeClientGrabImpervious(ClientPtr /*client */ );
166
167extern _X_EXPORT void MakeClientGrabPervious(ClientPtr /*client */ );
168
169#ifdef XQUARTZ
170extern void ListenOnOpenFD(int /* fd */ , int /* noxauth */ );
171#endif
172
173extern _X_EXPORT CARD32 GetTimeInMillis(void);
174extern _X_EXPORT CARD64 GetTimeInMicros(void);
175
176extern _X_EXPORT void AdjustWaitForDelay(pointer /*waitTime */ ,
177 unsigned long /*newdelay */ );
178
179typedef struct _OsTimerRec *OsTimerPtr;
180
181typedef CARD32 (*OsTimerCallback) (OsTimerPtr /* timer */ ,
182 CARD32 /* time */ ,
183 pointer /* arg */ );
184
185extern _X_EXPORT void TimerInit(void);
186
187extern _X_EXPORT Bool TimerForce(OsTimerPtr /* timer */ );
188
189#define TimerAbsolute (1<<0)
190#define TimerForceOld (1<<1)
191
192extern _X_EXPORT OsTimerPtr TimerSet(OsTimerPtr /* timer */ ,
193 int /* flags */ ,
194 CARD32 /* millis */ ,
195 OsTimerCallback /* func */ ,
196 pointer /* arg */ );
197
198extern _X_EXPORT void TimerCheck(void);
199extern _X_EXPORT void TimerCancel(OsTimerPtr /* pTimer */ );
200extern _X_EXPORT void TimerFree(OsTimerPtr /* pTimer */ );
201
202extern _X_EXPORT void SetScreenSaverTimer(void);
203extern _X_EXPORT void FreeScreenSaverTimer(void);
204
205extern _X_EXPORT void AutoResetServer(int /*sig */ );
206
207extern _X_EXPORT void GiveUp(int /*sig */ );
208
209extern _X_EXPORT void UseMsg(void);
210
211extern _X_EXPORT void ProcessCommandLine(int /*argc */ , char * /*argv */ []);
212
213extern _X_EXPORT int set_font_authorizations(char ** /* authorizations */ ,
214 int * /*authlen */ ,
215 pointer /* client */ );
216
217#ifndef _HAVE_XALLOC_DECLS
218#define _HAVE_XALLOC_DECLS
219
220/*
221 * Use malloc(3) instead.
222 */
223extern _X_EXPORT void *
224Xalloc(unsigned long /*amount */ ) _X_DEPRECATED;
225
226/*
227 * Use calloc(3) instead
228 */
229extern _X_EXPORT void *
230Xcalloc(unsigned long /*amount */ ) _X_DEPRECATED;
231
232/*
233 * Use realloc(3) instead
234 */
235extern _X_EXPORT void *
236Xrealloc(void * /*ptr */ , unsigned long /*amount */ )
237 _X_DEPRECATED;
238
239/*
240 * Use free(3) instead
241 */
242extern _X_EXPORT void
243Xfree(void * /*ptr */ )
244 _X_DEPRECATED;
245
246#endif
247
248/*
249 * This function malloc(3)s buffer, terminating the server if there is not
250 * enough memory.
251 */
252extern _X_EXPORT void *
253XNFalloc(unsigned long /*amount */ );
254
255/*
256 * This function calloc(3)s buffer, terminating the server if there is not
257 * enough memory.
258 */
259extern _X_EXPORT void *
260XNFcalloc(unsigned long /*amount */ );
261
262/*
263 * This function realloc(3)s passed buffer, terminating the server if there is
264 * not enough memory.
265 */
266extern _X_EXPORT void *
267XNFrealloc(void * /*ptr */ , unsigned long /*amount */ );
268
269/*
270 * This function strdup(3)s passed string. The only difference from the library
271 * function that it is safe to pass NULL, as NULL will be returned.
272 */
273extern _X_EXPORT char *
274Xstrdup(const char *s);
275
276/*
277 * This function strdup(3)s passed string, terminating the server if there is
278 * not enough memory. If NULL is passed to this function, NULL is returned.
279 */
280extern _X_EXPORT char *
281XNFstrdup(const char *s);
282
283/* Include new X*asprintf API */
284#include "Xprintf.h"
285
286/* Older api deprecated in favor of the asprintf versions */
287extern _X_EXPORT char *
288Xprintf(const char *fmt, ...)
289_X_ATTRIBUTE_PRINTF(1, 2)
290 _X_DEPRECATED;
291extern _X_EXPORT char *
292Xvprintf(const char *fmt, va_list va)
293_X_ATTRIBUTE_PRINTF(1, 0)
294 _X_DEPRECATED;
295extern _X_EXPORT char *
296XNFprintf(const char *fmt, ...)
297_X_ATTRIBUTE_PRINTF(1, 2)
298 _X_DEPRECATED;
299extern _X_EXPORT char *
300XNFvprintf(const char *fmt, va_list va)
301_X_ATTRIBUTE_PRINTF(1, 0)
302 _X_DEPRECATED;
303
304typedef void (*OsSigHandlerPtr) (int /* sig */ );
305typedef int (*OsSigWrapperPtr) (int /* sig */ );
306
307extern _X_EXPORT OsSigHandlerPtr
308OsSignal(int /* sig */ , OsSigHandlerPtr /* handler */ );
309extern _X_EXPORT OsSigWrapperPtr
310OsRegisterSigWrapper(OsSigWrapperPtr newWrap);
311
312extern _X_EXPORT int auditTrailLevel;
313
314extern _X_EXPORT void
315LockServer(void);
316extern _X_EXPORT void
317UnlockServer(void);
318
319extern _X_EXPORT int
320OsLookupColor(int /*screen */ ,
321 char * /*name */ ,
322 unsigned /*len */ ,
323 unsigned short * /*pred */ ,
324 unsigned short * /*pgreen */ ,
325 unsigned short * /*pblue */ );
326
327extern _X_EXPORT void
328OsInit(void);
329
330extern _X_EXPORT void
331OsCleanup(Bool);
332
333extern _X_EXPORT void
334OsVendorFatalError(const char *f, va_list args)
335_X_ATTRIBUTE_PRINTF(1, 0);
336
337extern _X_EXPORT void
338OsVendorInit(void);
339
340extern _X_EXPORT void
341OsBlockSignals(void);
342
343extern _X_EXPORT void
344OsReleaseSignals(void);
345
346extern _X_EXPORT int
347OsBlockSIGIO(void);
348
349extern _X_EXPORT void
350OsReleaseSIGIO(void);
351
352extern void
353OsResetSignals(void);
354
355extern _X_EXPORT void
356OsAbort(void)
357 _X_NORETURN;
358
359#if !defined(WIN32)
360extern _X_EXPORT int
361System(const char *);
362extern _X_EXPORT pointer
363Popen(const char *, const char *);
364extern _X_EXPORT int
365Pclose(pointer);
366extern _X_EXPORT pointer
367Fopen(const char *, const char *);
368extern _X_EXPORT int
369Fclose(pointer);
370#else
371
372extern const char *
373Win32TempDir(void);
374
375extern int
376System(const char *cmdline);
377
378#define Fopen(a,b) fopen(a,b)
379#define Fclose(a) fclose(a)
380#endif
381
382extern _X_EXPORT void
383CheckUserParameters(int argc, char **argv, char **envp);
384extern _X_EXPORT void
385CheckUserAuthorization(void);
386
387extern _X_EXPORT int
388AddHost(ClientPtr /*client */ ,
389 int /*family */ ,
390 unsigned /*length */ ,
391 const void * /*pAddr */ );
392
393extern _X_EXPORT Bool
394ForEachHostInFamily(int /*family */ ,
395 Bool (* /*func */ )(
396 unsigned char * /* addr */ ,
397 short /* len */ ,
398 pointer /* closure */ ),
399 pointer /*closure */ );
400
401extern _X_EXPORT int
402RemoveHost(ClientPtr /*client */ ,
403 int /*family */ ,
404 unsigned /*length */ ,
405 pointer /*pAddr */ );
406
407extern _X_EXPORT int
408GetHosts(pointer * /*data */ ,
409 int * /*pnHosts */ ,
410 int * /*pLen */ ,
411 BOOL * /*pEnabled */ );
412
413typedef struct sockaddr *sockaddrPtr;
414
415extern _X_EXPORT int
416InvalidHost(sockaddrPtr /*saddr */ , int /*len */ , ClientPtr client);
417
418extern _X_EXPORT int
419LocalClientCred(ClientPtr, int *, int *);
420
421#define LCC_UID_SET (1 << 0)
422#define LCC_GID_SET (1 << 1)
423#define LCC_PID_SET (1 << 2)
424#define LCC_ZID_SET (1 << 3)
425
426typedef struct {
427 int fieldsSet; /* Bit mask of fields set */
428 int euid; /* Effective uid */
429 int egid; /* Primary effective group id */
430 int nSuppGids; /* Number of supplementary group ids */
431 int *pSuppGids; /* Array of supplementary group ids */
432 int pid; /* Process id */
433 int zoneid; /* Only set on Solaris 10 & later */
434} LocalClientCredRec;
435
436extern _X_EXPORT int
437GetLocalClientCreds(ClientPtr, LocalClientCredRec **);
438extern _X_EXPORT void
439FreeLocalClientCreds(LocalClientCredRec *);
440
441extern _X_EXPORT int
442ChangeAccessControl(ClientPtr /*client */ , int /*fEnabled */ );
443
444extern _X_EXPORT int
445GetAccessControl(void);
446
447extern _X_EXPORT void
448AddLocalHosts(void);
449
450extern _X_EXPORT void
451ResetHosts(char *display);
452
453extern _X_EXPORT void
454EnableLocalHost(void);
455
456extern _X_EXPORT void
457DisableLocalHost(void);
458
459extern _X_EXPORT void
460AccessUsingXdmcp(void);
461
462extern _X_EXPORT void
463DefineSelf(int /*fd */ );
464
465#if XDMCP
466extern _X_EXPORT void
467AugmentSelf(pointer /*from */ , int /*len */ );
468
469extern _X_EXPORT void
470RegisterAuthorizations(void);
471#endif
472
473extern _X_EXPORT void
474InitAuthorization(char * /*filename */ );
475
476/* extern int LoadAuthorization(void); */
477
478extern _X_EXPORT int
479AuthorizationFromID(XID id,
480 unsigned short *name_lenp,
481 const char **namep,
482 unsigned short *data_lenp, char **datap);
483
484extern _X_EXPORT XID
485CheckAuthorization(unsigned int /*namelength */ ,
486 const char * /*name */ ,
487 unsigned int /*datalength */ ,
488 const char * /*data */ ,
489 ClientPtr /*client */ ,
490 const char ** /*reason */
491 );
492
493extern _X_EXPORT void
494ResetAuthorization(void);
495
496extern _X_EXPORT int
497RemoveAuthorization(unsigned short name_length,
498 const char *name,
499 unsigned short data_length, const char *data);
500
501extern _X_EXPORT int
502AddAuthorization(unsigned int /*name_length */ ,
503 const char * /*name */ ,
504 unsigned int /*data_length */ ,
505 char * /*data */ );
506
507#ifdef XCSECURITY
508extern _X_EXPORT XID
509GenerateAuthorization(unsigned int /* name_length */ ,
510 const char * /* name */ ,
511 unsigned int /* data_length */ ,
512 const char * /* data */ ,
513 unsigned int * /* data_length_return */ ,
514 char ** /* data_return */ );
515#endif
516
517extern _X_EXPORT int
518ddxProcessArgument(int /*argc */ , char * /*argv */ [], int /*i */ );
519
520extern _X_EXPORT void
521ddxUseMsg(void);
522
523/* stuff for ReplyCallback */
524extern _X_EXPORT CallbackListPtr ReplyCallback;
525typedef struct {
526 ClientPtr client;
527 const void *replyData;
528 unsigned long dataLenBytes; /* actual bytes from replyData + pad bytes */
529 unsigned long bytesRemaining;
530 Bool startOfReply;
531 unsigned long padBytes; /* pad bytes from zeroed array */
532} ReplyInfoRec;
533
534/* stuff for FlushCallback */
535extern _X_EXPORT CallbackListPtr FlushCallback;
536
537enum ExitCode {
538 EXIT_NO_ERROR = 0,
539 EXIT_ERR_ABORT = 1,
540 EXIT_ERR_CONFIGURE = 2,
541 EXIT_ERR_DRIVERS = 3,
542};
543
544extern _X_EXPORT void
545AbortDDX(enum ExitCode error);
546extern _X_EXPORT void
547ddxGiveUp(enum ExitCode error);
548extern _X_EXPORT int
549TimeSinceLastInputEvent(void);
550
551/* strcasecmp.c */
552#ifndef HAVE_STRCASECMP
553#define strcasecmp xstrcasecmp
554extern _X_EXPORT int
555xstrcasecmp(const char *s1, const char *s2);
556#endif
557
558#ifndef HAVE_STRNCASECMP
559#define strncasecmp xstrncasecmp
560extern _X_EXPORT int
561xstrncasecmp(const char *s1, const char *s2, size_t n);
562#endif
563
564#ifndef HAVE_STRCASESTR
565#define strcasestr xstrcasestr
566extern _X_EXPORT char *
567xstrcasestr(const char *s, const char *find);
568#endif
569
570#ifndef HAVE_STRLCPY
571extern _X_EXPORT size_t
572strlcpy(char *dst, const char *src, size_t siz);
573extern _X_EXPORT size_t
574strlcat(char *dst, const char *src, size_t siz);
575#endif
576
577#ifndef HAVE_STRNDUP
578extern _X_EXPORT char *
579strndup(const char *str, size_t n);
580#endif
581
582/* Logging. */
583typedef enum _LogParameter {
584 XLOG_FLUSH,
585 XLOG_SYNC,
586 XLOG_VERBOSITY,
587 XLOG_FILE_VERBOSITY
588} LogParameter;
589
590/* Flags for log messages. */
591typedef enum {
592 X_PROBED, /* Value was probed */
593 X_CONFIG, /* Value was given in the config file */
594 X_DEFAULT, /* Value is a default */
595 X_CMDLINE, /* Value was given on the command line */
596 X_NOTICE, /* Notice */
597 X_ERROR, /* Error message */
598 X_WARNING, /* Warning message */
599 X_INFO, /* Informational message */
600 X_NONE, /* No prefix */
601 X_NOT_IMPLEMENTED, /* Not implemented */
602 X_DEBUG, /* Debug message */
603 X_UNKNOWN = -1 /* unknown -- this must always be last */
604} MessageType;
605
606extern _X_EXPORT const char *
607LogInit(const char *fname, const char *backup);
608extern _X_EXPORT void
609LogClose(enum ExitCode error);
610extern _X_EXPORT Bool
611LogSetParameter(LogParameter param, int value);
612extern _X_EXPORT void
613LogVWrite(int verb, const char *f, va_list args)
614_X_ATTRIBUTE_PRINTF(2, 0);
615extern _X_EXPORT void
616LogWrite(int verb, const char *f, ...)
617_X_ATTRIBUTE_PRINTF(2, 3);
618extern _X_EXPORT void
619LogVMessageVerb(MessageType type, int verb, const char *format, va_list args)
620_X_ATTRIBUTE_PRINTF(3, 0);
621extern _X_EXPORT void
622LogMessageVerb(MessageType type, int verb, const char *format, ...)
623_X_ATTRIBUTE_PRINTF(3, 4);
624extern _X_EXPORT void
625LogMessage(MessageType type, const char *format, ...)
626_X_ATTRIBUTE_PRINTF(2, 3);
627extern _X_EXPORT void
628LogMessageVerbSigSafe(MessageType type, int verb, const char *format, ...)
629_X_ATTRIBUTE_PRINTF(3, 4);
630extern _X_EXPORT void
631LogVMessageVerbSigSafe(MessageType type, int verb, const char *format, va_list args)
632_X_ATTRIBUTE_PRINTF(3, 0);
633
634extern _X_EXPORT void
635LogVHdrMessageVerb(MessageType type, int verb,
636 const char *msg_format, va_list msg_args,
637 const char *hdr_format, va_list hdr_args)
638_X_ATTRIBUTE_PRINTF(3, 0)
639_X_ATTRIBUTE_PRINTF(5, 0);
640extern _X_EXPORT void
641LogHdrMessageVerb(MessageType type, int verb,
642 const char *msg_format, va_list msg_args,
643 const char *hdr_format, ...)
644_X_ATTRIBUTE_PRINTF(3, 0)
645_X_ATTRIBUTE_PRINTF(5, 6);
646extern _X_EXPORT void
647LogHdrMessage(MessageType type, const char *msg_format,
648 va_list msg_args, const char *hdr_format, ...)
649_X_ATTRIBUTE_PRINTF(2, 0)
650_X_ATTRIBUTE_PRINTF(4, 5);
651
652extern _X_EXPORT void
653FreeAuditTimer(void);
654extern _X_EXPORT void
655AuditF(const char *f, ...)
656_X_ATTRIBUTE_PRINTF(1, 2);
657extern _X_EXPORT void
658VAuditF(const char *f, va_list args)
659_X_ATTRIBUTE_PRINTF(1, 0);
660extern _X_EXPORT void
661FatalError(const char *f, ...)
662_X_ATTRIBUTE_PRINTF(1, 2)
663 _X_NORETURN;
664
665#ifdef DEBUG
666#define DebugF ErrorF
667#else
668#define DebugF(...) /* */
669#endif
670
671extern _X_EXPORT void
672VErrorF(const char *f, va_list args)
673_X_ATTRIBUTE_PRINTF(1, 0);
674extern _X_EXPORT void
675ErrorF(const char *f, ...)
676_X_ATTRIBUTE_PRINTF(1, 2);
677extern _X_EXPORT void
678VErrorFSigSafe(const char *f, va_list args)
679_X_ATTRIBUTE_PRINTF(1, 0);
680extern _X_EXPORT void
681ErrorFSigSafe(const char *f, ...)
682_X_ATTRIBUTE_PRINTF(1, 2);
683extern _X_EXPORT void
684LogPrintMarkers(void);
685
686extern _X_EXPORT void
687xorg_backtrace(void);
688
689extern _X_EXPORT int
690os_move_fd(int fd);
691
692#endif /* OS_H */