summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarcus <marcus>2004-04-07 02:03:46 +0000
committermarcus <marcus>2004-04-07 02:03:46 +0000
commita93fd7dadd804e2765de74a8792d2608505ed93c (patch)
tree54609056b30f2274f4d68b3d6b5cb1ff1c8d9681
parentf474bd804dd9802dffc9afc783dfa0752a80f7a8 (diff)
2004-04-07 Marcus Brinkmann <marcus@gnu.org>
* types.h (hurd_cap_make): New function. (_HURD_CAP_CLIENT_ID_MASK, _HURD_CAP_ID_MASK): New macros.
-rw-r--r--hurd/ChangeLog5
-rw-r--r--hurd/types.h16
2 files changed, 20 insertions, 1 deletions
diff --git a/hurd/ChangeLog b/hurd/ChangeLog
index 518266b..463cf81 100644
--- a/hurd/ChangeLog
+++ b/hurd/ChangeLog
@@ -1,3 +1,8 @@
+2004-04-07 Marcus Brinkmann <marcus@gnu.org>
+
+ * types.h (hurd_cap_make): New function.
+ (_HURD_CAP_CLIENT_ID_MASK, _HURD_CAP_ID_MASK): New macros.
+
2004-04-01 Marcus Brinkmann <marcus@gnu.org>
* types.h: Include <l4/thread.h>.
diff --git a/hurd/types.h b/hurd/types.h
index 073488f..7573f8d 100644
--- a/hurd/types.h
+++ b/hurd/types.h
@@ -54,6 +54,10 @@ typedef l4_word_t hurd_cap_t;
#define HURD_CAP_CLIENT_ID_BITS HURD_TASK_ID_BITS
#define HURD_CAP_ID_BITS ((sizeof (hurd_cap_t) * 8) - HURD_TASK_ID_BITS)
+#define _HURD_CAP_CLIENT_ID_MASK \
+ ((L4_WORD_C(1) << HURD_CAP_CLIENT_ID_BITS) - 1)
+#define _HURD_CAP_ID_MASK ((L4_WORD_C(1) << HURD_CAP_ID_BITS) - 1)
+
typedef l4_uint32_t hurd_cap_id_t;
typedef l4_uint32_t hurd_cap_client_id_t;
@@ -72,7 +76,17 @@ hurd_cap_client_id (hurd_cap_t cap)
static inline hurd_cap_id_t
hurd_cap_id (hurd_cap_t cap)
{
- return cap & ((L4_WORD_C(1) << HURD_CAP_ID_BITS) - 1);
+ return cap & _HURD_CAP_ID_MASK;
+}
+
+
+/* Create a new capability from the client and cap ID. */
+static inline hurd_cap_t
+hurd_cap_make (hurd_cap_client_id_t client_id, hurd_cap_id_t cap_id)
+{
+ return ((client_id & _HURD_CAP_CLIENT_ID_MASK) << HURD_CAP_ID_BITS)
+ || (cap_id & _HURD_CAP_ID_MASK);
}
+
#endif /* _HURD_TYPES_H */