diff options
author | neal <neal> | 2007-12-10 22:38:12 +0000 |
---|---|---|
committer | neal <neal> | 2007-12-10 22:38:12 +0000 |
commit | 6460869932bf5900aefa6793f2a4c8d0df33a686 (patch) | |
tree | 446f6ff92407d800799b34c1801ac46458599535 /viengoos/activity.c | |
parent | d9c3f0b253ccbb3153e70a9fcb47c24276044cc1 (diff) |
2007-12-10 Neal H. Walfield <neal@gnu.org>
* object.h (lru_lock): New declaration.
(LINK_TEMPLATE): Assert that LRU_LOCK is held.
(object_desc_disown_simple): Likewise.
(object_disown_simple): Likewise.
(object_desc_disown): Likewise.
(object_disown): Likewise.
(object_desc_claim): Likewise.
(object_claim): Likewise.
* object.c (lru_lock): Define.
(memory_object_alloc): Lock LRU_LOCK when manipulating
the LRU lists.
(memory_object_destroy): Likewise.
(object_find_soft): Likewise.
(folio_free): Likewise.
(folio_object_alloc): Likewise.
* activity.c (activity_destroy): Lock LRU_LOCK when manipulating
the LRU lists.
(activity_destroy): Likewise.
(activity_dump): Likewise.
(activity_consistency_check_): Assert that LRU_LOCK is held.
* ager.c (ager_loop): Lock LRU_LOCK when manipulating the LRU
lists.
* Makefile.am (t_link_CPPFLAGS): Include
$(srcdir)/t-environment.h.
(t_link_SOURCES): Add output.h, output.c and output-stdio.c.
* t-environment.h: Move includes down.
(environment_kip) [! _L4_TEST_MAIN]: Don't define, only declare.
Remove static qualifier.
(environment_api_version) [! _L4_TEST_MAIN]: Likewise.
(environment_api_flags) [! _L4_TEST_MAIN]: Likewise.
(environment_kernel_id) [! _L4_TEST_MAIN]: Likewise.
(environment_utcb) [! _L4_TEST_MAIN]: Likewise.
(environment_utcb_address) [! _L4_TEST_MAIN]: Likewise.
(environment_init): Initialize
ENVIRONMENT_UTCB_ADDRESS[_L4_UTCB_MY_GLOBAL_ID] to a non-NULL
value.
* t-link.c: Include "t-environment.h".
(_L4_TEST_MAIN): Define.
(program_name): Don't define.
(lru_lock): Define.
(main): Rename from this...
(test): ... to this. Lock LRU_LOCK on entry and unlock on exit.
Diffstat (limited to 'viengoos/activity.c')
-rw-r--r-- | viengoos/activity.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/viengoos/activity.c b/viengoos/activity.c index 187fc3f..999f88a 100644 --- a/viengoos/activity.c +++ b/viengoos/activity.c @@ -119,6 +119,7 @@ activity_destroy (struct activity *activity, struct activity *victim) } /* Disown all allocated memory objects. */ + ss_mutex_lock (&lru_lock); struct object_desc *desc; int count = 0; while ((desc = victim->active)) @@ -136,6 +137,8 @@ activity_destroy (struct activity *activity, struct activity *victim) object_desc_disown_simple (desc); count ++; } + ss_mutex_unlock (&lru_lock); + activity_charge (victim, -count); do_debug (1) @@ -147,8 +150,10 @@ activity_destroy (struct activity *activity, struct activity *victim) activity_dump (root_activity); struct object_desc *desc; + ss_mutex_lock (&lru_lock); for (desc = victim->active; desc; desc = desc->activity_lru.next) debug (0, " %llx: %s", desc->oid, cap_type_string (desc->type)); + ss_mutex_unlock (&lru_lock); } assert (victim->frames == 0); assert (victim->folio_count == 0); @@ -217,7 +222,11 @@ do_activity_dump (struct activity *activity, int indent) void activity_dump (struct activity *activity) { + ss_mutex_lock (&lru_lock); + do_activity_dump (activity, 0); + + ss_mutex_unlock (&lru_lock); } @@ -228,6 +237,8 @@ activity_consistency_check_ (const char *func, int line, /* The number of objects on the active and inactive lists plus the objects owned by the descendents must equal activity->frames. */ + assert (! ss_mutex_trylock (&lru_lock)); + int active = 0; struct object_desc *d; for (d = activity->active; d; d = d->activity_lru.next) |