diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-04-08 12:35:01 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-04-08 12:35:01 +0200 |
commit | 8927fbd63e29005ddb9b2c2264046089bf669857 (patch) | |
tree | a1af6f5d4e7ab6ce5fef9521faf3b4dfe53848a1 | |
parent | f15806e05d97ac060f4e992db6c3e2b6814a9bbc (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-- | Makefile | 1 | ||||
-rw-r--r-- | mig-decls.h | 47 | ||||
-rw-r--r-- | mig-mutate.h | 25 | ||||
-rw-r--r-- | random.c | 5 |
4 files changed, 74 insertions, 4 deletions
@@ -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"; @@ -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; |