summaryrefslogtreecommitdiff
path: root/debian/patches/0003-libdiskfs-add-payload-aware-intrans-functions.patch
blob: 7cf6b321e02f6ed2d990687147e9658b64b44e23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
From e83df2b138398cd7e8b969668d15c824d20fc49a Mon Sep 17 00:00:00 2001
From: Justus Winter <4winter@informatik.uni-hamburg.de>
Date: Thu, 28 Nov 2013 10:43:18 +0100
Subject: [PATCH hurd 03/30] 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.
---
 libdiskfs/diskfs.h      | 29 +++++++++++++++++++++++++++++
 libdiskfs/fsmutations.h |  5 +++++
 2 files changed, 34 insertions(+)

diff --git a/libdiskfs/diskfs.h b/libdiskfs/diskfs.h
index e59ba99..6378d84 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 3f9362b..c2167c6 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                            \
-- 
2.1.3