aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/xfree86/os-support/os2
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/hw/xfree86/os-support/os2')
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile45
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README78
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile110
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c452
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c340
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c143
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c263
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c244
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c257
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c140
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c158
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c511
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c653
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c497
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h62
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c517
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c403
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c241
18 files changed, 0 insertions, 5114 deletions
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile
deleted file mode 100644
index 6659da9be..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile
+++ /dev/null
@@ -1,45 +0,0 @@
-XCOMM $XConsortium: Imakefile /main/7 1996/09/28 17:24:18 rws $
-
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/Imakefile,v 3.20 2002/10/17 02:22:48 dawes Exp $
-#include <Server.tmpl>
-
-BIOS_MOD = os2_bios
-
-SRCS = os2_init.c os2_video.c os2_io.c $(BIOS_MOD).c \
- os2_ioperm.c os2_VTsw.c os2_mouse.c os2_KbdEv.c os2_stubs.c \
- os2_select.c os2_diag.c libc_wrapper.c stdResource.c stdPci.c \
- vidmem.c sigiostubs.c pm_noop.c kmod_noop.c agp_noop.c os2_serial.c \
- os2_kbd.c
-
-OBJS = os2_init.o os2_video.o os2_io.o $(BIOS_MOD).o \
- os2_ioperm.o os2_VTsw.o os2_mouse.o os2_kbdEv.o os2_stubs.o \
- os2_select.o os2_diag.o libc_wrapper.o stdResource.o stdPci.o \
- vidmem.o sigiostubs.o pm_noop.o kmod_noop.o agp_noop.o os2_serial.o \
- os2_kbd.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(SERVERSRC)/mi -I$(XINCLUDESRC) -I$(EXTINCSRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-NormalAsmObjectRule()
-
-LinkSourceFile(VTsw_noop.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README
deleted file mode 100644
index d07059eed..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README
+++ /dev/null
@@ -1,78 +0,0 @@
-Information on files in this directory
---------------------------------------
-\xc\programs\xserver\hw\xfree86\os-support\os2
-
-The files in this directory form the OS-dependent porting layer of
-XFree86 for OS/2. They are the work of:
-
- Holger Veit <Holger.Veit@gmd.de>
- Sebastien Marineau <marineau@genie.uottawa.ca>
-
-Some functions which were absent from OS/2,
-such as direct access to IO ports and the mapping of physical memory,
-are implemented in a device-driver written for this purpose by Holger Veit
-<Holger.Veit@gmd.de>. The driver also implements several functions
-necessary for xterm.
-The driver should be installed in the config.sys with a line:
-
-DEVICE=path\XF86SUP.SYS
-
-The following gives a brief overview of the implementation of the
-porting layer, and lists some of the "gotchas" when modifying the source.
-
-BIOS and physical memory mapping: This is handled by the functions in XF86SUP.SYS driver.
-
-IO permission: Handled by a function in the XF86SUP.SYS driver. Essentially, IO permissions
-are granted for the whole Xserver at server initialisation. The device-driver sets the IOPL
-level to ring 3 for the Xserver, which in essence gives it the same IO privileges that a
-device-driver has. Note the danger here: the Xserver can write to any IO port it wishes,
-and can disable interrupts (something which it does), thus can potentially hang the system.
-
-VT switching (switching back and forth to the WPS): This is handled by the keyboard driver,
-i.e. the stardard keyboard sequences (CTRL-ESC etc.) trigger the switch back to PM. The
-Xserver is notified of switches by the VIO function VIOSavRedrawWait(), which is run in
-a separate thread. When a switch to/from PM is requested, this function call unblocks, and
-the Xserver either saves or restores the video buffer and video mode. Note that semaphores
-are used to communicate with the main Xserver thread, and handle cases such as server
-reset while the server has lost focus etc.
-A similar mechanism is used to handle hard-error popups. A thread is run which blocks
-on the VIOModeWait() function. When a hard-error notification occurs, the Xserver attempts
-to recover by resetting the screen. Note that, due to some (probable) bugs in the OS/2
-video drivers, this does not always work as expected. According to the specs, the OS/2
-video drivers are supposed to restore the palette when returning from a hard-error. This
-does not seem to be always the case..... so the palette in X may be screwed up after the
-hard-error.
-
-Keyboard input: because X needs all keyboard event to function (both keypresses, key
-releases, for all keys), the keyboard input was implemented by registering a keyboard
-monitor for the Xserver. The keyboard monitor is run in a separate thread, and sends
-the keystrokes back to the Xserver main thread through a queue. Another thread is
-also started, whose purpose is to "eat" the keystrokes returned by KbdCharIn(). Note that
-the monitor was necessary because the OS/2 keyboard driver does not pass all keystrokes
-to the application calling KbdCharIn().
-
-Mouse input: This was implemented similarly to the keyboard input: mouse events are
-read in a thread, which then passes them to the main Xserver thread through a queue.
-
-Select: this unix and emx function has been reimplemented and optimized for the xserver.
-Because of the need to handle input from pipes, sockets, the mouse and keyboard (which
-select() in unix does but the EMX select does not), it was decided to rewrite it in
-order to minimize CPU usage and maximize responsiveness. Essentially, select() blocks on
-a MuxWait semaphore, and unblocks when input is available from pipes, the mouse and the
-keyboard. The MuxWait semaphore times out every timeslice, so that sockets can be checked
-for activity (unfortunately, sockets are not well-handled in the OS/2 TCPIP and one cannot
-attach a semaphore to a socket). There is also the possibility of using the high-resolution
-timer (found in Merlin) to check sockets more often than every timeslice.
-*** Important: in order to maximize speed, certain shortcuts are utilized in this
-implementation of select(), which makes it unsuitable as a general-purpose function. Also,
-it is imperative that the EMX select() never be called from the Xserver! ***
-
-
-If you wish to modify the source, be aware that there may be very good reasons as
-to why certain things were done this way. Usually, if certain function implementations
-appear unnecessarily complicated, it is probably because there were subtle problems
-with the simpler solutions. Due to the complexity of the Xserver code, and the
-differences between OS/2 and unix, there are many potential pitfalls.
-
-$XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/README,v 3.1 1996/01/30 15:26:27 dawes Exp $
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile
deleted file mode 100644
index a323229bf..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile
+++ /dev/null
@@ -1,110 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile,v 1.1 2000/04/05 18:13:55 dawes Exp $
-
-#define IHaveModules
-
-#include <Server.tmpl>
-
-SRCS1 = pci.c xf86int10module.c helper_exec.c helper_mem.c xf86int10.c
-OBJS1 = pci.o xf86int10module.o helper_exec.o helper_mem.o xf86int10.o
-
-LinkSourceFile(helper_mem.c,$(XF86SRC)/int10)
-LinkSourceFile(helper_exec.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86int10.c,$(XF86SRC)/int10)
-LinkSourceFile(pci.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86int10module.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86x86emu.c,$(XF86SRC)/int10)
-LinkSourceFile(generic.c,$(XF86SRC)/int10)
-
-INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \
- -I$(XF86OSSRC) \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC)
-
-DEFINES=-DHAVE_SYSV_IPC
-
-#if 0
-/* debugging stuff */
-#DEFINES =-D_PC
-#undef XF86INT10_BUILD
-#define XF86INT10_BUILD X86EMU_GENERIC
-#define X86EMU_LIBPATH /usr/local/lib
-#endif
-
-#if defined(i386Architecture)
-DEFINES =-D_PC
-#endif
-
-/* XXX keep this temporarily for reference */
-#if 0
-#if (XF86INT10_BUILD == X86EMU_GENERIC)
-
-SRCS = $(SRCS1) xf86x86emu.c generic.c
-OBJS = $(OBJS1) xf86x86emu.o generic.o x86emu.o
-SpecialObjectRule(pci.o, pci.c, -D_X86EMU)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_X86EMU)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_X86EMU -DSHOW_ALL_DEVICES)
-SpecialObjectRule(generic.o, generic.c, -D_X86EMU)
-SpecialObjectRule(xf86x86emu.o, xf86x86emu.c, -D_X86EMU)
-BuildObjectFromLibraryWithPath(X86EMU_LIBPATH,x86emu,x86emu)
-#endif
-#endif
-
-#if defined(XF86INT10_BUILD) && (XF86INT10_BUILD == X86VM)
-
-SRCS = $(SRCS1) linux.c
-OBJS = $(OBJS1) linux.o
-SpecialObjectRule(pci.o, pci.c, -D_VM86_LINUX)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_VM86_LINUX)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_VM86_LINUX -DSHOW_ALL_DEVICES)
-SpecialObjectRule(linux.o, linux.c, -D_VM86_LINUX -DHAVE_SYSV_IPC)
-
-#elif (XF86INT10_BUILD == X86EMU_OS)
-
-SpecialObjectRule(pci.o, pci.c, -D_X86EMU)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_X86EMU)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_X86EMU -DSHOW_ALL_DEVICES)
-SpecialObjectRule(linux.o, linux.c, -D_X86EMU -DHAVE_SYSV_IPC)
-
-X86TOPDIR = $(TOP)/extras/x86emu
-X86SRCDIR = $(X86TOPDIR)/src/x86emu
-X86EMUINCLUDES = -I$(X86TOPDIR)/include -I$(X86SRCDIR)
-
-# if !defined(X86EMU_LIBPATH)
-X86EMUSRCS = debug.c decode.c fpu.c ops.c ops2.c prim_ops.c sys.c
-X86EMUOBJS = debug.o decode.o fpu.o ops.o ops2.o prim_ops.o sys.o
-
-LinkSourceFile(debug.c,$(X86SRCDIR))
-LinkSourceFile(decode.c,$(X86SRCDIR))
-LinkSourceFile(fpu.c,$(X86SRCDIR))
-LinkSourceFile(ops.c,$(X86SRCDIR))
-LinkSourceFile(ops2.c,$(X86SRCDIR))
-LinkSourceFile(prim_ops.c,$(X86SRCDIR))
-LinkSourceFile(sys.c,$(X86SRCDIR))
-# else
-BuildObjectFromLibraryWithPath(X86EMU_LIBPATH,x86emu,x86emu)
-X86EMUOBJS = x86emu.o
-# endif
-
-SRCS = $(SRCS1) xf86x86emu.c linux.c $(X86EMUSRCS)
-OBJS = $(OBJS1) xf86x86emu.o linux.o $(X86EMUOBJS)
-
-#endif
-
-#if defined(XF86INT10_BUILD) && XF86INT10_BUILD > X86EMU_GENERIC
-
-LibraryModuleTarget(int10, $(OBJS))
-
-InstallLibraryModule(int10,$(MODULEDIR),linux)
-
-all::
- @(set -x; cd ../..; \
- RemoveFile(LibraryTargetName(int10)); \
- $(LN) linux/int10/LibraryTargetName(int10) . )
-
-InstallDriverSDKLibraryModule(int10,$(DRIVERSDKMODULEDIR),.)
-
-InstallDriverSDKNonExecFile(../../int10/xf86int10.h,$(DRIVERSDKINCLUDEDIR))
-
-#endif
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c
deleted file mode 100644
index d01cfb373..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c,v 1.3 2001/04/30 14:34:58 tsi Exp $ */
-/*
- * XFree86 int10 module
- * execute BIOS int 10h calls in x86 real mode environment
- * Copyright 1999 Egbert Eich
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86str.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-#include "xf86Pci.h"
-#include "compiler.h"
-#define _INT10_PRIVATE
-#include "xf86int10.h"
-#include "int10Defines.h"
-
-static CARD8 read_b(xf86Int10InfoPtr pInt,int addr);
-static CARD16 read_w(xf86Int10InfoPtr pInt,int addr);
-static CARD32 read_l(xf86Int10InfoPtr pInt,int addr);
-static void write_b(xf86Int10InfoPtr pInt,int addr, CARD8 val);
-static void write_w(xf86Int10InfoPtr pInt,int addr, CARD16 val);
-static void write_l(xf86Int10InfoPtr pInt,int addr, CARD32 val);
-
-/*
- * the emulator cannot pass a pointer to the current xf86Int10InfoRec
- * to the memory access functions therefore store it here.
- */
-
-typedef struct {
- int shift;
- int pagesize_1;
- int entries;
- void* vRam;
- memType *alloc_rec;
-} genericInt10Priv;
-
-#define INTPriv(x) ((genericInt10Priv*)x->private)
-
-int10MemRec genericMem = {
- read_b,
- read_w,
- read_l,
- write_b,
- write_w,
- write_l
-};
-
-static void MapVRam(xf86Int10InfoPtr pInt);
-static void UnmapVRam(xf86Int10InfoPtr pInt);
-static void setupTable(xf86Int10InfoPtr pInt, memType address,
- int loc,int size);
-
-static void *sysMem = NULL;
-
-xf86Int10InfoPtr
-xf86InitInt10(int entityIndex)
-{
- xf86Int10InfoPtr pInt;
- int screen;
- void* intMem;
- void* vbiosMem;
- int pagesize;
- int entries;
- int shift;
- legacyVGARec vga;
-
- screen = (xf86FindScreenForEntity(entityIndex))->scrnIndex;
-
- if (int10skip(xf86Screens[screen],entityIndex))
- return NULL;
-
- pInt = (xf86Int10InfoPtr)xnfcalloc(1,sizeof(xf86Int10InfoRec));
- pInt->entityIndex = entityIndex;
- if (!xf86Int10ExecSetup(pInt))
- goto error0;
- pInt->mem = &genericMem;
- pagesize = xf86getpagesize();
- pInt->private = (pointer)xnfcalloc(1,sizeof(genericInt10Priv));
- entries = SYS_SIZE / pagesize;
-
- pInt->scrnIndex = screen;
- INTPriv(pInt)->pagesize_1 = pagesize - 1;
- INTPriv(pInt)->entries = entries;
- INTPriv(pInt)->alloc_rec =
- xnfcalloc(1,sizeof(memType) * entries);
- for (shift = 0 ; (pagesize >> shift) ; shift++) {};
- shift -= 1;
- INTPriv(pInt)->shift = shift;
-
- /*
- * we need to map video RAM MMIO as some chipsets map mmio
- * registers into this range.
- */
-
- MapVRam(pInt);
- intMem = xnfalloc(pagesize);
- setupTable(pInt,(memType)intMem,0,pagesize);
- vbiosMem = xnfalloc(V_BIOS_SIZE);
-
-#ifdef _PC
- if (!sysMem)
- sysMem = xf86MapVidMem(screen,VIDMEM_FRAMEBUFFER,SYS_BIOS,BIOS_SIZE);
- setupTable(pInt,(memType)sysMem,SYS_BIOS,BIOS_SIZE);
- if (xf86ReadBIOS(0,0,(unsigned char *)intMem,LOW_PAGE_SIZE) < 0) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read int vect\n");
- goto error1;
- }
- if (xf86IsEntityPrimary(entityIndex)) {
- int size;
- int cs = MEM_RW(pInt,((0x10<<2)+2));
-
-int i,k,m;
-char buf[100], hx[10];
-for (i=0; i<0x100; i+=16) {
-sprintf(buf,"%04x: ",i);
-for (k=0; k<16; k++) {
- m = MEM_RB(pInt,i+k);
- sprintf(hx,"%02x ",((unsigned)m)&0xff);
- strcat(buf,hx);
-}
-xf86DrvMsg(screen,X_INFO,"%s\n",buf);
-}
-
-
-
- xf86DrvMsg(screen,X_INFO,"Primary V_BIOS segmant is: 0x%x\n",cs);
- if (xf86ReadBIOS(cs << 4,0,(unsigned char *)vbiosMem,
- 0x10) < 0) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (1)\n");
- goto error1;
- }
- if (!((*(CARD8*)vbiosMem == 0x55)
- && (*((CARD8*)vbiosMem + 1) == 0xAA))) {
- xf86DrvMsg(screen,X_ERROR,"No V_BIOS found\n");
- goto error1;
- }
-
- size = *((CARD8*)vbiosMem + 2) * 512;
- if (xf86ReadBIOS(cs << 4,0,vbiosMem, size) < 0) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (2)\n");
- goto error1;
- }
-
- setupTable(pInt,(memType)vbiosMem,cs<<4,size);
- set_return_trap(pInt);
- pInt->BIOSseg = cs;
- } else {
- reset_int_vect(pInt);
- set_return_trap(pInt);
- if (!mapPciRom(pInt,(unsigned char *)(vbiosMem))) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (3)\n");
- goto error1;
- }
- setupTable(pInt,(memType)vbiosMem,V_BIOS,V_BIOS_SIZE);
- pInt->BIOSseg = V_BIOS >> 4;
- pInt->num = 0xe6;
- LockLegacyVGA(pInt, &vga);
- xf86ExecX86int10(pInt);
- UnlockLegacyVGA(pInt, &vga);
- }
-#else
- if (!sysMem) {
- sysMem = xnfalloc(BIOS_SIZE);
- setup_system_bios((memType)sysMem);
- }
- setupTable(pInt,(memType)sysMem,SYS_BIOS,BIOS_SIZE);
- setup_int_vect(pInt);
- set_return_trap(pInt);
- if (!mapPciRom(pInt,(unsigned char *)(vbiosMem))) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (4)\n");
- goto error1;
- }
- setupTable(pInt,(memType)vbiosMem,V_BIOS,V_BIOS_SIZE);
- pInt->BIOSseg = V_BIOS >> 4;
- pInt->num = 0xe6;
- LockLegacyVGA(pInt, &vga);
- xf86ExecX86int10(pInt);
- UnlockLegacyVGA(pInt, &vga);
-#endif
- return pInt;
-
- error1:
- xfree(vbiosMem);
- xfree(intMem);
- UnmapVRam(pInt);
- xfree(INTPriv(pInt)->alloc_rec);
- xfree(pInt->private);
- error0:
- xfree(pInt);
-
- return NULL;
-}
-
-static void
-MapVRam(xf86Int10InfoPtr pInt)
-{
- int screen = pInt->scrnIndex;
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int size = ((VRAM_SIZE + pagesize - 1)/pagesize) * pagesize;
- INTPriv(pInt)->vRam = xf86MapVidMem(screen,VIDMEM_MMIO,V_RAM,size);
-}
-
-static void
-UnmapVRam(xf86Int10InfoPtr pInt)
-{
- int screen = pInt->scrnIndex;
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int size = ((VRAM_SIZE + pagesize - 1)/pagesize) * pagesize;
-
- xf86UnMapVidMem(screen,INTPriv(pInt)->vRam,size);
-}
-
-Bool
-MapCurrentInt10(xf86Int10InfoPtr pInt)
-{
- /* nothing to do here */
- return TRUE;
-}
-
-void
-xf86FreeInt10(xf86Int10InfoPtr pInt)
-{
- int pagesize;
-
- if (!pInt)
- return;
- pagesize = INTPriv(pInt)->pagesize_1 + 1;
- if (Int10Current == pInt)
- Int10Current = NULL;
- xfree(INTPriv(pInt)->alloc_rec[V_BIOS/pagesize]);
- xfree(INTPriv(pInt)->alloc_rec[0]);
- UnmapVRam(pInt);
- xfree(INTPriv(pInt)->alloc_rec);
- xfree(pInt->private);
- xfree(pInt);
-}
-
-void *
-xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off)
-{
- void* addr;
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int num_pages = INTPriv(pInt)->entries;
- int i,j;
-
- for (i=0;i<num_pages - num;i++) {
- if (INTPriv(pInt)->alloc_rec[i] == 0) {
- for (j=i;j < num + i;j++)
- if ((INTPriv(pInt)->alloc_rec[j] != 0))
- break;
- if (j == num + i)
- break;
- else
- i = i + num;
- }
- }
- if (i == num_pages - num)
- return NULL;
-
- *off = i * pagesize;
- addr = xnfalloc(pagesize * num);
- setupTable(pInt,(memType)addr,*off,pagesize * num);
-
- return addr;
-}
-
-void
-xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num)
-{
- int num_pages = INTPriv(pInt)->entries;
- int i,j;
- for (i = 0;i<num_pages - num; i++)
- if (INTPriv(pInt)->alloc_rec[i]==(memType)pbase) {
- for (j = 0; j < num; j++)
- INTPriv(pInt)->alloc_rec[i] = 0;
- break;
- }
- xfree(pbase);
- return;
-}
-
-static void
-setupTable(xf86Int10InfoPtr pInt, memType address,int loc,int size)
-{
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int i,j,num;
-
- i = loc / pagesize;
- num = (size + pagesize - 1)/ pagesize; /* round up to the nearest page */
- /* boudary if size is not */
- /* multiple of pagesize */
- for (j = 0; j<num; j++) {
- INTPriv(pInt)->alloc_rec[i+j] = address;
- address += pagesize;
- }
-}
-
-#define OFF(addr) \
- ((addr) & (INTPriv(pInt)->pagesize_1))
-#define SHIFT \
- (INTPriv(pInt)->shift)
-#define BASE(addr,shift) \
- (INTPriv(pInt)->alloc_rec[addr >> shift])
-#define V_ADDR(addr,shift,off) \
- (BASE(addr,shift) + (off))
-#define VRAM_ADDR(addr) (addr - 0xA0000)
-#define VRAM_BASE (INTPriv(pInt)->vRam)
-
-#define VRAM(addr) ((addr >= 0xA0000) && (addr <= 0xBFFFF))
-#define V_ADDR_RB(addr,shift,off) \
- (VRAM(addr)) ? MMIO_IN8((CARD8*)VRAM_BASE,VRAM_ADDR(addr)) \
- : *(CARD8*) V_ADDR(addr,shift,off)
-#define V_ADDR_RW(addr,shift,off) \
- (VRAM(addr)) ? MMIO_IN16((CARD16*)VRAM_BASE,VRAM_ADDR(addr)) \
- : ldw_u((pointer)V_ADDR(addr,shift,off))
-#define V_ADDR_RL(addr,shift,off) \
- (VRAM(addr)) ? MMIO_IN32((CARD32*)VRAM_BASE,VRAM_ADDR(addr)) \
- : ldl_u((pointer)V_ADDR(addr,shift,off))
-
-#define V_ADDR_WB(addr,shift,off,val) \
- if(VRAM(addr)) \
- MMIO_OUT8((CARD8*)VRAM_BASE,VRAM_ADDR(addr),val); \
- else \
- *(CARD8*) V_ADDR(addr,shift,off) = val;
-#define V_ADDR_WW(addr,shift,off,val) \
- if(VRAM(addr)) \
- MMIO_OUT16((CARD16*)VRAM_BASE,VRAM_ADDR(addr),val); \
- else \
- stw_u((val),(pointer)(V_ADDR(addr,shift,off)));
-
-#define V_ADDR_WL(addr,shift,off,val) \
- if (VRAM(addr)) \
- MMIO_OUT32((CARD32*)VRAM_BASE,VRAM_ADDR(addr),val); \
- else \
- stl_u(val,(pointer)(V_ADDR(addr,shift,off)));
-
-static CARD8
-read_b(xf86Int10InfoPtr pInt, int addr)
-{
- if (!BASE(addr,SHIFT)) return 0xff;
-
- return V_ADDR_RB(addr,SHIFT,OFF(addr));
-}
-
-static CARD16
-read_w(xf86Int10InfoPtr pInt, int addr)
-{
- int shift = SHIFT;
- int off = OFF(addr);
-
- if (!BASE(addr,shift)) return 0xffff;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- return ((V_ADDR_RB(addr,shift,off))
- || ((V_ADDR_RB(addr,shift,off + 1)) << 8));
-#else
- if (OFF(addr + 1) > 0) {
- return V_ADDR_RW(addr,SHIFT,OFF(addr));
- } else {
- return ((V_ADDR_RB(addr,shift,off + 1))
- || ((V_ADDR_RB(addr,shift,off)) << 8));
- }
-#endif
-}
-
-static CARD32
-read_l(xf86Int10InfoPtr pInt, int addr)
-{
- int shift = SHIFT;
- int off = OFF(addr);
-
- if (!BASE(addr,shift)) return 0xffffffff;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- return ((V_ADDR_RB(addr,shift,off))
- || ((V_ADDR_RB(addr,shift,off + 1)) << 8)
- || ((V_ADDR_RB(addr,shift,off + 2)) << 16)
- || ((V_ADDR_RB(addr,shift,off + 3)) << 24));
-#else
- if (OFF(addr + 3) > 2) {
- return V_ADDR_RL(addr,SHIFT,OFF(addr));
- } else {
- return ((V_ADDR_RB(addr,shift,off + 3))
- || ((V_ADDR_RB(addr,shift,off + 2)) << 8)
- || ((V_ADDR_RB(addr,shift,off + 1)) << 16)
- || ((V_ADDR_RB(addr,shift,off)) << 24));
- }
-#endif
-}
-
-static void
-write_b(xf86Int10InfoPtr pInt, int addr, CARD8 val)
-{
- if (!BASE(addr,SHIFT)) return;
-
- V_ADDR_WB(addr,SHIFT,OFF(addr),val);
-}
-
-static void
-write_w(xf86Int10InfoPtr pInt, int addr, CARD16 val)
-{
- int shift = SHIFT;
- int off = OFF(addr);
-
- if (!BASE(addr,shift)) return;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- V_ADDR_WB(addr,shift,off,val);
- V_ADDR_WB(addr,shift,off + 1,val >> 8);
-#else
- if (OFF(addr + 1) > 0) {
- V_ADDR_WW(addr,shift,OFF(addr),val);
- } else {
- V_ADDR_WB(addr,shift,off + 1,val);
- V_ADDR_WB(addr,shift,off,val >> 8);
- }
-#endif
-}
-
-static void
-write_l(xf86Int10InfoPtr pInt, int addr, CARD32 val)
-{
- int shift = SHIFT;
- int off = OFF(addr);
- if (!BASE(addr,shift)) return;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- V_ADDR_WB(addr,shift,off,val);
- V_ADDR_WB(addr,shift,off + 1, val >> 8);
- V_ADDR_WB(addr,shift,off + 2, val >> 16);
- V_ADDR_WB(addr,shift,off + 3, val >> 24);
-#else
- if (OFF(addr + 3) > 2) {
- V_ADDR_WL(addr,shift,OFF(addr),val);
- } else {
- V_ADDR_WB(addr,shift,off + 3, val);
- V_ADDR_WB(addr,shift,off + 2, val >> 8);
- V_ADDR_WB(addr,shift,off + 1, val >> 16);
- V_ADDR_WB(addr,shift,off, val >> 24);
- }
-#endif
-}
-
-pointer
-xf86int10Addr(xf86Int10InfoPtr pInt, CARD32 addr)
-{
- return (pointer) V_ADDR(addr,SHIFT,OFF(addr));
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c
deleted file mode 100644
index e050a62cb..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c,v 3.13 2003/06/10 17:03:54 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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 name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT 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.
- *
- */
-/* $XConsortium: os2_VTsw.c /main/7 1996/05/13 16:37:55 kaleb $ */
-
-#define I_NEED_OS2_H
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#define INCL_WINSWITCHLIST
-#define INCL_VIO
-#define INCL_KBD
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSERRORS
-#undef RT_FONT
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-
-BOOL SwitchedToWPS=FALSE;
-BOOL WaitingForAccess=FALSE;
-void os2PostKbdEvent();
-HEV hevServerHasFocus;
-HEV hevSwitchRequested;
-HEV hevErrorPopupDetected;
-extern HEV hevPopupPending;
-extern HEV hSwitchToSem;
-BOOL os2PopupErrorPending=FALSE;
-
-/*
- * Added OS/2 code to handle switching back to WPS
- */
-
-
-Bool xf86VTSwitchPending()
-{
- return(xf86Info.vtRequestsPending ? TRUE : FALSE);
-}
-
-Bool xf86VTSwitchAway()
-{
- APIRET rc;
- ULONG drive;
-
- xf86Info.vtRequestsPending=FALSE;
- SwitchedToWPS=TRUE;
-
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0000L,drive+96); /* Disable popups */
- DosPostEventSem(hevSwitchRequested);
- usleep(30000);
- return(TRUE);
-}
-
-Bool xf86VTSwitchTo()
-{
- APIRET rc;
- ULONG drive,postCount;
-
- xf86Info.vtRequestsPending=FALSE;
- SwitchedToWPS=FALSE;
- rc = DosResetEventSem(hSwitchToSem,&postCount);
- DosPostEventSem(hevSwitchRequested);
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0001L,drive+96); /* Disable popups */
-
- /* We reset the state of the control key */
- os2PostKbdEvent(KEY_LCtrl,1);
- os2PostKbdEvent(KEY_LCtrl,0);
- os2PostKbdEvent(KEY_RCtrl,1);
- os2PostKbdEvent(KEY_RCtrl,0);
- os2PostKbdEvent(KEY_Alt,1);
- os2PostKbdEvent(KEY_Alt,0);
- return(TRUE);
-}
-
-
-/* This function is run as a thread and will notify of switch-to/switch-away events */
-void os2VideoNotify(arg)
-void * arg;
-{
- USHORT Indic;
- USHORT NotifyType;
- APIRET rc;
- ULONG postCount;
- Bool FirstTime=TRUE;
- int timeout_count;
-
- rc=DosCreateEventSem(NULL,&hevServerHasFocus,0L,FALSE);
- rc=DosPostEventSem(hevServerHasFocus);
- rc=DosCreateEventSem(NULL,&hevSwitchRequested,0L,FALSE);
- rc=DosPostEventSem(hevSwitchRequested);
-
-
- while(1) {
- Indic=0;
- rc=VioSavRedrawWait(Indic,&NotifyType,(HVIO)0);
-
-/* Here we handle the semaphore used to indicate wether we have screen access */
- if(NotifyType==0) rc=DosResetEventSem(hevServerHasFocus,&postCount);
- if(FirstTime){
- FirstTime=FALSE;
- if(NotifyType==1) NotifyType=65535; /* In case a redraw is requested on first call */
- }
-
- if(NotifyType==1){
-/* Notify os2PseudoSelect() that we are back */
- rc=DosPostEventSem(hSwitchToSem);
- if (rc) xf86Msg(X_ERROR,"Post SwitchToSem returned %d\n");
-/* Sanity check */
- if (!SwitchedToWPS) {
- xf86Msg(X_ERROR,
- "Abnormal switching back to server detected\n");
- }
- }
-
-/* Here we set the semaphore used to indicate switching request */
-
- if((NotifyType!=65535)&&(!WaitingForAccess)) {
- rc=DosResetEventSem(hevSwitchRequested,&postCount);
- xf86Info.vtRequestsPending=TRUE;
-/* Then wait for semaphore to be posted once switch is complete. Wait 20 secs, then kill server */
- timeout_count=0;
- rc=DosSetPriority(2,3,0,1);
- do {
- rc=DosWaitEventSem(hevSwitchRequested,1000L);
- if(rc==ERROR_TIMEOUT){
- timeout_count++;
- if(timeout_count>25){
- xf86Msg(X_ERROR,
- "Server timeout on VT switch request. Server was killed\n");
- DosExit(1L,0);
- }
- if(WaitingForAccess) { /* The server is resetting */
- DosPostEventSem(hevSwitchRequested);
- xf86Info.vtRequestsPending=FALSE;
- }
- }
- } while (rc==ERROR_TIMEOUT);
- rc=DosSetPriority(2,2,0,1);
- }
- if(NotifyType==1) rc=DosPostEventSem(hevServerHasFocus);
- if((NotifyType==0)&&(!SwitchedToWPS))
- xf86Msg(X_ERROR,
- "Abnormal switching away from server!\n");
- } /* endwhile */
-
-/* End of thread */
-}
-
-/* This function is run as a thread and will notify of hard-error events */
-void os2HardErrorNotify(arg)
-void * arg;
-{
- USHORT Indic;
- USHORT NotifyType;
- APIRET rc;
- ULONG postCount;
-
- rc=DosCreateEventSem(NULL,&hevErrorPopupDetected,0L,FALSE);
- rc=DosPostEventSem(hevErrorPopupDetected);
- os2PopupErrorPending=FALSE;
-
- while(1) {
- Indic=0;
- rc=VioModeWait(Indic,&NotifyType,(HVIO)0);
- if(NotifyType==0){
- os2PopupErrorPending=TRUE;
- rc=DosPostEventSem(hSwitchToSem);
- rc=DosResetEventSem(hevErrorPopupDetected,&postCount);
- rc=DosWaitEventSem(hevErrorPopupDetected,20000L);
- if(rc==ERROR_TIMEOUT) GiveUp(0); /* Shutdown on timeout of semaphore */
- }
- } /* endwhile */
-
-/* End of thread */
-}
-
-static BOOL is_redirected = FALSE;
-
-static void
-redirect_output(void)
-{
- /* hv300996 create redirect file on boot drive, instead
- * anywhere you are just standing
- */
- char buf[20],dr[3];
- ULONG drive;
- APIRET rc;
-
- if (is_redirected) return;
-
- if ((rc = DosQuerySysInfo(5,5,&drive,sizeof(drive))) != 0)
- dr[0] = 0;
- else {
- dr[0] = drive+96;
- dr[1] = ':';
- dr[2] = 0;
- }
- sprintf(buf,"%s\\xf86log.os2",dr);
-
- ErrorF("\nThis is the XFree86/OS2-4.0 server\n");
- ErrorF("\nAll output from now on will be redirected to %s\n",buf);
- freopen(buf,"w",stderr);
-
- is_redirected = TRUE;
-}
-
-void
-os2ServerVideoAccess()
-{
- APIRET rc;
- ULONG fgSession;
- ULONG length=4;
- CHAR Status;
-
- /* Redirect output as early as possible */
- /* redirect_output(); */
- /* too many logfiles, server will log to /usr/adm */
-
-/* Wait for screen access. This is called at server reset or at server startup */
-/* Here we do some waiting until this session comes in the foreground before *
- * going any further. This is because we may have been started in the bg */
-
- if(serverGeneration==1){
- rc=VioScrLock(0, &Status, (HVIO)0);
- while(Status != 0){
- rc=VioScrLock(0, &Status, (HVIO)0);
- DosSleep(1000);
- }
- VioScrUnLock((HVIO)0);
- return;
- }
- WaitingForAccess=TRUE;
- rc=DosWaitEventSem(hevServerHasFocus,SEM_INDEFINITE_WAIT);
- WaitingForAccess=FALSE;
- SwitchedToWPS=FALSE; /* In case server has reset while we were switched to WPS */
-}
-
-/* This next function will attempt to recover from a hard error popup
- * with an EnterLeave call
- */
-
-void os2RecoverFromPopup()
-{
- int j;
- ULONG postCount;
-
- if (os2PopupErrorPending) {
-#if 0
- for (j = 0; j < screenInfo.numScreens; j++)
- (XF86SCRNINFO(screenInfo.screens[j])->EnterLeaveVT)(LEAVE, j);
- for (j = 0; j < screenInfo.numScreens; j++)
- (XF86SCRNINFO(screenInfo.screens[j])->EnterLeaveVT)(ENTER, j);
-#endif
- DosResetEventSem(hSwitchToSem,&postCount);
-
- for (j = 0; j < xf86NumScreens; j++) {
- if (xf86Screens[j]->EnableDisableFBAccess)
- (*xf86Screens[j]->EnableDisableFBAccess)(j, FALSE);
- }
- xf86EnterServerState(SETUP);
- for (j = 0; j < xf86NumScreens; j++)
- xf86Screens[j]->LeaveVT(j, 0);
- for (j = 0; j < xf86NumScreens; j++) {
- xf86Screens[j]->EnterVT(j, 0);
- }
- xf86EnterServerState(OPERATING);
- for (j = 0; j < xf86NumScreens; j++) {
- if (xf86Screens[j]->EnableDisableFBAccess)
- (*xf86Screens[j]->EnableDisableFBAccess)(j, TRUE);
- }
-
- /* We reset the state of the control key */
- os2PostKbdEvent(KEY_LCtrl,1);
- os2PostKbdEvent(KEY_LCtrl,0);
- os2PostKbdEvent(KEY_RCtrl,1);
- os2PostKbdEvent(KEY_RCtrl,0);
- os2PostKbdEvent(KEY_Alt,1);
- os2PostKbdEvent(KEY_Alt,0);
-
- /* Turn screen saver off when switching back */
- SaveScreens(SCREEN_SAVER_FORCER,ScreenSaverReset);
- os2PopupErrorPending=FALSE;
- DosPostEventSem(hevErrorPopupDetected);
- }
-}
-
-/* This checks wether a popup event is waiting. The semaphore would be reset
- * by the XF86VIO.DLL function
- */
-
-void os2CheckPopupPending()
-{
- int j;
- ULONG postCount;
-
- return; /* For now this is a no-op */
-
-#if 0
- DosQueryEventSem(hevPopupPending,&postCount);
- if (postCount==0) { /* We have a popup pending */
-#if 0
- for (j = 0; j < screenInfo.numScreens; j++)
- (XF86SCRNINFO(screenInfo.screens[j])->EnterLeaveVT)(LEAVE, j);
-#endif
- DosPostEventSem(hevPopupPending);
- }
-#endif
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c
deleted file mode 100644
index 4069ad745..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c,v 3.10 2000/04/05 18:13:52 dawes Exp $ */
-/*
- * (c) Copyright 1994 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_bios.c /main/5 1996/10/27 11:48:45 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#define INCL_32
-#define INCL_DOS
-#define INCL_DOSFILEMGR
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * Read BIOS via xf86sup.SYS device driver
- */
-
-static APIRET doioctl(HFILE fd,ULONG addr,ULONG len,unsigned char* dbuf)
-{
- UCHAR *dta;
- ULONG plen,dlen;
- APIRET rc;
-
- struct {
- ULONG command;
- ULONG physaddr;
- USHORT numbytes;
- } par;
-
- /* prepare parameter and data packets for ioctl */
- par.command = 0;
- par.physaddr = addr;
- par.numbytes = dlen = len;
- plen = sizeof(par);
-
- /* issue call to get a readonly copy of BIOS ROM */
- rc = DosDevIOCtl(fd, (ULONG)0x76, (ULONG)0x64,
- (PVOID)&par, (ULONG)plen, (PULONG)&plen,
- (PVOID)dbuf, (ULONG)dlen, (PULONG)&dlen);
-
- return rc;
-}
-
-int xf86ReadBIOS(Base, Offset, Buf, Len)
-unsigned long Base;
-unsigned long Offset;
-unsigned char *Buf;
-int Len;
-{
- HFILE fd;
- int i;
- ULONG action;
- APIRET rc;
- ULONG Phys_address;
- UCHAR* dta;
- int off, chunksz,lensave;
-
- /* allocate dta */
- dta = (UCHAR*)xalloc(Len);
-
- Phys_address=Base+Offset;
-
- /* open the special device pmap$ (default with OS/2) */
- if (DosOpen((PSZ)"PMAP$", (PHFILE)&fd, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0) != 0) {
- FatalError("xf86ReadBIOS: install DEVICE=path\\xf86sup.SYS!");
- return -1;
- }
-
- /* copy 32K at a time */
- off = 0;
- lensave = Len;
- while (Len > 0) {
- chunksz = (Len > 32768) ? 32768 : Len;
- Len -= chunksz;
- rc = doioctl(fd,(ULONG)Phys_address,chunksz,dta+off);
- if (rc != 0) {
- FatalError("xf86ReadBIOS: BIOS map failed, addr=%lx, rc=%d\n",
- Phys_address,rc);
- xfree(dta);
- DosClose(fd);
- return -1;
- }
- off += chunksz;
- }
-
- /*
- * Sanity check... No longer fatal, as some PS/1 and PS/2 fail here but still work.
- * S. Marineau, 10/10/96
- */
-#if 0
- if ((Phys_address & 0x7fff) != 0 &&
- (dta[0] != 0x55 || dta[1] != 0xaa)) {
- FatalError("BIOS sanity check failed, addr=%x\nPlease report if you encounter problems\n",
- Phys_address);
- }
-#endif
-
- /* copy data to buffer */
- memcpy(Buf, dta, lensave);
- xfree(dta);
-
- /* close device */
- DosClose(fd);
-
- return(lensave);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c
deleted file mode 100644
index f321df5c2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c,v 3.7 2000/04/05 18:13:52 dawes Exp $ */
-/*
- * (c) Copyright 1997 by Holger Veit
- * <Holger.Veit@gmd.de>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium$ */
-
-/* This file checks whether the user has installed the system correctly,
- * to avoid the numerous questions why this or that does not work
- */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#define INCL_DOSFILEMGR
-#define INCL_KBD
-#define INCL_VIO
-#define INCL_DOSMISC
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSMODULEMGR
-#define INCL_DOSFILEMGR
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-static BOOL diag_checks = FALSE;
-
-/* from Eberhard to check for the right EMX version */
-static void
-check_emx (void)
-{
- ULONG rc;
- HMODULE hmod;
- char name[CCHMAXPATH];
- char fail[9];
-
- if (_emx_rev < 50) {
- xf86Msg(X_ERROR,"This program requires emx.dll revision 50 (0.9c fix 2) "
- "or later.\n");
- rc = DosLoadModule (fail, sizeof (fail), "emx", &hmod);
- if (rc == 0) {
- rc = DosQueryModuleName (hmod, sizeof (name), name);
- if (rc == 0)
- xf86Msg(X_ERROR,"Please delete or update `%s'.\n", name);
- DosFreeModule (hmod);
- }
- exit (2);
- }
-}
-
-static void
-check_bsl(const char *var)
-{
- char *t1 = strrchr(var,'\\');
- if (strchr(var,'/')) {
- xf86Msg(X_WARNING,
- "\"%s\" must exclusively use backward slashes \"\\\"\n",
- var);
- }
- if (t1 && *(t1+1)=='\0') {
- xf86Msg(X_WARNING,
- "\"%s\" mustn't end with \"\\\"\n",var);
- *t1 = '\0';
- }
-}
-
-
-static void
-check_fsl(const char *var)
-{
- char *t1 = strrchr(var,'/');
- if (strchr(var,'\\')) {
- xf86Msg(X_WARNING,
- "\"%s\" must exclusively use forward slashes \"/\"\n",
- var);
- }
-}
-
-
-static void
-check_long(const char* path)
-{
- FILE *f;
- char n[300];
-
- sprintf(n,"%s\\xf86_test_for_very_long_filename",path);
- f = fopen(n,"w");
- if (f==NULL) {
- xf86Msg(X_WARNING,
- "\"%s\" does not accept long filenames\nmust reside on HPFS or similar\n",
- path);
- } else {
- fclose(f);
- unlink(n);
- }
-}
-
-static char *
-check_env_present(const char *env)
-{
- char *e = getenv(env);
- if (!e) {
- xf86Msg(X_WARNING,
- "You have no \"%s\" environment variable, but need one\n",
- env);
- return 0;
- }
- return e;
-}
-
-void os2_checkinstallation(void)
-{
- char *emxopt, *tmp, *home, *logname, *termcap;
- char hostname[256], *display, *hostvar, *s, *h;
- struct hostent *hent;
- struct in_addr *in;
- int i;
-
- if (diag_checks) return;
- diag_checks = TRUE;
-
- /* test whether the EMX version is okay */
- check_emx();
-
- /* Check a number of environment variables */
- emxopt = getenv("EMXOPT");
- if (emxopt) {
- for (i=0; i<strlen(emxopt); i++) {
- if (emxopt[i]=='-') {
- switch (emxopt[++i]) {
- case 't':
- xf86Msg(X_ERROR,
- "Remove -t option from EMXOPT variable!\n");
- break;
- case 'r':
- xf86Msg(X_ERROR,
- "Remove -r option from EMXOPT variable!\n");
- }
- }
- }
- }
-
- tmp = check_env_present("TMP");
- if (tmp) {
- check_bsl(tmp);
- check_long(tmp);
- }
-
- home = check_env_present("HOME");
- if (home) {
- check_bsl(home);
- check_long(home);
- }
-
- logname = check_env_present("LOGNAME");
- termcap = check_env_present("TERMCAP");
- if (termcap)
- check_fsl(termcap);
-
- if (gethostname(hostname,sizeof(hostname)) != 0) {
- xf86Msg(X_ERROR,
- "gethostname() failed: Check TCP/IP setup!\n");
- } else {
- xf86Msg(X_INFO,
- "gethostname() returns: \"%s\"\n",hostname);
- }
-
- display = check_env_present("DISPLAY");
- if (display)
- xf86Msg(X_INFO,
- "DISPLAY to listen is set to: \"%s\"\n",
- display);
-
- hostvar = check_env_present("HOSTNAME");
-
- strcpy(hostname,display);
- h = strchr(hostname,':');
- if (!h)
- xf86Msg(X_WARNING,
- "Invalid DISPLAY name: expected something like XXX:0.0\n");
- else
- *h = 0;
- h = strchr(hostname,'/');
- if (h)
- h++;
- else
- h = hostname;
-
- if (stricmp(h,hostvar)) {
- xf86Msg(X_WARNING,
- "HOSTNAME does not match DISPLAY: Do you really mean this?\n");
- xf86Msg(X_WARNING,
- " This means that xinit/startx and client access may not work\n");
- xf86Msg(X_WARNING,
- " which is intentional usually only when connection to a XDM server\n");
- }
-
- hent = gethostbyname(h);
- if (!hent)
- xf86Msg(X_ERROR,
- "gethostbyname() failed: Check TCP/IP setup\n");
- else {
- xf86Msg(X_INFO,
- "gethostbyname() returns the following data:\n");
- xf86Msg(X_INFO," official host name: \"%s\"\n",hent->h_name);
- while ((s= *(hent->h_aliases)) != NULL) {
- xf86Msg(X_INFO,
- " alias: \"%s\"\n",s);
- hent->h_aliases++;
- }
- xf86Msg(X_INFO,
- " addr type = %d, addr length = %d\n",
- hent->h_addrtype, hent->h_length);
- if (hent->h_addrtype == AF_INET) {
- while ((in= (struct in_addr*)*(hent->h_addr_list++)) != NULL) {
- xf86Msg(X_INFO,
- " IP address: \"%s\"\n",
- inet_ntoa(*in));
- }
- } else {
- xf86Msg(X_INFO,
- "Addrtype should be %d: Check network setup and install TCP/IP support correctly\n",
- AF_INET);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c
deleted file mode 100644
index 81b2689b8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c,v 3.18 2003/11/29 01:48:31 dawes Exp $ */
-/*
- * (c) Copyright 1994 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_init.c /main/9 1996/10/19 18:07:13 kaleb $ */
-
-#define I_NEED_OS2_H
-#define INCL_DOSFILEMGR
-#define INCL_KBD
-#define INCL_VIO
-#define INCL_DOSMISC
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSMODULEMGR
-#define INCL_DOSFILEMGR
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <float.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-VIOMODEINFO OriginalVideoMode;
-void os2VideoNotify();
-void os2HardErrorNotify();
-void os2KbdMonitorThread();
-void os2KbdBitBucketThread();
-HEV hevPopupPending;
-extern HEV hKbdSem;
-extern BOOL os2HRTimerFlag;
-static unsigned short cw;
-extern void os2_checkinstallation(); /* os2_diag.c */
-
-void xf86OpenConsole()
-{
- /* try to catch problems before they become obvious */
- os2_checkinstallation();
-
- if (serverGeneration == 1) {
- HKBD fd;
- ULONG drive;
- ULONG dummy;
- KBDHWID hwid;
- APIRET rc;
- int VioTid;
- ULONG actual_handles;
- LONG new_handles;
-
- /* hv 250197 workaround for xkb-Problem: switch to X11ROOT drive */
- char *x11r = getenv("X11ROOT");
- /* Make sure X11ROOT is set before we go further sm280297 */
- if (x11r == NULL){
- xf86Msg(X_ERROR,
- "Environment variable X11ROOT is not set! Aborting...\n");
- exit(1);
- }
- if (_chdir2(x11r) < 0) {
- xf86Msg(X_ERROR,"Cannot change to X11ROOT directory!\n");
- }
-
- xf86Msg(X_INFO,"Console opened\n");
- OriginalVideoMode.cb=sizeof(VIOMODEINFO);
- rc=VioGetMode(&OriginalVideoMode,(HVIO)0);
- if(rc!=0)
- xf86Msg(X_ERROR,
- "Could not get original video mode. RC=%d\n",rc);
- xf86Info.consoleFd = -1;
-
- /* Set the number of handles to higher than the default 20. Set to 80 which should be plenty */
- new_handles = 0;
- rc = DosSetRelMaxFH(&new_handles,&actual_handles);
- if (actual_handles < 80) {
- new_handles = 80 - actual_handles;
- rc = DosSetRelMaxFH(&new_handles,&actual_handles);
- xf86Msg(X_INFO,"Increased number of available handles to %d\n",
- actual_handles);
- }
-
- /* grab the keyboard */
- rc = KbdGetFocus(0,0);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot grab kbd focus, rc=%d\n",rc);
-
- /* open the keyboard */
- rc = KbdOpen(&fd);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot open keyboard, rc=%d\n",rc);
- xf86Info.consoleFd = fd;
-
- xf86Msg(X_INFO,"Keyboard opened\n");
-
- /* assign logical keyboard */
- KbdFreeFocus(0);
- rc = KbdGetFocus(0,fd);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot set local kbd focus, rc=%d\n",rc);
-
-/* Create kbd queue semaphore */
-
- rc = DosCreateEventSem(NULL,&hKbdSem,DC_SEM_SHARED,TRUE);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot create keyboard queue semaphore, rc=%d\n",rc);
-
-/* Create popup semaphore */
-
- rc = DosCreateEventSem("\\SEM32\\XF86PUP",&hevPopupPending,DC_SEM_SHARED,1);
- if (rc)
- xf86Msg(X_ERROR,
- "Could not create popup semaphore! RC=%d\n",rc);
-#if 0
- rc=VioRegister("xf86vio","XF86POPUP_SUBCLASS",0x20002004L,0L);
- if (rc) {
- FatalError("Could not register XF86VIO.DLL module. Please install in LIBPATH! RC=%d\n",
- rc);
- }
-#endif
-
-/* Start up the VIO monitor thread */
- VioTid=_beginthread(os2VideoNotify,NULL,0x4000,(void *)NULL);
- xf86Msg(X_INFO,"Started Vio thread, Tid=%d\n",VioTid);
- rc=DosSetPriority(2,3,0,VioTid);
-
-/* Start up the hard-error VIO monitor thread */
- VioTid=_beginthread(os2HardErrorNotify,NULL,0x4000,(void *)NULL);
- xf86Msg(X_INFO,"Started hard error Vio mode monitor thread, Tid=%d\n",
- VioTid);
- rc=DosSetPriority(2,3,0,VioTid);
-
-/* We have to set the codepage before the keyboard monitor is registered */
- rc = KbdSetCp(0,0,fd);
- if(rc != 0)
- FatalError("xf86OpenConsole: cannot set keyboard codepage, rc=%d\n",rc);
-
-/* Start up the kbd monitor thread */
- VioTid=_beginthread(os2KbdMonitorThread,NULL,0x4000,(void *)NULL);
- xf86Msg(X_INFO,"Started Kbd monitor thread, Tid=%d\n",VioTid);
- rc=DosSetPriority(2,3,0,VioTid);
-
-/* Disable hard-errors through DosError */
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0001L,drive+96); /* Disable popups */
-
- hwid.cb = sizeof(hwid); /* fix crash on P9000 */
- rc = KbdGetHWID(&hwid, fd);
- if (rc == 0) {
- switch (hwid.idKbd) {
- default:
- case 0xab54: /* 88/89 key */
- case 0: /*unknown*/
- case 1: /*real AT 84 key*/
- xf86Info.kbdType = KB_84; break;
- case 0xab85: /* 122 key */
- FatalError("Unsupported extended 122key keyboard found!\n",0);
- case 0xab41: /* 101/102 key */
- xf86Info.kbdType = KB_101; break;
- }
- } else
- xf86Info.kbdType = KB_84; /*defensive*/
-
-/* Start up the Kbd bit-bucket thread. We don't want to leave the kbd events in the driver queue */
- VioTid=_beginthread(os2KbdBitBucketThread,NULL,0x2000,(void *)NULL);
- xf86Msg(X_INFO,"Started Kbd bit-bucket thread, Tid=%d\n",VioTid);
-
-/* fg271103: set control word of FPU to default value to prevent SIGFPE in GLX (and elsewhere?) */
-
-#define DEFAULT_X86_FPU 0x037f
-
- cw = _control87(DEFAULT_X86_FPU, 0xFFFF);
- xf86Msg(X_INFO,"Checking FPCW: %#x\n",cw);
-
- if (cw != DEFAULT_X86_FPU) {
- cw = _control87(0,0);
- xf86Msg(X_INFO,"Set FPCW to %#x\n",cw);
- }
-
- }
- return;
-}
-
-void xf86CloseConsole()
-{
- APIRET rc;
- ULONG drive;
-
- if (xf86Info.consoleFd != -1) {
- KbdClose(xf86Info.consoleFd);
- }
- VioSetMode(&OriginalVideoMode,(HVIO)0);
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0000L,drive+96); /* Reenable popups */
- rc = DosCloseEventSem(hevPopupPending);
- rc = VioDeRegister();
- return;
-}
-
-/* ARGSUSED */
-
-int xf86ProcessArgument (argc, argv, i)
-int argc;
-char *argv[];
-int i;
-{
- return 0;
-}
-
-void xf86UseMsg()
-{
- return;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c
deleted file mode 100644
index e6570aeb9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c,v 3.19 2003/11/17 22:20:41 dawes Exp $ */
-/*
- * (c) Copyright 1994,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_io.c /main/9 1996/05/13 16:38:07 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xpoll.h>
-#include "compiler.h"
-#include <time.h>
-
-#define INCL_DOSPROCESS
-#define INCL_KBD
-#define INCL_MOU
-#define INCL_DOSDEVIOCTL
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-int os2MouseQueueQuery();
-int os2KbdQueueQuery();
-void os2RecoverFromPopup();
-void os2CheckPopupPending();
-extern BOOL os2PopupErrorPending;
-int _select2 (int, fd_set *, fd_set *,fd_set *, struct timeval *);
-
-
-/***************************************************************************/
-
-void xf86SoundKbdBell(loudness, pitch, duration)
-int loudness;
-int pitch;
-int duration;
-{
- DosBeep((ULONG)pitch, (ULONG)duration);
-}
-
-void xf86SetKbdLeds(leds)
-int leds;
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- if (!rc) {
- kinfo.fsMask = 0x10;
- kinfo.fsState &= ~0x70;
- kinfo.fsState |= (leds&0x70);
- KbdSetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- }
-}
-
-int xf86GetKbdLeds()
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- return rc ? 0 : kinfo.fsState & 0x70;
-}
-
-void xf86SetKbdRepeat(char rad)
-{
- int rc;
- int delay = 250; /* Default delay */
- int rate = 30; /* Default repeat rate */
-
- struct {
- USHORT Delay;
- USHORT Rate;
- } rateDelay;
-
- ULONG rateDelaySize = sizeof(rateDelay);
-
- /*notyet*/
- return;
-
- if (xf86Info.kbdRate >= 0)
- rate = xf86Info.kbdRate;
- if (xf86Info.kbdDelay >= 0)
- delay = xf86Info.kbdDelay;
-
- rateDelay.Delay = delay;
- rateDelay.Rate = rate;
-
- xf86Msg(X_INFO,"Setting typematic rate: Delay=%d, Rate=%d\n",delay,rate);
-
- rc = DosDevIOCtl( (HFILE) xf86Info.consoleFd,
- IOCTL_KEYBOARD,
- KBD_SETTYPAMATICRATE,
- &rateDelay,
- rateDelaySize,
- &rateDelaySize,
- NULL,
- 0,
- NULL);
- if (rc!=0) {
- xf86Msg(X_ERROR,"xf86SetKbdRepeat: DosDevIOCtl returned %d\n",rc);
- }
-}
-
-void xf86KbdInit()
-{
- /*none required*/
-}
-
-
-USHORT OrigKbdState;
-USHORT OrigKbdInterim;
-
-typedef struct {
- USHORT state;
- UCHAR makeCode;
- UCHAR breakCode;
- USHORT keyID;
-} HOTKEYPARAM;
-
-
-int xf86KbdOn()
-{
- KBDINFO info;
- APIRET rc;
- int i,k;
- ULONG len;
-
-
- KbdGetStatus(&info,(HKBD)xf86Info.consoleFd);
- OrigKbdState=info.fsMask;
- OrigKbdInterim=info.fsInterim;
- info.fsMask &= ~0x09;
- info.fsMask |= 0x136;
- info.fsInterim &= ~0x20;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-int xf86KbdOff()
-{
- ULONG len;
- APIRET rc;
- KBDINFO info;
-
- info.fsMask=OrigKbdState;
- info.fsInterim=OrigKbdInterim;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-#if 0 /*OBSOLETE*/
-void xf86MouseInit(mouse)
-MouseDevPtr mouse;
-{
- HMOU fd;
- APIRET rc;
- USHORT nbut;
-
- if (serverGeneration == 1) {
- rc = MouOpen((PSZ)NULL,(PHMOU)&fd);
- if (rc != 0)
- FatalError("Cannot open mouse, rc=%d\n", rc);
- mouse->mseFd = fd;
- }
-
- /* flush mouse queue */
- MouFlushQue(fd);
-
- /* check buttons */
- rc = MouGetNumButtons(&nbut,fd);
- if (rc == 0)
- xf86Msg(X_INFO,"OsMouse has %d button(s).\n",nbut);
-}
-#endif
-
-#if 0 /*OBSOLETE*/
-int xf86MouseOn(mouse)
-MouseDevPtr mouse;
-{
-#if 0
- HMOU fd;
- APIRET rc;
- USHORT nbut;
-#endif
- xf86Msg (X_ERROR,
- "Calling MouseOn, a bad thing.... Must be some bug in the code!\n");
-
-#if 0
- if (serverGeneration == 1) {
- rc = MouOpen((PSZ)NULL,(PHMOU)&fd);
- if (rc != 0)
- FatalError("Cannot open mouse, rc=%d\n", rc);
- mouse->mseFd = fd;
- }
-
- /* flush mouse queue */
- MouFlushQue(fd);
-
- /* check buttons */
- rc = MouGetNumButtons(&nbut,fd);
- if (rc == 0)
- xf86Msg(X_INFO,"OsMouse has %d button(s).\n",nbut);
-
- return (mouse->mseFd);
-#endif
-}
-#endif
-
-#if 0 /*OBSOLETE*/
-/* This table is a bit irritating, because these mouse types are infact
- * defined in the OS/2 kernel, but I want to force the user to put
- * "OsMouse" in the config file, and not worry about the particular mouse
- * type that is connected.
- */
-Bool xf86SupportedMouseTypes[] =
-{
- FALSE, /* Microsoft */
- FALSE, /* MouseSystems */
- FALSE, /* MMSeries */
- FALSE, /* Logitech */
- FALSE, /* BusMouse */
- FALSE, /* MouseMan */
- FALSE, /* PS/2 */
- FALSE, /* Hitachi Tablet */
-};
-
-int xf86NumMouseTypes = sizeof(xf86SupportedMouseTypes) /
- sizeof(xf86SupportedMouseTypes[0]);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c
deleted file mode 100644
index c03bb96af..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c,v 3.5 1997/08/26 10:01:38 hohndel Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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 name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT 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.
- *
- */
-/* $XConsortium: os2_ioperm.c /main/4 1996/04/18 16:50:01 kaleb $ */
-
-
-
-#define I_NEED_OS2_H
-#define INCL_32
-#define INCL_DOS
-#define INCL_DOSFILEMGR
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * To access I/O ports under OS/2, we use the xf86sup.sys driver.
- * For the moment, we use a function which basically grants IO priviledge
- * to the whole server. NOTE: Once the server is running, we should
- * change this to use inline IO functions through the callgate returned by
- * the fastio$ driver.
- */
-
-int ioEnabled=FALSE;
-ULONG action;
-char *ioDrvPath = "/dev/fastio$";
-USHORT callgate[3]={0,0,0};
-
-
-Bool xf86EnableIO()
-{
-
-HFILE hfd;
- ULONG dlen;
- APIRET rc;
-
- /* no need to call multiple times */
- if (ioEnabled) return TRUE;
-
- if (DosOpen((PSZ)ioDrvPath, (PHFILE)&hfd, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0) != 0) {
- xf86Msg(X_ERROR,"Error opening fastio$ driver...\n");
- xf86Msg(X_ERROR,"Please install xf86sup.sys in config.sys!\n");
- return FALSE;
- }
- callgate[0] = callgate[1] = 0;
-
-/* Get callgate from driver for fast io to ports and other stuff */
-
- rc = DosDevIOCtl(hfd, (ULONG)0x76, (ULONG)0x64,
- NULL, 0, NULL,
- (ULONG*)&callgate[2], sizeof(USHORT), &dlen);
- if (rc) {
- xf86Msg(X_ERROR,
- "EnableIOPorts failed, rc=%d, dlen=%d; emergency exit\n",
- rc,dlen);
- DosClose(hfd);
- return FALSE;
- }
-
-/* Calling callgate with function 13 sets IOPL for the program */
-
- asm volatile ("movl $13,%%ebx;.byte 0xff,0x1d;.long _callgate"
- : /*no outputs */
- : /*no inputs */
- : "eax","ebx","ecx","edx","cc");
-
- ioEnabled = TRUE;
- DosClose(hfd);
- return TRUE;
-}
-
-void xf86DisableIO()
-{
-HFILE hfd;
- ULONG dlen;
- APIRET rc;
-
- /* no need to call multiple times */
- if (!ioEnabled) return;
-
- if (DosOpen((PSZ)ioDrvPath, (PHFILE)&hfd, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0) != 0) {
- xf86Msg(X_ERROR,"Error opening fastio$ driver...\n");
- xf86Msg(X_ERROR,"Please install xf86sup.sys in config.sys!\n");
- return;
- }
- callgate[0] = callgate[1] = 0;
-
- rc = DosDevIOCtl(hfd, (ULONG)0x76, (ULONG)0x64,
- NULL, 0, NULL,
- (ULONG*)&callgate[2], sizeof(USHORT), &dlen);
- if (rc) {
- xf86Msg(X_ERROR,"DisableIOPorts failed, rc=%d, dlen=%d\n",
- rc,dlen);
- DosClose(hfd);
- return;
- }
-
-/* Function 14 of callgate brings program back to ring 3 */
-
- asm volatile ("movl $14,%%ebx;.byte 0xff,0x1d;.long _callgate"
- : /*no outputs */
- : /*no inputs */
- : "eax","ebx","ecx","edx","cc");
- ioEnabled=FALSE;
- DosClose(hfd);
- return;
-
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c
deleted file mode 100644
index f99f12c0f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copied from os2_io.c which is
- *
- * (c) Copyright 1994,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XFree86$ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xpoll.h>
-#include "compiler.h"
-#include <time.h>
-
-#define INCL_DOSPROCESS
-#define INCL_KBD
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-
-
-
-/***************************************************************************/
-
-static void SoundKbdBell(loudness, pitch, duration)
-int loudness;
-int pitch;
-int duration;
-{
- DosBeep((ULONG)pitch, (ULONG)duration);
-}
-
-static void SetKbdLeds(pInfo, leds)
-InputInfoPtr pInfo;
-int leds;
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- if (!rc) {
- kinfo.fsMask = 0x10;
- kinfo.fsState &= ~0x70;
- kinfo.fsState |= (leds&0x70);
- KbdSetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- }
-}
-
-static int GetKbdLeds(pInfo)
-InputInfoPtr pInfo;
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- return rc ? 0 : kinfo.fsState & 0x70;
-}
-
-static void SetKbdRepeat(pInfo, rad)
-InputInfoPtr pInfo;
-char rad;
-{
- /*notyet*/
-}
-
-static void KbdInit(pInfo)
-InputInfoPtr pInfo;
-{
- /*none required*/
- xf86Msg(X_INFO,"XKB module: Keyboard initialized\n");
-}
-
-
-static USHORT OrigKbdState;
-static USHORT OrigKbdInterim;
-
-typedef struct {
- USHORT state;
- UCHAR makeCode;
- UCHAR breakCode;
- USHORT keyID;
-} HOTKEYPARAM;
-
-
-static int KbdOn(pInfo)
-InputInfoPtr pInfo;
-{
- KBDINFO info;
-
- KbdGetStatus(&info,(HKBD)xf86Info.consoleFd);
- OrigKbdState=info.fsMask;
- OrigKbdInterim=info.fsInterim;
- info.fsMask &= ~0x09;
- info.fsMask |= 0x136;
- info.fsInterim &= ~0x20;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-static int KbdOff(pInfo)
-InputInfoPtr pInfo;
-{
- KBDINFO info;
-
- info.fsMask=OrigKbdState;
- info.fsInterim=OrigKbdInterim;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = pInfo->private;
-
- pKbd->KbdInit = KbdInit;
- pKbd->KbdOn = KbdOn;
- pKbd->KbdOff = KbdOff;
- pKbd->Bell = SoundKbdBell;
- pKbd->SetLeds = SetKbdLeds;
- pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
-
- pKbd->vtSwitchSupported = FALSE;
-
- /* not yet */
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c
deleted file mode 100644
index 861fbf089..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c
+++ /dev/null
@@ -1,511 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c,v 3.16 2002/05/31 18:46:01 dawes Exp $ */
-/*
- * (c) Copyright 1994,1996,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_kbdEv.c /main/10 1996/10/27 11:48:48 kaleb $ */
-
-#define I_NEED_OS2_H
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#define INCL_KBD
-#define INCL_DOSMONITORS
-#define INCL_WINSWITCHLIST
-#define INCL_DOSQUEUES
-#undef RT_FONT /* must discard this */
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-
-/* Attention! these lines copied from ../../common/xf86Events.c */
-#define XE_POINTER 1
-#define XE_KEYBOARD 2
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-#ifdef XTESTEXT1
-
-#define XTestSERVER_SIDE
-#include <X11/extensions/xtestext1.h>
-extern short xtest_mousex;
-extern short xtest_mousey;
-extern int on_steal_input;
-extern Bool XTestStealKeyData();
-extern void XTestStealMotionData();
-
-#ifdef XINPUT
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- if (!on_steal_input || \
- XTestStealKeyData((ev)->u.u.detail, (ev)->u.u.type, dev_type, \
- xtest_mousex, xtest_mousey)) \
- xf86eqEnqueue((ev))
-#else
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- if (!on_steal_input || \
- XTestStealKeyData((ev)->u.u.detail, (ev)->u.u.type, dev_type, \
- xtest_mousex, xtest_mousey)) \
- mieqEnqueue((ev))
-#endif
-
-#define MOVEPOINTER(dx, dy, time) \
- if (on_steal_input) \
- XTestStealMotionData(dx, dy, XE_POINTER, xtest_mousex, xtest_mousey); \
- miPointerDeltaCursor (dx, dy, time)
-
-#else /* ! XTESTEXT1 */
-
-#ifdef XINPUT
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- xf86eqEnqueue((ev))
-#else
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- mieqEnqueue((ev))
-#endif
-#define MOVEPOINTER(dx, dy, time) \
- miPointerDeltaCursor (dx, dy, time)
-
-#endif
-/* end of include */
-
-HQUEUE hKbdQueue;
-HEV hKbdSem;
-int last_status;
-int lastStatus;
-int lastShiftState;
-extern BOOL SwitchedToWPS;
-
-void os2PostKbdEvent();
-
-int os2KbdQueueQuery()
-{
- ULONG numElements,postCount;
-
- (void)DosQueryQueue(hKbdQueue,&numElements);
- if (numElements!=0) return 0; /* We have something in queue */
-
- DosResetEventSem(hKbdSem,&postCount);
- return 1;
-}
-
-
-void xf86KbdEvents()
-{
- KBDKEYINFO keybuf;
- ULONG numElements;
- REQUESTDATA requestData;
- ULONG dataLength, postCount;
- PVOID dummy;
- BYTE elemPriority;
- int scan, down;
- static int last;
- USHORT ModState;
- int i;
-
- while(DosReadQueue(hKbdQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hKbdSem) == 0) {
-
- /* xf86Msg(X_INFO,
- "Got queue element. data=%d, scancode =%d,up=%d, ddflag %d\n",
- requestData.ulData,
- (requestData.ulData&0x7F00)>>8,
- requestData.ulData&0x8000,
- requestData.ulData>>16);*/
-
- scan=(requestData.ulData&0x7F00)>>8;
-
- /* the separate cursor keys return 0xe0/scan */
- if ((requestData.ulData & 0x3F0000)==0x20000) scan=0;
- if (requestData.ulData & 0x800000) {
- switch (scan) {
-
-/* BUG ALERT: IBM has in its keyboard driver a 122 key keyboard, which
- * uses the "server generated scancodes" from atKeynames.h as real scan codes.
- * We wait until some poor guy with such a keyboard will break the whole
- * card house though...
- */
- case KEY_KP_7: scan = KEY_Home; break;
- case KEY_KP_8: scan = KEY_Up; break;
- case KEY_KP_9: scan = KEY_PgUp; break;
- case KEY_KP_4: scan = KEY_Left; break;
- case KEY_KP_5: scan = KEY_Begin; break;
- case KEY_KP_6: scan = KEY_Right; break;
- case KEY_KP_1: scan = KEY_End; break;
- case KEY_KP_2: scan = KEY_Down; break;
- case KEY_KP_3: scan = KEY_PgDown; break;
- case KEY_KP_0: scan = KEY_Insert; break;
- case KEY_KP_Decimal: scan = KEY_Delete; break;
- case KEY_Enter: scan = KEY_KP_Enter; break;
- case KEY_LCtrl: scan = KEY_RCtrl; break;
- case KEY_KP_Multiply: scan = KEY_Print; break;
- case KEY_Slash: scan = KEY_KP_Divide; break;
- case KEY_Alt: scan = KEY_AltLang; break;
- case KEY_ScrollLock: scan = KEY_Break; break;
- case 0x5b: scan = KEY_LMeta; break;
- case 0x5c: scan = KEY_RMeta; break;
- case 0x5d: scan = KEY_Menu; break;
- default:
- /* virtual shifts: ignore */
- scan = 0; break;
- }
- }
-
- down = (requestData.ulData&0x8000) ? FALSE : TRUE;
- if (scan!=0) os2PostKbdEvent(scan, down);
- }
- (void)DosResetEventSem(hKbdSem,&postCount);
-}
-
-/*
- * xf86PostKbdEvent --
- * Translate the raw hardware KbdEvent into an XEvent, and tell DIX
- * about it. Scancode preprocessing and so on is done ...
- *
- * OS/2 specific xf86PostKbdEvent(key) has been moved from common/xf86Events.c
- * as some things differ, and I didn't want to scatter this routine with
- * ifdefs further (hv).
- */
-
-void os2PostKbdEvent(unsigned scanCode, Bool down)
-{
- KeyClassRec *keyc = ((DeviceIntPtr)xf86Info.pKeyboard)->key;
- Bool updateLeds = FALSE;
- Bool UsePrefix = FALSE;
- Bool Direction = FALSE;
- xEvent kevent;
- KeySym *keysym;
- int keycode;
- static int lockkeys = 0;
-
- /*
- * and now get some special keysequences
- */
- if ((ModifierDown(ControlMask | AltMask)) ||
- (ModifierDown(ControlMask | AltLangMask))) {
- switch (scanCode) {
- case KEY_BackSpace:
- if (!xf86Info.dontZap) GiveUp(0);
- return;
- case KEY_KP_Minus: /* Keypad - */
- if (!xf86Info.dontZoom) {
- if (down)
- xf86ZoomViewport(xf86Info.currentScreen, -1);
- return;
- }
- break;
- case KEY_KP_Plus: /* Keypad + */
- if (!xf86Info.dontZoom) {
- if (down)
- xf86ZoomViewport(xf86Info.currentScreen, 1);
- return;
- }
- break;
- }
- }
-
- /* CTRL-ESC is std OS/2 hotkey for going back to PM and popping up
- * window list... handled by keyboard driverand PM if you tell it. This is
- * what we have done, and thus should never detect this key combo */
- if (ModifierDown(ControlMask) && scanCode==KEY_Escape) {
- /* eat it */
- return;
- } else if (ModifierDown(AltLangMask|AltMask) && scanCode==KEY_Escape) {
- /* same here */
- return;
- }
-
- /*
- * Now map the scancodes to real X-keycodes ...
- */
- keycode = scanCode + MIN_KEYCODE;
- keysym = (keyc->curKeySyms.map +
- keyc->curKeySyms.mapWidth *
- (keycode - keyc->curKeySyms.minKeyCode));
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- /* Filter autorepeated caps/num/scroll lock keycodes. */
-
-#define CAPSFLAG 0x01
-#define NUMFLAG 0x02
-#define SCROLLFLAG 0x04
-#define MODEFLAG 0x08
- if (down) {
- switch (keysym[0]) {
- case XK_Caps_Lock:
- if (lockkeys & CAPSFLAG)
- return;
- else
- lockkeys |= CAPSFLAG;
- break;
- case XK_Num_Lock:
- if (lockkeys & NUMFLAG)
- return;
- else
- lockkeys |= NUMFLAG;
- break;
- case XK_Scroll_Lock:
- if (lockkeys & SCROLLFLAG)
- return;
- else
- lockkeys |= SCROLLFLAG;
- break;
- }
-
- if (keysym[1] == XF86XK_ModeLock) {
- if (lockkeys & MODEFLAG)
- return;
- else
- lockkeys |= MODEFLAG;
- }
- } else {
- switch (keysym[0]) {
- case XK_Caps_Lock:
- lockkeys &= ~CAPSFLAG;
- break;
- case XK_Num_Lock:
- lockkeys &= ~NUMFLAG;
- break;
- case XK_Scroll_Lock:
- lockkeys &= ~SCROLLFLAG;
- break;
- }
-
- if (keysym[1] == XF86XK_ModeLock)
- lockkeys &= ~MODEFLAG;
- }
-
- /*
- * LockKey special handling:
- * ignore releases, toggle on & off on presses.
- * Don't deal with the Caps_Lock keysym directly,
- * but check the lock modifier
- */
-#ifndef PC98
- if (keyc->modifierMap[keycode] & LockMask ||
- keysym[0] == XK_Scroll_Lock ||
- keysym[1] == XF86XK_ModeLock ||
- keysym[0] == XK_Num_Lock) {
- Bool flag;
-
- if (!down) return;
- flag = !KeyPressed(keycode);
- if (!flag) down = !down;
-
- if (keyc->modifierMap[keycode] & LockMask)
- xf86Info.capsLock = flag;
- if (keysym[0] == XK_Num_Lock)
- xf86Info.numLock = flag;
- if (keysym[0] == XK_Scroll_Lock)
- xf86Info.scrollLock = flag;
- if (keysym[1] == XF86XK_ModeLock)
- xf86Info.modeSwitchLock = flag;
- updateLeds = TRUE;
- }
-#endif /* not PC98 */
-
- /* normal, non-keypad keys */
- if (scanCode < KEY_KP_7 || scanCode > KEY_KP_Decimal) {
- /* magic ALT_L key on AT84 keyboards for multilingual support */
- if (xf86Info.kbdType == KB_84 &&
- ModifierDown(AltMask) &&
- keysym[2] != NoSymbol) {
- UsePrefix = TRUE;
- Direction = TRUE;
- }
- }
-
-#ifdef XKB /* Warning: got position wrong first time */
- }
-#endif
-
- /* check for an autorepeat-event */
- if ((down && KeyPressed(keycode)) &&
- (xf86Info.autoRepeat != AutoRepeatModeOn || keyc->modifierMap[keycode]))
- return;
-
- xf86Info.lastEventTime =
- kevent.u.keyButtonPointer.time =
- GetTimeInMillis();
-
- /*
- * And now send these prefixes ...
- * NOTE: There cannot be multiple Mode_Switch keys !!!!
- */
- if (UsePrefix) {
- ENQUEUE(&kevent,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7],
- Direction ? KeyPress : KeyRelease,
- XE_KEYBOARD);
- ENQUEUE(&kevent,
- keycode,
- down ? KeyPress : KeyRelease,
- XE_KEYBOARD);
- ENQUEUE(&kevent,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7],
- Direction ? KeyRelease : KeyPress,
- XE_KEYBOARD);
- } else {
-#ifdef XFreeDGA
- if (((ScrnInfoPtr)(xf86Info.currentScreen->devPrivates[xf86ScreenIndex].ptr))->directMode&XF86DGADirectKeyb) {
- XF86DirectVideoKeyEvent(&kevent,
- keycode,
- down ? KeyPress : KeyRelease);
- } else
-#endif
- {
- ENQUEUE(&kevent,
- keycode,
- down ? KeyPress : KeyRelease,
- XE_KEYBOARD);
- }
- }
-
- if (updateLeds) xf86KbdLeds();
-}
-
-#pragma pack(1)
-struct KeyPacket {
- unsigned short mnflags;
- KBDKEYINFO cp;
- unsigned short ddflags;
-};
-#pragma pack()
-
-/* The next function runs as a thread. It registers a monitor on the kbd
- * driver, and uses that to get keystrokes. This is because the standard
- * OS/2 keyboard driver does not send keyboard release events. A queue
- * is used to communicate with the main thread to send keystrokes */
-
-void os2KbdMonitorThread(void* arg)
-{
- struct KeyPacket packet;
- APIRET rc;
- USHORT length,print_flag;
- ULONG queueParam;
- HMONITOR hKbdMonitor;
- MONIN monInbuf;
- MONOUT monOutbuf;
- char queueName[128];
-
-#if 0
- monInbuf=(MONIN *)_tmalloc(2*sizeof(MONIN));
- if (monInbuf==NULL) {
- xf86Msg(X_ERROR,
- "Could not allocate memory in kbd monitor thread!\n");
- exit(1);
- }
- monOutbuf=(MONOUT *) &monInbuf[1];
-#endif
-
- monInbuf.cb=sizeof(MONIN);
- monOutbuf.cb=sizeof(MONOUT);
-
- rc = DosMonOpen("KBD$",&hKbdMonitor);
- xf86Msg(X_INFO,"Opened kbd monitor, rc=%d\n",rc);
- rc = DosMonReg(hKbdMonitor,
- (PBYTE)&monInbuf,(PBYTE)&monOutbuf,(USHORT)2,(USHORT)-1);
- xf86Msg(X_INFO,"Kbd monitor registered, rc=%d\n",rc);
- if (rc) {
- DosMonClose(hKbdMonitor);
- exit(1);
- }
-
- /* create a queue */
- sprintf(queueName,"\\QUEUES\\XF86KBD\\%d",getpid());
- rc = DosCreateQueue(&hKbdQueue,0L,queueName);
- xf86Msg(X_INFO,"Kbd Queue created, rc=%d\n",rc);
- (void)DosPurgeQueue(hKbdQueue);
-
- while (1) {
- length = sizeof(packet);
- rc = DosMonRead((PBYTE)&monInbuf,0,(PBYTE)&packet,&length);
- if (rc) {
- xf86Msg(X_ERROR,
- "DosMonRead returned bad RC! rc=%d\n",rc);
- DosMonClose(hKbdMonitor);
- exit(1);
- }
- queueParam = packet.mnflags+(packet.ddflags<<16);
- if (packet.mnflags&0x7F00)
- DosWriteQueue(hKbdQueue,queueParam,0L,NULL,0L);
- /*xf86Msg(X_INFO,"Wrote a char to queue, rc=%d\n",rc); */
- print_flag = packet.ddflags & 0x1F;
-
- /*xf86Msg(X_INFO,"Kbd Monitor: Key press %d, scan code %d, ddflags %d\n",
- packet.mnflags&0x8000,(packet.mnflags&0x7F00)>>8,packet.ddflags);
- */
-
- /* This line will swallow print-screen keypresses */
- if (print_flag == 0x13 || print_flag == 0x14 ||
- print_flag == 0x15 || print_flag == 0x16)
- rc = 0;
- else
- rc = DosMonWrite((PBYTE)&monOutbuf,(PBYTE)&packet,length);
- if (rc) {
- xf86Msg(X_ERROR,
- "DosMonWrite returned bad RC! rc=%d\n",rc);
- DosMonClose(hKbdMonitor);
- exit(1);
- }
- }
-
- DosCloseQueue(hKbdQueue);
- DosMonClose(hKbdMonitor);
-}
-
-void os2KbdBitBucketThread(void* arg)
-{
- KBDKEYINFO key;
- while (1) {
- if (xf86Info.consoleFd != -1) {
- KbdCharIn(&key,1,xf86Info.consoleFd);
- usleep(100000);
- } else
- usleep(500000);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c
deleted file mode 100644
index e1fd52c2e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c
+++ /dev/null
@@ -1,653 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c,v 3.17 2002/05/31 18:46:02 dawes Exp $ */
-/*
- * (c) Copyright 1994,1999,2000 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified (c) 1996 Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_mouse.c /main/10 1996/10/27 11:48:51 kaleb $ */
-
-#define I_NEED_OS2_H
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#define INCL_DOSFILEMGR
-#define INCL_DOSQUEUES
-#define INCL_MOU
-#undef RT_FONT
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Config.h"
-
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "mipointer.h"
-
-/* The following support code was copied from mouse.c */
-
-/**********************************************************************
- *
- * Emulate3Button support code
- *
- **********************************************************************/
-
-
-/*
- * Lets create a simple finite-state machine for 3 button emulation:
- *
- * We track buttons 1 and 3 (left and right). There are 11 states:
- * 0 ground - initial state
- * 1 delayed left - left pressed, waiting for right
- * 2 delayed right - right pressed, waiting for left
- * 3 pressed middle - right and left pressed, emulated middle sent
- * 4 pressed left - left pressed and sent
- * 5 pressed right - right pressed and sent
- * 6 released left - left released after emulated middle
- * 7 released right - right released after emulated middle
- * 8 repressed left - left pressed after released left
- * 9 repressed right - right pressed after released right
- * 10 pressed both - both pressed, not emulating middle
- *
- * At each state, we need handlers for the following events
- * 0: no buttons down
- * 1: left button down
- * 2: right button down
- * 3: both buttons down
- * 4: emulate3Timeout passed without a button change
- * Note that button events are not deltas, they are the set of buttons being
- * pressed now. It's possible (ie, mouse hardware does it) to go from (eg)
- * left down to right down without anything in between, so all cases must be
- * handled.
- *
- * a handler consists of three values:
- * 0: action1
- * 1: action2
- * 2: new emulation state
- *
- * action > 0: ButtonPress
- * action = 0: nothing
- * action < 0: ButtonRelease
- *
- * The comment preceeding each section is the current emulation state.
- * The comments to the right are of the form
- * <button state> (<events>) -> <new emulation state>
- * which should be read as
- * If the buttons are in <button state>, generate <events> then go to
- * <new emulation state>.
- */
-static signed char stateTab[11][5][3] = {
-/* 0 ground */
- {
- { 0, 0, 0 }, /* nothing -> ground (no change) */
- { 0, 0, 1 }, /* left -> delayed left */
- { 0, 0, 2 }, /* right -> delayed right */
- { 2, 0, 3 }, /* left & right (middle press) -> pressed middle */
- { 0, 0, -1 } /* timeout N/A */
- },
-/* 1 delayed left */
- {
- { 1, -1, 0 }, /* nothing (left event) -> ground */
- { 0, 0, 1 }, /* left -> delayed left (no change) */
- { 1, -1, 2 }, /* right (left event) -> delayed right */
- { 2, 0, 3 }, /* left & right (middle press) -> pressed middle */
- { 1, 0, 4 }, /* timeout (left press) -> pressed left */
- },
-/* 2 delayed right */
- {
- { 3, -3, 0 }, /* nothing (right event) -> ground */
- { 3, -3, 1 }, /* left (right event) -> delayed left (no change) */
- { 0, 0, 2 }, /* right -> delayed right (no change) */
- { 2, 0, 3 }, /* left & right (middle press) -> pressed middle */
- { 3, 0, 5 }, /* timeout (right press) -> pressed right */
- },
-/* 3 pressed middle */
- {
- { -2, 0, 0 }, /* nothing (middle release) -> ground */
- { 0, 0, 7 }, /* left -> released right */
- { 0, 0, 6 }, /* right -> released left */
- { 0, 0, 3 }, /* left & right -> pressed middle (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 4 pressed left */
- {
- { -1, 0, 0 }, /* nothing (left release) -> ground */
- { 0, 0, 4 }, /* left -> pressed left (no change) */
- { -1, 0, 2 }, /* right (left release) -> delayed right */
- { 3, 0, 10 }, /* left & right (right press) -> pressed both */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 5 pressed right */
- {
- { -3, 0, 0 }, /* nothing (right release) -> ground */
- { -3, 0, 1 }, /* left (right release) -> delayed left */
- { 0, 0, 5 }, /* right -> pressed right (no change) */
- { 1, 0, 10 }, /* left & right (left press) -> pressed both */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 6 released left */
- {
- { -2, 0, 0 }, /* nothing (middle release) -> ground */
- { -2, 0, 1 }, /* left (middle release) -> delayed left */
- { 0, 0, 6 }, /* right -> released left (no change) */
- { 1, 0, 8 }, /* left & right (left press) -> repressed left */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 7 released right */
- {
- { -2, 0, 0 }, /* nothing (middle release) -> ground */
- { 0, 0, 7 }, /* left -> released right (no change) */
- { -2, 0, 2 }, /* right (middle release) -> delayed right */
- { 3, 0, 9 }, /* left & right (right press) -> repressed right */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 8 repressed left */
- {
- { -2, -1, 0 }, /* nothing (middle release, left release) -> ground */
- { -2, 0, 4 }, /* left (middle release) -> pressed left */
- { -1, 0, 6 }, /* right (left release) -> released left */
- { 0, 0, 8 }, /* left & right -> repressed left (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 9 repressed right */
- {
- { -2, -3, 0 }, /* nothing (middle release, right release) -> ground */
- { -3, 0, 7 }, /* left (right release) -> released right */
- { -2, 0, 5 }, /* right (middle release) -> pressed right */
- { 0, 0, 9 }, /* left & right -> repressed right (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 10 pressed both */
- {
- { -1, -3, 0 }, /* nothing (left release, right release) -> ground */
- { -3, 0, 4 }, /* left (right release) -> pressed left */
- { -1, 0, 5 }, /* right (left release) -> pressed right */
- { 0, 0, 10 }, /* left & right -> pressed both (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-};
-
-/*
- * Table to allow quick reversal of natural button mapping to correct mapping
- */
-
-/*
- * [JCH-96/01/21] The ALPS GlidePoint pad extends the MS protocol
- * with a fourth button activated by tapping the PAD.
- * The 2nd line corresponds to 4th button on; the drv sends
- * the buttons in the following map (MSBit described first) :
- * 0 | 4th | 1st | 2nd | 3rd
- * And we remap them (MSBit described first) :
- * 0 | 4th | 3rd | 2nd | 1st
- */
-static char reverseMap[32] = { 0, 4, 2, 6, 1, 5, 3, 7,
- 8, 12, 10, 14, 9, 13, 11, 15,
- 16, 20, 18, 22, 17, 21, 19, 23,
- 24, 28, 26, 30, 25, 29, 27, 31};
-
-
-static char hitachMap[16] = { 0, 2, 1, 3,
- 8, 10, 9, 11,
- 4, 6, 5, 7,
- 12, 14, 13, 15 };
-
-#define reverseBits(map, b) (((b) & ~0x0f) | map[(b) & 0x0f])
-
-static CARD32
-buttonTimer(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- int sigstate;
- int id;
-
- pMse = pInfo->private;
-
- sigstate = xf86BlockSIGIO ();
-
- pMse->emulate3Pending = FALSE;
- if ((id = stateTab[pMse->emulateState][4][0]) != 0) {
- xf86PostButtonEvent(pInfo->dev, 0, abs(id), (id >= 0), 0, 0);
- pMse->emulateState = stateTab[pMse->emulateState][4][2];
- } else {
- ErrorF("Got unexpected buttonTimer in state %d\n", pMse->emulateState);
- }
-
- xf86UnblockSIGIO (sigstate);
- return 0;
-}
-
-static Bool
-Emulate3ButtonsSoft(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse = pInfo->private;
-
- if (!pMse->emulate3ButtonsSoft)
- return TRUE;
-
- pMse->emulate3Buttons = FALSE;
-
- if (pMse->emulate3Pending)
- buttonTimer(pInfo);
-
- xf86Msg(X_INFO,"3rd Button detected: disabling emulate3Button\n");
-
- return FALSE;
-}
-
-static void MouseBlockHandler(pointer data,
- struct timeval **waitTime,
- pointer LastSelectMask)
-{
- InputInfoPtr pInfo = (InputInfoPtr) data;
- MouseDevPtr pMse = (MouseDevPtr) pInfo->private;
- int ms;
-
- if (pMse->emulate3Pending)
- {
- ms = pMse->emulate3Expires - GetTimeInMillis ();
- if (ms <= 0)
- ms = 0;
- AdjustWaitForDelay (waitTime, ms);
- }
-}
-
-static void MouseWakeupHandler(pointer data,
- int i,
- pointer LastSelectMask)
-{
- InputInfoPtr pInfo = (InputInfoPtr) data;
- MouseDevPtr pMse = (MouseDevPtr) pInfo->private;
- int ms;
-
- if (pMse->emulate3Pending)
- {
- ms = pMse->emulate3Expires - GetTimeInMillis ();
- if (ms <= 0)
- buttonTimer (pInfo);
- }
-}
-
-static int
-SupportedInterfaces(void)
-{
- return MSE_MISC;
-}
-
-static const char* internalNames[] = {
- "OS2Mouse",
- NULL
-};
-
-static const char**
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-static const char *
-DefaultProtocol(void)
-{
- return "OS2Mouse";
-}
-
-static const char *
-SetupAuto(InputInfoPtr pInfo, int *protoPara)
-{
- return "OS2Mouse";
-}
-
-HMOU hMouse=65535;
-HEV hMouseSem;
-HQUEUE hMouseQueue;
-InputInfoPtr iinfoPtr;
-int MouseTid;
-BOOL HandleValid=FALSE;
-extern BOOL SwitchedToWPS;
-extern CARD32 LastSwitchTime;
-void os2MouseEventThread(void* arg);
-
-static void
-os2MouseReadInput(InputInfoPtr pInfo)
-{
- APIRET rc;
- ULONG postCount,dataLength;
- PVOID dummy;
- int buttons;
- int state;
- int i, dx,dy;
- BYTE elemPriority;
- REQUESTDATA requestData;
-
- MouseDevPtr pMse = pInfo->private;
-
- if (!HandleValid) return;
- while((rc = DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem)) == 0) {
- dx = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- dy = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- state = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- if (requestData.ulData != 0xFFFFFFFF)
- xf86Msg(X_ERROR,
- "Unexpected mouse event tag, %d\n",
- requestData.ulData);
-
- /* Contrary to other systems, OS/2 has mouse buttons *
- * in the proper order, so we reverse them before *
- * sending the event. */
-
- buttons = ((state & 0x06) ? 4 : 0) |
- ((state & 0x18) ? 1 : 0) |
- ((state & 0x60) ? 2 : 0);
- pMse->PostEvent(pInfo, buttons, dx, dy, 0, 0);
- }
- DosResetEventSem(hMouseSem,&postCount);
-}
-
-int os2MouseProc(DeviceIntPtr pPointer, int what)
-{
- APIRET rc = 0;
- USHORT nbuttons, state;
- unsigned char map[MSE_MAXBUTTONS + 1];
- int i;
-
- InputInfoPtr pInfo = pPointer->public.devicePrivate;
- MouseDevPtr pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
- if (hMouse == 65535)
- rc = MouOpen((PSZ)0, &hMouse);
- if (rc != 0)
- xf86Msg(X_WARNING,"%s: cannot open mouse, rc=%d\n",
- pInfo->name,rc);
- else {
- pInfo->fd = hMouse;
-
- /* flush mouse queue */
- MouFlushQue(hMouse);
-
- /* check buttons */
- rc = MouGetNumButtons(&nbuttons, hMouse);
- if (rc == 0)
- xf86Msg(X_INFO,"%s: Mouse has %d button(s).\n",
- pInfo->name,nbuttons);
- if (nbuttons==2) nbuttons++;
-
- for (i = 1; i<=nbuttons; i++)
- map[i] = i;
-
- InitPointerDeviceStruct((DevicePtr)pPointer, map, nbuttons,
- miPointerGetMotionEvents, pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* y Valuator */
- InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
-
- /* OK, we are ready to start up the mouse thread ! */
- if (!HandleValid) {
- rc = DosCreateEventSem(NULL,&hMouseSem,DC_SEM_SHARED,TRUE);
- if (rc != 0)
- xf86Msg(X_ERROR,"%s: could not create mouse queue semaphore, rc=%d\n",
- pInfo->name,rc);
- MouseTid = _beginthread(os2MouseEventThread,NULL,0x4000,(void *)pInfo);
- xf86Msg(X_INFO,
- "%s: Started Mouse event thread, Tid=%d\n",
- pInfo->name, MouseTid);
- DosSetPriority(2,3,0,MouseTid);
- }
- HandleValid=TRUE;
- }
- break;
-
- case DEVICE_ON:
- if (!HandleValid) return -1;
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- state = 0x300;
- rc = MouSetDevStatus(&state,hMouse);
- state = 0x7f;
- rc = MouSetEventMask(&state,hMouse);
- MouFlushQue(hMouse);
- if (pMse->emulate3Buttons || pMse->emulate3ButtonsSoft)
- {
- RegisterBlockAndWakeupHandlers (MouseBlockHandler, MouseWakeupHandler,
- (pointer) pInfo);
- }
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- if (!HandleValid) return -1;
- if (pMse->emulate3Buttons || pMse->emulate3ButtonsSoft)
- {
- RemoveBlockAndWakeupHandlers (MouseBlockHandler, MouseWakeupHandler,
- (pointer) pInfo);
- }
- pPointer->public.on = FALSE;
- state = 0x300;
- MouSetDevStatus(&state,hMouse);
- state = 0;
- MouSetEventMask(&state,hMouse);
- if (what == DEVICE_CLOSE) {
-/* Comment out for now as this seems to break server */
-#if 0
- MouClose(hMouse);
- hMouse = 65535;
- pInfo->fd = -1;
- HandleValid = FALSE;
-#endif
- }
- break;
- }
- return Success;
-}
-
-int os2MouseQueueQuery()
-{
- /* Now we check for activity on mouse handles */
- ULONG numElements,postCount;
-
- if (!HandleValid) return(1);
- DosResetEventSem(hMouseSem,&postCount);
- (void)DosQueryQueue(hMouseQueue,&numElements);
- if (numElements>0) { /* Something in mouse queue! */
- return 0; /* Will this work? */
- }
- return 1;
-}
-
-void os2MouseEventThread(void *arg)
-{
- APIRET rc;
- MOUEVENTINFO mev;
- ULONG queueParam;
- USHORT waitflg;
- char queueName[128];
- MouseDevPtr pMse;
-
- iinfoPtr = (InputInfoPtr)arg;
- pMse = iinfoPtr->private;
-
- sprintf(queueName,"\\QUEUES\\XF86MOU\\%d",getpid());
- rc = DosCreateQueue(&hMouseQueue,0L,queueName);
- xf86Msg(X_INFO,"Mouse Queue created, rc=%d\n",rc);
- (void)DosPurgeQueue(hMouseQueue);
-
- while(1) {
- waitflg = 1;
- rc = MouReadEventQue(&mev,&waitflg,hMouse);
- if (rc) {
- xf86Msg(X_ERROR,
- "Bad return code from mouse driver, rc=%d\n",
- rc);
- xf86Msg(X_ERROR,"Mouse aborting!\n");
- break;
- }
-
- queueParam = mev.col;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- queueParam = mev.row;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- queueParam = mev.fs;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- queueParam = 0xFFFFFFFF;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- }
- xf86Msg(X_ERROR,
- "An unrecoverable error in mouse queue has occured, rc=%d. Mouse is shutting down.\n",
- rc);
- DosCloseQueue(hMouseQueue);
-}
-
-
-static Bool
-os2MousePreInit(InputInfoPtr pInfo, const char* protocol, int flags)
-{
- MouseDevPtr pMse = pInfo->private;
-
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = os2MouseProc;
- pInfo->read_input = os2MouseReadInput;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = os2MousePreInit;
- p->SetupAuto = SetupAuto;
- return p;
-}
-
-void xf86OsMouseEvents()
-{
- APIRET rc;
- ULONG postCount,dataLength;
- PVOID dummy;
- int buttons;
- int state;
- int i, dx,dy;
- BYTE elemPriority;
- REQUESTDATA requestData;
-
- MouseDevPtr pMse = iinfoPtr->private;
-
- if (!HandleValid) return;
- while((rc = DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem)) == 0) {
- dx = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- dy = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- state = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- if (requestData.ulData != 0xFFFFFFFF)
- xf86Msg(X_ERROR,
- "Unexpected mouse event tag, %d\n",
- requestData.ulData);
-
- /* Contrary to other systems, OS/2 has mouse buttons *
- * in the proper order, so we reverse them before *
- * sending the event. */
-
- buttons = ((state & 0x06) ? 4 : 0) |
- ((state & 0x18) ? 1 : 0) |
- ((state & 0x60) ? 2 : 0);
- pMse->PostEvent(iinfoPtr, buttons, dx, dy, 0, 0);
- }
- DosResetEventSem(hMouseSem,&postCount);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c
deleted file mode 100644
index 395104242..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c
+++ /dev/null
@@ -1,497 +0,0 @@
-/* $XConsortium: os2_select.c /main/6 1996/10/27 11:48:55 kaleb $ */
-
-
-
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c,v 3.9 2003/03/25 04:18:24 dawes Exp $ */
-
-/*
- * (c) Copyright 1996 by Sebastien Marineau
- * <marineau@genie.uottawa.ca>
- * Modified 1999 by Holger.Veit@gmd.de
- * Modified 2004 by Frank Giessler
- * <giessler@biomag.uni-jena.de>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- */
-
-/* os2_select.c: reimplementation of the xserver select(), optimized for speed */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <memory.h>
-#include <io.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/errno.h>
-#include <emx/io.h>
-
-#define I_NEED_OS2_H
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSPROFILE
-#define INCL_DOSPROCESS
-#define INCL_DOSFILEMGR
-#define INCL_DOSMISC
-#define INCL_DOSMODULEMGR
-
-
-#include <X11/Xpoll.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "os2_select.h"
-
-int os2MouseQueueQuery();
-int os2KbdQueueQuery();
-void os2RecoverFromPopup();
-void os2CheckPopupPending();
-void os2SocketMonitorThread();
-extern BOOL os2PopupErrorPending;
-
-extern HEV hKbdSem;
-extern HEV hMouseSem;
-extern HEV hevServerHasFocus;
-HEV hPipeSem;
-HEV hSocketSem;
-HEV hActivateSocketSem;
-HEV hSwitchToSem;
-static HMUX hSelectWait;
-SEMRECORD SelectMuxRecord[5];
-HMODULE hmod_so32dll;
-static struct select_data sd;
-
-static int (*os2_tcp_select)(int *,int,int,int,long);
-static int (*os2_so_cancel)(int);
-static int (*os2_sock_errno)();
-int os2_set_error(ULONG);
-extern int _files[];
-
-
-
-/* This is a new implementation of select, for improved efficiency */
-/* This function performs select() on sockets */
-/* but uses OS/2 internal fncts to check mouse */
-/* and keyboard. S. Marineau, 27/4/96 */
-
-/* This is still VERY messy */
-
-/* A few note on optimizations: this select has been tuned for maximum
-* performance, and thus has a different approach than a general-purpose
-* select. It should not be used in another app without modifications. Further,
-* it may need modifications if the Xserver os code is modified
-* Assumptions: this is never called with anything in exceptfds. This is
-* silently ignored. Further, if any pipes are specified in the write mask, it is
-* because they have just been stuffed full by the xserver. There is not much
-* in immediately returning with those bits set. Instead, we block on the
-* semaphore for at least one tick, which will let the client at least start
-* to flush the pipe. */
-
-int os2PseudoSelect(nfds,readfds,writefds,exceptfds,timeout)
- int nfds;
- fd_set *readfds,*writefds,*exceptfds;
- struct timeval *timeout;
-{
-
- static BOOL FirstTime=TRUE;
-
- int n,ns,np;
- int ready_handles;
- ULONG timeout_ms;
- BOOL any_ready;
- ULONG semKey,postCount;
- APIRET rc;
- char faildata[16];
- static int Socket_Tid;
-
- sd.have_read=FALSE; sd.have_write=FALSE;
- sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
- sd.max_fds=31; ready_handles=0; any_ready=FALSE;
- sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
-
- /* Stuff we have to do the first time this is called to set up various parameters */
-
- if (FirstTime) {
- /* First load the so32dll.dll module and get a pointer to the SELECT fn */
-
- if ((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0) {
- FatalError("Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
- }
- if ((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0) {
- FatalError("Could not query address of SELECT, rc = %d.\n",rc);
- }
- if ((rc = DosQueryProcAddr(hmod_so32dll, 0, "SO_CANCEL", (PPFN)&os2_so_cancel))!=0) {
- FatalError("Could not query address of SO_CANCEL, rc = %d.\n",rc);
- }
- if ((rc = DosQueryProcAddr(hmod_so32dll, 0, "SOCK_ERRNO", (PPFN)&os2_sock_errno))!=0) {
- FatalError("Could not query address of SOCK_ERRNO, rc = %d.\n",rc);
- }
-
- /* Call these a first time to set the semaphore */
- xf86OsMouseEvents();
- xf86KbdEvents();
-
- DosCreateEventSem(NULL, &hSocketSem,DC_SEM_SHARED,FALSE);
- DosResetEventSem(hSocketSem,&postCount);
-
- DosCreateEventSem(NULL, &hActivateSocketSem, DC_SEM_SHARED, FALSE);
- DosResetEventSem(hActivateSocketSem, &postCount);
-
- DosCreateEventSem(NULL, &hSwitchToSem, DC_SEM_SHARED, FALSE);
- DosResetEventSem(hSwitchToSem, &postCount);
-
- Socket_Tid = _beginthread(os2SocketMonitorThread, NULL, 0x2000,(void *) NULL);
- xf86Msg(X_INFO,
- "Started Socket monitor thread, TID=%d\n",Socket_Tid);
-
- SelectMuxRecord[0].hsemCur = (HSEM)hMouseSem;
- SelectMuxRecord[0].ulUser = MOUSE_SEM_KEY;
- SelectMuxRecord[1].hsemCur = (HSEM)hKbdSem;
- SelectMuxRecord[1].ulUser = KBD_SEM_KEY;
- SelectMuxRecord[2].hsemCur = (HSEM)hPipeSem;
- SelectMuxRecord[2].ulUser = PIPE_SEM_KEY;
- SelectMuxRecord[3].hsemCur = (HSEM)hSocketSem;
- SelectMuxRecord[3].ulUser = SOCKET_SEM_KEY;
- SelectMuxRecord[4].hsemCur = (HSEM)hSwitchToSem;
- SelectMuxRecord[4].ulUser = SWITCHTO_SEM_KEY;
-
- rc = DosCreateMuxWaitSem(NULL, &hSelectWait, 5, SelectMuxRecord,
- DC_SEM_SHARED | DCMW_WAIT_ANY);
- if (rc) {
- xf86Msg(X_ERROR,"Could not create MuxWait semaphore, rc=%d\n",rc);
- }
- FirstTime = FALSE;
- }
-
- rc = DosResetEventSem(hActivateSocketSem, &postCount);
- /* Set up the time delay structs */
-
- if (timeout!=NULL) {
- timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
- } else {
- timeout_ms=1000000; /* This should be large enough... */
- }
-
- /* Zero our local fd_masks */
- {FD_ZERO(&sd.read_copy);}
- {FD_ZERO(&sd.write_copy);}
-
- /* Copy the masks for later use */
- if (readfds!=NULL) { XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE; }
- if (writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy); sd.have_write=TRUE; }
-
- /* And zero the original masks */
- if (sd.have_read){ FD_ZERO(readfds); }
- if (sd.have_write) {FD_ZERO(writefds); }
- if (exceptfds != NULL) {FD_ZERO(exceptfds); }
-
- /* Now we parse the fd_sets passed to select and separate pipe/sockets */
- n = os2_parse_select(&sd,nfds);
-
- /* Now check if we have sockets ready! */
-
- if (sd.socket_ntotal > 0) {
- ns = os2_poll_sockets(&sd,readfds,writefds);
- if (ns>0) {
- ready_handles+=ns;
- any_ready = TRUE;
- } else if (ns == -1) {
- return(-1);
- }
- }
-
- /* And pipes */
-
- if (sd.pipe_ntotal > 0) {
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0) {
- ready_handles+=np;
- any_ready = TRUE;
- } else if (np == -1) {
- return(-1);
- }
- }
-
- /* And finally poll input devices */
- if(!os2MouseQueueQuery() || !os2KbdQueueQuery() ) any_ready = TRUE;
-
- if (xf86Info.vtRequestsPending) any_ready=TRUE;
-
- if (os2PopupErrorPending)
- os2RecoverFromPopup();
-
- if (!any_ready && timeout_ms) {
- DosResetEventSem(hSocketSem,&postCount);
-
- /* Activate the socket thread */
- if (sd.socket_ntotal>0) {
- rc = DosPostEventSem(hActivateSocketSem);
- }
-
- rc = DosWaitMuxWaitSem(hSelectWait, timeout_ms, &semKey);
-
- /* If our socket monitor thread is still blocked in os2_tcp_select()
- * we have to wake it up by calling os2_so_cancel().
- * After that, call os2_tcp_select() once more to get rid of
- * error SOCEINTR (10004)
- */
- if (sd.socket_ntotal>0) {
- rc = DosQueryEventSem(hSocketSem, &postCount);
-
- if (postCount == 0) { /* os2_select still blocked */
- int i,f,g;
- struct select_data *sd_ptr=&sd;
-
- if (sd.socket_nread > 0) {
- for (i=0; i<sd.socket_nread; i++) {
- f = g = sd_ptr->tcp_select_mask[i];
- os2_so_cancel(f);
- os2_tcp_select(&g, 1, 0, 0, 0); /* get rid of error 10004 */
- }
- }
- if (sd.socket_nwrite > 0) {
- for (i=sd.socket_nread;
- i<sd.socket_nread+sd.socket_nwrite;
- i++) {
- f = g = sd_ptr->tcp_select_mask[i];
- os2_so_cancel(f);
- os2_tcp_select(&g, 0, 1, 0, 0); /* get rid of error 10004 */
- }
- }
- } else { /* not blocked, something must be ready -> get it */
- ns = os2_poll_sockets(&sd,readfds,writefds);
- if (ns>0) {
- ready_handles+=ns;
- } else if (ns == -1) {
- return(-1);
- }
- }
- }
- if (sd.pipe_ntotal > 0) {
- rc = DosQueryEventSem(hPipeSem,&postCount);
- if (postCount > 0) {
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0) {
- ready_handles+=np;
- } else if (np == -1) {
- return(-1);
- }
- }
- }
- }
- /* The polling of sockets/pipe automatically set the proper bits */
- return (ready_handles);
-}
-
-
-int os2_parse_select(sd,nfds)
- struct select_data *sd;
- int nfds;
-{
- int i;
- /* First we determine up to which descriptor we need to check. */
- /* No need to check up to 256 if we don't have to (and usually we dont...)*/
- /* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
-
- if (nfds > sd->max_fds) {
- for (i=0;i<((FD_SETSIZE+31)/32);i++) {
- if (sd->read_copy.fds_bits[i] ||
- sd->write_copy.fds_bits[i])
- sd->max_fds=(i*32) +32;
- }
- } else { sd->max_fds = nfds; }
-
- /* Check if this is greater than specified in select() call */
- if(sd->max_fds > nfds) sd->max_fds = nfds;
-
- if (sd->have_read) {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->read_copy)) {
- if(_files[i] & F_SOCKET) {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nread++;
- } else if (_files[i] & F_PIPE) {
- sd -> pipe_ntotal++;
- }
- }
- }
- }
- if (sd->have_write) {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->write_copy)) {
- if (_files[i] & F_SOCKET) {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nwrite++;
- } else if (_files[i] & F_PIPE) {
- sd -> pipe_ntotal++;
- sd -> pipe_have_write=TRUE;
- }
- }
- }
- }
- return(sd->socket_ntotal);
-}
-
-
-int os2_poll_sockets(sd,readfds,writefds)
- struct select_data *sd;
- fd_set *readfds,*writefds;
-{
- int e,i;
- int j,n;
-
- memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
- sd->socket_ntotal*sizeof(int));
-
- e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
- sd->socket_nwrite, 0, 0);
-
- if (e == 0) return(e);
-
- /* We have something ready? */
- if (e>0) {
- j = 0; n = 0;
- for (i = 0; i < sd->socket_nread; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1) {
- FD_SET (sd->tcp_emx_handles[j], readfds);
- n ++;
- }
- for (i = 0; i < sd->socket_nwrite; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1) {
- FD_SET (sd->tcp_emx_handles[j], writefds);
- n ++;
- }
- errno = 0;
-
- return n;
- }
- if (e<0) {
- /*Error -- TODO */
- xf86Msg(X_ERROR,"Error in server select! sock_errno = %d\n",os2_sock_errno());
- errno = EBADF;
- return (-1);
- }
-}
-
-/* Check to see if anything is ready on pipes */
-
-int os2_check_pipes(sd,readfds,writefds)
- struct select_data *sd;
- fd_set *readfds,*writefds;
-{
- int i,e;
- ULONG ulPostCount;
- PIPESEMSTATE pipeSemState[128];
- APIRET rc;
-
- e = 0;
- rc = DosResetEventSem(hPipeSem,&ulPostCount);
- rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
- sizeof(pipeSemState));
- if(rc) xf86Msg(X_ERROR,"SELECT: rc from QueryNPipeSem: %d\n",rc);
- i=0;
- while (pipeSemState[i].fStatus != 0) {
-/* xf86Msg(X_INFO,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
- pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
- pipeSemState[i].usAvail); */
- if ((pipeSemState[i].fStatus == 1) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))) {
- FD_SET(pipeSemState[i].usKey,readfds);
- e++;
- } else if ((pipeSemState[i].fStatus == 2) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))) {
- FD_SET(pipeSemState[i].usKey,writefds);
- e++;
- } else if ((pipeSemState[i].fStatus == 3) &&
- ((FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )) {
- errno = EBADF;
- /* xf86Msg(X_ERROR,"Pipe has closed down, fd=%d\n",pipeSemState[i].usKey); */
- return (-1);
- }
- i++;
- } /* endwhile */
-
- errno = 0;
- return(e);
-}
-
-
-void os2SocketMonitorThread(void *arg)
-{
- struct select_data *sd_ptr = &sd;
- ULONG ulPostCount;
- int e,rc;
-
- /* Make thread time critical */
- DosSetPriority(2L,3L,0L,0L);
-
- while (1) {
- rc = DosWaitEventSem(hActivateSocketSem, SEM_INDEFINITE_WAIT);
- if (rc != 0 )
- xf86Msg(X_ERROR,"Socket monitor: DosWaitEventSem(hActivateSocketSem..) returned %d\n",rc);
-
- rc = DosResetEventSem(hActivateSocketSem,&ulPostCount);
- if (rc != 0 )
- xf86Msg(X_ERROR,"Socket monitor: DosResetEventSem(&hActivateSocketSem..) returned %d\n",rc);
-
- /* fg300104:
- * The next line shouldn't be here, but the DosPostEventSem()
- * below will return 299 from time to time under heavy load
- */
-/* DosResetEventSem(hSocketSem,&ulPostCount);*/
-
- memcpy(sd_ptr->tcp_select_monitor,sd_ptr->tcp_select_mask,
- sd_ptr->socket_ntotal*sizeof(int));
-
- /* call os2_select(), return only if either something is ready or
- * os2_so_cancel() was called
- */
- e = os2_tcp_select(sd_ptr->tcp_select_monitor, sd_ptr->socket_nread,
- sd_ptr->socket_nwrite, 0, -1);
-
- if (e>0) {
- rc = DosPostEventSem(hSocketSem);
- if (rc != 0 )
- xf86Msg(X_ERROR,"Socket monitor: DosPostEventSem(hSocketSem..) returned %d\n",rc);
- } else if (e<0) {
- rc = os2_sock_errno();
- if (rc != 10004)
- xf86Msg(X_ERROR,"Socket monitor: os2_select: sock_errno = %d\n",rc);
- }
-
- rc = DosQueryEventSem(hevServerHasFocus, &ulPostCount);
-
- /* no need to rush while switched away */
- if ((rc==0) && (ulPostCount==0))
- rc == DosWaitEventSem(hevServerHasFocus,31L);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h
deleted file mode 100644
index cb2291e09..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* $XConsortium: os2_select.h /main/1 1996/05/13 16:38:30 kaleb $ */
-/*
- * (c) Copyright 1996 by Sebastien Marineau
- * <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h,v 3.1 1996/12/27 07:04:31 dawes Exp $ */
-
-/* Header file for os2_select.c */
-
-#define MAX_TCP 256
-
-#define MOUSE_SEM_KEY 0x0F01
-#define KBD_SEM_KEY 0x0F02
-#define PIPE_SEM_KEY 0x0F03
-#define SOCKET_SEM_KEY 0x0F04
-#define SWITCHTO_SEM_KEY 0x0F05
-
-
-struct select_data
-{
- fd_set read_copy;
- fd_set write_copy;
- BOOL have_read;
- BOOL have_write;
- int tcp_select_mask[MAX_TCP];
- int tcp_emx_handles[MAX_TCP];
- int tcp_select_copy[MAX_TCP];
- int tcp_select_monitor[MAX_TCP];
- int socket_nread;
- int socket_nwrite;
- int socket_ntotal;
- int pipe_ntotal;
- int pipe_have_write;
- int max_fds;
-};
-
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c
deleted file mode 100644
index 6587b1bda..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c,v 1.3 2000/04/05 18:13:53 dawes Exp $ */
-/*
- * (c) Copyright 1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium$ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#define INCL_DOSDEVIOCTL
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-static int _set_baudrate(HFILE fd,int baud)
-{
- USHORT br = baud;
- ULONG plen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_SETBAUDRATE,
- (PULONG)&br,sizeof(br),&plen,NULL,0,NULL);
-}
-
-#pragma pack(1)
-typedef struct _glinectl {
- UCHAR databits;
- UCHAR parity;
- UCHAR stopbits;
- UCHAR sendbrk;
-} GLINECTL;
-typedef struct _slinectl {
- UCHAR databits;
- UCHAR parity;
- UCHAR stopbits;
-} SLINECTL;
-
-#pragma pack()
-
-static int _get_linectrl(HFILE fd,GLINECTL* linectrl)
-{
- ULONG dlen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_GETLINECTRL,
- NULL,0,NULL,linectrl,sizeof(GLINECTL),&dlen);
-}
-
-static int _set_linectl(HFILE fd,GLINECTL* linectl)
-{
- ULONG plen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_SETLINECTRL,
- (PULONG)&linectl,sizeof(SLINECTL),&plen,NULL,0,NULL);
-}
-
-static int _get_dcb(HFILE fd,DCBINFO* dcb) {
-
- ULONG dlen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_GETDCBINFO,
- NULL,0,NULL,(PULONG)dcb,sizeof(DCBINFO),&dlen);
-}
-
-static int _set_dcb(HFILE fd,DCBINFO* dcb)
-{
- ULONG plen;
- return DosDevIOCtl(fd,IOCTL_ASYNC, ASYNC_SETDCBINFO,
- (PULONG)dcb,sizeof(DCBINFO),&plen,NULL,0,NULL);
-}
-
-#pragma pack(1)
-typedef struct comsize {
- USHORT nqueued;
- USHORT qsize;
-} COMSIZE;
-#pragma pack()
-
-static int _get_nread(HFILE fd,ULONG* nread)
-{
- ULONG dlen;
- COMSIZE sz;
- APIRET rc = DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_GETINQUECOUNT,
- NULL, 0, NULL, sz,sizeof(COMSIZE),&dlen);
- *nread = sz.nqueued;
- return rc ? -1 : 0;
-}
-
-int xf86OpenSerial (pointer options)
-{
- APIRET rc;
- HFILE fd, i;
- ULONG action;
- GLINECTL linectl;
-
- char* dev = xf86FindOptionValue (options, "Device");
- xf86MarkOptionUsedByName (options, "Device");
- if (!dev) {
- xf86Msg (X_ERROR, "xf86OpenSerial: No Device specified.\n");
- return -1;
- }
-
- rc = DosOpen(dev, &fd, &action, 0, FILE_NORMAL, FILE_OPEN,
- OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, NULL);
- if (rc) {
- xf86Msg (X_ERROR,
- "xf86OpenSerial: Cannot open device %s, rc=%d.\n",
- dev, rc);
- return -1;
- }
-
- /* check whether it is an async device */
- if (_get_linectrl(fd,&linectl)) {
- xf86Msg (X_WARNING,
- "xf86OpenSerial: Specified device %s is not a tty\n",
- dev);
- DosClose(fd);
- return -1;
- }
-
- /* set up default port parameters */
- _set_baudrate(fd, 9600);
-
- linectl.databits = 8;
- linectl.parity = 0;
- linectl.stopbits = 0;
- _set_linectl(fd, &linectl);
-
- if (xf86SetSerial (fd, options) == -1) {
- DosClose(fd);
- return -1;
- }
-
- return fd;
-}
-
-int xf86SetSerial (int fd, pointer options)
-{
- APIRET rc;
- USHORT baud;
- ULONG plen,dlen;
- char *s;
-
- GLINECTL linectl;
- DCBINFO dcb;
-
- if ((s = xf86FindOptionValue (options, "BaudRate"))) {
- xf86MarkOptionUsedByName (options, "BaudRate");
- if ((rc = _set_baudrate(fd, atoi(s)))) {
- xf86Msg (X_ERROR,"Set Baudrate: %s, rc=%d\n", s, rc);
- return -1;
- }
- }
-
- /* get line parameters */
- if (DosDevIOCtl((HFILE)fd,IOCTL_ASYNC, ASYNC_GETLINECTRL,
- NULL,0,NULL,
- (PULONG)&linectl,sizeof(GLINECTL),&dlen)) return -1;
-
- if ((s = xf86FindOptionValue (options, "StopBits"))) {
- xf86MarkOptionUsedByName (options, "StopBits");
- switch (atoi (s)) {
- case 1: linectl.stopbits = 0;
- break;
- case 2: linectl.stopbits = 2;
- break;
- default: xf86Msg (X_ERROR,
- "Invalid Option StopBits value: %s\n", s);
- return -1;
- }
- }
-
- if ((s = xf86FindOptionValue (options, "DataBits"))) {
- int db;
- xf86MarkOptionUsedByName (options, "DataBits");
- switch (db = atoi (s)) {
- case 5: case 6: case 7: case 8:
- linectl.databits = db;
- break;
- default: xf86Msg (X_ERROR,
- "Invalid Option DataBits value: %s\n", s);
- return -1;
- }
- }
-
- if ((s = xf86FindOptionValue (options, "Parity"))) {
- xf86MarkOptionUsedByName (options, "Parity");
- if (xf86NameCmp (s, "Odd") == 0)
- linectl.parity = 1; /* odd */
- else if (xf86NameCmp (s, "Even") == 0)
- linectl.parity = 2; /* even */
- else if (xf86NameCmp (s, "None") == 0)
- linectl.parity = 0; /* none */
- else {
- xf86Msg (X_ERROR,
- "Invalid Option Parity value: %s\n", s);
- return -1;
- }
- }
-
- /* set line parameters */
- if (_set_linectl(fd,&linectl)) return -1;
-
- if (xf86FindOptionValue (options, "Vmin"))
- xf86Msg (X_ERROR, "Vmin unsupported on this OS\n");
-
- if (xf86FindOptionValue (options, "Vtime"))
- xf86Msg (X_ERROR, "Vtime unsupported on this OS\n");
-
- /* get device parameters */
- if (_get_dcb(fd,&dcb)) return -1;
-
- if ((s = xf86FindOptionValue (options, "FlowControl"))) {
- xf86MarkOptionUsedByName (options, "FlowControl");
- if (xf86NameCmp (s, "XonXoff") == 0)
- dcb.fbFlowReplace |= 0x03;
- else if (xf86NameCmp (s, "None") == 0)
- dcb.fbFlowReplace &= ~0x03;
- else {
- xf86Msg (X_ERROR,
- "Invalid Option FlowControl value: %s\n", s);
- return -1;
- }
- }
-
- if ((s = xf86FindOptionValue (options, "ClearDTR"))) {
- dcb.fbCtlHndShake &= ~0x03; /* DTR=0 */
- xf86MarkOptionUsedByName (options, "ClearDTR");
- }
-
- if ((s = xf86FindOptionValue (options, "ClearRTS"))) {
- dcb.fbFlowReplace &= ~0xc0; /* RTS=0 */
- xf86MarkOptionUsedByName (options, "ClearRTS");
- }
-
- /* set device parameters */
- return _set_dcb(fd,&dcb) ? -1 : 0;
-}
-
-int xf86ReadSerial (int fd, void *buf, int count)
-{
- ULONG nread,nq;
- APIRET rc;
-
- /* emulate non-blocking read */
- if (_get_nread((HFILE)fd,&nq)) return -1;
- if (nq==0) return 0;
- if (nq < count) count = nq;
-
- rc = DosRead((HFILE)fd,(PVOID)buf,(ULONG)count,&nread);
- return rc ? -1 : (int)nread;
-}
-
-int xf86WriteSerial (int fd, const void *buf, int count)
-{
- ULONG nwrite;
- APIRET rc = DosWrite((HFILE)fd,(PVOID)buf,(ULONG)count,&nwrite);
- return rc ? -1 : (int)nwrite;
-}
-
-int xf86CloseSerial (int fd)
-{
- APIRET rc = DosClose((HFILE)fd);
- return rc ? -1 : 0;
-}
-
-int xf86WaitForInput (int fd, int timeout)
-{
- APIRET rc;
- ULONG dlen,nq;
-
- do {
- if (_get_nread((HFILE)fd,&nq)) return -1;
- if (nq) return 1;
-
- DosSleep(10);
- timeout -= 10000; /* 10000 usec */
- } while (timeout > 0);
-
- return 0;
-}
-
-int xf86SerialSendBreak (int fd, int duration)
-{
- USHORT data;
- ULONG dlen;
- APIRET rc;
- rc = DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_SETBREAKON,
- NULL, 0, NULL,
- &data, sizeof(data), &dlen);
- if (rc)
- return -1;
- DosSleep(500);
-
- rc = DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_SETBREAKOFF,
- NULL, 0, NULL,
- &data, sizeof(data), &dlen);
- return rc ? -1 : 0;
-}
-
-int xf86FlushInput(int fd)
-{
- APIRET rc;
- UCHAR buf;
- ULONG nread,nq;
-
- if (_get_nread((HFILE)fd,&nq)) return -1;
-
- /* eat all chars in queue */
- while (nq) {
- rc = DosRead((HFILE)fd,&buf,1,&nread);
- if (rc) return -1;
- nq--;
- }
- return 0;
-}
-
-static struct states {
- int xf;
- int os;
-} modemStates[] = {
- { XF86_M_DTR, 0x01 },
- { XF86_M_RTS, 0x02 },
- { XF86_M_CTS, 0x10 },
- { XF86_M_DSR, 0x20 },
- { XF86_M_RNG, 0x40 },
- { XF86_M_CAR, 0x80 },
-};
-
-static int numStates = sizeof(modemStates) / sizeof(modemStates[0]);
-
-static int
-xf2osState(int state)
-{
- int i;
- int ret = 0;
-
- for (i = 0; i < numStates; i++)
- if (state & modemStates[i].xf)
- ret |= modemStates[i].os;
- return ret;
-}
-
-static int
-os2xfState(int state)
-{
- int i;
- int ret = 0;
-
- for (i = 0; i < numStates; i++)
- if (state & modemStates[i].os)
- ret |= modemStates[i].xf;
- return ret;
-}
-
-static int
-getOsStateMask(void)
-{
- int i;
- int ret = 0;
- for (i = 0; i < numStates; i++)
- ret |= modemStates[i].os;
- return ret;
-}
-
-static int osStateMask = 0;
-
-static
-int _get_modem_state(int fd,ULONG* state)
-{
- ULONG state1,len;
-
- if (DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_GETMODEMOUTPUT,
- NULL,0,NULL, state, sizeof(BYTE), &len) != 0 ||
- DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_GETMODEMINPUT,
- NULL,0,NULL, &state1, sizeof(BYTE), &len) != 0)
- return -1;
- *state |= state1;
- *state &= 0xff;
- return 0;
-}
-
-static
-int _set_modem_state(int fd,ULONG state,ULONG mask)
-{
- int len;
- struct {
- BYTE onmask;
- BYTE offmask;
- } modemctrl;
- modemctrl.onmask = state;
- modemctrl.offmask = mask;
-
- if (DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_SETMODEMCTRL,
- NULL,0,NULL, (PULONG)&modemctrl, sizeof(modemctrl), &len) != 0)
- return -1;
- else
- return 0;
-}
-
-int
-xf86SetSerialModemState(int fd, int state)
-{
- ULONG s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- if (!osStateMask)
- osStateMask = getOsStateMask();
-
- state = xf2osState(state);
-
- if (_get_modem_state(fd,&s) != 0)
- return -1;
-
- s &= ~osStateMask;
- s |= state;
-
- return _set_modem_state(fd,s,0x03);
-}
-
-int
-xf86GetSerialModemState(int fd)
-{
- ULONG s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- if (_get_modem_state(fd,&s) != 0)
- return -1;
-
- return os2xfState(s);
-}
-
-int
-xf86SerialModemSetBits(int fd, int bits)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- s = xf2osState(bits);
- return _set_modem_state(fd,s,0x03);
-}
-
-int
-xf86SerialModemClearBits(int fd, int bits)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- s = xf2osState(bits);
- return _set_modem_state(fd, 0, ~s & 0xff);
-}
-
-int
-xf86SetSerialSpeed (int fd, int speed)
-{
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- return _set_baudrate(fd,speed);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c
deleted file mode 100644
index 727a605d1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c,v 3.4 2002/05/31 18:46:02 dawes Exp $ */
-/*
- * (c) Copyright 1996 by Holger Veit
- * <Holger.Veit@gmd.de>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_stubs.c /main/3 1996/10/27 11:48:58 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xpoll.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-
-/* This is there to resolve a symbol in Xvfb
- * this version is somewhat crippled compared to the one in os2_io.c
- */
-#ifdef OS2NULLSELECT
-
-/* This below implements select() for calls in xnest. It has been */
-/* somewhat optimized for improved performance, but assumes a few */
-/* things so it cannot be used as a general select. */
-
-#include <sys/select.h>
-#include <sys/errno.h>
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSNPIPES
-#define INCL_DOSMISC
-#define INCL_DOSMODULEMGR
-#undef BOOL
-#undef BYTE
-#include <os2.h>
-
-HEV hPipeSem;
-HMODULE hmod_so32dll;
-static int (*os2_tcp_select)(int*,int,int,int,long);
-ULONG os2_get_sys_millis();
-extern int _files[];
-
-#define MAX_TCP 256
-/* These lifted from sys/emx.h. Change if that changes there! */
-#define F_SOCKET 0x10000000
-#define F_PIPE 0x20000000
-
-struct select_data
-{
- fd_set read_copy;
- fd_set write_copy;
- BOOL have_read;
- BOOL have_write;
- int tcp_select_mask[MAX_TCP];
- int tcp_emx_handles[MAX_TCP];
- int tcp_select_copy[MAX_TCP];
- int socket_nread;
- int socket_nwrite;
- int socket_ntotal;
- int pipe_ntotal;
- int pipe_have_write;
- int max_fds;
-};
-
-int os2PseudoSelect(int nfds, fd_set *readfds, fd_set *writefds,
- fd_set *exceptfds, struct timeval *timeout)
-{
-static BOOL FirstTime=TRUE;
-static haveTCPIP=TRUE;
-ULONG timeout_ms;
-ULONG postCount, start_millis,now_millis;
-char faildata[16];
-struct select_data sd;
-BOOL any_ready;
-int np,ns, i,ready_handles,n;
-APIRET rc;
-
-sd.have_read=FALSE; sd.have_write=FALSE;
-sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
-sd.max_fds=31; ready_handles=0; any_ready=FALSE;
-sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
-
-if(FirstTime){
- /* First load the so32dll.dll module and get a pointer to the SELECT function */
-
- if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
- fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
- haveTCPIP=FALSE;
- }
- if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
- fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
- haveTCPIP=FALSE;
- }
- /* Call these a first time to set the semaphore */
- /* rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
- if(rc) {
- fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
- return(-1);
- }
- rc = DosResetEventSem(hPipeSem, &postCount); */ /* Done in xtrans code for servers*/
-
- /*fprintf(stderr, "Client select() done first-time stuff, sem handle %d.\n",hPipeSem);*/
-
- FirstTime = FALSE;
-}
-
-/* Set up the time delay structs */
-
- if(timeout!=NULL) {
- timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
- }
- else { timeout_ms=1000000; } /* This should be large enough... */
- if(timeout_ms>0) start_millis=os2_get_sys_millis();
-
-/* Copy the masks */
- {FD_ZERO(&sd.read_copy);}
- {FD_ZERO(&sd.write_copy);}
- if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
- if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
-
-/* And zero the original masks */
- if(sd.have_read){ FD_ZERO(readfds);}
- if(sd.have_write) {FD_ZERO(writefds);}
- if(exceptfds != NULL) {FD_ZERO(exceptfds);}
-
-/* Now we parse the fd_sets passed to select and separate pipe/sockets */
- n = os2_parse_select(&sd,nfds);
- if(n == -1) {
- errno = EBADF;
- return (-1);
- }
-
-/* Now we have three cases: either we have sockets, pipes, or both */
-/* We handle all three cases differently to optimize things */
-
-/* Case 1: only pipes! */
- if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- return (np);
- }
- else if (np == -1) { return(-1); }
- while(!any_ready){
- rc = DosWaitEventSem(hPipeSem, 1L);
- /* if(rc) fprintf(stderr,"Sem-wait timeout, rc = %d\n",rc); */
- if(rc == 640) {
- return(0);
- }
- if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0){
- return(np);
- }
- else if (np < 0){ return(-1); }
- }
- }
-
-/* Case 2: only sockets. Just let the os/2 tcp select do the work */
- if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
- ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
- return (ns);
- }
-
-/* Case 3: combination of both */
- if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- any_ready=TRUE;
- ready_handles += np;
- }
- else if (np == -1) { return(-1); }
-
- ns = os2_check_sockets(&sd,readfds,writefds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- while (!any_ready && timeout_ms){
-
- rc = DosWaitEventSem(hPipeSem, 1L);
- if (rc=640) return(0);
- if(rc == 0){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- ready_handles+=np;
- any_ready = TRUE;
- }
- else if (np == -1) {
- return(-1); }
- }
-
- ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- if (i%8 == 0) {
- now_millis = os2_get_sys_millis();
- if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
- }
- i++;
- }
- }
-
-return(ready_handles);
-}
-
-
-ULONG os2_get_sys_millis()
-{
- APIRET rc;
- ULONG milli;
-
- rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
- if(rc) {
- fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
- return(0);
- }
- return(milli);
-}
-
-int os2_parse_select(sd,nfds)
-struct select_data *sd;
-int nfds;
-{
- int i;
- APIRET rc;
-/* First we determine up to which descriptor we need to check. */
-/* No need to check up to 256 if we don't have to (and usually we dont...)*/
-/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX! */
-
- if(nfds > sd->max_fds){
- for(i=0;i<((FD_SETSIZE+31)/32);i++){
- if(sd->read_copy.fds_bits[i] ||
- sd->write_copy.fds_bits[i])
- sd->max_fds=(i*32) +32;
- }
- }
- else { sd->max_fds = nfds; }
-/* Check if result is greater than specified in select() call */
- if(sd->max_fds > nfds) sd->max_fds = nfds;
-
- if (sd->have_read)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->read_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nread++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- /* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
- }
- }
- }
- }
-
- if (sd->have_write)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->write_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nwrite++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- /* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
- sd -> pipe_have_write=TRUE;
- }
- }
- }
- }
-
-
-return(sd->socket_ntotal);
-}
-
-
-int os2_check_sockets(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
- int e,i;
- int j,n;
- memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
- sd->socket_ntotal*sizeof(int));
-
- e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
- sd->socket_nwrite, 0, 0);
-
- if(e == 0) return(e);
-/* We have something ready? */
- if(e>0){
- j = 0; n = 0;
- for (i = 0; i < sd->socket_nread; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], readfds);
- n ++;
- }
- for (i = 0; i < sd->socket_nwrite; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], writefds);
- n ++;
- }
- errno = 0;
-
- return n;
- }
- if(e<0){
- /*Error -- TODO. EBADF is a good choice for now. */
- fprintf(stderr,"Error in server select! e=%d\n",e);
- errno = EBADF;
- return (-1);
- }
- }
-
-/* Check to see if anything is ready on pipes */
-
-int os2_check_pipes(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
-int i,e;
-ULONG ulPostCount;
-PIPESEMSTATE pipeSemState[128];
-APIRET rc;
- e = 0;
- rc = DosResetEventSem(hPipeSem,&ulPostCount);
- rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
- sizeof(pipeSemState));
- if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
- i=0;
- while (pipeSemState[i].fStatus != 0) {
- /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
- pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
- pipeSemState[i].usAvail); */
- if((pipeSemState[i].fStatus == 1) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
- FD_SET(pipeSemState[i].usKey,readfds);
- e++;
- }
- else if((pipeSemState[i].fStatus == 2) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
- FD_SET(pipeSemState[i].usKey,writefds);
- e++;
- }
- else if( (pipeSemState[i].fStatus == 3) &&
- ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
- errno = EBADF;
- /* fprintf(stderr,"Pipe has closed down, fd=%d\n",pipeSemState[i].usKey); */
- return (-1);
- }
- i++;
- } /* endwhile */
- /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
-errno = 0;
-return(e);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c
deleted file mode 100644
index c45b3165e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c,v 3.15 2002/05/31 18:46:02 dawes Exp $ */
-/*
- * (c) Copyright 1994,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_video.c /main/8 1996/10/27 11:49:02 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#define INCL_DOSFILEMGR
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#include "compiler.h"
-
-/***************************************************************************/
-/* Video Memory Mapping helper functions */
-/***************************************************************************/
-
-/* This section uses the xf86sup.sys driver developed for xfree86.
- * The driver allows mapping of physical memory
- * You must install it with a line DEVICE=path\xf86sup.sys in config.sys.
- */
-
-#define LOWORD(X) ((X) & 0xffff)
-#define HIWORD(X) ((X) >> 16)
-
-static HFILE mapdev = -1;
-static ULONG stored_virt_addr;
-static char* mappath = "\\DEV\\PMAP$";
-static HFILE open_mmap()
-{
- APIRET rc;
- ULONG action;
-
- if (mapdev != -1)
- return mapdev;
-
- rc = DosOpen((PSZ)mappath, (PHFILE)&mapdev, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0);
- if (rc!=0) {
- mapdev = -1; }
- else {
- /* fg030203: ask for driver version of xf86sup.sys;
- no output prior to version 1.539 */
- struct {
- ULONG magic;
- ULONG drvtype;
- ULONG version;
- } drvid;
- ULONG dlen = sizeof(drvid);
- if ((rc=DosDevIOCtl(mapdev, (ULONG)0x76, (ULONG)0x61,
- (PVOID)NULL, (ULONG)0, (PULONG)NULL,
- (PVOID)&drvid, (ULONG)dlen, (PULONG)&dlen))==0) {
- xf86Msg(X_INFO,"PMAP$: driver version = %x.%x\n",
- HIWORD(drvid.version),
- LOWORD(drvid.version));
- }
- }
- return mapdev;
-}
-
-static void close_mmap()
-{
- if (mapdev != -1)
- DosClose(mapdev);
- mapdev = -1;
-}
-
-/* this structure is used as a parameter packet for the direct access
- * ioctl of pmap$
- */
-
-/* Changed here for structure of driver PMAP$ */
-
-typedef struct{
- ULONG addr;
- ULONG size;
-} DIOParPkt;
-
-/* This is the data packet for the mapping function */
-
-typedef struct {
- ULONG addr;
- USHORT sel;
-} DIODtaPkt;
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-/* ARGSUSED */
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- DIOParPkt par;
- ULONG plen;
- DIODtaPkt dta;
- ULONG dlen;
- static BOOL ErrRedir = FALSE;
- APIRET rc;
-
- par.addr = (ULONG)Base;
- par.size = (ULONG)Size;
- plen = sizeof(par);
- dlen = sizeof(dta);
-
- open_mmap();
- if (mapdev == -1)
- FatalError("mapVidMem: install DEVICE=path\\XF86SUP.SYS!");
-
- if ((rc=DosDevIOCtl(mapdev, (ULONG)0x76, (ULONG)0x44,
- (PVOID)&par, (ULONG)plen, (PULONG)&plen,
- (PVOID)&dta, (ULONG)dlen, (PULONG)&dlen)) == 0) {
- xf86Msg(X_INFO,"mapVidMem succeeded: (ScreenNum=%d, Base=0x%x, Size=0x%x, vaddr=0x%x)\n",
- ScreenNum, Base, Size, dta.addr);
-
- if (dlen==sizeof(dta)) {
- return (pointer)dta.addr;
- }
- /*else fail*/
- }
-
- /* fail */
- FatalError("mapVidMem FAILED!!: rc = %d (ScreenNum=%d, Base=0x%x, Size=0x%x, return len=%d, vaddr=0x%x, sel=0x%x)\n",
- rc, ScreenNum, Base, Size, dlen, dta.addr, dta.sel);
- return (pointer)0;
-}
-
-/* ARGSUSED */
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- DIOParPkt par;
- ULONG plen,vmaddr;
- APIRET rc;
-/* We need here the VIRTADDR for unmapping, not the physical address */
-/* This should be taken care of either here by keeping track of allocated */
-/* pointers, but this is also already done in the driver... Thus it would */
-/* be a waste to do this tracking twice. Can this be changed when the fn. */
-/* is called? This would require tracking this function in all servers, */
-/* and changing it appropriately to call this with the virtual adress */
-/* If the above mapping function is only called once, then we can store */
-/* the virtual adress and use it here.... */
-
- par.addr = (ULONG)Base;
- par.size = 0xffffffff; /* This is the virtual address parameter. Set this to ignore */
- plen = sizeof(par);
-
- if (mapdev != -1)
- rc = DosDevIOCtl(mapdev, (ULONG)0x76, (ULONG)0x45,
- (PVOID)&par, (ULONG)plen, (PULONG)&plen,
- &vmaddr, sizeof(ULONG), &plen);
- if (!rc) {
- xf86Msg(X_INFO,"unmapVidMem: Unmap phys memory at virtual address 0x%x\n",
- vmaddr);
- }
- else {
- xf86Msg(X_ERROR,"unmapVidMem: Unmap phys memory at base 0x%x, virtual address 0x%x, rc=%d\n",
- Base,vmaddr,rc);
- }
-/* Now if more than one region has been allocated and we close the driver,
- * the other pointers will immediately become invalid. We avoid closing
- * driver for now, but this should be fixed for server exit
- */
-
- /* close_mmap(); */
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool xf86DisableInterrupts()
-{
- /* allow interrupt disabling but check for side-effects.
- * Not a good policy on OS/2...
- */
- asm ("cli");
- return TRUE;
-}
-
-void xf86EnableInterrupts()
-{
- /*Reenable*/
- asm ("sti");
-}
-
-/***************************************************************************/
-/* Initialize video memory */
-/***************************************************************************/
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = TRUE;
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
-#if 0
- pVidMem->mapMemSparse = 0;
- pVidMem->unmapMemSparse = 0;
-#endif
- pVidMem->setWC = 0; /* no MTRR support */
- pVidMem->undoWC = 0;
- pVidMem->initialised = TRUE;
-}