summaryrefslogtreecommitdiff
path: root/ruth
diff options
context:
space:
mode:
authorneal <neal>2007-12-25 20:06:06 +0000
committerneal <neal>2007-12-25 20:06:06 +0000
commit7497724fdbd887029f3d70a691db27a34926e64a (patch)
tree0a5384b105bfedc8e61b5f87d2b18a1124c4dbf4 /ruth
parent4744b703dc58a704e43a88f9af45042b9700fc32 (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/ChangeLog6
-rw-r--r--ruth/ruth.c27
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);