diff options
-rw-r--r-- | hurd/ChangeLog | 5 | ||||
-rw-r--r-- | hurd/types.h | 16 |
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 */ |