[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/8] Remove glue code and use mig to regenerate it.
From: |
Diego Nieto Cid |
Subject: |
[PATCH 4/8] Remove glue code and use mig to regenerate it. |
Date: |
Wed, 4 Aug 2010 04:20:02 -0300 |
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
- [PATCH 0/8] Bring console-driver-xkb up to date, Diego Nieto Cid, 2010/08/04
- [PATCH 1/8] Update the parser to work with current XKB files., Diego Nieto Cid, 2010/08/04
- Re: [PATCH 1/8] Update the parser to work with current XKB files., olafBuddenhagen, 2010/08/11
- Re: [PATCH 1/8] Update the parser to work, Diego Nieto Cid, 2010/08/11
- [PATCH 1/5] Add type to $$ in mid-rules., Diego Nieto Cid, 2010/08/11
- [PATCH 2/5] Lexer support for keycodes with +/- symbols and arbitrary level numbers., Diego Nieto Cid, 2010/08/11
- [PATCH 3/5] Skip to main file's default section when needed., Diego Nieto Cid, 2010/08/11
- [PATCH 4/5] Update key type assigment routine., Diego Nieto Cid, 2010/08/11
- [PATCH 5/5] Recreate xkb/keymap/hurd from xkeyboard-config-1.8's xfree86 keymap., Diego Nieto Cid, 2010/08/11
- [PATCH 4/8] Remove glue code and use mig to regenerate it.,
Diego Nieto Cid <=
- [PATCH 3/8] Rule vmod returns an int with the vmod's bit on., Diego Nieto Cid, 2010/08/04
- [PATCH 2/8] Avoid hashing garbage for short keynames., Diego Nieto Cid, 2010/08/04
[PATCH 5/8] Update code borrowed from console-client., Diego Nieto Cid, 2010/08/04
[PATCH 6/8] Add missing functions to input_driver_test., Diego Nieto Cid, 2010/08/04