Lines Matching defs:sop
106 struct list_head pending_alter; /* pending single-sop operations */
108 struct list_head pending_const; /* pending single-sop operations */
308 * It is necessary to achieve FIFO ordering for the pending single-sop
653 struct sembuf *sop;
662 for (sop = sops; sop < sops + nsops; sop++) {
663 int idx = array_index_nospec(sop->sem_num, sma->sem_nsems);
665 sem_op = sop->sem_op;
680 if (sop->sem_flg & SEM_UNDO) {
681 int undo = un->semadj[sop->sem_num] - sem_op;
686 un->semadj[sop->sem_num] = undo;
692 sop--;
694 while (sop >= sops) {
695 ipc_update_pid(&sma->sems[sop->sem_num].sempid, pid);
696 sop--;
706 q->blocking = sop;
708 if (sop->sem_flg & IPC_NOWAIT) {
715 sop--;
716 while (sop >= sops) {
717 sem_op = sop->sem_op;
718 sma->sems[sop->sem_num].semval -= sem_op;
719 if (sop->sem_flg & SEM_UNDO) {
720 un->semadj[sop->sem_num] += sem_op;
722 sop--;
731 struct sembuf *sop;
750 for (sop = sops; sop < sops + nsops; sop++) {
751 int idx = array_index_nospec(sop->sem_num, sma->sem_nsems);
754 sem_op = sop->sem_op;
770 if (sop->sem_flg & SEM_UNDO) {
771 int undo = un->semadj[sop->sem_num] - sem_op;
780 for (sop = sops; sop < sops + nsops; sop++) {
781 curr = &sma->sems[sop->sem_num];
782 sem_op = sop->sem_op;
785 if (sop->sem_flg & SEM_UNDO) {
786 int undo = un->semadj[sop->sem_num] - sem_op;
788 un->semadj[sop->sem_num] = undo;
797 q->blocking = sop;
798 return sop->sem_flg & IPC_NOWAIT ? -EAGAIN : 1;
984 /* If we are scanning the single sop, per-semaphore list of
1095 struct sembuf *sop = q->blocking;
1108 if (sop->sem_num != semnum) {
1112 if (count_zero && sop->sem_op == 0) {
1115 if (!count_zero && sop->sem_op < 0) {
2034 struct sembuf *sops = fast_sops, *sop;
2071 for (sop = sops; sop < sops + nsops; sop++) {
2072 unsigned long mask = 1ULL << ((sop->sem_num) % BITS_PER_LONG);
2074 if (sop->sem_num >= max) {
2075 max = sop->sem_num;
2077 if (sop->sem_flg & SEM_UNDO) {
2089 if (sop->sem_op != 0) {