diff options
Diffstat (limited to 'libtrivfs')
-rw-r--r-- | libtrivfs/Makefile | 6 | ||||
-rw-r--r-- | libtrivfs/mig-decls.h (renamed from libtrivfs/migsupport.c) | 31 | ||||
-rw-r--r-- | libtrivfs/mig-mutate.h (renamed from libtrivfs/fsmutations.h) | 7 | ||||
-rw-r--r-- | libtrivfs/trivfs.h | 44 |
4 files changed, 32 insertions, 56 deletions
diff --git a/libtrivfs/Makefile b/libtrivfs/Makefile index 3e4c0393..921acbea 100644 --- a/libtrivfs/Makefile +++ b/libtrivfs/Makefile @@ -38,7 +38,7 @@ FSYSSRCS=fsys-getroot.c fsys-goaway.c fsys-stubs.c fsys-syncfs.c \ file-get-children.c file-get-source.c OTHERSRCS=demuxer.c protid-clean.c protid-dup.c cntl-create.c \ - cntl-clean.c migsupport.c times.c startup.c open.c \ + cntl-clean.c times.c startup.c open.c \ runtime-argp.c set-options.c append-args.c dyn-classes.c \ protid-classes.c cntl-classes.c @@ -49,7 +49,7 @@ MIGSTUBS=fsServer.o ioServer.o fsysServer.o fsys_replyUser.o libname = libtrivfs HURDLIBS = fshelp iohelp ports shouldbeinlibc OBJS= $(sort $(subst .c,.o,$(SRCS)) $(MIGSTUBS)) -MIGSFLAGS=-imacros $(srcdir)/fsmutations.h +MIGSFLAGS=-imacros $(srcdir)/mig-mutate.h MIGCOMSFLAGS = -prefix trivfs_ installhdrs := trivfs.h mig-sheader-prefix = trivfs_ @@ -59,4 +59,4 @@ endif include ../Makeconf -$(MIGSTUBS:%Server.o=%.sdefsi): $(srcdir)/fsmutations.h +$(MIGSTUBS:%Server.o=%.sdefsi): $(srcdir)/mig-mutate.h diff --git a/libtrivfs/migsupport.c b/libtrivfs/mig-decls.h index b2d98e16..2baaee86 100644 --- a/libtrivfs/migsupport.c +++ b/libtrivfs/mig-decls.h @@ -15,9 +15,26 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifndef __TRIVFS_MIG_DECLS_H__ +#define __TRIVFS_MIG_DECLS_H__ + #include "priv.h" -struct trivfs_protid * +/* Vectors of dynamically allocated port classes/buckets. */ + +/* Protid port classes. */ +extern struct port_class **trivfs_dynamic_protid_port_classes; +extern size_t trivfs_num_dynamic_protid_port_classes; + +/* Control port classes. */ +extern struct port_class **trivfs_dynamic_control_port_classes; +extern size_t trivfs_num_dynamic_control_port_classes; + +/* Port buckets. */ +extern struct port_bucket **trivfs_dynamic_port_buckets; +extern size_t trivfs_num_dynamic_port_buckets; + +static inline struct trivfs_protid * __attribute__ ((unused)) trivfs_begin_using_protid (mach_port_t port) { if (trivfs_protid_nportclasses + trivfs_num_dynamic_protid_port_classes > 1) @@ -35,7 +52,7 @@ trivfs_begin_using_protid (mach_port_t port) return (struct trivfs_protid *) pi; ports_port_deref (pi); } - + return 0; } else if (trivfs_protid_nportclasses == 1) @@ -44,14 +61,14 @@ trivfs_begin_using_protid (mach_port_t port) return ports_lookup_port (0, port, trivfs_dynamic_protid_port_classes[0]); } -void +static inline void __attribute__ ((unused)) trivfs_end_using_protid (struct trivfs_protid *cred) { if (cred) ports_port_deref (cred); } -struct trivfs_control * +static inline struct trivfs_control * __attribute__ ((unused)) trivfs_begin_using_control (mach_port_t port) { if (trivfs_cntl_nportclasses + trivfs_num_dynamic_control_port_classes > 1) @@ -69,7 +86,7 @@ trivfs_begin_using_control (mach_port_t port) return (struct trivfs_control *) pi; ports_port_deref (pi); } - + return 0; } else if (trivfs_cntl_nportclasses == 1) @@ -78,9 +95,11 @@ trivfs_begin_using_control (mach_port_t port) return ports_lookup_port (0, port, trivfs_dynamic_control_port_classes[0]); } -void +static inline void __attribute__ ((unused)) trivfs_end_using_control (struct trivfs_control *cred) { if (cred) ports_port_deref (cred); } + +#endif /* __TRIVFS_MIG_DECLS_H__ */ diff --git a/libtrivfs/fsmutations.h b/libtrivfs/mig-mutate.h index d81e5a87..fad5389a 100644 --- a/libtrivfs/fsmutations.h +++ b/libtrivfs/mig-mutate.h @@ -21,13 +21,12 @@ #define FILE_INTRAN trivfs_protid_t trivfs_begin_using_protid (file_t) #define FILE_DESTRUCTOR trivfs_end_using_protid (trivfs_protid_t) +#define FILE_IMPORTS import "mig-decls.h"; #define IO_INTRAN trivfs_protid_t trivfs_begin_using_protid (io_t) #define IO_DESTRUCTOR trivfs_end_using_protid (trivfs_protid_t) +#define IO_IMPORTS import "mig-decls.h"; #define FSYS_INTRAN trivfs_control_t trivfs_begin_using_control (fsys_t) #define FSYS_DESTRUCTOR trivfs_end_using_control (trivfs_control_t) - -#define FILE_IMPORTS import <hurd/trivfs.h>; -#define IO_IMPORTS import <hurd/trivfs.h>; -#define FSYS_IMPORTS import <hurd/trivfs.h>; +#define FSYS_IMPORTS import "mig-decls.h"; diff --git a/libtrivfs/trivfs.h b/libtrivfs/trivfs.h index 306a4302..bb456ffa 100644 --- a/libtrivfs/trivfs.h +++ b/libtrivfs/trivfs.h @@ -37,11 +37,6 @@ struct trivfs_protid struct trivfs_peropen *po; }; -/* These can be used as `intran' and `destructor' functions for - a MiG port type, to have the stubs called with the protid pointer. */ -struct trivfs_protid *trivfs_begin_using_protid (mach_port_t); -void trivfs_end_using_protid (struct trivfs_protid *); - struct trivfs_peropen { void *hook; /* for user use */ @@ -62,11 +57,6 @@ struct trivfs_control void *hook; /* for user use */ }; -/* These can be used as `intran' and `destructor' functions for - a MiG port type, to have the stubs called with the control pointer. */ -struct trivfs_control *trivfs_begin_using_control (mach_port_t); -void trivfs_end_using_control (struct trivfs_control *); - /* The user must define these variables. */ extern int trivfs_fstype; @@ -267,41 +257,9 @@ error_t trivfs_add_port_bucket (struct port_bucket **bucket); /* Remove the previously added dynamic port bucket BUCKET, freeing it if it was allocated by trivfs_add_port_bucket. */ void trivfs_remove_port_bucket (struct port_bucket *bucket); - -/* This stuff is for the sake of MiG stubs and could be in a private - header. But it might be handy for users that override parts of the - library. Moreover, since the stub headers will use all the imports we - need for the stubs, we couldn't make the stub headers public without - making this public too. */ - +/* Type-aliases for mig. */ typedef struct trivfs_protid *trivfs_protid_t; typedef struct trivfs_control *trivfs_control_t; -struct trivfs_protid *_trivfs_begin_using_protid (mach_port_t); -void _trivfs_end_using_protid (struct trivfs_protid *); -struct trivfs_control *_trivfs_begin_using_control (mach_port_t); -void _trivfs_end_using_control (struct trivfs_control *); - -/* Vectors of dynamically allocated port classes/buckets. */ - -/* Protid port classes. */ -extern struct port_class **trivfs_dynamic_protid_port_classes; -extern size_t trivfs_num_dynamic_protid_port_classes; - -/* Control port classes. */ -extern struct port_class **trivfs_dynamic_control_port_classes; -extern size_t trivfs_num_dynamic_control_port_classes; - -/* Port buckets. */ -extern struct port_bucket **trivfs_dynamic_port_buckets; -extern size_t trivfs_num_dynamic_port_buckets; - -/* These are the MiG-generated headers that declare prototypes - for the server functions. */ -#include <hurd/trivfs_fs_S.h> -#include <hurd/trivfs_io_S.h> -#include <hurd/trivfs_fsys_S.h> - - #endif /* __TRIVFS_H__ */ |