/* Get and initialize event structure corresponding to lwp event (i.e. address) * */ static afs_event_t * afs_getevent(char *event) { afs_event_t *evp, *newp = 0; int hashcode; AFS_ASSERT_GLOCK(); hashcode = afs_evhash(event); evp = afs_evhasht[hashcode]; while (evp) { if (evp->event == event) { evp->refcount++; return evp; } if (evp->refcount == 0) newp = evp; evp = evp->next; } if (!newp) { newp = (afs_event_t *) xmalloc(sizeof(afs_event_t), 5, pinned_heap); afs_evhashcnt++; newp->next = afs_evhasht[hashcode]; afs_evhasht[hashcode] = newp; newp->cond = EVENT_NULL; newp->seq = 0; } newp->event = event; newp->refcount = 1; return newp; }
/* Get and initialize event structure corresponding to lwp event (i.e. address) * */ static afs_event_t * afs_getevent(char *event) { afs_event_t *evp, *newp = 0; int hashcode; AFS_ASSERT_GLOCK(); hashcode = afs_evhash(event); evp = afs_evhasht[hashcode]; while (evp) { if (evp->event == event) { evp->refcount++; return evp; } if (evp->refcount == 0) newp = evp; evp = evp->next; } if (!newp) return NULL; newp->event = event; newp->refcount = 1; return newp; }
/* Get and initialize event structure corresponding to lwp event (i.e. address) * */ static afs_event_t * afs_getevent(char *event) { afs_event_t *evp, *oevp, *newp = 0; int hashcode; AFS_ASSERT_GLOCK(); hashcode = afs_evhash(event); evp = afs_evhasht[hashcode]; while (evp) { EVTLOCK_LOCK(evp); if (evp->event == event) { evp->refcount++; return evp; } if (evp->refcount == 0) newp = evp; EVTLOCK_UNLOCK(evp); evp = evp->next; } if (!newp) { newp = (afs_event_t *) osi_AllocSmallSpace(sizeof(afs_event_t)); afs_evhashcnt++; newp->next = afs_evhasht[hashcode]; afs_evhasht[hashcode] = newp; newp->seq = 0; EVTLOCK_INIT(newp); } EVTLOCK_LOCK(newp); newp->event = event; newp->refcount = 1; return newp; }
/* Get and initialize event structure corresponding to lwp event (i.e. address) * */ static afs_event_t * afs_getevent(char *event) { afs_event_t *evp, *newp = 0; int hashcode; AFS_ASSERT_GLOCK(); hashcode = afs_evhash(event); evp = afs_evhasht[hashcode]; while (evp) { if (evp->event == event) { evp->refcount++; return evp; } if (evp->refcount == 0) newp = evp; evp = evp->next; } if (!newp) { newp = osi_AllocSmallSpace(sizeof(afs_event_t)); afs_evhashcnt++; newp->next = afs_evhasht[hashcode]; afs_evhasht[hashcode] = newp; cv_init(&newp->cond, "event cond var", CV_DEFAULT, NULL); newp->seq = 0; } newp->event = event; newp->refcount = 1; return newp; }
static void afs_addevent(char *event) { int hashcode; afs_event_t *newp; AFS_ASSERT_GLOCK(); hashcode = afs_evhash(event); newp = kzalloc(sizeof(afs_event_t), GFP_NOFS); afs_evhashcnt++; newp->next = afs_evhasht[hashcode]; afs_evhasht[hashcode] = newp; init_waitqueue_head(&newp->cond); newp->event = &dummyV; /* Dummy address for new events */ }
static void afs_addevent(char *event) { int hashcode; afs_event_t *newp; AFS_ASSERT_GLOCK(); hashcode = afs_evhash(event); newp = osi_linux_alloc(sizeof(afs_event_t), 0); afs_evhashcnt++; newp->next = afs_evhasht[hashcode]; afs_evhasht[hashcode] = newp; init_waitqueue_head(&newp->cond); newp->seq = 0; newp->event = &dummyV; /* Dummy address for new events */ newp->refcount = 0; }