Lines Matching defs:ksem
76 #include <sys/ksem.h>
92 MODULE(MODULE_CLASS_MISC, ksem, NULL);
99 static LIST_HEAD(,ksem) ksem_head __cacheline_aligned;
104 static LIST_HEAD(, ksem) *ksem_pshared_hashtab __cacheline_aligned;
323 ksem_remove_pshared(ksem_t *ksem)
326 LIST_REMOVE(ksem, ks_entry);
334 ksem_t *ksem = NULL;
338 LIST_FOREACH(ksem, &ksem_pshared_hashtab[bucket], ks_entry) {
339 if (ksem->ks_pshared_id == id) {
340 mutex_enter(&ksem->ks_lock);
341 if (ksem->ks_pshared_proc == NULL) {
346 mutex_exit(&ksem->ks_lock);
349 ksem->ks_ref++;
350 KASSERT(ksem->ks_ref != 0);
351 return ksem;
362 ksem_t *ksem = ksem_lookup_pshared_locked(id);
364 return ksem;
368 ksem_alloc_pshared_id(ksem_t *ksem)
373 KASSERT(ksem->ks_pshared_proc != NULL);
386 ksem->ks_pshared_id = try;
387 u_long bucket = KSEM_PSHARED_HASH(ksem->ks_pshared_id);
388 LIST_INSERT_HEAD(&ksem_pshared_hashtab[bucket], ksem, ks_entry);
518 ksem_release(ksem_t *ksem, int fd)
522 KASSERT(mutex_owned(&ksem->ks_lock));
524 KASSERT(ksem->ks_ref > 0);
525 if (--ksem->ks_ref == 0) {
530 destroy = (ksem->ks_flags & KS_UNLINKED) ||
531 (ksem->ks_name == NULL);
533 mutex_exit(&ksem->ks_lock);
536 ksem_free(ksem);