X Strike Force X.Org X11 SVN commit: r3924 - in trunk/xserver/xorg-server/debian: . patches
Author: julien
Date: 2006-10-31 12:29:52 -0500 (Tue, 31 Oct 2006)
New Revision: 3924
Modified:
trunk/xserver/xorg-server/debian/changelog
trunk/xserver/xorg-server/debian/patches/24_hurd_support.diff
Log:
* Update hurd support patch (Closes: #356300). Thanks, Samuel Thibault.
Modified: trunk/xserver/xorg-server/debian/changelog
===================================================================
--- trunk/xserver/xorg-server/debian/changelog 2006-10-31 17:18:45 UTC (rev 3923)
+++ trunk/xserver/xorg-server/debian/changelog 2006-10-31 17:29:52 UTC (rev 3924)
@@ -10,8 +10,9 @@
[ Julien Cristau ]
* Don't build-depend on libdrm-dev on hurd-i386 (closes: #358015). Thanks,
Samuel Thibault.
+ * Update hurd support patch (Closes: #356300). Thanks, Samuel Thibault.
- -- Drew Parsons <dparsons@debian.org> Sat, 28 Oct 2006 00:48:42 +1000
+ -- Julien Cristau <julien.cristau@ens-lyon.org> Tue, 31 Oct 2006 18:22:56 +0100
xorg-server (2:1.1.1-10) unstable; urgency=low
Modified: trunk/xserver/xorg-server/debian/patches/24_hurd_support.diff
===================================================================
--- trunk/xserver/xorg-server/debian/patches/24_hurd_support.diff 2006-10-31 17:18:45 UTC (rev 3923)
+++ trunk/xserver/xorg-server/debian/patches/24_hurd_support.diff 2006-10-31 17:29:52 UTC (rev 3924)
@@ -1,8 +1,19 @@
Index: xorg-server/configure.ac
===================================================================
---- xorg-server.orig/configure.ac 2006-09-27 20:58:22.000000000 -0400
-+++ xorg-server/configure.ac 2006-09-27 20:58:36.000000000 -0400
-@@ -1470,7 +1470,15 @@
+--- xorg-server.orig/configure.ac 2006-10-31 17:25:45.000000000 +0100
++++ xorg-server/configure.ac 2006-10-31 17:27:54.000000000 +0100
+@@ -1177,6 +1177,10 @@
+ XORG_CFLAGS="${XORG_CFLAGS} "'$(SOLARIS_ASM_CFLAGS)'
+ fi
+ ;;
++ gnu*)
++ XORG_OS="gnu"
++ XORG_OS_SUBDIR="hurd"
++ ;;
+ *)
+ XORG_OS="unknown"
+ XORG_OS_SUBDIR="unknown"
+@@ -1477,7 +1481,15 @@
# $MIEXT_SHADOW_LIB $XPSTUBS_LIB"
KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB"
KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
@@ -19,10 +30,18 @@
KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
+@@ -1706,6 +1718,7 @@
+ hw/xfree86/os-support/solaris/Makefile
+ hw/xfree86/os-support/sysv/Makefile
+ hw/xfree86/os-support/usl/Makefile
++hw/xfree86/os-support/hurd/Makefile
+ hw/xfree86/parser/Makefile
+ hw/xfree86/rac/Makefile
+ hw/xfree86/ramdac/Makefile
Index: xorg-server/hw/kdrive/Makefile.am
===================================================================
---- xorg-server.orig/hw/kdrive/Makefile.am 2006-09-18 17:26:22.000000000 -0400
-+++ xorg-server/hw/kdrive/Makefile.am 2006-09-27 20:58:36.000000000 -0400
+--- xorg-server.orig/hw/kdrive/Makefile.am 2006-10-28 16:58:28.000000000 +0200
++++ xorg-server/hw/kdrive/Makefile.am 2006-10-31 17:25:45.000000000 +0100
@@ -15,9 +15,13 @@
XEPHYR_SUBDIRS = ephyr
endif
@@ -40,8 +59,8 @@
$(VESA_SUBDIRS) \
Index: xorg-server/GL/glx/indirect_dispatch_swap.c
===================================================================
---- xorg-server.orig/GL/glx/indirect_dispatch_swap.c 2006-09-18 17:27:44.000000000 -0400
-+++ xorg-server/GL/glx/indirect_dispatch_swap.c 2006-09-27 20:58:36.000000000 -0400
+--- xorg-server.orig/GL/glx/indirect_dispatch_swap.c 2006-10-28 16:58:28.000000000 +0200
++++ xorg-server/GL/glx/indirect_dispatch_swap.c 2006-10-31 17:25:45.000000000 +0100
@@ -28,7 +28,7 @@
#include <X11/Xmd.h>
#include <GL/gl.h>
@@ -53,8 +72,8 @@
#include <sys/endian.h>
Index: xorg-server/GL/glx/indirect_reqsize.c
===================================================================
---- xorg-server.orig/GL/glx/indirect_reqsize.c 2006-09-18 17:27:44.000000000 -0400
-+++ xorg-server/GL/glx/indirect_reqsize.c 2006-09-27 20:58:36.000000000 -0400
+--- xorg-server.orig/GL/glx/indirect_reqsize.c 2006-10-28 16:58:28.000000000 +0200
++++ xorg-server/GL/glx/indirect_reqsize.c 2006-10-31 17:25:45.000000000 +0100
@@ -31,7 +31,7 @@
#include "indirect_size.h"
#include "indirect_reqsize.h"
@@ -66,8 +85,8 @@
#else
Index: xorg-server/GL/glx/indirect_util.c
===================================================================
---- xorg-server.orig/GL/glx/indirect_util.c 2006-09-18 17:27:44.000000000 -0400
-+++ xorg-server/GL/glx/indirect_util.c 2006-09-27 20:58:36.000000000 -0400
+--- xorg-server.orig/GL/glx/indirect_util.c 2006-10-28 16:58:28.000000000 +0200
++++ xorg-server/GL/glx/indirect_util.c 2006-10-31 17:25:45.000000000 +0100
@@ -28,7 +28,7 @@
#include <X11/Xmd.h>
#include <GL/gl.h>
@@ -77,3 +96,1054 @@
#include <byteswap.h>
#elif defined(__OpenBSD__)
#include <sys/endian.h>
+Index: xorg-server/hw/xfree86/os-support/Makefile.am
+===================================================================
+--- xorg-server.orig/hw/xfree86/os-support/Makefile.am 2006-10-31 17:26:58.000000000 +0100
++++ xorg-server/hw/xfree86/os-support/Makefile.am 2006-10-31 17:27:54.000000000 +0100
+@@ -3,7 +3,7 @@
+ endif
+
+ SUBDIRS = bus @XORG_OS_SUBDIR@ misc $(DRI_SUBDIRS)
+-DIST_SUBDIRS = bsd bus drm misc linux lynxos solaris sysv sco usl
++DIST_SUBDIRS = bsd bus drm misc linux lynxos solaris sysv sco usl hurd
+
+ sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h xf86_ansic.h xf86_libc.h \
+ assyntax.h xf86OSKbd.h xf86OSmouse.h
+Index: xorg-server/hw/xfree86/os-support/hurd/Makefile.am
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server/hw/xfree86/os-support/hurd/Makefile.am 2006-10-31 17:27:54.000000000 +0100
+@@ -0,0 +1,18 @@
++noinst_LTLIBRARIES = libhurd.la
++
++libhurd_la_SOURCES = hurd_init.c hurd_io.c hurd_mmap.c hurd_kbd.c \
++ hurd_mouse.c hurd_video.c \
++ $(srcdir)/../shared/VTsw_noop.c \
++ $(srcdir)/../shared/posix_tty.c \
++ $(srcdir)/../shared/libc_wrapper.c \
++ $(srcdir)/../shared/stdResource.c \
++ $(srcdir)/../shared/stdPci.c \
++ $(srcdir)/../shared/sigiostubs.c \
++ $(srcdir)/../shared/pm_noop.c \
++ $(srcdir)/../shared/kmod_noop.c \
++ $(srcdir)/../shared/agp_noop.c \
++ $(srcdir)/../shared/at_scancode.c
++
++AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
++
++INCLUDES = $(XORG_INCS)
+Index: xorg-server/hw/xfree86/os-support/hurd/hurd_init.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server/hw/xfree86/os-support/hurd/hurd_init.c 2006-10-31 17:33:02.000000000 +0100
+@@ -0,0 +1,90 @@
++/*
++ * Copyright 1997,1998 by UCHIYAMA Yasushi
++ *
++ * 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 UCHIYAMA Yasushi not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. UCHIYAMA Yasushi makes no representations
++ * about the suitability of this software for any purpose. It is provided
++ * "as is" without express or implied warranty.
++ *
++ * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL UCHIYAMA YASUSHI 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.
++ *
++ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_init.c,v 1.1 1998/08/16 10:25:48 dawes Exp $ */
++
++#ifdef HAVE_XORG_CONFIG_H
++#include <xorg-config.h>
++#endif
++
++#include <X11/X.h>
++
++#include "input.h"
++#include "scrnintstr.h"
++
++#include "compiler.h"
++
++#include "xf86.h"
++#include "xf86Priv.h"
++#include "xf86_OSlib.h"
++
++#include <stdio.h>
++#include <errno.h>
++#include <sys/time.h>
++#include <sys/file.h>
++#include <assert.h>
++#include <mach.h>
++
++int
++xf86ProcessArgument( int argc,char **argv, int i )
++{
++ return 0;
++}
++void
++xf86UseMsg()
++{
++ return;
++}
++
++
++void
++xf86OpenConsole()
++{
++ if( serverGeneration == 1 )
++ {
++ kern_return_t err;
++ mach_port_t device;
++ int fd;
++ err = get_privileged_ports( NULL, &device );
++ if( err )
++ {
++ errno = err;
++ FatalError( "xf86KbdInit can't get_privileged_ports. (%s)\n" , strerror(errno) );
++ }
++ mach_port_deallocate (mach_task_self (), device);
++
++ if( ( fd = open( "/dev/kbd" , O_RDONLY|O_NONBLOCK ) ) < 0 )
++ {
++ fprintf( stderr , "Cannot open keyboard (%s)\n",strerror(errno) );
++ exit(1);
++ }
++ xf86Info.consoleFd = fd;
++ }
++ return;
++}
++
++void
++xf86CloseConsole()
++{
++ close( xf86Info.consoleFd );
++ return;
++}
+Index: xorg-server/hw/xfree86/os-support/hurd/hurd_io.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server/hw/xfree86/os-support/hurd/hurd_io.c 2006-10-31 17:34:08.000000000 +0100
+@@ -0,0 +1,131 @@
++/*
++ * Copyright 1997,1998 by UCHIYAMA Yasushi
++ *
++ * 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 UCHIYAMA Yasushi not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. UCHIYAMA Yasushi makes no representations
++ * about the suitability of this software for any purpose. It is provided
++ * "as is" without express or implied warranty.
++ *
++ * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL UCHIYAMA YASUSHI 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.
++ *
++ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_io.c,v 1.8 2002/10/11 01:40:35 dawes Exp $ */
++
++#define NEED_EVENTS
++#ifdef HAVE_XORG_CONFIG_H
++#include <xorg-config.h>
++#endif
++
++#include <X11/X.h>
++#include <X11/Xproto.h>
++#include "inputstr.h"
++#include "scrnintstr.h"
++#include "mipointer.h"
++
++#include "compiler.h"
++
++#include "xf86.h"
++#include "xf86Priv.h"
++#include "xf86_OSlib.h"
++
++#include <stdio.h>
++#include <errno.h>
++#include <sys/time.h>
++#include <sys/file.h>
++#include <assert.h>
++#include <mach.h>
++#include <sys/ioctl.h>
++
++typedef unsigned short kev_type; /* kd event type */
++typedef unsigned char Scancode;
++
++struct mouse_motion {
++ short mm_deltaX; /* units? */
++ short mm_deltaY;
++};
++
++typedef struct {
++ kev_type type; /* see below */
++ struct timeval time; /* timestamp */
++ union { /* value associated with event */
++ boolean_t up; /* MOUSE_LEFT .. MOUSE_RIGHT */
++ Scancode sc; /* KEYBD_EVENT */
++ struct mouse_motion mmotion; /* MOUSE_MOTION */
++ } value;
++} kd_event;
++
++/*
++ * kd_event ID's.
++ */
++#define MOUSE_LEFT 1 /* mouse left button up/down */
++#define MOUSE_MIDDLE 2
++#define MOUSE_RIGHT 3
++#define MOUSE_MOTION 4 /* mouse motion */
++#define KEYBD_EVENT 5 /* key up/down */
++
++/***********************************************************************
++ * Keyboard
++ **********************************************************************/
++void
++xf86SoundKbdBell(int loudness,int pitch,int duration)
++{
++ return;
++}
++
++void
++xf86SetKbdLeds(int leds)
++{
++ return;
++}
++
++int
++xf86GetKbdLeds()
++{
++ return 0;
++}
++
++void
++xf86SetKbdRepeat(char rad)
++{
++ return;
++}
++
++void
++xf86KbdInit()
++{
++ return;
++}
++int
++xf86KbdOn()
++{
++ int data = 1;
++ if( ioctl( xf86Info.consoleFd, _IOW('k', 1, int),&data) < 0)
++ FatalError("Cannot set event mode on keyboard (%s)\n",strerror(errno));
++ return xf86Info.consoleFd;
++}
++int
++xf86KbdOff()
++{
++ int data = 2;
++ if( ioctl( xf86Info.consoleFd, _IOW('k', 1, int),&data) < 0)
++ FatalError("can't reset keyboard mode (%s)\n",strerror(errno));
++}
++
++void
++xf86KbdEvents()
++{
++ kd_event ke;
++ while( read(xf86Info.consoleFd, &ke, sizeof(ke)) == sizeof(ke) )
++ xf86PostKbdEvent(ke.value.sc);
++}
+Index: xorg-server/hw/xfree86/os-support/hurd/hurd_kbd.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server/hw/xfree86/os-support/hurd/hurd_kbd.c 2006-10-31 17:33:33.000000000 +0100
+@@ -0,0 +1,176 @@
++/*
++ * Copyright 1997,1998 by UCHIYAMA Yasushi
++ *
++ * 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 UCHIYAMA Yasushi not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. UCHIYAMA Yasushi makes no representations
++ * about the suitability of this software for any purpose. It is provided
++ * "as is" without express or implied warranty.
++ *
++ * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL UCHIYAMA YASUSHI 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.
++ *
++ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_io.c,v 1.8 2002/10/11 01:40:35 dawes Exp $ */
++
++#define NEED_EVENTS
++#ifdef HAVE_XORG_CONFIG_H
++#include <xorg-config.h>
++#endif
++
++#include <X11/X.h>
++
++#include "compiler.h"
++
++#include "xf86.h"
++#include "xf86Priv.h"
++#include "xf86_OSlib.h"
++
++#include "xf86Xinput.h"
++#include "xf86OSKbd.h"
++#include "atKeynames.h"
++#include "xf86Keymap.h"
++
++#include <stdio.h>
++#include <errno.h>
++#include <sys/time.h>
++#include <sys/file.h>
++#include <assert.h>
++#include <mach.h>
++#include <sys/ioctl.h>
++
++typedef unsigned short kev_type; /* kd event type */
++typedef unsigned char Scancode;
++
++struct mouse_motion {
++ short mm_deltaX; /* units? */
++ short mm_deltaY;
++};
++
++typedef struct {
++ kev_type type; /* see below */
++ struct timeval time; /* timestamp */
++ union { /* value associated with event */
++ boolean_t up; /* MOUSE_LEFT .. MOUSE_RIGHT */
++ Scancode sc; /* KEYBD_EVENT */
++ struct mouse_motion mmotion; /* MOUSE_MOTION */
++ } value;
++} kd_event;
++
++/*
++ * kd_event ID's.
++ */
++#define MOUSE_LEFT 1 /* mouse left button up/down */
++#define MOUSE_MIDDLE 2
++#define MOUSE_RIGHT 3
++#define MOUSE_MOTION 4 /* mouse motion */
++#define KEYBD_EVENT 5 /* key up/down */
++
++/***********************************************************************
++ * Keyboard
++ **********************************************************************/
++static void
++SoundKbdBell(InputInfoPtr pInfo, int loudness,int pitch,int duration)
++{
++ return;
++}
++
++static void
++SetKbdLeds(InputInfoPtr pInfo, int leds)
++{
++ return;
++}
++
++static int
++GetKbdLeds(InputInfoPtr pInfo)
++{
++ return 0;
++}
++
++static void
++SetKbdRepeat(InputInfoPtr pInfo, char rad)
++{
++ return;
++}
++
++static void
++KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
++{
++ pKeySyms->map = map;
++ pKeySyms->mapWidth = GLYPHS_PER_KEY;
++ pKeySyms->minKeyCode = MIN_KEYCODE;
++ pKeySyms->maxKeyCode = MAX_KEYCODE;
++ return;
++}
++
++static int
++KbdOn(InputInfoPtr pInfo, int what)
++{
++ int data = 1;
++ if( ioctl( pInfo->fd, _IOW('k', 1, int),&data) < 0)
++ FatalError("Cannot set event mode on keyboard (%s)\n",strerror(errno));
++ return Success;
++}
++static int
++KbdOff(InputInfoPtr pInfo, int what)
++{
++ int data = 2;
++ if( ioctl( pInfo->fd, _IOW('k', 1, int),&data) < 0)
++ FatalError("can't reset keyboard mode (%s)\n",strerror(errno));
++ return Success;
++}
++
++static int
++KbdInit(InputInfoPtr pInfo, int what)
++{
++ return Success;
++}
++
++static void
++ReadInput(InputInfoPtr pInfo)
++{
++ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
++ kd_event ke;
++ while( read(pInfo->fd, &ke, sizeof(ke)) == sizeof(ke) )
++ pKbd->PostEvent(pInfo, ke.value.sc & 0x7f, ke.value.sc & 0x80 ? FALSE : TRUE);
++}
++
++static Bool
++OpenKeyboard(InputInfoPtr pInfo)
++{
++ pInfo->fd = xf86Info.consoleFd;
++ return TRUE;
++}
++
++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->KbdGetMapping = KbdGetMapping;
++ pKbd->SpecialKey = NULL;
++ pKbd->RemapScanCode = ATScancode;
++ pKbd->GetSpecialKey = NULL;
++ pKbd->OpenKeyboard = OpenKeyboard;
++ pKbd->vtSwitchSupported = FALSE;
++ pKbd->CustomKeycodes = FALSE;
++ pKbd->private = NULL;
++ pInfo->read_input = ReadInput;
++ return TRUE;
++}
+Index: xorg-server/hw/xfree86/os-support/hurd/hurd_mmap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server/hw/xfree86/os-support/hurd/hurd_mmap.c 2006-10-31 17:30:32.000000000 +0100
+@@ -0,0 +1,96 @@
++/*
++ * Copyright 1997 by UCHIYAMA Yasushi
++ *
++ * 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 UCHIYAMA Yasushi not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. UCHIYAMA Yasushi makes no representations
++ * about the suitability of this software for any purpose. It is provided
++ * "as is" without express or implied warranty.
++ *
++ * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL UCHIYAMA YASUSHI 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.
++ *
++ */
++/* $XFree86$ */
++#ifdef HAVE_XORG_CONFIG_H
++#include <xorg-config.h>
++#endif
++
++#include<mach.h>
++#include<device/device.h>
++#include<mach/machine/mach_i386.h>
++
++#include <X11/X.h>
++
++#include "xf86.h"
++#include "xf86Priv.h"
++#include "xf86_OSlib.h"
++
++#define BIOS_SIZE 0x20000
++
++int
++xf86ReadBIOS(unsigned long Base,unsigned long Offset,unsigned char *Buf,int Len)
++{
++ mach_port_t device,iopl_dev;
++ memory_object_t iopl_mem;
++ vm_address_t addr = (vm_address_t)0; /* serach starting address */
++ kern_return_t err;
++
++
++ err = get_privileged_ports (NULL, &device);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86ReadBIOS() can't get_privileged_ports. (%s)\n",strerror(errno));
++ }
++ err = device_open(device,D_READ|D_WRITE,"iopl",&iopl_dev);
++ mach_port_deallocate (mach_task_self (), device);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86ReadBIOS() can't device_open. (%s)\n",strerror(errno));
++ }
++ err = device_map(iopl_dev,VM_PROT_READ|VM_PROT_WRITE, Base , BIOS_SIZE ,&iopl_mem,0);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86ReadBIOS() can't device_map. (%s)\n",strerror(errno));
++ }
++ err = vm_map(mach_task_self(),
++ &addr,
++ BIOS_SIZE,
++ 0,
++ TRUE,
++ iopl_mem,
++ Base,
++ FALSE,
++ VM_PROT_READ|VM_PROT_WRITE,
++ VM_PROT_READ|VM_PROT_WRITE,
++ VM_INHERIT_SHARE);
++ mach_port_deallocate(mach_task_self(),iopl_mem);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86ReadBIOS() can't vm_map. (%s)\n",strerror(errno));
++ }
++
++ memcpy(Buf,(void*)((int)addr + Offset), Len);
++
++ err = vm_deallocate(mach_task_self(), addr, BIOS_SIZE);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86ReadBIOS() can't vm_deallocate. (%s)\n",strerror(errno));
++ }
++
++ return Len;
++}
+Index: xorg-server/hw/xfree86/os-support/hurd/hurd_mouse.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server/hw/xfree86/os-support/hurd/hurd_mouse.c 2006-10-31 17:32:34.000000000 +0100
+@@ -0,0 +1,301 @@
++/*
++ * Copyright 1997,1998 by UCHIYAMA Yasushi
++ *
++ * 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 UCHIYAMA Yasushi not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. UCHIYAMA Yasushi makes no representations
++ * about the suitability of this software for any purpose. It is provided
++ * "as is" without express or implied warranty.
++ *
++ * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL UCHIYAMA YASUSHI 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.
++ *
++ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_mouse.c,v 1.7 2000/02/10 22:33:44 dawes Exp $ */
++
++#define NEED_EVENTS
++#ifdef HAVE_XORG_CONFIG_H
++#include <xorg-config.h>
++#endif
++
++#include <X11/X.h>
++#include <X11/Xproto.h>
++#include "inputstr.h"
++#include "scrnintstr.h"
++#include "mipointer.h"
++
++#include "xf86.h"
++#include "xf86Xinput.h"
++#include "xf86OSmouse.h"
++#include "xf86_OSlib.h"
++#include "xisb.h"
++
++#include <stdio.h>
++#include <errno.h>
++#include <sys/time.h>
++#include <sys/file.h>
++#include <assert.h>
++#include <mach.h>
++#include <sys/ioctl.h>
++
++typedef unsigned short kev_type; /* kd event type */
++typedef unsigned char Scancode;
++
++struct mouse_motion {
++ short mm_deltaX; /* units? */
++ short mm_deltaY;
++};
++
++typedef struct {
++ kev_type type; /* see below */
++ struct timeval time; /* timestamp */
++ union { /* value associated with event */
++ boolean_t up; /* MOUSE_LEFT .. MOUSE_RIGHT */
++ Scancode sc; /* KEYBD_EVENT */
++ struct mouse_motion mmotion; /* MOUSE_MOTION */
++ } value;
++} kd_event;
++
++/*
++ * kd_event ID's.
++ */
++#define MOUSE_LEFT 1 /* mouse left button up/down */
++#define MOUSE_MIDDLE 2
++#define MOUSE_RIGHT 3
++#define MOUSE_MOTION 4 /* mouse motion */
++#define KEYBD_EVENT 5 /* key up/down */
++
++#define NUMEVENTS 64
++
++/*
++ * OsMouseProc --
++ * Handle the initialization, etc. of a mouse
++ */
++static int
++OsMouseProc(DeviceIntPtr pPointer, int what)
++{
++ InputInfoPtr pInfo;
++ MouseDevPtr pMse;
++ unsigned char map[MSE_MAXBUTTONS + 1];
++ int nbuttons;
++
++ pInfo = pPointer->public.devicePrivate;
++ pMse = pInfo->private;
++ pMse->device = pPointer;
++
++ switch (what) {
++ case DEVICE_INIT:
++ pPointer->public.on = FALSE;
++
++ for (nbuttons = 0; nbuttons < MSE_MAXBUTTONS; ++nbuttons)
++ map[nbuttons + 1] = nbuttons + 1;
++
++ InitPointerDeviceStruct((DevicePtr)pPointer,
++ map,
++ min(pMse->buttons, MSE_MAXBUTTONS),
++ miPointerGetMotionEvents,
++ pMse->Ctrl,
++ miPointerGetMotionBufferSize());
++
++ /* X valuator */
++ xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
++ xf86InitValuatorDefaults(pPointer, 0);
++ /* Y valuator */
++ xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
++ xf86InitValuatorDefaults(pPointer, 1);
++ xf86MotionHistoryAllocate(pInfo);
++ break;
++
++ case DEVICE_ON:
++ pInfo->fd = xf86OpenSerial(pInfo->options);
++ if (pInfo->fd == -1)
++ xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
++ else {
++ pMse->buffer = XisbNew(pInfo->fd,
++ NUMEVENTS * sizeof(kd_event));
++ if (!pMse->buffer) {
++ xfree(pMse);
++ xf86CloseSerial(pInfo->fd);
++ pInfo->fd = -1;
++ } else {
++ xf86FlushInput(pInfo->fd);
++ AddEnabledDevice(pInfo->fd);
++ }
++ }
++ pMse->lastButtons = 0;
++ pMse->lastMappedButtons = 0;
++ pMse->emulateState = 0;
++ pPointer->public.on = TRUE;
++ break;
++
++ case DEVICE_OFF:
++ case DEVICE_CLOSE:
++ if (pInfo->fd != -1) {
++ RemoveEnabledDevice(pInfo->fd);
++ if (pMse->buffer) {
++ XisbFree(pMse->buffer);
++ pMse->buffer = NULL;
++ }
++ xf86CloseSerial(pInfo->fd);
++ pInfo->fd = -1;
++ }
++ pPointer->public.on = FALSE;
++ usleep(300000);
++ break;
++ }
++ return Success;
++}
++
++/*
++ * OsMouseReadInput --
++ * Get some events from our queue. Process all outstanding events now.
++ */
++static void
++OsMouseReadInput(InputInfoPtr pInfo)
++{
++ MouseDevPtr pMse;
++ static kd_event eventList[NUMEVENTS];
++ int n, c;
++ kd_event *event = eventList;
++ unsigned char *pBuf;
++
++ pMse = pInfo->private;
++
++ XisbBlockDuration(pMse->buffer, -1);
++ pBuf = (unsigned char *)eventList;
++ n = 0;
++ while ((c = XisbRead(pMse->buffer)) >= 0 && n < sizeof(eventList))
++ pBuf[n++] = (unsigned char)c;
++
++ if (n == 0)
++ return;
++
++ n /= sizeof(kd_event);
++ while( n-- ) {
++ int buttons = pMse->lastButtons;
++ int dx = 0, dy = 0;
++ switch (event->type) {
++ case MOUSE_RIGHT:
++ buttons = buttons & 6 |(event->value.up ? 0 : 1);
++ break;
++ case MOUSE_MIDDLE:
++ buttons = buttons & 5 |(event->value.up ? 0 : 2);
++ break;
++ case MOUSE_LEFT:
++ buttons = buttons & 3 |(event->value.up ? 0 : 4) ;
++ break;
++ case MOUSE_MOTION:
++ dx = event->value.mmotion.mm_deltaX;
++ dy = - event->value.mmotion.mm_deltaY;
++ break;
++ default:
++ ErrorF("Bad mouse event (%d)\n",event->type);
++ continue;
++ }
++ pMse->PostEvent(pInfo, buttons, dx, dy, 0, 0);
++ ++event;
++ }
++ return;
++}
++
++static Bool
++OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
++{
++ MouseDevPtr pMse;
++
++ /* This is called when the protocol is "OSMouse". */
++
++ 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);
++
++ /* Check if the device can be opened. */
++ pInfo->fd = xf86OpenSerial(pInfo->options);
++ if (pInfo->fd == -1) {
++ if (xf86GetAllowMouseOpenFail())
++ xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
++ else {
++ xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
++ xfree(pMse);
++ return FALSE;
++ }
++ }
++ xf86CloseSerial(pInfo->fd);
++ pInfo->fd = -1;
++
++ /* Process common mouse options (like Emulate3Buttons, etc). */
++ pMse->CommonOptions(pInfo);
++
++ /* Setup the local procs. */
++ pInfo->device_control = OsMouseProc;
++ pInfo->read_input = OsMouseReadInput;
++
++ pInfo->flags |= XI86_CONFIGURED;
++ return TRUE;
++}
++
++static int
++SupportedInterfaces(void)
++{
++ /* XXX Need to check this. */
++ return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
++}
++
++static const char *internalNames[] = {
++ "OSMouse",
++ 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;
++}
++
++/* XXX Is this appropriate? If not, this function should be removed. */
++static const char *
++DefaultProtocol(void)
++{
++ return "OSMouse";
++}
++
++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 = OsMousePreInit;
++ return p;
++}
++
+Index: xorg-server/hw/xfree86/os-support/hurd/hurd_video.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ xorg-server/hw/xfree86/os-support/hurd/hurd_video.c 2006-10-31 17:31:44.000000000 +0100
+@@ -0,0 +1,191 @@
++/*
++ * Copyright 1997, 1998 by UCHIYAMA Yasushi
++ *
++ * 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 UCHIYAMA Yasushi not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. UCHIYAMA Yasushi makes no representations
++ * about the suitability of this software for any purpose. It is provided
++ * "as is" without express or implied warranty.
++ *
++ * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
++ * EVENT SHALL UCHIYAMA YASUSHI 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.
++ *
++ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_video.c,v 1.3 1999/04/29 12:24:52 dawes Exp $ */
++
++#ifdef HAVE_XORG_CONFIG_H
++#include <xorg-config.h>
++#endif
++
++#include <mach.h>
++#include <device/device.h>
++#include <mach/machine/mach_i386.h>
++
++#include <X11/X.h>
++#include "input.h"
++#include "scrnintstr.h"
++
++#include "xf86.h"
++#include "xf86Priv.h"
++#include "xf86_OSlib.h"
++#include "xf86OSpriv.h"
++
++/**************************************************************************
++ * Video Memory Mapping section
++ ***************************************************************************/
++pointer
++xf86MapVidMem(int ScreenNum,int Flags, unsigned long Base, unsigned long Size)
++{
++ mach_port_t device,iopl_dev;
++ memory_object_t iopl_mem;
++ kern_return_t err;
++ vm_address_t addr=(vm_address_t)0;
++
++ err = get_privileged_ports (NULL, &device);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86MapVidMem() can't get_privileged_ports. (%s)\n",strerror(errno));
++ }
++ err = device_open(device,D_READ|D_WRITE,"iopl",&iopl_dev);
++ mach_port_deallocate (mach_task_self(), device);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86MapVidMem() can't device_open. (%s)\n",strerror(errno));
++ }
++
++ err = device_map(iopl_dev,VM_PROT_READ|VM_PROT_WRITE, Base , Size ,&iopl_mem,0);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86MapVidMem() can't device_map. (%s)\n",strerror(errno));
++ }
++ err = vm_map(mach_task_self(),
++ &addr,
++ Size,
++ 0, /* mask */
++ TRUE, /* anywhere */
++ iopl_mem,
++ (vm_offset_t)Base,
++ FALSE, /* copy on write */
++ VM_PROT_READ|VM_PROT_WRITE,
++ VM_PROT_READ|VM_PROT_WRITE,
++ VM_INHERIT_SHARE);
++ mach_port_deallocate(mach_task_self(),iopl_mem);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86MapVidMem() can't vm_map.(iopl_mem) (%s)\n",strerror(errno));
++ }
++ mach_port_deallocate(mach_task_self(),iopl_dev);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86MapVidMem() can't mach_port_deallocate.(iopl_dev) (%s)\n",strerror(errno));
++ }
++ return (pointer)addr;
++}
++
++void
++xf86UnMapVidMem(int ScreenNum,pointer Base,unsigned long Size)
++{
++ kern_return_t err = vm_deallocate(mach_task_self(), (int)Base, Size);
++ if( err )
++ {
++ errno = err;
++ ErrorF("xf86UnMapVidMem: can't dealloc framebuffer space (%s)\n",strerror(errno));
++ }
++ return;
++}
++
++Bool
++xf86LinearVidMem()
++{
++ return(TRUE);
++}
++
++/**************************************************************************
++ * I/O Permissions section
++ ***************************************************************************/
++mach_port_t io_port;
++
++Bool
++xf86EnableIO()
++{
++ mach_port_t device;
++ kern_return_t err;
++
++ err = get_privileged_ports(NULL, &device);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86EnableIO() can't get_privileged_ports. (%s)\n",strerror(errno));
++ }
++ err = device_open(device,D_READ|D_WRITE,"io",&io_port);
++ mach_port_deallocate(mach_task_self(), device);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86EnableIO() can't device_open. (%s)\n",strerror(errno));
++ }
++
++ err = i386_io_port_add(mach_thread_self (), io_port);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86EnableIO() can't i386_io_port_add.(io_port) (%s)\n",strerror(errno));
++ }
++ return TRUE;
++}
++
++void
++xf86DisableIO()
++{
++ kern_return_t err;
++
++ err = i386_io_port_remove(mach_thread_self (), io_port);
++ if( err )
++ {
++ errno = err;
++ FatalError("xf86DisableIO() can't i386_io_port_remove.(io_port) (%s)\n",strerror(errno));
++ }
++ mach_port_deallocate(mach_task_self(), io_port);
++ return;
++}
++
++/**************************************************************************
++ * Interrupt Handling section
++ **************************************************************************/
++Bool
++xf86DisableInterrupts()
++{
++ return TRUE;
++}
++void
++xf86EnableInterrupts()
++{
++ return;
++}
++
++void
++xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
++ unsigned long Size)
++{
++}
++
++Bool
++xf86CheckMTRR(int s)
++{
++ return FALSE;
++}
++
Reply to: