+/*
+ * check_qop: Test how often a queued operation sleeps on the semaphore semnum
+ */
+static int check_qop(struct sem_array *sma, int semnum, struct sem_queue *q,
+ bool count_zero)
+{
+ struct sembuf *sops = q->sops;
+ int nsops = q->nsops;
+ int i, semcnt;
+
+ semcnt = 0;
+
+ for (i = 0; i < nsops; i++) {
+ if (sops[i].sem_num != semnum)
+ continue;
+ if (sops[i].sem_flg & IPC_NOWAIT)
+ continue;
+ if (count_zero && sops[i].sem_op == 0)
+ semcnt++;
+ if (!count_zero && sops[i].sem_op < 0)
+ semcnt++;
+ }
+ return semcnt;
+}
+