/** * ds_queue_pop_entry - pop entry from end of queue * @q: queue * * Return NULL if queue is empty. */ struct ds_list_entry *ds_queue_pop_entry(struct ds_queue *q) { struct ds_list_entry *last = ds_list_last(&q->q); if (!last) return NULL; ds_list_remove_entry(&q->q, last); return last; }
void *ds_hash_last(ds_hash_t *t, void *e) { int bucket; ds_list_t *chain; CODA_ASSERT(DS_HASH_VALID(t)); bucket = (t->hfn(e)) % t->nbuckets; chain = (t->buckets)[bucket]; return (ds_list_last(chain)); }