diff options
Diffstat (limited to 'debian/patches/0008-libtrivfs-add-payload-aware-intrans-functions.patch')
-rw-r--r-- | debian/patches/0008-libtrivfs-add-payload-aware-intrans-functions.patch | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/debian/patches/0008-libtrivfs-add-payload-aware-intrans-functions.patch b/debian/patches/0008-libtrivfs-add-payload-aware-intrans-functions.patch new file mode 100644 index 00000000..308a3fe9 --- /dev/null +++ b/debian/patches/0008-libtrivfs-add-payload-aware-intrans-functions.patch @@ -0,0 +1,113 @@ +From 4505520fc5c7e98ab857981ac28a728e23c3fdb9 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Thu, 28 Nov 2013 11:04:38 +0100 +Subject: [PATCH hurd 08/29] libtrivfs: add payload-aware intrans functions + +* libtrivfs/mig-decls.h (trivfs_begin_using_protid_payload): New function. +(trivfs_begin_using_control_payload): Likewise. +* libtrivfs/mig-mutate.h: Add mutators. +--- + libtrivfs/mig-decls.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ + libtrivfs/mig-mutate.h | 3 +++ + 2 files changed, 61 insertions(+) + +diff --git a/libtrivfs/mig-decls.h b/libtrivfs/mig-decls.h +index 2baaee8..13a9eb7 100644 +--- a/libtrivfs/mig-decls.h ++++ b/libtrivfs/mig-decls.h +@@ -61,6 +61,35 @@ trivfs_begin_using_protid (mach_port_t port) + return ports_lookup_port (0, port, trivfs_dynamic_protid_port_classes[0]); + } + ++static inline struct trivfs_protid * __attribute__ ((unused)) ++trivfs_begin_using_protid_payload (unsigned long payload) ++{ ++ if (trivfs_protid_nportclasses + trivfs_num_dynamic_protid_port_classes > 1) ++ { ++ struct port_info *pi = ports_lookup_payload (NULL, payload, NULL); ++ int i; ++ ++ if (pi) ++ { ++ for (i = 0; i < trivfs_protid_nportclasses; i++) ++ if (pi->class == trivfs_protid_portclasses[i]) ++ return (struct trivfs_protid *) pi; ++ for (i = 0; i < trivfs_num_dynamic_protid_port_classes; i++) ++ if (pi->class == trivfs_dynamic_protid_port_classes[i]) ++ return (struct trivfs_protid *) pi; ++ ports_port_deref (pi); ++ } ++ ++ return NULL; ++ } ++ else if (trivfs_protid_nportclasses == 1) ++ return ports_lookup_payload (NULL, payload, ++ trivfs_protid_portclasses[0]); ++ else ++ return ports_lookup_payload (NULL, payload, ++ trivfs_dynamic_protid_port_classes[0]); ++} ++ + static inline void __attribute__ ((unused)) + trivfs_end_using_protid (struct trivfs_protid *cred) + { +@@ -95,6 +124,35 @@ trivfs_begin_using_control (mach_port_t port) + return ports_lookup_port (0, port, trivfs_dynamic_control_port_classes[0]); + } + ++static inline struct trivfs_control * __attribute__ ((unused)) ++trivfs_begin_using_control_payload (unsigned long payload) ++{ ++ if (trivfs_cntl_nportclasses + trivfs_num_dynamic_control_port_classes > 1) ++ { ++ struct port_info *pi = ports_lookup_payload (NULL, payload, NULL); ++ int i; ++ ++ if (pi) ++ { ++ for (i = 0; i < trivfs_cntl_nportclasses; i++) ++ if (pi->class == trivfs_cntl_portclasses[i]) ++ return (struct trivfs_control *) pi; ++ for (i = 0; i < trivfs_num_dynamic_control_port_classes; i++) ++ if (pi->class == trivfs_dynamic_control_port_classes[i]) ++ return (struct trivfs_control *) pi; ++ ports_port_deref (pi); ++ } ++ ++ return NULL; ++ } ++ else if (trivfs_cntl_nportclasses == 1) ++ return ports_lookup_payload (NULL, payload, ++ trivfs_cntl_portclasses[0]); ++ else ++ return ports_lookup_payload (NULL, payload, ++ trivfs_dynamic_control_port_classes[0]); ++} ++ + static inline void __attribute__ ((unused)) + trivfs_end_using_control (struct trivfs_control *cred) + { +diff --git a/libtrivfs/mig-mutate.h b/libtrivfs/mig-mutate.h +index cc15d38..dcbebf6 100644 +--- a/libtrivfs/mig-mutate.h ++++ b/libtrivfs/mig-mutate.h +@@ -20,13 +20,16 @@ + #define REPLY_PORTS + + #define FILE_INTRAN trivfs_protid_t trivfs_begin_using_protid (file_t) ++#define FILE_INTRAN_PAYLOAD trivfs_protid_t trivfs_begin_using_protid_payload + #define FILE_DESTRUCTOR trivfs_end_using_protid (trivfs_protid_t) + #define FILE_IMPORTS import "libtrivfs/mig-decls.h"; + + #define IO_INTRAN trivfs_protid_t trivfs_begin_using_protid (io_t) ++#define IO_INTRAN_PAYLOAD trivfs_protid_t trivfs_begin_using_protid_payload + #define IO_DESTRUCTOR trivfs_end_using_protid (trivfs_protid_t) + #define IO_IMPORTS import "libtrivfs/mig-decls.h"; + + #define FSYS_INTRAN trivfs_control_t trivfs_begin_using_control (fsys_t) ++#define FSYS_INTRAN_PAYLOAD trivfs_control_t trivfs_begin_using_control_payload + #define FSYS_DESTRUCTOR trivfs_end_using_control (trivfs_control_t) + #define FSYS_IMPORTS import "libtrivfs/mig-decls.h"; +-- +2.1.3 + |