Lines Matching refs:sem
330 struct ntsync_obj_sem *sem; in ntsync_sem_is_signaled() local
334 sem = OBJ_TO_SEM(obj); in ntsync_sem_is_signaled()
335 return (sem->a.count != 0); in ntsync_sem_is_signaled()
342 struct ntsync_obj_sem *sem; in ntsync_sem_consume() local
346 sem = OBJ_TO_SEM(obj); in ntsync_sem_consume()
347 MPASS(sem->a.count != 0); in ntsync_sem_consume()
348 sem->a.count--; in ntsync_sem_consume()
355 struct ntsync_obj_sem *sem; in ntsync_sem_prepare() local
359 sem = OBJ_TO_SEM(obj); in ntsync_sem_prepare()
360 if (sem->a.count == 0) in ntsync_sem_prepare()
362 sem->a1 = sem->a; in ntsync_sem_prepare()
363 sem->a1.count--; in ntsync_sem_prepare()
371 struct ntsync_obj_sem *sem; in ntsync_sem_commit() local
375 sem = OBJ_TO_SEM(obj); in ntsync_sem_commit()
376 sem->a = sem->a1; in ntsync_sem_commit()
388 struct ntsync_obj_sem *sem; in ntsync_sem_close() local
390 sem = fp->f_data; in ntsync_sem_close()
391 ntsync_close_obj(&sem->obj, td); in ntsync_sem_close()
392 free(sem, M_NTSYNC); in ntsync_sem_close()
400 struct ntsync_obj_sem *sem; in ntsync_sem_release() local
408 sem = OBJ_TO_SEM(obj); in ntsync_sem_release()
413 if (sem->a.count + *val < sem->a.count || in ntsync_sem_release()
414 sem->a.count + *val > sem->a.max) { in ntsync_sem_release()
417 prev = sem->a.count; in ntsync_sem_release()
418 sem->a.count += *val; in ntsync_sem_release()
419 if (sem->a.count != 0) in ntsync_sem_release()
431 struct ntsync_obj_sem *sem; in ntsync_sem_read() local
437 sem = OBJ_TO_SEM(obj); in ntsync_sem_read()
440 *a = sem->a; in ntsync_sem_read()
469 struct ntsync_obj_sem *sem; in ntsync_sem_stat() local
474 sem = OBJ_TO_SEM(obj); in ntsync_sem_stat()
479 sbp->st_size = sem->a.max; in ntsync_sem_stat()
480 sbp->st_nlink = sem->a.count; in ntsync_sem_stat()
490 struct ntsync_obj_sem *sem; in ntsync_sem_fill_kinfo() local
495 sem = OBJ_TO_SEM(obj); in ntsync_sem_fill_kinfo()
500 kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_sem.count = sem->a.count; in ntsync_sem_fill_kinfo()
501 kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_sem.max = sem->a.max; in ntsync_sem_fill_kinfo()
525 struct ntsync_obj_sem *sem; in ntsync_create_sem() local
531 sem = malloc(sizeof(*sem), M_NTSYNC, M_WAITOK | M_ZERO); in ntsync_create_sem()
532 sem->obj.type = NTSYNC_OBJ_SEM; in ntsync_create_sem()
533 sem->obj.is_signaled = ntsync_sem_is_signaled; in ntsync_create_sem()
534 sem->obj.consume = ntsync_sem_consume; in ntsync_create_sem()
535 sem->obj.prepare = ntsync_sem_prepare; in ntsync_create_sem()
536 sem->obj.commit = ntsync_sem_commit; in ntsync_create_sem()
537 sem->obj.post_commit = ntsync_sem_post_commit; in ntsync_create_sem()
538 sem->a = *args; in ntsync_create_sem()
540 error = ntsync_create_obj(&sem->obj, &ntsync_sem_fops, priv, td); in ntsync_create_sem()
542 free(sem, M_NTSYNC); in ntsync_create_sem()