summaryrefslogtreecommitdiff
path: root/debian/patches/0005-libtrivfs-add-payload-aware-intrans-functions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0005-libtrivfs-add-payload-aware-intrans-functions.patch')
-rw-r--r--debian/patches/0005-libtrivfs-add-payload-aware-intrans-functions.patch113
1 files changed, 113 insertions, 0 deletions
diff --git a/debian/patches/0005-libtrivfs-add-payload-aware-intrans-functions.patch b/debian/patches/0005-libtrivfs-add-payload-aware-intrans-functions.patch
new file mode 100644
index 00000000..b92a0645
--- /dev/null
+++ b/debian/patches/0005-libtrivfs-add-payload-aware-intrans-functions.patch
@@ -0,0 +1,113 @@
+From a3f0d8a363f7c872757f99523c737918c369d522 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 05/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
+