Lines Matching refs:sem
48 } sem; member
60 static int post_sem_state(struct ntsync_obj *sem, __u32 count) in post_sem_state() argument
64 lockdep_assert_held(&sem->lock); in post_sem_state()
66 if (check_add_overflow(sem->u.sem.count, count, &sum) || in post_sem_state()
67 sum > sem->u.sem.max) in post_sem_state()
70 sem->u.sem.count = sum; in post_sem_state()
74 static int ntsync_sem_post(struct ntsync_obj *sem, void __user *argp) in ntsync_sem_post() argument
84 if (sem->type != NTSYNC_TYPE_SEM) in ntsync_sem_post()
87 spin_lock(&sem->lock); in ntsync_sem_post()
89 prev_count = sem->u.sem.count; in ntsync_sem_post()
90 ret = post_sem_state(sem, args); in ntsync_sem_post()
92 spin_unlock(&sem->lock); in ntsync_sem_post()
170 struct ntsync_obj *sem; in ntsync_create_sem() local
179 sem = ntsync_alloc_obj(dev, NTSYNC_TYPE_SEM); in ntsync_create_sem()
180 if (!sem) in ntsync_create_sem()
182 sem->u.sem.count = args.count; in ntsync_create_sem()
183 sem->u.sem.max = args.max; in ntsync_create_sem()
184 fd = ntsync_obj_get_fd(sem); in ntsync_create_sem()
186 kfree(sem); in ntsync_create_sem()
190 return put_user(fd, &user_args->sem); in ntsync_create_sem()