diff options
author | neal <neal> | 2007-12-11 23:35:03 +0000 |
---|---|---|
committer | neal <neal> | 2007-12-11 23:35:03 +0000 |
commit | dbcabeac4e8233e2bae5d8bdc89a96c051d8d7b8 (patch) | |
tree | 67a5d65867ac94a337ae2e9f4658e185cac82b63 | |
parent | b1adfc140c8106e72b1d5320cc0c9408a4123d79 (diff) |
2007-12-12 Neal H. Walfield <neal@gnu.org>
* activity.h: Update comment.
* activity.c (activity_consistency_check_): Don't assert that
LRU_LOCK is held.
* object.h (object_disown_simple): Don't call
activity_consistency_check here.
(object_desc_disown_): Likewise.
(object_desc_claim_): Likewise.
(object_desc_claim_): Likewise.
* object.c (memory_object_alloc): Call activity_consistency_check.
(memory_object_destroy): Likewise.
(object_find_soft): Likewise.
(folio_free): Likewise.
(folio_object_alloc): Likewise.
-rw-r--r-- | viengoos/ChangeLog | 16 | ||||
-rw-r--r-- | viengoos/activity.c | 2 | ||||
-rw-r--r-- | viengoos/activity.h | 3 | ||||
-rw-r--r-- | viengoos/object.c | 15 | ||||
-rw-r--r-- | viengoos/object.h | 12 |
5 files changed, 33 insertions, 15 deletions
diff --git a/viengoos/ChangeLog b/viengoos/ChangeLog index cd166b8..81b2f5a 100644 --- a/viengoos/ChangeLog +++ b/viengoos/ChangeLog @@ -1,3 +1,19 @@ +2007-12-12 Neal H. Walfield <neal@gnu.org> + + * activity.h: Update comment. + * activity.c (activity_consistency_check_): Don't assert that + LRU_LOCK is held. + * object.h (object_disown_simple): Don't call + activity_consistency_check here. + (object_desc_disown_): Likewise. + (object_desc_claim_): Likewise. + (object_desc_claim_): Likewise. + * object.c (memory_object_alloc): Call activity_consistency_check. + (memory_object_destroy): Likewise. + (object_find_soft): Likewise. + (folio_free): Likewise. + (folio_object_alloc): Likewise. + 2007-12-11 Neal H. Walfield <neal@gnu.org> * as.h (as_compute_gbits_cappage): Remove debugging code. diff --git a/viengoos/activity.c b/viengoos/activity.c index ff9b54c..7154e38 100644 --- a/viengoos/activity.c +++ b/viengoos/activity.c @@ -233,8 +233,6 @@ 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) diff --git a/viengoos/activity.h b/viengoos/activity.h index fefeb1f..7b82322 100644 --- a/viengoos/activity.h +++ b/viengoos/activity.h @@ -156,7 +156,8 @@ activity_charge (struct activity *activity, int objects) extern void activity_dump (struct activity *activity); -/* Perform a consistency checl on the activity ACTIVITY. */ +/* Perform a consistency checl on the activity ACTIVITY. Will take + LRU_LOCK. */ extern void activity_consistency_check_ (const char *func, int line, struct activity *activity); #define activity_consistency_check(a) \ diff --git a/viengoos/object.c b/viengoos/object.c index 4ecd40c..b9f8ab0 100644 --- a/viengoos/object.c +++ b/viengoos/object.c @@ -140,6 +140,9 @@ memory_object_alloc (struct activity *activity, ss_mutex_unlock (&lru_lock); + if (activity) + activity_consistency_check (activity); + return object; } @@ -159,6 +162,8 @@ memory_object_destroy (struct activity *activity, struct object *object) struct cap cap = object_desc_to_cap (odesc); cap_shootdown (activity, &cap); + struct activity *owner = odesc->activity; + ss_mutex_lock (&lru_lock); object_desc_disown (odesc); @@ -166,6 +171,8 @@ memory_object_destroy (struct activity *activity, struct object *object) object_global_lru_unlink (odesc); ss_mutex_unlock (&lru_lock); + activity_consistency_check (owner); + if (odesc->type == cap_activity_control) { struct activity *a = (struct activity *) object; @@ -207,6 +214,8 @@ object_find_soft (struct activity *activity, oid_t oid) ss_mutex_lock (&lru_lock); object_desc_claim (activity, odesc); ss_mutex_unlock (&lru_lock); + + activity_consistency_check (activity); } return object; @@ -432,10 +441,14 @@ folio_free (struct activity *activity, struct folio *folio) folio->prev.type = cap_void; /* Disown the frame. */ + owner = fdesc->activity; + ss_mutex_lock (&lru_lock); object_disown ((struct object *) folio); ss_mutex_unlock (&lru_lock); + activity_consistency_check (owner); + /* And free the folio. */ folio->folio_version = fdesc->version ++; bit_dealloc (folios, fdesc->oid / (FOLIO_OBJECTS + 1)); @@ -511,6 +524,8 @@ folio_object_alloc (struct activity *activity, ss_mutex_lock (&lru_lock); object_desc_claim (activity, odesc); ss_mutex_unlock (&lru_lock); + + activity_consistency_check (activity); } odesc->type = type; diff --git a/viengoos/object.h b/viengoos/object.h index 4c1aecc..fb8c93c 100644 --- a/viengoos/object.h +++ b/viengoos/object.h @@ -323,22 +323,14 @@ object_desc_disown_simple (struct object_desc *desc) static inline void object_disown_simple (struct object *object) { - assert (! ss_mutex_trylock (&lru_lock)); - object_desc_disown_simple (object_to_object_desc (object)); } static inline void object_desc_disown_ (struct object_desc *desc) { - struct activity *activity = desc->activity; - - activity_consistency_check (activity); - activity_charge (desc->activity, -1); object_desc_disown_simple (desc); - - activity_consistency_check (activity); } #define object_desc_disown(d) \ ({ debug (5, "object_desc_disown: %p (%d)", \ @@ -364,8 +356,6 @@ object_disown_ (struct object *object) static inline void object_desc_claim_ (struct activity *activity, struct object_desc *desc) { - activity_consistency_check (activity); - if (desc->activity == activity) return; @@ -377,8 +367,6 @@ object_desc_claim_ (struct activity *activity, struct object_desc *desc) activity_charge (activity, 1); object_activity_lru_unlink (desc); object_activity_lru_link (&activity->active, desc); - - activity_consistency_check (desc->activity); } #define object_desc_claim(a, o) \ ({ \ |