diff options
author | neal <neal> | 2008-02-06 15:55:28 +0000 |
---|---|---|
committer | neal <neal> | 2008-02-06 15:55:28 +0000 |
commit | b9a03ef381d1b7c92b96537515829a06ad7360be (patch) | |
tree | fcc680f3496d3f65d50108994b766e5a6d1e144d /hurd | |
parent | 3355d3b116a2ce1d1e3220bbcca42dc0ced68aae (diff) |
hurd/
2008-02-06 Neal H. Walfield <neal@gnu.org>
* folio.h (folio_object_cap): New function.
viengoos/
2008-02-06 Neal H. Walfield <neal@gnu.org>
* as.c (do_index): New function.
(as_build_internal): Don't index a page table directly. Instead,
use the above new function.
Diffstat (limited to 'hurd')
-rw-r--r-- | hurd/ChangeLog | 4 | ||||
-rw-r--r-- | hurd/folio.h | 33 |
2 files changed, 37 insertions, 0 deletions
diff --git a/hurd/ChangeLog b/hurd/ChangeLog index 4691d72..08a7ae3 100644 --- a/hurd/ChangeLog +++ b/hurd/ChangeLog @@ -1,3 +1,7 @@ +2008-02-06 Neal H. Walfield <neal@gnu.org> + + * folio.h (folio_object_cap): New function. + 2008-02-05 Neal H. Walfield <neal@gnu.org> * folio.h (struct folio) [RM_INTERN]: Remove field dhazard, diff --git a/hurd/folio.h b/hurd/folio.h index 9b1b934..a37ebb3 100644 --- a/hurd/folio.h +++ b/hurd/folio.h @@ -275,6 +275,39 @@ folio_object_content_set (struct folio *folio, int object, folio->misc[object + 1].content = content; } #endif /* RM_INTERN */ + +/* Return a cap designating folio FOLIO's OBJECT'th object. */ +#ifdef RM_INTERN +/* This needs to be a macro as we use object_to_object_desc which is + made available by object.h but object.h includes this file. */ +#define folio_object_cap(__foc_folio, __foc_object) \ + ({ \ + struct cap __foc_cap; \ + \ + __foc_cap.type = folio_object_type (__foc_folio, __foc_object); \ + __foc_cap.version = folio_object_version (__foc_folio, \ + __foc_object); \ + __foc_cap.weak_p = false; \ + \ + struct cap_properties __foc_cap_properties \ + = CAP_PROPERTIES (folio_object_policy (__foc_folio, __foc_object), \ + CAP_ADDR_TRANS_VOID); \ + CAP_PROPERTIES_SET (&__foc_cap, __foc_cap_properties); \ + \ + __foc_cap.oid \ + = object_to_object_desc ((struct object *) __foc_folio)->oid \ + + 1 + __foc_object; \ + \ + __foc_cap; \ + }) +#else +static inline struct cap +folio_object_cap (struct folio *folio, int object) +{ + assert (0 <= object && object < FOLIO_OBJECTS); + return folio->objects[object]; +} +#endif #define RPC_STUB_PREFIX rm #define RPC_ID_PREFIX RM |