Lines Matching refs:semakptr
351 struct semid_kernel *semakptr = sema_get_by_id(i); in grow_sem_pool() local
353 if (semakptr->u.sem_perm.mode & SEM_ALLOC) { /* ID in use */ in grow_sem_pool()
354 semakptr->u.sem_base = new_sem_pool + in grow_sem_pool()
355 (semakptr->u.sem_base - sem_pool); in grow_sem_pool()
587 struct semid_kernel *semakptr; in semctl() local
609 semakptr = sema_get_by_id(semid); in semctl()
610 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0 || in semctl()
611 semakptr->u.sem_perm._seq != IPCID_TO_SEQ(uap->semid)) { in semctl()
616 eval = mac_sysvsem_check_semctl(cred, semakptr, cmd); in semctl()
627 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_M))) { in semctl()
631 semakptr->u.sem_perm.cuid = kauth_cred_getuid(cred); in semctl()
632 semakptr->u.sem_perm.uid = kauth_cred_getuid(cred); in semctl()
633 semtot -= semakptr->u.sem_nsems; in semctl()
634 for (i = semakptr->u.sem_base - sem_pool; i < semtot; i++) { in semctl()
635 sem_pool[i] = sem_pool[i + semakptr->u.sem_nsems]; in semctl()
641 semakptr2->u.sem_base > semakptr->u.sem_base) { in semctl()
642 semakptr2->u.sem_base -= semakptr->u.sem_nsems; in semctl()
645 semakptr->u.sem_perm.mode = 0; in semctl()
647 mac_sysvsem_label_recycle(semakptr); in semctl()
650 wakeup((caddr_t)semakptr); in semctl()
654 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_M))) { in semctl()
672 semakptr->u.sem_perm.uid = sbuf.sem_perm.uid; in semctl()
673 semakptr->u.sem_perm.gid = sbuf.sem_perm.gid; in semctl()
674 semakptr->u.sem_perm.mode = (semakptr->u.sem_perm.mode & in semctl()
676 semakptr->u.sem_ctime = sysv_semtime(); in semctl()
680 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R))) { in semctl()
687 semid_ds_kernelto64(&semakptr->u, &semid_ds64); in semctl()
692 semid_ds_kernelto32(&semakptr->u, &semid_ds32); in semctl()
698 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R))) { in semctl()
701 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) { in semctl()
705 rval = semakptr->u.sem_base[semnum].semncnt; in semctl()
709 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R))) { in semctl()
712 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) { in semctl()
716 rval = semakptr->u.sem_base[semnum].sempid; in semctl()
720 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R))) { in semctl()
723 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) { in semctl()
727 rval = semakptr->u.sem_base[semnum].semval; in semctl()
731 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R))) { in semctl()
735 for (i = 0; i < semakptr->u.sem_nsems; i++) { in semctl()
737 eval = copyout((caddr_t)&semakptr->u.sem_base[i].semval, in semctl()
747 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R))) { in semctl()
750 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) { in semctl()
754 rval = semakptr->u.sem_base[semnum].semzcnt; in semctl()
758 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_W))) { in semctl()
764 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) { in semctl()
790 semakptr->u.sem_base[semnum].semval = newsemval; in semctl()
791 semakptr->u.sem_base[semnum].sempid = proc_getpid(p); in semctl()
794 wakeup((caddr_t)semakptr); in semctl()
798 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_W))) { in semctl()
802 for (i = 0; i < semakptr->u.sem_nsems; i++) { in semctl()
805 (caddr_t)&semakptr->u.sem_base[i].semval, in semctl()
810 semakptr->u.sem_base[i].sempid = proc_getpid(p); in semctl()
814 wakeup((caddr_t)semakptr); in semctl()
838 struct semid_kernel *semakptr; in semget() local
854 semakptr = sema_get_by_id(semid); in semget()
855 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) && in semget()
856 semakptr->u.sem_perm._key == key) { in semget()
864 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, in semget()
868 if (nsems < 0 || semakptr->u.sem_nsems < nsems) { in semget()
883 eval = mac_sysvsem_check_semget(cred, semakptr); in semget()
929 semakptr = sema_get_by_id(semid); in semget()
930 semakptr->u.sem_perm._key = key; in semget()
931 semakptr->u.sem_perm.cuid = kauth_cred_getuid(cred); in semget()
932 semakptr->u.sem_perm.uid = kauth_cred_getuid(cred); in semget()
933 semakptr->u.sem_perm.cgid = kauth_cred_getgid(cred); in semget()
934 semakptr->u.sem_perm.gid = kauth_cred_getgid(cred); in semget()
935 semakptr->u.sem_perm.mode = (semflg & 0777) | SEM_ALLOC; in semget()
936 semakptr->u.sem_perm._seq = in semget()
937 (semakptr->u.sem_perm._seq + 1) & 0x7fff; in semget()
938 semakptr->u.sem_nsems = nsems; in semget()
939 semakptr->u.sem_otime = 0; in semget()
940 semakptr->u.sem_ctime = sysv_semtime(); in semget()
941 semakptr->u.sem_base = &sem_pool[semtot]; in semget()
943 bzero(semakptr->u.sem_base, in semget()
944 sizeof(semakptr->u.sem_base[0]) * nsems); in semget()
946 mac_sysvsem_label_associate(cred, semakptr); in semget()
949 printf("sembase = 0x%x, next = 0x%x\n", semakptr->u.sem_base, in semget()
961 *retval = IXSEQ_TO_IPCID(semid, semakptr->u.sem_perm); in semget()
979 struct semid_kernel *semakptr; in semop() local
1001 semakptr = sema_get_by_id(semid); in semop()
1002 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0) { in semop()
1006 if (semakptr->u.sem_perm._seq != IPCID_TO_SEQ(uap->semid)) { in semop()
1011 if ((eval = ipcperm(kauth_cred_get(), &semakptr->u.sem_perm, IPC_W))) { in semop()
1050 eval = mac_sysvsem_check_semop(kauth_cred_get(), semakptr, j); in semop()
1073 if (sopptr->sem_num >= semakptr->u.sem_nsems) { in semop()
1078 semptr = &semakptr->u.sem_base[sopptr->sem_num]; in semop()
1082 semakptr, semakptr->u.sem_base, semptr, in semop()
1135 semakptr->u.sem_base[sops[j].sem_num].semval -= in semop()
1162 eval = msleep((caddr_t)semakptr, &sysv_sem_subsys_mutex, (PZERO - 4) | PCATCH, in semop()
1187 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0 || in semop()
1188 semakptr->u.sem_perm._seq != IPCID_TO_SEQ(uap->semid) || in semop()
1189 sopptr->sem_num >= semakptr->u.sem_nsems) { in semop()
1214 semptr = &semakptr->u.sem_base[sopptr->sem_num]; in semop()
1275 semakptr->u.sem_base[sops[j].sem_num].semval -= in semop()
1289 semptr = &semakptr->u.sem_base[sopptr->sem_num]; in semop()
1292 semakptr->u.sem_otime = sysv_semtime(); in semop()
1298 sem_wakeup((caddr_t)semakptr); in semop()
1300 wakeup((caddr_t)semakptr); in semop()
1304 wakeup((caddr_t)semakptr); in semop()
1372 struct semid_kernel *semakptr; in semexit() local
1379 semakptr = sema_get_by_id(semid); in semexit()
1380 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0) { in semexit()
1383 if (semnum >= semakptr->u.sem_nsems) { in semexit()
1393 semakptr->u.sem_base[semnum].semval); in semexit()
1397 if (semakptr->u.sem_base[semnum].semval < -adjval) { in semexit()
1398 semakptr->u.sem_base[semnum].semval = 0; in semexit()
1400 semakptr->u.sem_base[semnum].semval += in semexit()
1404 semakptr->u.sem_base[semnum].semval += adjval; in semexit()
1413 sem_wakeup((caddr_t)semakptr); in semexit()
1415 wakeup((caddr_t)semakptr); in semexit()