Skip to content

Commit

Permalink
(__nscd_get_map_ref): Drop volatile from last parameter. (__nscd_drop…
Browse files Browse the repository at this point in the history
…_map_ref): Change second parameter to be a referenc to a variable. Update variable when cycle count changed.
  • Loading branch information
Ulrich Drepper committed Sep 30, 2004
1 parent 6037b75 commit 085f2dd
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions nscd/nscd-client.h
Original file line number Diff line number Diff line change
Expand Up @@ -276,20 +276,24 @@ extern int __nscd_open_socket (const char *key, size_t keylen,
extern struct mapped_database *__nscd_get_map_ref (request_type type,
const char *name,
struct locked_map_ptr *mapptr,
volatile int *gc_cyclep);
int *gc_cyclep);

/* Unmap database. */
extern void __nscd_unmap (struct mapped_database *mapped);

/* Drop reference of mapping. */
static inline int __nscd_drop_map_ref (struct mapped_database *map,
int gc_cycle)
int *gc_cycle)
{
if (map != NO_MAPPING)
{
if (__builtin_expect (map->head->gc_cycle != gc_cycle, 0))
/* We might have read inconsistent data. */
return -1;
int now_cycle = map->head->gc_cycle;
if (__builtin_expect (now_cycle != *gc_cycle, 0))
{
/* We might have read inconsistent data. */
*gc_cycle = now_cycle;
return -1;
}

if (atomic_decrement_val (&map->counter) == 0)
__nscd_unmap (map);
Expand Down

0 comments on commit 085f2dd

Please sign in to comment.