diff options
author | neal <neal> | 2007-12-25 20:06:06 +0000 |
---|---|---|
committer | neal <neal> | 2007-12-25 20:06:06 +0000 |
commit | 7497724fdbd887029f3d70a691db27a34926e64a (patch) | |
tree | 0a5384b105bfedc8e61b5f87d2b18a1124c4dbf4 /ruth | |
parent | 4744b703dc58a704e43a88f9af45042b9700fc32 (diff) |
hurd/
2007-12-25 Neal H. Walfield <neal@gnu.org>
* cap.h: Include <stdint.h>.
(OBJECT_PRIORITY_BITS): Define.
(OBJECT_PRIORITY_MAX): Likewise.
(OBJECT_PRIORITY_LRU): Likewise.
(OBJECT_PRIORITY_MIN): Likewise.
(struct object_policy): New structure.
(OBJECT_POLICY_INIT): Define.
(OBJECT_POLICY): Likewise.
(OBJECT_POLICY_VOID): Likewise.
(OBJECT_POLICY_DEFAULT): Likewise.
(struct cap_properties): New structure.
(CAP_PROPERTIES_INIT): Define.
(CAP_PROPERTIES): Likewise.
(CAP_PROPERTIES_VOID): Likewise.
(CAP_PROPERTIES_DEFAULT): Likewise.
(struct cap): Add fields discardable and priority.
[RM_INTERN]: Reduce OID to 54 bits.
[! RM_INTERN]: Allow the shadow field an entire word.
(CAP_PROPERTIES_GET): Define.
(CAP_PROPERTIES_SET): Likewise.
(CAP_COPY_DISCARDABLE_SET): Likewise.
(CAP_COPY_PRIORITY_SET): Likewise.
(cap_copy): Remove the stuct cap_addr_trans parameter and replace
with a struct cap_properties. Update callers.
(cap_read): Likewise.
(object_slot_copy_out): Likewise.
(object_slot_copy_in): Likewise.
(object_slot_read): Likewise.
(cap_copy_x): Likewise. Save the object policies in the shadow
capability.
(cap_get_shadow): Don't munge the address.
(cap_set_shadow): Likewise.
* thread.h: Include <hurd/cap.h>.
(struct hurd_thread_exregs_in): Remove field aspace_addr_trans.
Add field aspace_cap_properties. Rename field
aspace_addr_trans_flags to aspace_cap_properties_flags.
* folio.h (struct folio): Remove field discardable. Add field
policy.
(folio_object_alloc): Take an additional argument, a struct
object_policy. Update users.
* cap.h (cap_is_a): Remove dead code.
(cap_is_a_page): Remove dead code.
libhurd-mm/
2007-12-25 Neal H. Walfield <neal@gnu.org>
* as.h: Change VISIT's signature: pass a struct cap_properties
instead of a struct cap_addr_trans. Update callers.
* as.c (as_walk): Change VISIT's signature: pass a struct
cap_properties instead of a struct cap_addr_trans. Call VISIT
appropriately.
(as_alloc_slow): Update rm_cap_read use to reflect API changes.
(as_init): Update rm_cap_read use to reflect API changes. Use
CAP_PROPERTIES_SET to set shadow capability properties.
* storage.c (shadow_setup): Update rm_folio_object_alloc use to
reflect API changes. Also save the object policy in the shadow
capability.
(storage_alloc_): Likewise.
(storage_free_): Likewise.
viengoos/
2007-12-25 Neal H. Walfield <neal@gnu.org>
* object.h (struct object_desc): Add field policy.
(object_desc_to_cap): Also return the discardable bit and the
priority.
(folio_object_alloc): Take additional parameter, the object's
policy. Update callers.
* object.c (folio_object_alloc): Take additional parameter, the
object policy. Save it in the folio header.
* as.c (as_build_internal): Update cap_copy_x use to reflect API
changes.
* thread.h: Remove parameter addr_trans and replace with a
parameter that includes it and the object policy. Update users.
* thread.c (thread_exregs): Remove parameter addr_trans and
replace with a parameter that includes it and the object policy.
Pass it to cap_copy_x as appropriate.
* server.c: Include "output.h".
(server_loop): Update the folio_object_alloc,
object_slot_copy_out, object_slot_copy_in, and cap_copy
implementations to set the allocated object's policy consistent
with the API changes. Update the object_slot_read and cap_read
implementations to return the object policy consistent with the
API changes. Update the thread_exregs implementation to handle
the address space capability's object policy consistent with the
API changes.
ruth/
2007-12-25 Neal H. Walfield <neal@gnu.org>
* ruth.c (main): Change visit to be consistent with as_walk's
expected function signature. Update rm_folio_object_alloc use to
reflect API changes.
Diffstat (limited to 'ruth')
-rw-r--r-- | ruth/ChangeLog | 6 | ||||
-rw-r--r-- | ruth/ruth.c | 27 |
2 files changed, 22 insertions, 11 deletions
diff --git a/ruth/ChangeLog b/ruth/ChangeLog index 01e1e87..fbab39d 100644 --- a/ruth/ChangeLog +++ b/ruth/ChangeLog @@ -1,3 +1,9 @@ +2007-12-25 Neal H. Walfield <neal@gnu.org> + + * ruth.c (main): Change visit to be consistent with as_walk's + expected function signature. Update rm_folio_object_alloc use to + reflect API changes. + 2007-12-24 Neal H. Walfield <neal@gnu.org> * ia32-cmain.c (exit): Declare. diff --git a/ruth/ruth.c b/ruth/ruth.c index d65e1c7..522b5aa 100644 --- a/ruth/ruth.c +++ b/ruth/ruth.c @@ -98,7 +98,7 @@ main (int argc, char *argv[]) int processing_folio = -1; int visit (addr_t addr, - l4_word_t type, struct cap_addr_trans cap_addr_trans, + l4_word_t type, struct cap_properties properties, bool writable, void *cookie) { @@ -149,14 +149,15 @@ main (int argc, char *argv[]) panic ("capalloc"); err = rm_folio_object_alloc (activity, folio, i, cap_page, + OBJECT_POLICY_DEFAULT, addr, ADDR_VOID); assert ((err == 0) == (0 <= i && i < FOLIO_OBJECTS)); if (0 <= i && i < FOLIO_OBJECTS) { l4_word_t type; - struct cap_addr_trans cap_addr_trans; - err = rm_cap_read (activity, addr, &type, &cap_addr_trans); + struct cap_properties properties; + err = rm_cap_read (activity, addr, &type, &properties); assert (! err); assert (type == cap_page); } @@ -203,10 +204,10 @@ main (int argc, char *argv[]) for (j = 0; j <= i; j ++) { l4_word_t type; - struct cap_addr_trans addr_trans; + struct cap_properties properties; error_t err = rm_cap_read (activity, addr_extend (root, j, bits), - &type, &addr_trans); + &type, &properties); assert (! err); assert (type == cap_folio); @@ -318,8 +319,8 @@ main (int argc, char *argv[]) struct hurd_thread_exregs_in in; in.aspace = ADDR (0, 0); - in.aspace_addr_trans = CAP_ADDR_TRANS_VOID; - in.aspace_addr_trans_flags = CAP_COPY_COPY_SOURCE_GUARD; + in.aspace_cap_properties = CAP_PROPERTIES_DEFAULT; + in.aspace_cap_properties_flags = CAP_COPY_COPY_SOURCE_GUARD; in.activity = activity; @@ -393,7 +394,7 @@ main (int argc, char *argv[]) { debug (5, "Creating thread %d", i); error_t err = pthread_create (&threads[i], NULL, start, - (uintptr_t) i); + (void *) (uintptr_t) i); assert (err == 0); } @@ -403,7 +404,7 @@ main (int argc, char *argv[]) debug (5, "Waiting on thread %d", i); error_t err = pthread_join (threads[i], &status); assert (err == 0); - assert (status == (uintptr_t) i); + assert ((uintptr_t) status == (uintptr_t) i); debug (5, "Joined %d", i); } @@ -415,6 +416,7 @@ main (int argc, char *argv[]) { printf ("Checking activity creation... "); +#undef N #define N 10 void test (addr_t activity, addr_t folio, int depth) { @@ -435,6 +437,7 @@ main (int argc, char *argv[]) a[i].child = capalloc (); err = rm_folio_object_alloc (activity, folio, obj ++, cap_activity_control, + OBJECT_POLICY_DEFAULT, a[i].child, ADDR_VOID); assert (err == 0); @@ -445,13 +448,14 @@ main (int argc, char *argv[]) a[i].page = capalloc (); err = rm_folio_object_alloc (a[i].child, a[i].folio, 0, cap_page, + OBJECT_POLICY_DEFAULT, a[i].page, ADDR_VOID); assert (err == 0); l4_word_t type; - struct cap_addr_trans addr_trans; + struct cap_properties properties; - err = rm_cap_read (a[i].child, a[i].page, &type, &addr_trans); + err = rm_cap_read (a[i].child, a[i].page, &type, &properties); assert (err == 0); assert (type == cap_page); } @@ -475,6 +479,7 @@ main (int argc, char *argv[]) use the object. If this fails, we assume that the folio was destroyed. */ err = rm_folio_object_alloc (a[i].child, a[i].folio, 1, cap_page, + OBJECT_POLICY_DEFAULT, a[i].page, ADDR_VOID); assert (err); |