Lines Matching defs:semaptr
540 struct semid_ds *sembuf = v, *semaptr;
554 semaptr = &sema[ix];
555 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0 ||
556 semaptr->sem_perm._seq != IPCID_TO_SEQ(semid)) {
563 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_M)) != 0)
565 semaptr->sem_perm.cuid = kauth_cred_geteuid(cred);
566 semaptr->sem_perm.uid = kauth_cred_geteuid(cred);
567 semtot -= semaptr->sem_nsems;
568 for (i = semaptr->_sem_base - sem; i < semtot; i++)
569 sem[i] = sem[i + semaptr->sem_nsems];
572 sema[i]._sem_base > semaptr->_sem_base)
573 sema[i]._sem_base -= semaptr->sem_nsems;
575 semaptr->sem_perm.mode = 0;
581 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_M)))
584 semaptr->sem_perm.uid = sembuf->sem_perm.uid;
585 semaptr->sem_perm.gid = sembuf->sem_perm.gid;
586 semaptr->sem_perm.mode = (semaptr->sem_perm.mode & ~0777) |
588 semaptr->sem_ctime = time_second;
592 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
596 sembuf->sem_perm = semaptr->sem_perm;
598 sembuf->sem_nsems = semaptr->sem_nsems;
599 sembuf->sem_otime = semaptr->sem_otime;
600 sembuf->sem_ctime = semaptr->sem_ctime;
604 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
606 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
610 *retval = semaptr->_sem_base[semnum].semncnt;
614 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
616 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
620 *retval = semaptr->_sem_base[semnum].sempid;
624 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
626 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
630 *retval = semaptr->_sem_base[semnum].semval;
634 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
637 for (i = 0; i < semaptr->sem_nsems; i++) {
638 error = copyout(&semaptr->_sem_base[i].semval,
646 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
648 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
652 *retval = semaptr->_sem_base[semnum].semzcnt;
656 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_W)))
658 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
667 semaptr->_sem_base[semnum].semval = arg->val;
673 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_W)))
676 for (i = 0; i < semaptr->sem_nsems; i++) {
686 semaptr->_sem_base[i].semval = semval;
811 struct semid_ds *semaptr;
875 semaptr = &sema[semid];
877 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0 ||
878 semaptr->sem_perm._seq != seq) {
883 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_W))) {
889 if (sops[i].sem_num >= semaptr->sem_nsems) {
909 semptr = &semaptr->_sem_base[sopptr->sem_num];
911 SEM_PRINTF(("semop: semaptr=%p, sem_base=%p, "
913 semaptr, semaptr->_sem_base, semptr,
957 semaptr->_sem_base[sops[i].sem_num].semval -=
986 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0 ||
987 semaptr->sem_perm._seq != seq) {
996 semptr = &semaptr->_sem_base[sopptr->sem_num];
1061 semaptr->_sem_base[sops[i].sem_num].semval -=
1072 semptr = &semaptr->_sem_base[sopptr->sem_num];
1077 semaptr->sem_otime = time_second;
1181 struct semid_ds *semaptr;
1183 semaptr = &sema[semid];
1184 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0)
1185 if (semnum >= semaptr->sem_nsems)
1193 semaptr->_sem_base[semnum].semval));
1196 semaptr->_sem_base[semnum].semval < -adjval)
1197 semaptr->_sem_base[semnum].semval = 0;
1199 semaptr->_sem_base[semnum].semval += adjval;