modified: Makefile new file: kdioctl.defs deleted: kdioctlServer.c deleted: kdioctl_S.h --- Makefile | 59 +++++++++++++++++ kdioctl.defs | 39 +++++++++++ kdioctlServer.c | 192 ------------------------------------------------------- kdioctl_S.h | 60 ----------------- 4 files changed, 98 insertions(+), 252 deletions(-) create mode 100644 kdioctl.defs delete mode 100644 kdioctlServer.c delete mode 100644 kdioctl_S.h
diff --git a/Makefile b/Makefile index b8e8947..b940c4f 100644 --- a/Makefile +++ b/Makefile @@ -38,3 +38,62 @@ parser.tab.c parser.tab.h: parser.y input_driver_test: input_driver_test.c $(CC) -rdynamic $(CFLAGS) $(LIBS) -ldl input_driver_test.c -o input_driver_test +kbd-repeat.o: kdioctl_S.h + + +## TODO include Makeconf and config.make? +# How to run compilation tools. +CC = gcc +CPP = $(CC) -E -x c # We need this option when input file names are not *.c. +MIG = mig +MIGCOM = $(MIG) -cc cat - /dev/null + +# How to build RPC stubs + +# We always need this setting, because libc does not include the bogus names. +MIGCOMFLAGS := -subrprefix __ + +# User settable variables: +# mig-sheader-prefix prepend to foo_S.h for name of foo.defs stub header +# MIGSFLAGS flags to CPP when building server stubs and headers +# foo-MIGSFLAGS same, but only for interface `foo' +# MIGCOMSFLAGS flags to MiG when building server stubs and headers +# foo-MIGCOMSFLAGS same, but only for interface `foo' +# MIGUFLAGS flags to CPP when building user stubs and headers +# foo-MIGUFLAGS same, but only for interface `foo' +# MIGCOMUFLAGS flags to MiG when building user stubs and headers +# foo-MIGCOMUFLAGS same, but only for interface `foo' +# CPPFLAGS flags to CPP + +# Implicit rules for building server and user stubs from mig .defs files. + +# These chained rules could be (and used to be) single rules using pipes. +# But it's convenient to be able to explicitly make the intermediate +# files when you want to deal with a problem in the MiG stub generator. + +%.sdefsi %.sdefs.d: %.defs + $(CPP) $(CPPFLAGS) $(MIGSFLAGS) $($*-MIGSFLAGS) -DSERVERPREFIX=S_ \ + -MD -MF $*.sdefs.d.new \ + $< -o $*.sdefsi + sed -e 's/[^:]*:/$*Server.c $(mig-sheader-prefix)$*_S.h:/' \ + < $*.sdefs.d.new > $*.sdefs.d + rm $*.sdefs.d.new + +$(mig-sheader-prefix)%_S.h %Server.c: %.sdefsi + $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS) $($*-MIGCOMSFLAGS) \ + -sheader $(mig-sheader-prefix)$*_S.h -server $*Server.c \ + -user /dev/null -header /dev/null < $< + +%.udefsi %.udefs.d: %.defs + $(CPP) $(CPPFLAGS) $(MIGUFLAGS) $($*-MIGUFLAGS) \ + -MD -MF $*.udefs.d.new \ + $< -o $*.udefsi + sed -e 's/[^:]*:/$*User.c $*_U.h:/' \ + < $*.udefs.d.new > $*.udefs.d + rm $*.udefs.d.new + +%_U.h %User.c: %.udefsi + $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMUFLAGS) $($*-MIGCOMUFLAGS) < $< \ + -user $*User.c -server /dev/null -header $*_U.h + + diff --git a/kdioctl.defs b/kdioctl.defs new file mode 100644 index 0000000..64f9b9e --- /dev/null +++ b/kdioctl.defs @@ -0,0 +1,39 @@ +/* Definitions for kd ioctls + Copyright (C) 1991, 1993, 1994, 1995, 1996, 1998, 2005 Free Software Foundation, Inc. + +This file is part of the GNU Hurd. + +The GNU Hurd is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +The GNU Hurd is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with the GNU Hurd; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include <hurd/hurd_types.defs> + +/* Ioctl class `k'; the subsystem is derived from calculations in + <ioctls.h>. */ +subsystem kdioctl 120000; + +import <hurd/ioctl_types.h>; + +skip; /* 0 unused */ + +/* 1 KDSKBDMODE */ +routine kdioctl_kdskbdmode ( + port: io_t; + in mode: int); +/* 2 KDGKBDMODE */ +routine kdioctl_kdgkbdmode ( + port: io_t; + out mode: int); + +/* 3 - 256 unused */ diff --git a/kdioctlServer.c b/kdioctlServer.c deleted file mode 100644 index 4c405b5..0000000 --- a/kdioctlServer.c +++ /dev/null @@ -1,192 +0,0 @@ -/* Module kdioctl */ - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE 1 -#endif - -#define EXPORT_BOOLEAN -#include <mach/boolean.h> -#include <mach/kern_return.h> -#include <mach/message.h> -#include <mach/mig_errors.h> -#include <mach/mig_support.h> - -#ifndef mig_internal -#define mig_internal static -#endif - -#ifndef mig_external -#define mig_external -#endif - -#ifndef TypeCheck -#define TypeCheck 1 -#endif - -#ifndef UseExternRCSId -#define UseExternRCSId 1 -#endif - -#define msgh_request_port msgh_local_port -#define MACH_MSGH_BITS_REQUEST(bits) MACH_MSGH_BITS_LOCAL(bits) -#define msgh_reply_port msgh_remote_port -#define MACH_MSGH_BITS_REPLY(bits) MACH_MSGH_BITS_REMOTE(bits) - -#include <mach/std_types.h> -#include <mach/mach_types.h> -#include <device/device_types.h> -#include <device/net_status.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/statfs.h> -#include <sys/resource.h> -#include <sys/utsname.h> -#include <hurd/hurd_types.h> -#include <hurd/ioctl_types.h> - -/* Routine kdioctl_kdskbdmode */ -mig_internal void _Xkdioctl_kdskbdmode - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) -{ - typedef struct { - mach_msg_header_t Head; - mach_msg_type_t modeType; - int mode; - } Request; - - typedef struct { - mach_msg_header_t Head; - mach_msg_type_t RetCodeType; - kern_return_t RetCode; - } Reply; - - register Request *In0P = (Request *) InHeadP; - register Reply *OutP = (Reply *) OutHeadP; - mig_external kern_return_t S_kdioctl_kdskbdmode - (io_t port, int mode); - - static const mach_msg_type_t modeCheck = { - /* msgt_name = */ 2, - /* msgt_size = */ 32, - /* msgt_number = */ 1, - /* msgt_inline = */ TRUE, - /* msgt_longform = */ FALSE, - /* msgt_deallocate = */ FALSE, - /* msgt_unused = */ 0 - }; - -#if TypeCheck - if ((In0P->Head.msgh_size != 32) || - (In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX)) - { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } -#endif /* TypeCheck */ - -#if TypeCheck - if (* (int *) &In0P->modeType != * (int *) &modeCheck) - { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } -#endif /* TypeCheck */ - - OutP->RetCode = S_kdioctl_kdskbdmode(In0P->Head.msgh_request_port, In0P->mode); -} - -/* Routine kdioctl_kdgkbdmode */ -mig_internal void _Xkdioctl_kdgkbdmode - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) -{ - typedef struct { - mach_msg_header_t Head; - } Request; - - typedef struct { - mach_msg_header_t Head; - mach_msg_type_t RetCodeType; - kern_return_t RetCode; - mach_msg_type_t modeType; - int mode; - } Reply; - - register Request *In0P = (Request *) InHeadP; - register Reply *OutP = (Reply *) OutHeadP; - mig_external kern_return_t S_kdioctl_kdgkbdmode - (io_t port, int *mode); - - static const mach_msg_type_t modeType = { - /* msgt_name = */ 2, - /* msgt_size = */ 32, - /* msgt_number = */ 1, - /* msgt_inline = */ TRUE, - /* msgt_longform = */ FALSE, - /* msgt_deallocate = */ FALSE, - /* msgt_unused = */ 0 - }; - -#if TypeCheck - if ((In0P->Head.msgh_size != 24) || - (In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX)) - { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } -#endif /* TypeCheck */ - - OutP->RetCode = S_kdioctl_kdgkbdmode(In0P->Head.msgh_request_port, &OutP->mode); - if (OutP->RetCode != KERN_SUCCESS) - return; - - OutP->Head.msgh_size = 40; - - OutP->modeType = modeType; -} - -static mig_routine_t kdioctl_server_routines[] = { - 0, - _Xkdioctl_kdskbdmode, - _Xkdioctl_kdgkbdmode, -}; - -mig_external boolean_t kdioctl_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) -{ - register mach_msg_header_t *InP = InHeadP; - register mig_reply_header_t *OutP = (mig_reply_header_t *) OutHeadP; - - static const mach_msg_type_t RetCodeType = { - /* msgt_name = */ MACH_MSG_TYPE_INTEGER_32, - /* msgt_size = */ 32, - /* msgt_number = */ 1, - /* msgt_inline = */ TRUE, - /* msgt_longform = */ FALSE, - /* msgt_deallocate = */ FALSE, - /* msgt_unused = */ 0 - }; - - register mig_routine_t routine; - - OutP->Head.msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InP->msgh_bits), 0); - OutP->Head.msgh_size = sizeof *OutP; - OutP->Head.msgh_remote_port = InP->msgh_reply_port; - OutP->Head.msgh_local_port = MACH_PORT_NULL; - OutP->Head.msgh_seqno = 0; - OutP->Head.msgh_id = InP->msgh_id + 100; - - OutP->RetCodeType = RetCodeType; - - if ((InP->msgh_id > 120002) || (InP->msgh_id < 120000) || - ((routine = kdioctl_server_routines[InP->msgh_id - 120000]) == 0)) { - OutP->RetCode = MIG_BAD_ID; - return FALSE; - } - (*routine) (InP, &OutP->Head); - return TRUE; -} - -mig_external mig_routine_t kdioctl_server_routine - (const mach_msg_header_t *InHeadP) -{ - register int msgh_id; - - msgh_id = InHeadP->msgh_id - 120000; - - if ((msgh_id > 2) || (msgh_id < 0)) - return 0; - - return kdioctl_server_routines[msgh_id]; -} - diff --git a/kdioctl_S.h b/kdioctl_S.h deleted file mode 100644 index 7eb9b14..0000000 --- a/kdioctl_S.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef _kdioctl_server_ -#define _kdioctl_server_ - -/* Module kdioctl */ - -#include <mach/kern_return.h> -#include <mach/port.h> -#include <mach/message.h> - -#include <mach/std_types.h> -#include <mach/mach_types.h> -#include <device/device_types.h> -#include <device/net_status.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/statfs.h> -#include <sys/resource.h> -#include <sys/utsname.h> -#include <hurd/hurd_types.h> -#include <hurd/ioctl_types.h> - -/* Routine kdioctl_kdskbdmode */ -#ifdef mig_external -mig_external -#else -extern -#endif -kern_return_t S_kdioctl_kdskbdmode -#if defined(LINTLIBRARY) - (port, mode) - io_t port; - int mode; -{ return S_kdioctl_kdskbdmode(port, mode); } -#else -( - io_t port, - int mode -); -#endif - -/* Routine kdioctl_kdgkbdmode */ -#ifdef mig_external -mig_external -#else -extern -#endif -kern_return_t S_kdioctl_kdgkbdmode -#if defined(LINTLIBRARY) - (port, mode) - io_t port; - int *mode; -{ return S_kdioctl_kdgkbdmode(port, mode); } -#else -( - io_t port, - int *mode -); -#endif - -#endif /* not defined(_kdioctl_server_) */ -- 1.7.2