Remove SCO support
This has never been buildable in any modular server release. Reviewed-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Mark Kettenis <kettenis@openbsd.org> Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
040d54fb88
commit
f28e48834e
|
@ -50,7 +50,7 @@
|
|||
#ifdef SVR4
|
||||
#include <sys/sysmacros.h>
|
||||
#endif
|
||||
#if defined(__CYGWIN__) || defined(__SCO__)
|
||||
#if defined(__CYGWIN__)
|
||||
#include <sys/param.h>
|
||||
#include <sys/sysmacros.h>
|
||||
#endif
|
||||
|
|
|
@ -2224,7 +2224,6 @@ hw/xfree86/os-support/bus/Makefile
|
|||
hw/xfree86/os-support/hurd/Makefile
|
||||
hw/xfree86/os-support/misc/Makefile
|
||||
hw/xfree86/os-support/linux/Makefile
|
||||
hw/xfree86/os-support/sco/Makefile
|
||||
hw/xfree86/os-support/solaris/Makefile
|
||||
hw/xfree86/parser/Makefile
|
||||
hw/xfree86/ramdac/Makefile
|
||||
|
|
|
@ -59,7 +59,6 @@ CLEANFILES = $(BUILT_SOURCES)
|
|||
EXTRA_DIST = \
|
||||
compiler.h \
|
||||
fourcc.h \
|
||||
scoasm.h \
|
||||
vidmodeproc.h \
|
||||
xf86.h \
|
||||
xf86Bus.h \
|
||||
|
|
|
@ -1525,22 +1525,9 @@ inl(unsigned short port)
|
|||
# define asm __asm
|
||||
# endif
|
||||
# endif
|
||||
# ifndef SCO325
|
||||
# if defined(__UNIXWARE__)
|
||||
# /* avoid including <sys/types.h> for <sys/inline.h> on UnixWare */
|
||||
# define ushort unsigned short
|
||||
# define ushort_t unsigned short
|
||||
# define ulong unsigned long
|
||||
# define ulong_t unsigned long
|
||||
# define uint_t unsigned int
|
||||
# define uchar_t unsigned char
|
||||
# endif /* __UNIXWARE__ */
|
||||
# if !defined(__SUNPRO_C)
|
||||
# include <sys/inline.h>
|
||||
# endif
|
||||
# else
|
||||
# include "scoasm.h"
|
||||
# endif
|
||||
# if !defined(__HIGHC__) && !defined(__SUNPRO_C) || \
|
||||
defined(__USLC__)
|
||||
# pragma asm partial_optimization outl
|
||||
|
|
|
@ -1,142 +0,0 @@
|
|||
|
||||
/*
|
||||
* Copyright (c) 1996 by The XFree86 Project, Inc.
|
||||
*
|
||||
* 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
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 the copyright holder(s)
|
||||
* and author(s) shall not be used in advertising or otherwise to promote
|
||||
* the sale, use or other dealings in this Software without prior written
|
||||
* authorization from the copyright holder(s) and author(s).
|
||||
*/
|
||||
|
||||
/*
|
||||
* scoasm.h - used to define inline versions of certain functions which
|
||||
* do NOT appear in sys/inline.h.
|
||||
*/
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#if defined(__SCO__) && defined(__USLC__)
|
||||
#ifndef _SCOASM_HDR_INC
|
||||
#define _SCOASM_HDR_INC
|
||||
|
||||
asm void outl(port,val)
|
||||
{
|
||||
%reg port,val;
|
||||
movl port, %edx
|
||||
movl val, %eax
|
||||
outl (%dx)
|
||||
%reg port; mem val;
|
||||
movl port, %edx
|
||||
movl val, %eax
|
||||
outl (%dx)
|
||||
%mem port; reg val;
|
||||
movw port, %dx
|
||||
movl val, %eax
|
||||
outl (%dx)
|
||||
%mem port,val;
|
||||
movw port, %dx
|
||||
movl val, %eax
|
||||
outl (%dx)
|
||||
}
|
||||
|
||||
asm void outw(port,val)
|
||||
{
|
||||
%reg port,val;
|
||||
movl port, %edx
|
||||
movl val, %eax
|
||||
data16
|
||||
outl (%dx)
|
||||
%reg port; mem val;
|
||||
movl port, %edx
|
||||
movw val, %ax
|
||||
data16
|
||||
outl (%dx)
|
||||
%mem port; reg val;
|
||||
movw port, %dx
|
||||
movl val, %eax
|
||||
data16
|
||||
outl (%dx)
|
||||
%mem port,val;
|
||||
movw port, %dx
|
||||
movw val, %ax
|
||||
data16
|
||||
outl (%dx)
|
||||
}
|
||||
|
||||
asm void outb(port,val)
|
||||
{
|
||||
%reg port,val;
|
||||
movl port, %edx
|
||||
movl val, %eax
|
||||
outb (%dx)
|
||||
%reg port; mem val;
|
||||
movl port, %edx
|
||||
movb val, %al
|
||||
outb (%dx)
|
||||
%mem port; reg val;
|
||||
movw port, %dx
|
||||
movl val, %eax
|
||||
outb (%dx)
|
||||
%mem port,val;
|
||||
movw port, %dx
|
||||
movb val, %al
|
||||
outb (%dx)
|
||||
}
|
||||
|
||||
asm int inl(port)
|
||||
{
|
||||
%reg port;
|
||||
movl port, %edx
|
||||
inl (%dx)
|
||||
%mem port;
|
||||
movw port, %dx
|
||||
inl (%dx)
|
||||
}
|
||||
|
||||
asm int inw(port)
|
||||
{
|
||||
%reg port;
|
||||
subl %eax, %eax
|
||||
movl port, %edx
|
||||
data16
|
||||
inl (%dx)
|
||||
%mem port;
|
||||
subl %eax, %eax
|
||||
movw port, %dx
|
||||
data16
|
||||
inl (%dx)
|
||||
}
|
||||
|
||||
asm int inb(port)
|
||||
{
|
||||
%reg port;
|
||||
subl %eax, %eax
|
||||
movl port, %edx
|
||||
inb (%dx)
|
||||
%mem port;
|
||||
subl %eax, %eax
|
||||
movw port, %dx
|
||||
inb (%dx)
|
||||
}
|
||||
|
||||
#endif /* _SCOASM_HDR_INC */
|
||||
#endif /* __SCO__ && __USLC__ */
|
|
@ -56,12 +56,7 @@ xf86MonPtr ConfiguredMonitor;
|
|||
Bool xf86DoConfigurePass1 = TRUE;
|
||||
static Bool foundMouse = FALSE;
|
||||
|
||||
#if defined(__SCO__)
|
||||
static char *DFLT_MOUSE_PROTO = "OSMouse";
|
||||
#elif defined(__UNIXWARE__)
|
||||
static char *DFLT_MOUSE_PROTO = "OSMouse";
|
||||
static char *DFLT_MOUSE_DEV = "/dev/mouse";
|
||||
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
static char *DFLT_MOUSE_DEV = "/dev/sysmouse";
|
||||
static char *DFLT_MOUSE_PROTO = "auto";
|
||||
#elif defined(linux)
|
||||
|
@ -169,15 +164,11 @@ configureInputSection (void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifndef __SCO__
|
||||
fd = open(DFLT_MOUSE_DEV, 0);
|
||||
if (fd != -1) {
|
||||
foundMouse = TRUE;
|
||||
close(fd);
|
||||
}
|
||||
#else
|
||||
foundMouse = TRUE;
|
||||
#endif
|
||||
}
|
||||
|
||||
mouse = calloc(1, sizeof(XF86ConfInputRec));
|
||||
|
@ -186,11 +177,9 @@ configureInputSection (void)
|
|||
mouse->inp_option_lst =
|
||||
xf86addNewOption(mouse->inp_option_lst, strdup("Protocol"),
|
||||
strdup(DFLT_MOUSE_PROTO));
|
||||
#ifndef __SCO__
|
||||
mouse->inp_option_lst =
|
||||
xf86addNewOption(mouse->inp_option_lst, strdup("Device"),
|
||||
strdup(DFLT_MOUSE_DEV));
|
||||
#endif
|
||||
mouse->inp_option_lst =
|
||||
xf86addNewOption(mouse->inp_option_lst, strdup("ZAxisMapping"),
|
||||
strdup("4 5 6 7"));
|
||||
|
@ -749,13 +738,6 @@ DoConfigure(void)
|
|||
|
||||
ErrorF("\n");
|
||||
|
||||
#ifdef __SCO__
|
||||
ErrorF("\n"__XSERVERNAME__
|
||||
" is using the kernel event driver to access the mouse.\n"
|
||||
"If you wish to use the internal "__XSERVERNAME__
|
||||
" mouse drivers, please\n"
|
||||
"edit the file and correct the Device.\n");
|
||||
#else /* !__SCO__ */
|
||||
if (!foundMouse) {
|
||||
ErrorF("\n"__XSERVERNAME__" is not able to detect your mouse.\n"
|
||||
"Edit the file and correct the Device.\n");
|
||||
|
@ -766,7 +748,6 @@ DoConfigure(void)
|
|||
" tries to autodetect\n"
|
||||
"the protocol.\n",DFLT_MOUSE_DEV);
|
||||
}
|
||||
#endif /* !__SCO__ */
|
||||
|
||||
if (xf86NumScreens > 1) {
|
||||
ErrorF("\n"__XSERVERNAME__
|
||||
|
|
|
@ -711,20 +711,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
|
|||
xf86EnterServerState(SETUP);
|
||||
}
|
||||
}
|
||||
#ifdef SCO325
|
||||
else {
|
||||
/*
|
||||
* Under SCO we must ack that we got the console at startup,
|
||||
* I think this is the safest way to assure it.
|
||||
*/
|
||||
static int once = 1;
|
||||
if (once) {
|
||||
once = 0;
|
||||
if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
|
||||
xf86Msg(X_WARNING, "VT_ACKACQ failed");
|
||||
}
|
||||
}
|
||||
#endif /* SCO325 */
|
||||
|
||||
for (i = 0; i < xf86NumScreens; i++)
|
||||
if (!xf86ColormapAllocatePrivates(xf86Screens[i]))
|
||||
|
|
|
@ -114,26 +114,6 @@ LoaderInit(void)
|
|||
GET_ABI_MAJOR(LoaderVersionInfo.extensionVersion),
|
||||
GET_ABI_MINOR(LoaderVersionInfo.extensionVersion));
|
||||
|
||||
#if defined(__UNIXWARE__) && !defined(__GNUC__)
|
||||
/* For UnixWare we need to load the C Runtime libraries which are
|
||||
* normally auto-linked by the compiler. Otherwise we are bound to
|
||||
* see unresolved symbols when trying to use the type "long long".
|
||||
* Obviously, this does not apply if the GNU C compiler is used.
|
||||
*/
|
||||
{
|
||||
int errmaj, errmin, wasLoaded; /* place holders */
|
||||
char *xcrtpath = DEFAULT_MODULE_PATH "/libcrt.a";
|
||||
char *uwcrtpath = "/usr/ccs/lib/libcrt.a";
|
||||
char *path;
|
||||
struct stat st;
|
||||
|
||||
if(stat(xcrtpath, &st) < 0)
|
||||
path = uwcrtpath; /* fallback: try to get libcrt.a from the uccs */
|
||||
else
|
||||
path = xcrtpath; /* get the libcrt.a we compiled with */
|
||||
LoaderOpen (path, &errmaj, &errmin, &wasLoaded, 0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Public Interface to the loader. */
|
||||
|
|
|
@ -50,8 +50,6 @@
|
|||
#define OSNAME "openbsd"
|
||||
#elif defined(__GNU__)
|
||||
#define OSNAME "hurd"
|
||||
#elif defined(__SCO__)
|
||||
#define OSNAME "sco"
|
||||
#elif defined(SVR4) && defined(sun)
|
||||
#define OSNAME "solaris"
|
||||
#elif defined(SVR5)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
SUBDIRS = bus @XORG_OS_SUBDIR@ misc $(DRI_SUBDIRS)
|
||||
DIST_SUBDIRS = bsd bus misc linux solaris sco hurd
|
||||
DIST_SUBDIRS = bsd bus misc linux solaris hurd
|
||||
|
||||
sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
EXTRA_DIST = \
|
||||
VTsw_sco.c \
|
||||
sco_init.c \
|
||||
sco_iop.c \
|
||||
sco_video.c
|
|
@ -1,127 +0,0 @@
|
|||
/*
|
||||
* Copyright 1993 by David Wexelblat <dwex@goblin.org>
|
||||
* Copyright 1993 by David McCullough <davidm@stallion.oz.au>
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
|
||||
#include "xf86.h"
|
||||
#include "xf86Priv.h"
|
||||
#include "xf86_OSlib.h"
|
||||
|
||||
/* For the event driver prototypes */
|
||||
#include <sys/event.h>
|
||||
#include <mouse.h>
|
||||
|
||||
/*
|
||||
* Handle the VT-switching interface for SCO
|
||||
*/
|
||||
|
||||
/*
|
||||
* This function is the signal handler for the VT-switching signal. It
|
||||
* is only referenced inside the OS-support layer. NOTE: we do NOT need
|
||||
* to re-arm the signal here, since we used sigaction() to set the signal
|
||||
* disposition in sco_init.c. If we had used signal(), we would need to
|
||||
* re-arm the signal here. All we need to do now is record the fact that
|
||||
* we got the signal. XFree86 handles the rest.
|
||||
*/
|
||||
void
|
||||
xf86VTRequest(int sig)
|
||||
{
|
||||
xf86Info.vtRequestsPending = TRUE;
|
||||
return;
|
||||
}
|
||||
|
||||
Bool
|
||||
xf86VTSwitchPending(void)
|
||||
{
|
||||
return xf86Info.vtRequestsPending ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* When we switch away, we need to flush and suspend the event driver
|
||||
* before the VT_RELDISP. We also need to get the current LED status
|
||||
* and preserve it, so that we can restore it when we come back.
|
||||
*/
|
||||
static int sco_ledstatus = -1;
|
||||
static unsigned int sco_ledstate = 0;
|
||||
|
||||
Bool
|
||||
xf86VTSwitchAway(void)
|
||||
{
|
||||
ev_flush();
|
||||
ev_suspend();
|
||||
|
||||
sco_ledstatus = ioctl(xf86Info.consoleFd, KDGETLED, &sco_ledstate);
|
||||
|
||||
xf86Info.vtRequestsPending = FALSE;
|
||||
if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_TRUE) < 0) {
|
||||
return FALSE;
|
||||
} else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* When we come back to the X server, we need to resume the event driver,
|
||||
* and we need to restore the LED settings to what they were when we
|
||||
* switched away.
|
||||
*/
|
||||
Bool
|
||||
xf86VTSwitchTo(void)
|
||||
{
|
||||
ev_resume();
|
||||
|
||||
xf86Info.vtRequestsPending = FALSE;
|
||||
if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0) {
|
||||
return FALSE;
|
||||
} else {
|
||||
if (sco_ledstatus >= 0) {
|
||||
ioctl (xf86Info.consoleFd, KDSETLED, sco_ledstate);
|
||||
}
|
||||
sco_ledstatus = -1;
|
||||
|
||||
/*
|
||||
* Convince the console driver this screen is in graphics mode,
|
||||
* otherwise it assumes it can do more to the screen than it should.
|
||||
*/
|
||||
if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) {
|
||||
ErrorF("Failed to set graphics mode (%s)\n", strerror(errno));
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
Bool
|
||||
xf86VTActivate(int vtno)
|
||||
{
|
||||
if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vtno - 1) < 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
|
@ -1,294 +0,0 @@
|
|||
/*
|
||||
* Copyright 2001-2005 by J. Kean Johnston <jkj@sco.com>
|
||||
*
|
||||
* 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 J. Kean Johnston not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. J. Kean Johnston makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL J. KEAN JOHNSTON 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.
|
||||
*/
|
||||
|
||||
/* Re-written May 2001 to represent the current state of reality */
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xmd.h>
|
||||
|
||||
#include "compiler.h"
|
||||
|
||||
#include "xf86.h"
|
||||
#include "xf86Priv.h"
|
||||
#include "xf86_OSlib.h"
|
||||
|
||||
static Bool KeepTty = FALSE;
|
||||
static int VTnum = -1;
|
||||
static char vtdevice[48];
|
||||
static int sco_console_mode = -1;
|
||||
|
||||
extern Bool mpxLock;
|
||||
|
||||
void
|
||||
xf86OpenConsole(void)
|
||||
{
|
||||
int i, ioctl_ret;
|
||||
struct vt_mode VT;
|
||||
struct vid_info vidinf;
|
||||
struct sigaction sigvtsw;
|
||||
char *ttn;
|
||||
|
||||
if (serverGeneration == 1) {
|
||||
/* check if we're run with euid==0 */
|
||||
if (geteuid() != 0) {
|
||||
FatalError("xf86OpenConsole: Server must be setuid root\n");
|
||||
}
|
||||
|
||||
/* If we are run in the background we will get SIGTTOU. Ignore it. */
|
||||
OsSignal (SIGTTOU, SIG_IGN);
|
||||
|
||||
/*
|
||||
* Set up the virtual terminal (multiscreen in SCO parlance).
|
||||
* For the actual console itself, screens are numbered from
|
||||
* 1 to (usually) 16. However, it is possible to have a nested
|
||||
* server, and it is also possible to be on a multi-console
|
||||
* system such as MaxSpeed or SunRiver. Therefore, we should
|
||||
* not make any assumptions about the TTY name we are on, and
|
||||
* instead we rely on ttyname() to give us the real TTY name.
|
||||
* Previously, we tried to determine the TTY name manually.
|
||||
* This is wrong. The only time we need to futz with the TTY name
|
||||
* is if we were given the name of a TTY to run on explicity on
|
||||
* the command line.
|
||||
*/
|
||||
|
||||
if (VTnum == -1) {
|
||||
/*
|
||||
* No device was specified. We need to query the kernel to see which
|
||||
* console device we are on (and in fact if we are on a console at all).
|
||||
*/
|
||||
ttn = ttyname (1);
|
||||
|
||||
if (ttn == (char *)0) {
|
||||
FatalError ("xf86OpenConsole: Could not determine TTY name: %s\n",
|
||||
strerror(errno));
|
||||
}
|
||||
strlcpy (vtdevice, ttn, sizeof(vtdevice));
|
||||
} else if (VTnum >= 0) {
|
||||
snprintf (vtdevice, sizeof(vtdevice), "/dev/tty%02d", VTnum);
|
||||
}
|
||||
|
||||
/*
|
||||
* Now we can dispose of stdin/stdout
|
||||
*/
|
||||
fclose (stdin);
|
||||
fclose (stdout);
|
||||
|
||||
if ((xf86Info.consoleFd = open(vtdevice, O_RDWR | O_NDELAY, 0)) < 0) {
|
||||
FatalError("xf86OpenConsole: Cannot open %s: %s\n", vtdevice,
|
||||
strerror(errno));
|
||||
}
|
||||
|
||||
/*
|
||||
* We make 100% sure we use the correct VT number. This can get ugly
|
||||
* where there are multi-consoles in use, so we make sure we query
|
||||
* the kernel for the correct VT number. It knows best, we don't.
|
||||
*/
|
||||
vidinf.size = sizeof(vidinf);
|
||||
if (ioctl (xf86Info.consoleFd, CONS_GETINFO, &vidinf) < 0) {
|
||||
FatalError ("xf86OpenConsole: %s not a console device "
|
||||
"or error querying device: %s\n", vtdevice, strerror (errno));
|
||||
}
|
||||
xf86Info.vtno = vidinf.m_num;
|
||||
VTnum = vidinf.m_num + 1; /* 0-based */
|
||||
|
||||
ErrorF("(using VT%02d device %s)\n\n", VTnum, vtdevice);
|
||||
|
||||
/* We activate the console just in case its not the one we are on */
|
||||
if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0) {
|
||||
ErrorF("xf86OpenConsole: VT_ACTIVATE failed (%s)\n", strerror(errno));
|
||||
}
|
||||
|
||||
/* Disassociate from controling TTY */
|
||||
if (!KeepTty) {
|
||||
setpgrp();
|
||||
}
|
||||
|
||||
/*
|
||||
* Now we get the current mode that the console device is in. We will
|
||||
* use this later when we close the console device to restore it to
|
||||
* that same mode.
|
||||
*/
|
||||
if ((sco_console_mode = ioctl(xf86Info.consoleFd, CONS_GET, 0L)) < 0) {
|
||||
FatalError("xf86OpenConsole: CONS_GET failed on console (%s)\n",
|
||||
strerror(errno));
|
||||
}
|
||||
|
||||
if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) {
|
||||
FatalError("xf86OpenConsole: VT_GETMODE failed (%s)\n", strerror(errno));
|
||||
}
|
||||
|
||||
sigvtsw.sa_handler = xf86VTRequest;
|
||||
sigfillset(&sigvtsw.sa_mask);
|
||||
sigvtsw.sa_flags = 0;
|
||||
|
||||
/* NOTE: Using sigaction means we dont have to re-arm the signal */
|
||||
sigaction(SIGUSR1, &sigvtsw, NULL);
|
||||
|
||||
VT.mode = VT_PROCESS;
|
||||
VT.relsig = SIGUSR1;
|
||||
VT.acqsig = SIGUSR1;
|
||||
VT.frsig = SIGINT; /* Not implemented */
|
||||
VT.waitv = 0;
|
||||
|
||||
/*
|
||||
* The SCO X server tries the following call 5 times. Lets do the same
|
||||
* thing. It shouldn't really be required but sometimes things take a
|
||||
* while to settle down when switching screens. *helpless shrug* I know
|
||||
* its sucks but ...
|
||||
*/
|
||||
|
||||
ioctl_ret = 0;
|
||||
for (i = 0; i < 5; i++) {
|
||||
ioctl_ret = ioctl(xf86Info.consoleFd, VT_SETMODE, &VT);
|
||||
if (ioctl_ret >= 0)
|
||||
break;
|
||||
usleep(999999); /* Dont use nap() - it forces linking with -lx */
|
||||
}
|
||||
|
||||
if (ioctl_ret < 0) {
|
||||
FatalError("xf86OpenConsole: VT_SETMODE failed (%s)\n", strerror(errno));
|
||||
}
|
||||
|
||||
/*
|
||||
* Convince the console driver we are in graphics mode.
|
||||
*/
|
||||
if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) {
|
||||
ErrorF("Failed to set graphics mode (%s)\n", strerror(errno));
|
||||
}
|
||||
} else { /* serverGeneration != 1 */
|
||||
if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0) {
|
||||
ErrorF("xf86OpenConsole: VT_ACTIVATE failed (%s)\n", strerror(errno));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Restore the console to its previous state. This may cause flicker if
|
||||
* the screen was previous in a graphics mode, because we first set it
|
||||
* to text mode. This has the advantage of getting the console driver
|
||||
* to do a soft reset on the card, which really does help settle the
|
||||
* video card down again after coming out of Xfree86.
|
||||
*/
|
||||
void
|
||||
xf86CloseConsole(void)
|
||||
{
|
||||
struct vt_mode VT;
|
||||
struct sigaction sigvtsw;
|
||||
|
||||
/* Set text mode (possibly briefly) */
|
||||
ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT0);
|
||||
|
||||
/* Restore the original mode */
|
||||
if (sco_console_mode != -1) {
|
||||
ioctl(xf86Info.consoleFd, MODESWITCH | sco_console_mode, 0L);
|
||||
}
|
||||
|
||||
ioctl(xf86Info.consoleFd, VT_RELDISP, 1); /* Release the display */
|
||||
|
||||
sigvtsw.sa_handler = SIG_DFL;
|
||||
sigfillset(&sigvtsw.sa_mask);
|
||||
sigvtsw.sa_flags = 0;
|
||||
|
||||
sigaction(SIGUSR1, &sigvtsw, NULL);
|
||||
|
||||
VT.mode = VT_AUTO;
|
||||
VT.waitv = 0;
|
||||
VT.relsig = SIGUSR1;
|
||||
VT.acqsig = SIGUSR1;
|
||||
VT.frsig = SIGINT;
|
||||
ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* Revert to auto handling */
|
||||
|
||||
close(xf86Info.consoleFd); /* We're done with the device */
|
||||
}
|
||||
|
||||
int
|
||||
xf86ProcessArgument(int argc, char *argv[], int i)
|
||||
{
|
||||
/*
|
||||
* Keep server from detaching from controlling tty. This is useful
|
||||
* when debugging (so the server can receive keyboard signals).
|
||||
*/
|
||||
if (!strcmp(argv[i], "-keeptty")) {
|
||||
KeepTty = TRUE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* By default, the X server wants to bind itself to CPU 0. This makes
|
||||
* sure that the server has full access to the I/O ports at IOPL 3.
|
||||
* Some SMP systems have trouble with I/O on CPU's other than 0. If,
|
||||
* however, you have a system that is well behaved, you can specify
|
||||
* this argument and let the scheduler decide which CPU the server
|
||||
* should run on.
|
||||
*/
|
||||
if (!strcmp(argv[i], "-nompxlock")) {
|
||||
mpxLock = FALSE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Specify the VT number to run on (NOT the device).
|
||||
*/
|
||||
if ((argv[i][0] == 'v') && (argv[i][1] == 't')) {
|
||||
if (sscanf(argv[i], "vt%2d", &VTnum) == 0) {
|
||||
UseMsg();
|
||||
VTnum = -1;
|
||||
return 0;
|
||||
}
|
||||
if (VTnum <= 0) {
|
||||
UseMsg();
|
||||
VTnum = -1;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Use a device the user specifies.
|
||||
*/
|
||||
if (!strcmp(argv[i], "-crt")) {
|
||||
if (++i > argc) {
|
||||
UseMsg();
|
||||
VTnum = -1;
|
||||
return 0;
|
||||
} else {
|
||||
VTnum = -2;
|
||||
strlcpy (vtdevice, argv[i], sizeof(vtdevice));
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
xf86UseMsg(void)
|
||||
{
|
||||
ErrorF("vtXX use the specified VT number\n");
|
||||
ErrorF("-crt DEVICE use the specified VT device\n");
|
||||
ErrorF("-nompxlock dont bind X server to CPU 0\n");
|
||||
ErrorF("-keeptty ");
|
||||
ErrorF("don't detach controlling tty (for debugging only)\n");
|
||||
}
|
|
@ -1,90 +0,0 @@
|
|||
/*
|
||||
* Copyright 2001 by J. Kean Johnston <jkj@caldera.com>
|
||||
*
|
||||
* 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 J. Kean Johnston not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. J. Kean Johnston makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL J. KEAN JOHNSTON 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.
|
||||
*/
|
||||
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
|
||||
#include "compiler.h"
|
||||
|
||||
#define _NEED_SYSI86
|
||||
#include "xf86.h"
|
||||
#include "xf86Priv.h"
|
||||
#include "xf86OSpriv.h"
|
||||
#include "xf86_OSlib.h"
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* I/O Permissions section */
|
||||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* There is a right way and a wrong way of doing this. Unfortunately, we
|
||||
* are forced to do it the wrong way. The right way is to be told the range
|
||||
* or ranges of I/O ports the driver(s) need access to, in order to use the
|
||||
* CONS_IOPERM ioctl() to grant access only to those ports we care about.
|
||||
* This way we can guarantee some small level of stability because a driver
|
||||
* does not have access to all ports (which would mean it could play with
|
||||
* the PIT and thus affect scheduling times, or a whole slew of other
|
||||
* nasty things). However, because XFree86 currently only enables or disables
|
||||
* ALL port access, we need to run at IOPL 3, which basically means the
|
||||
* X Server runs at the same level as the kernel. You can image why this is
|
||||
* unsafe. Oh, and this is not a problem unique to OSR5, other OSes are
|
||||
* affected by this as well.
|
||||
*
|
||||
* So, for the time being, we change our IOPL until such time as the XFree86
|
||||
* architecture is changed to allow for tighter control of I/O ports. If and
|
||||
* when it is, then the CONS_ADDIOP/DELIOP ioctl() should be used to enable
|
||||
* or disable access to the desired ports.
|
||||
*/
|
||||
|
||||
extern long sysi86 (int cmd, ...);
|
||||
|
||||
static Bool IOEnabled = FALSE;
|
||||
|
||||
Bool
|
||||
xf86EnableIO(void)
|
||||
{
|
||||
if (IOEnabled)
|
||||
return TRUE;
|
||||
|
||||
if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) {
|
||||
xf86Msg(X_WARNING,"Failed to set IOPL for extended I/O\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
IOEnabled = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
xf86DisableIO(void)
|
||||
{
|
||||
if (!IOEnabled)
|
||||
return;
|
||||
|
||||
sysi86(SI86V86, V86SC_IOPL, 0);
|
||||
IOEnabled = FALSE;
|
||||
}
|
|
@ -1,290 +0,0 @@
|
|||
/*
|
||||
* Copyright 2001 by J. Kean Johnston <jkj@sco.com>
|
||||
*
|
||||
* 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 J. Kean Johnston not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. J. Kean Johnston makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL J. KEAN JOHNSTON 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.
|
||||
*/
|
||||
|
||||
/* Re-written May 2001 to represent the current state of reality */
|
||||
|
||||
/*
|
||||
* This file contains the completely re-written SCO OpenServer video
|
||||
* routines for XFree86 4.x. Much of this is based on the SCO X server
|
||||
* code (which is an X11R5 server) and will probably only work on
|
||||
* OpenServer versions 5.0.5, 5.0.6 and later. Please send me (jkj@sco.com)
|
||||
* email if you have any questions.
|
||||
*
|
||||
* Ideally, you should use OSR5.0.6A or later, with the updated console
|
||||
* driver for 5.0.6A (its the default driver in 5.0.7 and later).
|
||||
* However, if you are running on an older system, this code will detect
|
||||
* that and adjust accordingly.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include "input.h"
|
||||
#include "scrnintstr.h"
|
||||
|
||||
#define _NEED_SYSI86
|
||||
#include "xf86.h"
|
||||
#include "xf86Priv.h"
|
||||
#include "xf86OSpriv.h"
|
||||
#include "xf86_OSlib.h"
|
||||
|
||||
#include <sys/ci/ciioctl.h>
|
||||
#define MPXNAME "/dev/atp1"
|
||||
#define BASECPU 1
|
||||
|
||||
Bool mpxLock = TRUE;
|
||||
|
||||
#define USE_VASMETHOD 1
|
||||
|
||||
/***************************************************************************/
|
||||
/* Video Memory Mapping section */
|
||||
/***************************************************************************/
|
||||
|
||||
static int sco_mcdone = 0, sco_ismc = 0;
|
||||
|
||||
/***************************************************************************/
|
||||
/*
|
||||
* To map the video memory, we first need to see if we are on a multi-console
|
||||
* system. If we are, we need to try to use an existing video class in the
|
||||
* kernel. We do this by retrieving the list of currently defined classes
|
||||
* (via the new CONS_GETCLASS ioctl()) to see if we have a class that will
|
||||
* match the range of memory we desire. If we can't find one, we have an
|
||||
* error and we abort.
|
||||
*
|
||||
* If we are not using a multi-console, we can simply use mmap() to map in
|
||||
* the frame buffer, using the classs-access method as a fall-back only if
|
||||
* the mmap() fails (it shouldn't). We always set the appropriate pointers
|
||||
* in the config structure to point ot the right function to map and unmap
|
||||
* the video memory. An alternative to using mmap() is to use the new
|
||||
* CONS_ADDVAS call, which will use vasmalloc() and vasbind() in the kernel
|
||||
* to map the physical address to a virtual one, which it then returns.
|
||||
* I am not 100% sure if this is faster or not, but it may prove easier to
|
||||
* debug things. Just to be on the safe side, I have included both methods
|
||||
* here, and the mmap() method can be used by setting USE_VASMETHOD to 0
|
||||
* above.
|
||||
*/
|
||||
|
||||
#if !defined(CONS_ADDVAS)
|
||||
# undef USE_VASMETHOD
|
||||
# define USE_VASMETHOD 0
|
||||
#endif
|
||||
|
||||
static int
|
||||
scoIsMultiConsole (void)
|
||||
{
|
||||
int x;
|
||||
|
||||
if (sco_mcdone)
|
||||
return sco_ismc;
|
||||
x = access ("/usr/lib/vidconf/.multiconsole", F_OK);
|
||||
if (x == 0)
|
||||
sco_ismc = 1;
|
||||
sco_mcdone = 1;
|
||||
return sco_ismc;
|
||||
}
|
||||
|
||||
/*
|
||||
* This maps memory using mmap()
|
||||
*/
|
||||
static pointer
|
||||
mapVidMemMMAP(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
|
||||
{
|
||||
int fd;
|
||||
unsigned long realBase, alignOff;
|
||||
pointer base;
|
||||
|
||||
fd = open (DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
|
||||
if (fd < 0) {
|
||||
FatalError("xf86MapVidMem: failed to open %s (%s)\n", DEV_MEM,
|
||||
strerror(errno));
|
||||
return 0; /* NOTREACHED */
|
||||
}
|
||||
|
||||
realBase = Base & ~(getpagesize() - 1);
|
||||
alignOff = Base - realBase;
|
||||
|
||||
DebugF("base: %lx, realBase: %lx, alignOff: %lx\n", Base,realBase,alignOff);
|
||||
|
||||
base = mmap((caddr_t)0, Size + alignOff,
|
||||
(flags & VIDMEM_READONLY) ? PROT_READ : (PROT_READ | PROT_WRITE),
|
||||
MAP_SHARED, fd, (off_t)realBase);
|
||||
close(fd);
|
||||
if (base == MAP_FAILED) {
|
||||
FatalError("xf86MapVidMem: Could not mmap framebuffer (0x%08x,0x%x) (%s)\n",
|
||||
Base, Size, strerror(errno));
|
||||
return 0; /* NOTREACHED */
|
||||
}
|
||||
|
||||
DebugF("base: %lx aligned base: %lx\n",base, base + alignOff);
|
||||
return (pointer)((char *)base + alignOff);
|
||||
}
|
||||
|
||||
#if (USE_VASMETHOD)
|
||||
/*
|
||||
* This maps memory using the virtual address space (VAS) console calls.
|
||||
*/
|
||||
static pointer
|
||||
mapVidMemVAS(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
|
||||
{
|
||||
struct vidvasmem vas;
|
||||
pointer base;
|
||||
|
||||
vas.base = (long)Base;
|
||||
vas.size = (long)Size;
|
||||
|
||||
base = (pointer)ioctl (xf86Info.consoleFd, CONS_ADDVAS, &vas);
|
||||
if (base == (pointer)-1) {
|
||||
return mapVidMemMMAP(ScreenNum, Base, Size, flags);
|
||||
}
|
||||
return base;
|
||||
}
|
||||
#endif /* USE_VASMETHOD */
|
||||
|
||||
struct vidclass vidclasslist[] = {
|
||||
{ "VBE", "", 0xf0000000, 0x2000000, 0 },
|
||||
{ "P9000", "", 0xc0000000, 0x400000, 0 },
|
||||
{ "TULIP", "", 0x80000000, 0x400000, 0 },
|
||||
{ "VIPER", "", 0xa0000000, 0x400000, 0 },
|
||||
{ "S3T", "", 0xa0000000, 0x200000, 0 },
|
||||
{ "S3DT", "", 0x4000000, 0x400000, 0 },
|
||||
{ "MGA", "", 0x2200000, 0x4000, 0 },
|
||||
{ "CLVGA", "", 0xa0000, 0x20000, 0 },
|
||||
{ "OLIVE", "", 0xd8000000, 0x400000, 0 },
|
||||
{ "S3C", "", 0xa0000, 0x10000, 0 },
|
||||
{ "MGAVLB", "", 0xac000, 0x34000, 0 },
|
||||
{ "ATI8514", "", 0xFF000, 0x1000, 0 },
|
||||
{ "GXREGS", "", 0xb0000, 0x10000, 0 },
|
||||
{ "GX", "", 0xa0000, 0x10000, 0 },
|
||||
{ "CT64300", "", 0xa0000000, 0x400000, 0 },
|
||||
{ "SVGA", "", 0xa0000, 0x20000, 0 },
|
||||
{ "S3V", "", 0xa0000000, 0x400000, 0 },
|
||||
{ "8514A", "", 0xFF000, 0x1000, 0 },
|
||||
{ "VGA", "", 0xa0000, 0x10000, 0 },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static pointer
|
||||
mapVidMemVC(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
|
||||
{
|
||||
struct vidclass *vcp;
|
||||
char *class = NULL;
|
||||
pointer base;
|
||||
|
||||
for (vcp = vidclasslist; vcp->name; vcp++) {
|
||||
if ((vcp->base == Base) && (vcp->size == Size)) {
|
||||
class = vcp->name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (class == NULL) {
|
||||
/*
|
||||
* As a fall-back, we will try and use the mmap() approach. This may
|
||||
* prove to be the wrong thing to do, but time and testing will tell.
|
||||
*/
|
||||
ErrorF("xf86MapVidMem: No class map defined for (0x%08x,0x%08x)\n", Base, Size);
|
||||
#if USE_VASMETHOD
|
||||
return mapVidMemVAS(ScreenNum, Base, Size, flags);
|
||||
#else /* !USE_VASMETHOD */
|
||||
return mapVidMemMMAP(ScreenNum, Base, Size, flags);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* We found a suitable class. Try and use it.
|
||||
*/
|
||||
base = (pointer)ioctl(xf86Info.consoleFd, MAP_CLASS, class);
|
||||
if ((int)base == -1) {
|
||||
FatalError("xf86MapVidMem: Failed to map video memory class `%s'\n", class);
|
||||
return 0; /* NOTREACHED */
|
||||
}
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unmapping the video memory is easy. We always call munmap(), as it is
|
||||
* safe to do so even if we haven't actually mapped in any pages via mmap().
|
||||
* In the case where we used the video class, we don't need to do anything
|
||||
* as the kernel will clean up the TSS when we exit, and will undo the
|
||||
* vasbind() that was done when the class was originally mapped. If we used
|
||||
* vasmap, we simply undo the map. Again, it is benign to call vasunmap
|
||||
* even if we got the frame buffer via some other mechanism (like mmap).
|
||||
*/
|
||||
|
||||
static void
|
||||
unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
|
||||
{
|
||||
#if USE_VASMETHOD
|
||||
struct vidvasmem vas;
|
||||
int x;
|
||||
|
||||
vas.base = (long)Base;
|
||||
vas.size = (long)Size;
|
||||
|
||||
x = ioctl (xf86Info.consoleFd, CONS_DELVAS, &vas);
|
||||
if (x == 0)
|
||||
return;
|
||||
#endif /* USE_VASMETHOD */
|
||||
|
||||
munmap(Base, Size);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set things up to point to our local functions. When the kernel gets
|
||||
* MTRR support, we will need to add the required functions for that
|
||||
* here too. MTRR support will most likely appear in 5.0.8 or 5.1.0.
|
||||
*
|
||||
* We also want to lock the X server process to the base CPU in an MPX
|
||||
* system, since we will be going to IOPL 3. Most engine drivers can cope
|
||||
* with I/O access on any CPU but there are a few (AST Manhattan I believe)
|
||||
* that can't, so the server needs to be locked to CPU0.
|
||||
*/
|
||||
void
|
||||
xf86OSInitVidMem(VidMemInfoPtr pVidMem)
|
||||
{
|
||||
int mpx_fd;
|
||||
|
||||
if (scoIsMultiConsole ()) {
|
||||
pVidMem->mapMem = mapVidMemVC;
|
||||
} else {
|
||||
#if USE_VASMETHOD
|
||||
pVidMem->mapMem = mapVidMemVAS;
|
||||
#else
|
||||
pVidMem->mapMem = mapVidMemMMAP;
|
||||
#endif
|
||||
}
|
||||
|
||||
pVidMem->unmapMem = unmapVidMem;
|
||||
pVidMem->linearSupported = TRUE;
|
||||
pVidMem->initialised = TRUE;
|
||||
|
||||
if (mpxLock && (mpx_fd = open (MPXNAME, O_RDONLY)) > 0) {
|
||||
if (ioctl (mpx_fd, ACPU_XLOCK, BASECPU) < 0)
|
||||
ErrorF ("xf86OSInitVidMem: Can not bind to CPU 0 (%s)\n",
|
||||
strerror(errno));
|
||||
close (mpx_fd);
|
||||
}
|
||||
}
|
||||
|
|
@ -85,22 +85,11 @@
|
|||
/**************************************************************************/
|
||||
#if (defined(SYSV) || defined(SVR4)) && \
|
||||
(defined(sun) || defined(__i386__))
|
||||
# ifdef SCO325
|
||||
# ifndef _SVID3
|
||||
# define _SVID3
|
||||
# endif
|
||||
# ifndef _NO_STATIC
|
||||
# define _NO_STATIC
|
||||
# endif
|
||||
# endif
|
||||
# include <sys/ioctl.h>
|
||||
# include <signal.h>
|
||||
# include <termio.h>
|
||||
# include <sys/stat.h>
|
||||
# include <sys/types.h>
|
||||
# if defined(__SCO__)
|
||||
# include <sys/param.h>
|
||||
# endif
|
||||
|
||||
|
||||
# include <errno.h>
|
||||
|
@ -140,15 +129,7 @@
|
|||
# if !defined(sun)
|
||||
# include <sys/emap.h>
|
||||
# endif
|
||||
# if defined(SCO325)
|
||||
# include <sys/vtkd.h>
|
||||
# include <sys/console.h>
|
||||
# include <sys/scankbd.h>
|
||||
# include <sys/vid.h>
|
||||
# define LED_CAP CLKED
|
||||
# define LED_NUM NLKED
|
||||
# define LED_SCR SLKED
|
||||
# elif defined(HAS_USL_VTS)
|
||||
# if defined(HAS_USL_VTS)
|
||||
# if !defined(sun)
|
||||
# include <sys/at_ansi.h>
|
||||
# endif
|
||||
|
@ -177,20 +158,12 @@
|
|||
# define VT_ACKACQ 2
|
||||
# endif /* !VT_ACKACQ */
|
||||
|
||||
# if defined(__SCO__)
|
||||
# include <sys/sysmacros.h>
|
||||
# define POSIX_TTY
|
||||
# endif /* __SCO__ */
|
||||
|
||||
# if defined(SVR4) || defined(SCO325)
|
||||
# if defined(SVR4)
|
||||
# include <sys/mman.h>
|
||||
# if !(defined(sun) && defined (SVR4))
|
||||
# define DEV_MEM "/dev/pmem"
|
||||
# endif
|
||||
# ifdef SCO325
|
||||
# undef DEV_MEM
|
||||
# define DEV_MEM "/dev/mem"
|
||||
# endif
|
||||
# define CLEARDTR_SUPPORT
|
||||
# define POSIX_TTY
|
||||
# endif /* SVR4 */
|
||||
|
|
12
os/access.c
12
os/access.c
|
@ -102,9 +102,9 @@ SOFTWARE.
|
|||
#include <sys/ioctl.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined(TCPCONN) || defined(STREAMSCONN) || defined(__SCO__)
|
||||
#if defined(TCPCONN) || defined(STREAMSCONN)
|
||||
#include <netinet/in.h>
|
||||
#endif /* TCPCONN || STREAMSCONN || __SCO__ */
|
||||
#endif /* TCPCONN || STREAMSCONN */
|
||||
|
||||
#ifdef HAS_GETPEERUCRED
|
||||
# include <ucred.h>
|
||||
|
@ -176,10 +176,6 @@ SOFTWARE.
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __SCO__
|
||||
/* The system defined value is wrong. MAXPATHLEN is set in sco5.cf. */
|
||||
#undef PATH_MAX
|
||||
#endif
|
||||
|
||||
#define X_INCLUDE_NETDB_H
|
||||
#include <X11/Xos_r.h>
|
||||
|
@ -297,7 +293,7 @@ AccessUsingXdmcp (void)
|
|||
}
|
||||
|
||||
|
||||
#if defined(SVR4) && !defined(SCO325) && !defined(sun) && defined(SIOCGIFCONF) && !defined(USE_SIOCGLIFCONF)
|
||||
#if defined(SVR4) && !defined(sun) && defined(SIOCGIFCONF) && !defined(USE_SIOCGLIFCONF)
|
||||
|
||||
/* Deal with different SIOCGIFCONF ioctl semantics on these OSs */
|
||||
|
||||
|
@ -327,7 +323,7 @@ ifioctl (int fd, int cmd, char *arg)
|
|||
#endif
|
||||
return ret;
|
||||
}
|
||||
#else /* Case sun, SCO325 and others */
|
||||
#else
|
||||
#define ifioctl ioctl
|
||||
#endif
|
||||
|
||||
|
|
|
@ -74,9 +74,6 @@ SOFTWARE.
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__SCO__)
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
#if !defined(SYSV) && !defined(WIN32)
|
||||
#include <sys/resource.h>
|
||||
|
@ -209,7 +206,7 @@ OsInit(void)
|
|||
dlinfo(RTLD_SELF, RTLD_DI_SETSIGNAL, &failure_signal);
|
||||
#endif
|
||||
|
||||
#if !defined(__SCO__) && !defined(__CYGWIN__) && !defined(__UNIXWARE__)
|
||||
#if !defined(__CYGWIN__)
|
||||
fclose(stdin);
|
||||
fclose(stdout);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue