diff options
author | Ulrich Drepper <drepper@redhat.com> | 2008-05-18 03:57:19 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2008-05-18 03:57:19 +0000 |
commit | 8884028c8e09ebcfb61634f212b62349606784aa (patch) | |
tree | 8121c35a6b5b766dd7bf656b12efdfe29bb11586 | |
parent | b21595750e4feda0c0478579070d98f41b4f845f (diff) | |
download | glibc-8884028c8e09ebcfb61634f212b62349606784aa.tar glibc-8884028c8e09ebcfb61634f212b62349606784aa.tar.gz glibc-8884028c8e09ebcfb61634f212b62349606784aa.tar.bz2 glibc-8884028c8e09ebcfb61634f212b62349606784aa.zip |
* nscd/nscd.h (mem_in_flight): Replace blockaddr field with
blockoff of type nscd_ssize_t.
* nscd/mem.c (gc): Simplify markrange call for on-flight blocks.
(mempoll_alloc): Record block offset and not address.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | nscd/mem.c | 22 | ||||
-rw-r--r-- | nscd/nscd.h | 2 |
3 files changed, 18 insertions, 11 deletions
@@ -1,5 +1,10 @@ 2008-05-17 Ulrich Drepper <drepper@redhat.com> + * nscd/nscd.h (mem_in_flight): Replace blockaddr field with + blockoff of type nscd_ssize_t. + * nscd/mem.c (gc): Simplify markrange call for on-flight blocks. + (mempoll_alloc): Record block offset and not address. + * nscd/mem.c (gc): Fix test for stack overuse. * nscd/aicache.c (addhstaiX): Fix a few small problems, cleanups, diff --git a/nscd/mem.c b/nscd/mem.c index 21f2ae821d..903f91f18b 100644 --- a/nscd/mem.c +++ b/nscd/mem.c @@ -212,11 +212,12 @@ gc (struct database_dyn *db) for (enum in_flight idx = IDX_result_data; idx < IDX_last && mrunp->block[idx].dbidx == db - dbs; ++idx) { - assert ((char *) mrunp->block[idx].blockaddr > db->data); - assert ((char *) mrunp->block[idx].blockaddr - + mrunp->block[0].blocklen <= db->data + db->memsize); - markrange (mark, (char *) mrunp->block[idx].blockaddr - db->data, - mrunp->block[idx].blocklen); + assert (mrunp->block[idx].blockoff >= 0); + assert (mrunp->block[idx].blocklen < db->memsize); + assert (mrunp->block[idx].blockoff + + mrunp->block[0].blocklen <= db->memsize); + markrange (mark, mrunp->block[idx].blockoff, + mrunp->block[idx].blocklen); } mrunp = mrunp->next; @@ -589,15 +590,16 @@ mempool_alloc (struct database_dyn *db, size_t len, enum in_flight idx) } else { - db->head->first_free += len; - - db->last_alloc_failed = false; - /* Remember that we have allocated this memory. */ assert (idx >= 0 && idx < IDX_last); mem_in_flight.block[idx].dbidx = db - dbs; mem_in_flight.block[idx].blocklen = len; - mem_in_flight.block[idx].blockaddr = res; + mem_in_flight.block[idx].blockoff = db->head->first_free; + + db->head->first_free += len; + + db->last_alloc_failed = false; + } pthread_mutex_unlock (&db->memlock); diff --git a/nscd/nscd.h b/nscd/nscd.h index 66813e7480..b024017fd4 100644 --- a/nscd/nscd.h +++ b/nscd/nscd.h @@ -197,7 +197,7 @@ extern __thread struct mem_in_flight { int dbidx; nscd_ssize_t blocklen; - void *blockaddr; + nscd_ssize_t blockoff; } block[IDX_last]; struct mem_in_flight *next; |