534 lines
14 KiB
C
534 lines
14 KiB
C
|
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h,v 3.36.2.5 1998/02/15 16:09:30 hohndel Exp $ */
|
||
|
/*
|
||
|
* Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
|
||
|
* Copyright 1992 by David Dawes <dawes@XFree86.org>
|
||
|
* Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
|
||
|
* Copyright 1992 by Rich Murphey <Rich@Rice.edu>
|
||
|
* Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
|
||
|
* Copyright 1992 by Orest Zborowski <obz@eskimo.com>
|
||
|
* Copyright 1993 by Vrije Universiteit, The Netherlands
|
||
|
* Copyright 1993 by David Wexelblat <dwex@XFree86.org>
|
||
|
* Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de>
|
||
|
* Copyright 1994, 1995 by The XFree86 Project, Inc
|
||
|
*
|
||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||
|
* the above copyright notice appear in all copies and that both that
|
||
|
* copyright notice and this permission notice appear in supporting
|
||
|
* documentation, and that the names of the above listed copyright holders
|
||
|
* not be used in advertising or publicity pertaining to distribution of
|
||
|
* the software without specific, written prior permission. The above listed
|
||
|
* copyright holders make no representations about the suitability of this
|
||
|
* software for any purpose. It is provided "as is" without express or
|
||
|
* implied warranty.
|
||
|
*
|
||
|
* THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
|
||
|
* TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
|
* AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE
|
||
|
* LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
|
||
|
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
||
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||
|
*
|
||
|
*/
|
||
|
/* $Xorg: xf86_OSlib.h,v 1.3 2000/08/17 19:51:20 cpqbld Exp $ */
|
||
|
|
||
|
#ifndef _XF86_OSLIB_H
|
||
|
#define _XF86_OSLIB_H
|
||
|
|
||
|
#include <X11/Xos.h>
|
||
|
#include <X11/Xfuncproto.h>
|
||
|
|
||
|
#include "compiler.h"
|
||
|
|
||
|
#if defined(MACH386) || defined(__OSF__)
|
||
|
# undef NULL
|
||
|
#endif /* MACH386 || __OSF__ */
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <ctype.h>
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* SYSV386 (SVR3, SVR4) */
|
||
|
/**************************************************************************/
|
||
|
#if defined(SYSV) || defined(SVR4)
|
||
|
# ifdef SCO325
|
||
|
# define _SVID3
|
||
|
# endif
|
||
|
# include <sys/ioctl.h>
|
||
|
# include <signal.h>
|
||
|
# include <termio.h>
|
||
|
# include <sys/stat.h>
|
||
|
# include <sys/types.h>
|
||
|
# if defined(SCO) || defined(ISC)
|
||
|
# include <sys/param.h>
|
||
|
# endif
|
||
|
|
||
|
# include <errno.h>
|
||
|
|
||
|
# if defined(_NEED_SYSI86)
|
||
|
# include <sys/immu.h>
|
||
|
# if !(defined (sun) && defined (i386) && defined (SVR4))
|
||
|
# include <sys/region.h>
|
||
|
# endif
|
||
|
# include <sys/proc.h>
|
||
|
# include <sys/tss.h>
|
||
|
# include <sys/sysi86.h>
|
||
|
# if defined(SVR4) && !defined(sun)
|
||
|
# include <sys/seg.h>
|
||
|
# endif /* SVR4 && !sun */
|
||
|
# include <sys/v86.h>
|
||
|
# if defined(sun) && defined (i386) && defined (SVR4)
|
||
|
# include <sys/psw.h>
|
||
|
# endif
|
||
|
# endif /* _NEED_SYSI86 */
|
||
|
|
||
|
#if defined(HAS_SVR3_MMAPDRV)
|
||
|
# include <sys/sysmacros.h>
|
||
|
# if !defined(_NEED_SYSI86)
|
||
|
# include <sys/immu.h>
|
||
|
# include <sys/region.h>
|
||
|
# endif
|
||
|
# include <sys/mmap.h> /* MMAP driver header */
|
||
|
#endif
|
||
|
|
||
|
# define HAS_USL_VTS
|
||
|
# if !defined(sun)
|
||
|
# include <sys/emap.h>
|
||
|
# endif
|
||
|
# if defined(SCO)
|
||
|
# include <sys/vtkd.h>
|
||
|
# include <sys/console.h>
|
||
|
# include <sys/keyboard.h>
|
||
|
# include <sys/vid.h>
|
||
|
# define LED_CAP 0x01
|
||
|
# define LED_NUM 0x02
|
||
|
# define LED_SCR 0x04
|
||
|
# else /* SCO */
|
||
|
# include <sys/at_ansi.h>
|
||
|
# include <sys/kd.h>
|
||
|
# include <sys/vt.h>
|
||
|
# endif /* SCO */
|
||
|
|
||
|
# if !defined(VT_ACKACQ)
|
||
|
# define VT_ACKACQ 2
|
||
|
# endif /* !VT_ACKACQ */
|
||
|
|
||
|
# if defined(SCO)
|
||
|
# include <sys/sysmacros.h>
|
||
|
# define POSIX_TTY
|
||
|
# endif /* SCO */
|
||
|
|
||
|
# if defined(SVR4) || defined(SCO325)
|
||
|
# include <sys/mman.h>
|
||
|
# if !(defined(sun) && defined (i386) && defined (SVR4))
|
||
|
# define DEV_MEM "/dev/pmem"
|
||
|
# endif
|
||
|
# ifdef SCO325
|
||
|
# undef DEV_MEM
|
||
|
# define DEV_MEM "/dev/mem"
|
||
|
# endif
|
||
|
# define CLEARDTR_SUPPORT
|
||
|
# define POSIX_TTY
|
||
|
# endif /* SVR4 */
|
||
|
|
||
|
# ifdef ISC
|
||
|
# include <termios.h>
|
||
|
# define POSIX_TTY
|
||
|
# endif
|
||
|
|
||
|
# if defined(sun) && defined (i386) && defined (SVR4)
|
||
|
# define USE_VT_SYSREQ
|
||
|
# define VT_SYSREQ_DEFAULT TRUE
|
||
|
# endif
|
||
|
|
||
|
# if defined(ATT) && !defined(i386)
|
||
|
# define i386 /* note defined in ANSI C mode */
|
||
|
# endif /* ATT && !i386 */
|
||
|
|
||
|
# if (defined(ATT) || defined(SVR4)) && !(defined(sun) && defined (i386) && defined (SVR4)) && !defined(SCO325)
|
||
|
# define XQUEUE
|
||
|
# include <sys/xque.h>
|
||
|
# endif /* ATT || SVR4 */
|
||
|
|
||
|
/* Hack on SVR3 and SVR4 to avoid linking in Xenix or BSD support */
|
||
|
#if defined (sun) && defined (i386) && defined (SVR4)
|
||
|
extern int xf86_solx86usleep(unsigned long);
|
||
|
# define usleep(usec) xf86_solx86usleep(usec)
|
||
|
#else
|
||
|
# define usleep(usec) syscall(3112, (usec) / 1000 + 1)
|
||
|
#endif /* sun && i386 && SVR4 */
|
||
|
|
||
|
# ifdef SYSV
|
||
|
# if !defined(ISC) || defined(ISC202) || defined(ISC22)
|
||
|
# define NEED_STRERROR
|
||
|
# endif
|
||
|
# endif
|
||
|
|
||
|
#ifndef NULL
|
||
|
# define NULL 0
|
||
|
#endif
|
||
|
|
||
|
#endif /* SYSV || SVR4 */
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* Linux */
|
||
|
/**************************************************************************/
|
||
|
#if defined(linux)
|
||
|
# include <sys/ioctl.h>
|
||
|
# include <signal.h>
|
||
|
# include <termio.h>
|
||
|
|
||
|
# include <errno.h>
|
||
|
extern int errno;
|
||
|
|
||
|
# include <sys/stat.h>
|
||
|
|
||
|
# define HAS_USL_VTS
|
||
|
# include <sys/mman.h>
|
||
|
# include <sys/kd.h>
|
||
|
# include <sys/vt.h>
|
||
|
# define LDGMAP GIO_SCRNMAP
|
||
|
# define LDSMAP PIO_SCRNMAP
|
||
|
# define LDNMAP LDSMAP
|
||
|
|
||
|
# define CLEARDTR_SUPPORT
|
||
|
# define USE_VT_SYSREQ
|
||
|
|
||
|
# define POSIX_TTY
|
||
|
|
||
|
#endif /* linux */
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* LynxOS AT */
|
||
|
/**************************************************************************/
|
||
|
#if defined(Lynx)
|
||
|
|
||
|
# include <termio.h>
|
||
|
# include <sys/ioctl.h>
|
||
|
# include <param.h>
|
||
|
# include <signal.h>
|
||
|
# include <kd.h>
|
||
|
# include <vt.h>
|
||
|
# include <sys/stat.h>
|
||
|
|
||
|
# include <errno.h>
|
||
|
extern int errno;
|
||
|
|
||
|
/* smem_create et.al. to access physical memory */
|
||
|
# include <smem.h>
|
||
|
|
||
|
/* keyboard types */
|
||
|
# define KB_84 1
|
||
|
# define KB_101 2
|
||
|
# define KB_OTHER 3
|
||
|
|
||
|
/* atc drivers ignores argument to VT_RELDISP ioctl */
|
||
|
# define VT_ACKACQ 2
|
||
|
|
||
|
# include <termios.h>
|
||
|
# define POSIX_TTY
|
||
|
|
||
|
#endif /* Lynx */
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* 386BSD and derivatives, BSD/386 */
|
||
|
/**************************************************************************/
|
||
|
|
||
|
#if defined(__386BSD__) && (defined(__FreeBSD__) || defined(__NetBSD__))
|
||
|
# undef __386BSD__
|
||
|
#endif
|
||
|
|
||
|
#ifdef CSRG_BASED
|
||
|
# include <sys/ioctl.h>
|
||
|
# if defined(__OpenBSD__) && defined(_status)
|
||
|
# undef _status
|
||
|
# endif
|
||
|
# include <signal.h>
|
||
|
|
||
|
# include <termios.h>
|
||
|
# define termio termios
|
||
|
# define POSIX_TTY
|
||
|
|
||
|
# include <errno.h>
|
||
|
extern int errno;
|
||
|
|
||
|
# if !defined(LINKKIT)
|
||
|
/* Don't need this stuff for the Link Kit */
|
||
|
# if defined(__bsdi__)
|
||
|
# include <i386/isa/pcconsioctl.h>
|
||
|
# define CONSOLE_X_MODE_ON PCCONIOCRAW
|
||
|
# define CONSOLE_X_MODE_OFF PCCONIOCCOOK
|
||
|
# define CONSOLE_X_BELL PCCONIOCBEEP
|
||
|
# else /* __bsdi__ */
|
||
|
# if defined(__OpenBSD__)
|
||
|
# ifdef PCCONS_SUPPORT
|
||
|
# include <machine/pccons.h>
|
||
|
# undef CONSOLE_X_MODE_ON
|
||
|
# undef CONSOLE_X_MODE_OFF
|
||
|
# undef CONSOLE_X_BELL
|
||
|
# endif
|
||
|
# endif
|
||
|
# ifdef CODRV_SUPPORT
|
||
|
# define COMPAT_CO011
|
||
|
# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||
|
# include <machine/ioctl_pc.h>
|
||
|
# else
|
||
|
# include <sys/ioctl_pc.h>
|
||
|
# endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ */
|
||
|
# endif /* CODRV_SUPPORT */
|
||
|
# ifdef SYSCONS_SUPPORT
|
||
|
# define COMPAT_SYSCONS
|
||
|
# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||
|
# include <machine/console.h>
|
||
|
# else
|
||
|
# include <sys/console.h>
|
||
|
# endif /* __FreeBSD__ || __NetBSD__ || defined(__OpenBSD__) */
|
||
|
# endif /* SYSCONS_SUPPORT */
|
||
|
# if defined(PCVT_SUPPORT)
|
||
|
# if !defined(SYSCONS_SUPPORT)
|
||
|
/* no syscons, so include pcvt specific header file */
|
||
|
# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||
|
# include <machine/pcvt_ioctl.h>
|
||
|
# else
|
||
|
# include <sys/pcvt_ioctl.h>
|
||
|
# endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ */
|
||
|
# else /* pcvt and syscons: hard-code the ID magic */
|
||
|
# define VGAPCVTID _IOWR('V',113, struct pcvtid)
|
||
|
struct pcvtid {
|
||
|
char name[16];
|
||
|
int rmajor, rminor;
|
||
|
};
|
||
|
# endif /* PCVT_SUPPORT && SYSCONS_SUPPORT */
|
||
|
# endif /* PCVT_SUPPORT */
|
||
|
# if defined(__FreeBSD__)
|
||
|
# undef MOUSE_GETINFO
|
||
|
# include <machine/mouse.h>
|
||
|
# endif
|
||
|
/* Include these definitions in case ioctl_pc.h didn't get included */
|
||
|
# ifndef CONSOLE_X_MODE_ON
|
||
|
# define CONSOLE_X_MODE_ON _IO('t',121)
|
||
|
# endif
|
||
|
# ifndef CONSOLE_X_MODE_OFF
|
||
|
# define CONSOLE_X_MODE_OFF _IO('t',122)
|
||
|
# endif
|
||
|
# ifndef CONSOLE_X_BELL
|
||
|
# define CONSOLE_X_BELL _IOW('t',123,int[2])
|
||
|
# endif
|
||
|
# endif /* __bsdi__ */
|
||
|
# endif /* !LINKKIT */
|
||
|
|
||
|
# include <sys/types.h>
|
||
|
# include <sys/mman.h>
|
||
|
# include <sys/stat.h>
|
||
|
|
||
|
# if defined(__bsdi__)
|
||
|
# include <sys/param.h>
|
||
|
# if (_BSDI_VERSION < 199510)
|
||
|
# include <i386/isa/vgaioctl.h>
|
||
|
# endif
|
||
|
# endif /* __bsdi__ */
|
||
|
|
||
|
# define CLEARDTR_SUPPORT
|
||
|
|
||
|
# if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)
|
||
|
# define USE_VT_SYSREQ
|
||
|
# endif
|
||
|
|
||
|
# ifndef NULL
|
||
|
# define NULL 0
|
||
|
# endif
|
||
|
|
||
|
#endif /* CSRG_BASED */
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* Mach and OSF/1 */
|
||
|
/**************************************************************************/
|
||
|
#if defined(MACH386) || defined(__OSF__)
|
||
|
# include <sys/ioctl.h>
|
||
|
|
||
|
# include <signal.h>
|
||
|
|
||
|
# include <errno.h>
|
||
|
extern int errno;
|
||
|
|
||
|
# if defined(__OSF__)
|
||
|
# include <sys/param.h>
|
||
|
# include <machine/kd.h>
|
||
|
# else /* __OSF__ */
|
||
|
# if !defined(__STDC__)
|
||
|
# define __STDC__ 1
|
||
|
# include <i386at/kd.h>
|
||
|
# include <i386at/kd_queue.h>
|
||
|
# undef __STDC__
|
||
|
# else /* !__STDC__ */
|
||
|
# include <i386at/kd.h>
|
||
|
# include <i386at/kd_queue.h>
|
||
|
# endif /* !__STDC__ */
|
||
|
# include <sys/file.h>
|
||
|
# define SEEK_SET L_SET
|
||
|
# endif /* __OSF__ */
|
||
|
|
||
|
# ifdef MACH386
|
||
|
# define NEED_STRERROR
|
||
|
# endif
|
||
|
|
||
|
# include <sys/mman.h>
|
||
|
# include <sys/stat.h>
|
||
|
# define MOUSE_PROTOCOL_IN_KERNEL
|
||
|
|
||
|
#endif /* MACH386 || __OSF__ */
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* Minix */
|
||
|
/**************************************************************************/
|
||
|
#if defined(MINIX)
|
||
|
# include <sys/ioctl.h>
|
||
|
# include <signal.h>
|
||
|
|
||
|
# include <termios.h>
|
||
|
# define termio termios
|
||
|
# define POSIX_TTY
|
||
|
|
||
|
# include <errno.h>
|
||
|
|
||
|
# include <assert.h>
|
||
|
# include <limits.h>
|
||
|
# include <sys/memio.h>
|
||
|
# include <sys/kbdio.h>
|
||
|
|
||
|
# include <sys/stat.h>
|
||
|
|
||
|
#endif /* MINIX */
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* Amoeba */
|
||
|
/**************************************************************************/
|
||
|
#if defined(AMOEBA)
|
||
|
# define port am_port_t
|
||
|
# include <amoeba.h>
|
||
|
# include <cmdreg.h>
|
||
|
# include <stderr.h>
|
||
|
# include <ampolicy.h>
|
||
|
# include <proc.h>
|
||
|
# include <signal.h>
|
||
|
# include <server/iop/iop.h>
|
||
|
# include <errno.h>
|
||
|
# undef port
|
||
|
|
||
|
# undef _POSIX_SOURCE /* to get the BSD-compatible symbols */
|
||
|
# include <sys/stat.h>
|
||
|
|
||
|
/* keyboard types */
|
||
|
# define KB_84 1
|
||
|
# define KB_101 2
|
||
|
# define KB_OTHER 3
|
||
|
|
||
|
extern capability iopcap;
|
||
|
# define MOUSE_PROTOCOL_IN_KERNEL
|
||
|
|
||
|
#endif /* AMOEBA */
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* OS/2 */
|
||
|
/**************************************************************************/
|
||
|
/* currently OS/2 with EMX/GCC compiler only */
|
||
|
#if defined(__EMX__)
|
||
|
# include <signal.h>
|
||
|
# include <errno.h>
|
||
|
# include <sys/stat.h>
|
||
|
|
||
|
/* I would have liked to have this included here always, but
|
||
|
* it causes clashes for BYTE and BOOL with Xmd.h, which is too dangerous.
|
||
|
* So I'll include it in place where I know it does no harm.
|
||
|
*/
|
||
|
#if defined(I_NEED_OS2_H)
|
||
|
# undef BOOL
|
||
|
# undef BYTE
|
||
|
# include <os2.h>
|
||
|
#endif
|
||
|
|
||
|
/* keyboard types */
|
||
|
# define KB_84 1
|
||
|
# define KB_101 2
|
||
|
/* could detect more keyboards */
|
||
|
# define KB_OTHER 3
|
||
|
|
||
|
/* LEDs */
|
||
|
# define LED_CAP 0x40
|
||
|
# define LED_NUM 0x20
|
||
|
# define LED_SCR 0x10
|
||
|
|
||
|
/* mouse driver */
|
||
|
# define OSMOUSE_ONLY
|
||
|
# define MOUSE_PROTOCOL_IN_KERNEL
|
||
|
|
||
|
extern char* __XOS2RedirRoot(char*);
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/**************************************************************************/
|
||
|
/* Generic */
|
||
|
/**************************************************************************/
|
||
|
|
||
|
/*
|
||
|
* Hack originally for ISC 2.2 POSIX headers, but may apply elsewhere,
|
||
|
* and it's safe, so just do it.
|
||
|
*/
|
||
|
#if !defined(O_NDELAY) && defined(O_NONBLOCK)
|
||
|
# define O_NDELAY O_NONBLOCK
|
||
|
#endif /* !O_NDELAY && O_NONBLOCK */
|
||
|
|
||
|
#if !defined(MAXHOSTNAMELEN)
|
||
|
# define MAXHOSTNAMELEN 32
|
||
|
#endif /* !MAXHOSTNAMELEN */
|
||
|
|
||
|
#if !defined(X_NOT_POSIX)
|
||
|
# if defined(_POSIX_SOURCE)
|
||
|
# include <limits.h>
|
||
|
# else
|
||
|
# define _POSIX_SOURCE
|
||
|
# include <limits.h>
|
||
|
# undef _POSIX_SOURCE
|
||
|
# endif /* _POSIX_SOURCE */
|
||
|
#endif /* !X_NOT_POSIX */
|
||
|
#if !defined(PATH_MAX)
|
||
|
# if defined(MAXPATHLEN)
|
||
|
# define PATH_MAX MAXPATHLEN
|
||
|
# else
|
||
|
# define PATH_MAX 1024
|
||
|
# endif /* MAXPATHLEN */
|
||
|
#endif /* !PATH_MAX */
|
||
|
|
||
|
#ifdef NEED_STRERROR
|
||
|
# ifndef strerror
|
||
|
extern char *sys_errlist[];
|
||
|
extern int sys_nerr;
|
||
|
# define strerror(n) \
|
||
|
((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error"
|
||
|
# endif /* !strerror */
|
||
|
#endif /* NEED_STRERROR */
|
||
|
|
||
|
#if defined(ISC) || defined(Lynx)
|
||
|
#define rint(x) RInt(x)
|
||
|
double RInt(
|
||
|
#if NeedFunctionPrototypes
|
||
|
double x
|
||
|
#endif
|
||
|
);
|
||
|
#endif
|
||
|
|
||
|
#ifndef VT_SYSREQ_DEFAULT
|
||
|
#define VT_SYSREQ_DEFAULT FALSE
|
||
|
#endif
|
||
|
|
||
|
#ifdef OSMOUSE_ONLY
|
||
|
# ifndef MOUSE_PROTOCOL_IN_KERNEL
|
||
|
# define MOUSE_PROTOCOL_IN_KERNEL
|
||
|
# endif
|
||
|
#endif
|
||
|
|
||
|
#include "xf86_OSproc.h"
|
||
|
|
||
|
#endif /* _XF86_OSLIB_H */
|