rem: list_del( lh );
add: list_del_zero( lh );
context: static inline struct h_link *cell_lookup_and_remove(struct h_table *table,								unsigned int hash_code, unsigned int label){	struct h_entry   *entry;	struct h_link    *link;	struct list_head *lh;	entry = &(table->entrys[hash_code]);	link = 0;	lock_get( table->mutex );	/* looks into the the sessions hash table */	list_for_each( lh, &(entry->lh) ) {		if ( ((struct h_link*)lh)->label==label ) {			link = (struct h_link*)lh;			list_del( lh );			break;		}	}	lock_release( table->mutex );	return link;}