aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README')
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README78
1 files changed, 0 insertions, 78 deletions
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 $
-