Lines Matching refs:q

208 	struct sem_queue *q, *tq;  in unmerge_queues()  local
218 list_for_each_entry_safe(q, tq, &sma->pending_alter, list) { in unmerge_queues()
220 curr = &sma->sem_base[q->sops[0].sem_num]; in unmerge_queues()
222 list_add_tail(&q->list, &curr->pending_alter); in unmerge_queues()
613 static int perform_atomic_semop(struct sem_array *sma, struct sem_queue *q) in perform_atomic_semop() argument
621 sops = q->sops; in perform_atomic_semop()
622 nsops = q->nsops; in perform_atomic_semop()
623 un = q->undo; in perform_atomic_semop()
651 pid = q->pid; in perform_atomic_semop()
664 q->blocking = sop; in perform_atomic_semop()
691 struct sem_queue *q, int error) in wake_up_sem_queue_prepare() argument
700 q->status = IN_WAKEUP; in wake_up_sem_queue_prepare()
701 q->pid = error; in wake_up_sem_queue_prepare()
703 list_add_tail(&q->list, pt); in wake_up_sem_queue_prepare()
717 struct sem_queue *q, *t; in wake_up_sem_queue_do() local
721 list_for_each_entry_safe(q, t, pt, list) { in wake_up_sem_queue_do()
722 wake_up_process(q->sleeper); in wake_up_sem_queue_do()
725 q->status = q->pid; in wake_up_sem_queue_do()
731 static void unlink_queue(struct sem_array *sma, struct sem_queue *q) in unlink_queue() argument
733 list_del(&q->list); in unlink_queue()
734 if (q->nsops > 1) in unlink_queue()
748 static int check_restart(struct sem_array *sma, struct sem_queue *q) in check_restart() argument
755 if (q->nsops > 1) in check_restart()
789 struct sem_queue *q; in wake_const_ops() local
803 q = container_of(walk, struct sem_queue, list); in wake_const_ops()
806 error = perform_atomic_semop(sma, q); in wake_const_ops()
811 unlink_queue(sma, q); in wake_const_ops()
813 wake_up_sem_queue_prepare(pt, q, error); in wake_const_ops()
890 struct sem_queue *q; in update_queue() local
905 q = container_of(walk, struct sem_queue, list); in update_queue()
918 error = perform_atomic_semop(sma, q); in update_queue()
924 unlink_queue(sma, q); in update_queue()
930 do_smart_wakeup_zero(sma, q->sops, q->nsops, pt); in update_queue()
931 restart = check_restart(sma, q); in update_queue()
934 wake_up_sem_queue_prepare(pt, q, error); in update_queue()
1016 static int check_qop(struct sem_array *sma, int semnum, struct sem_queue *q, in check_qop() argument
1019 struct sembuf *sop = q->blocking; in check_qop()
1054 struct sem_queue *q; in count_semcnt() local
1064 list_for_each_entry(q, l, list) { in count_semcnt()
1072 list_for_each_entry(q, &sma->pending_alter, list) { in count_semcnt()
1073 semcnt += check_qop(sma, semnum, q, count_zero); in count_semcnt()
1076 list_for_each_entry(q, &sma->pending_const, list) { in count_semcnt()
1077 semcnt += check_qop(sma, semnum, q, count_zero); in count_semcnt()
1090 struct sem_queue *q, *tq; in freeary() local
1108 list_for_each_entry_safe(q, tq, &sma->pending_const, list) { in freeary()
1109 unlink_queue(sma, q); in freeary()
1110 wake_up_sem_queue_prepare(&tasks, q, -EIDRM); in freeary()
1113 list_for_each_entry_safe(q, tq, &sma->pending_alter, list) { in freeary()
1114 unlink_queue(sma, q); in freeary()
1115 wake_up_sem_queue_prepare(&tasks, q, -EIDRM); in freeary()
1119 list_for_each_entry_safe(q, tq, &sem->pending_const, list) { in freeary()
1120 unlink_queue(sma, q); in freeary()
1121 wake_up_sem_queue_prepare(&tasks, q, -EIDRM); in freeary()
1123 list_for_each_entry_safe(q, tq, &sem->pending_alter, list) { in freeary()
1124 unlink_queue(sma, q); in freeary()
1125 wake_up_sem_queue_prepare(&tasks, q, -EIDRM); in freeary()
1779 static int get_queue_result(struct sem_queue *q) in get_queue_result() argument
1783 error = q->status; in get_queue_result()
1786 error = q->status; in get_queue_result()