summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-04-08 12:35:01 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-04-08 12:35:01 +0200
commit8927fbd63e29005ddb9b2c2264046089bf669857 (patch)
treea1af6f5d4e7ab6ce5fef9521faf3b4dfe53848a1
parentf15806e05d97ac060f4e992db6c3e2b6814a9bbc (diff)
fix a receiver lookup
* mig-decls.h: New file. * mig-mutate.h: Likewise. * Makefile (MIGSFLAGS): Use mig-mutate.h. * random.c (S_startup_dosync): Fix the receiver lookup.
-rw-r--r--Makefile1
-rw-r--r--mig-decls.h47
-rw-r--r--mig-mutate.h25
-rw-r--r--random.c5
4 files changed, 74 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 0949b637..6291da0c 100644
--- a/Makefile
+++ b/Makefile
@@ -26,5 +26,6 @@ OBJS = $(SRCS:.c=.o) startup_notifyServer.o
LCLHDRS = gnupg-random.h gnupg-rmd.h gnupg-bithelp.h random.h
HURDLIBS = trivfs ports fshelp ihash shouldbeinlibc
OTHERLIBS = -lpthread
+MIGSFLAGS = -DSEQNOS -imacros $(srcdir)/mig-mutate.h
include ../Makeconf
diff --git a/mig-decls.h b/mig-decls.h
new file mode 100644
index 00000000..87b7eb2a
--- /dev/null
+++ b/mig-decls.h
@@ -0,0 +1,47 @@
+/*
+ Copyright (C) 2014 Free Software Foundation, Inc.
+ Written by Justus Winter.
+
+ 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. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef __RANDOM_MIG_DECLS_H__
+#define __RANDOM_MIG_DECLS_H__
+
+#include <hurd/ports.h>
+
+typedef struct port_info *port_info_t;
+
+extern struct trivfs_control *fsys;
+extern struct port_class *shutdown_notify_class;
+
+/* Called by server stub functions. */
+
+static inline struct port_info * __attribute__ ((unused))
+begin_using_startup_port (mach_port_t port)
+{
+ return ports_lookup_port (fsys->pi.bucket,
+ handle,
+ shutdown_notify_class);
+}
+
+static inline void __attribute__ ((unused))
+end_using_startup (struct port_info *p)
+{
+ if (p)
+ ports_port_deref (p);
+}
+
+#endif /* __RANDOM_MIG_DECLS_H__ */
diff --git a/mig-mutate.h b/mig-mutate.h
new file mode 100644
index 00000000..dab89e56
--- /dev/null
+++ b/mig-mutate.h
@@ -0,0 +1,25 @@
+/*
+ Copyright (C) 2014 Free Software Foundation, Inc.
+ Written by Justus Winter.
+
+ 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. If not, see <http://www.gnu.org/licenses/>. */
+
+#define STARTUP_INTRAN \
+ port_info_t begin_using_startup_port (mach_port_t)
+#define STARTUP_DESTRUCTOR \
+ end_using_startup (port_info_t)
+#define STARTUP_IMPORTS \
+ import "mig-decls.h";
diff --git a/random.c b/random.c
index 5ef814f4..ca963580 100644
--- a/random.c
+++ b/random.c
@@ -524,11 +524,8 @@ struct port_class *shutdown_notify_class;
/* The system is going down; destroy all the extant port rights. That
will cause net channels and such to close promptly. */
error_t
-S_startup_dosync (mach_port_t handle)
+S_startup_dosync (struct port_info *inpi)
{
- struct port_info *inpi = ports_lookup_port (fsys->pi.bucket, handle,
- shutdown_notify_class);
-
if (!inpi)
return EOPNOTSUPP;