diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2013-11-28 10:43:18 +0100 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-12-07 15:38:18 +0100 |
commit | a226c74609b12cac905d06ec97a077bb2633e8a8 (patch) | |
tree | da4c1ca3d2787bb383b1a0efa8293531b8e5e183 | |
parent | f8ce37835ad53f67da245db6fed7d2a028514b01 (diff) |
libdiskfs: add payload-aware intrans functions
* libdiskfs/diskfs.h (diskfs_begin_using_protid_payload): New function.
(diskfs_begin_using_control_payload): Likewise.
(diskfs_begin_using_bootinfo_payload): Likewise.
* libdiskfs/fsmutations.h: Add mutators.
-rw-r--r-- | libdiskfs/diskfs.h | 29 | ||||
-rw-r--r-- | libdiskfs/fsmutations.h | 5 |
2 files changed, 34 insertions, 0 deletions
diff --git a/libdiskfs/diskfs.h b/libdiskfs/diskfs.h index e59ba996..28182254 100644 --- a/libdiskfs/diskfs.h +++ b/libdiskfs/diskfs.h @@ -833,8 +833,14 @@ error_t diskfs_start_protid (struct peropen *po, struct protid **cred); void diskfs_finish_protid (struct protid *cred, struct iouser *user); extern struct protid * diskfs_begin_using_protid_port (file_t port); +extern struct protid * +diskfs_begin_using_protid_payload (unsigned long payload); extern struct diskfs_control * diskfs_begin_using_control_port (fsys_t port); +extern struct diskfs_control * +diskfs_begin_using_control_port_payload (unsigned long payload); extern struct bootinfo *diskfs_begin_using_bootinfo_port (exec_startup_t port); +struct bootinfo * +diskfs_begin_using_bootinfo_payload (unsigned long payload); extern void diskfs_end_using_protid_port (struct protid *cred); extern void diskfs_end_using_control_port (struct diskfs_control *cred); @@ -851,6 +857,14 @@ diskfs_begin_using_protid_port (file_t port) return ports_lookup_port (diskfs_port_bucket, port, diskfs_protid_class); } +DISKFS_EXTERN_INLINE struct protid * +diskfs_begin_using_protid_payload (unsigned long payload) +{ + return ports_lookup_payload (diskfs_port_bucket, + payload, + diskfs_protid_class); +} + /* And for the fsys interface. */ DISKFS_EXTERN_INLINE struct diskfs_control * diskfs_begin_using_control_port (fsys_t port) @@ -858,6 +872,14 @@ diskfs_begin_using_control_port (fsys_t port) return ports_lookup_port (diskfs_port_bucket, port, NULL); } +DISKFS_EXTERN_INLINE struct diskfs_control * +diskfs_begin_using_control_port_payload (unsigned long payload) +{ + return ports_lookup_payload (diskfs_port_bucket, + payload, + NULL); +} + /* And for the exec_startup interface. */ DISKFS_EXTERN_INLINE struct bootinfo * diskfs_begin_using_bootinfo_port (exec_startup_t port) @@ -865,6 +887,13 @@ diskfs_begin_using_bootinfo_port (exec_startup_t port) return ports_lookup_port (diskfs_port_bucket, port, diskfs_execboot_class); } +DISKFS_EXTERN_INLINE struct bootinfo * +diskfs_begin_using_bootinfo_payload (unsigned long payload) +{ + return ports_lookup_payload (diskfs_port_bucket, + payload, + diskfs_execboot_class); +} /* Called by MiG after server routines have been run; this balances begin_using_protid_port, and is arranged for the io diff --git a/libdiskfs/fsmutations.h b/libdiskfs/fsmutations.h index 3f9362b9..c2167c64 100644 --- a/libdiskfs/fsmutations.h +++ b/libdiskfs/fsmutations.h @@ -18,12 +18,15 @@ /* Only CPP macro definitions should go in this file. */ #define FILE_INTRAN protid_t diskfs_begin_using_protid_port (file_t) +#define FILE_INTRAN_PAYLOAD protid_t diskfs_begin_using_protid_payload #define FILE_DESTRUCTOR diskfs_end_using_protid_port (protid_t) #define IO_INTRAN protid_t diskfs_begin_using_protid_port (io_t) +#define IO_INTRAN_PAYLOAD protid_t diskfs_begin_using_protid_payload #define IO_DESTRUCTOR diskfs_end_using_protid_port (protid_t) #define FSYS_INTRAN control_t diskfs_begin_using_control_port (fsys_t) +#define FSYS_INTRAN_PAYLOAD control_t diskfs_begin_using_control_port_payload #define FSYS_DESTRUCTOR diskfs_end_using_control_port (control_t) #define FILE_IMPORTS import "libdiskfs/priv.h"; @@ -33,6 +36,8 @@ #define EXEC_STARTUP_INTRAN \ bootinfo_t diskfs_begin_using_bootinfo_port (exec_startup_t) +#define EXEC_STARTUP_INTRAN_PAYLOAD \ + bootinfo_t diskfs_begin_using_bootinfo_payload #define EXEC_STARTUP_DESTRUCTOR \ diskfs_end_using_bootinfo (bootinfo_t) #define EXEC_STARTUP_IMPORTS \ |