Lines Matching refs:semakptr

686 	struct semid_kernel *semakptr;
708 semakptr = &sema[semid];
709 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0 ||
710 semakptr->u.sem_perm._seq != IPCID_TO_SEQ(uap->semid)) {
715 eval = mac_sysvsem_check_semctl(cred, semakptr, cmd);
725 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_M)))
728 semakptr->u.sem_perm.cuid = kauth_cred_getuid(cred);
729 semakptr->u.sem_perm.uid = kauth_cred_getuid(cred);
730 semtot -= semakptr->u.sem_nsems;
731 for (i = semakptr->u.sem_base - sem_pool; i < semtot; i++)
732 sem_pool[i] = sem_pool[i + semakptr->u.sem_nsems];
735 sema[i].u.sem_base > semakptr->u.sem_base)
736 sema[i].u.sem_base -= semakptr->u.sem_nsems;
738 semakptr->u.sem_perm.mode = 0;
740 mac_sysvsem_label_recycle(semakptr);
743 wakeup((caddr_t)semakptr);
747 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_M)))
764 semakptr->u.sem_perm.uid = sbuf.sem_perm.uid;
765 semakptr->u.sem_perm.gid = sbuf.sem_perm.gid;
766 semakptr->u.sem_perm.mode = (semakptr->u.sem_perm.mode &
768 semakptr->u.sem_ctime = sysv_semtime();
772 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R)))
777 semid_ds_kernelto64(&semakptr->u, &semid_ds64);
781 semid_ds_kernelto32(&semakptr->u, &semid_ds32);
787 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R)))
789 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) {
793 rval = semakptr->u.sem_base[semnum].semncnt;
797 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R)))
799 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) {
803 rval = semakptr->u.sem_base[semnum].sempid;
807 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R)))
809 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) {
813 rval = semakptr->u.sem_base[semnum].semval;
817 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R)))
820 for (i = 0; i < semakptr->u.sem_nsems; i++) {
822 eval = copyout((caddr_t)&semakptr->u.sem_base[i].semval,
831 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_R)))
833 if (semnum < 0 || semnum >= semakptr->u.sem_nsems) {
837 rval = semakptr->u.sem_base[semnum].semzcnt;
841 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_W)))
848 if (semnum < 0 || semnum >= semakptr->u.sem_nsems)
861 semakptr->u.sem_base[semnum].semval = CAST_DOWN_EXPLICIT(int,user_arg.buf);
862 semakptr->u.sem_base[semnum].sempid = p->p_pid;
865 wakeup((caddr_t)semakptr);
869 if ((eval = ipcperm(cred, &semakptr->u.sem_perm, IPC_W)))
872 for (i = 0; i < semakptr->u.sem_nsems; i++) {
875 (caddr_t)&semakptr->u.sem_base[i].semval,
879 semakptr->u.sem_base[i].sempid = p->p_pid;
883 wakeup((caddr_t)semakptr);
1048 register struct semid_kernel *semakptr;
1070 semakptr = &sema[semid];
1071 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0) {
1075 if (semakptr->u.sem_perm._seq != IPCID_TO_SEQ(uap->semid)) {
1080 if ((eval = ipcperm(kauth_cred_get(), &semakptr->u.sem_perm, IPC_W))) {
1118 eval = mac_sysvsem_check_semop(kauth_cred_get(), semakptr, j);
1140 if (sopptr->sem_num >= semakptr->u.sem_nsems) {
1145 semptr = &semakptr->u.sem_base[sopptr->sem_num];
1148 printf("semop: semakptr=%x, sem_base=%x, semptr=%x, sem[%d]=%d : op=%d, flag=%s\n",
1149 semakptr, semakptr->u.sem_base, semptr,
1197 semakptr->u.sem_base[sops[j].sem_num].semval -=
1222 eval = msleep((caddr_t)semakptr, &sysv_sem_subsys_mutex , (PZERO - 4) | PCATCH,
1247 semakptr = &sema[semid]; /* sema may have been reallocated */
1248 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0 ||
1249 semakptr->u.sem_perm._seq != IPCID_TO_SEQ(uap->semid) ||
1250 sopptr->sem_num >= semakptr->u.sem_nsems) {
1275 semptr = &semakptr->u.sem_base[sopptr->sem_num];
1329 semakptr->u.sem_base[sops[j].sem_num].semval -=
1342 semptr = &semakptr->u.sem_base[sopptr->sem_num];
1345 semakptr->u.sem_otime = sysv_semtime();
1351 sem_wakeup((caddr_t)semakptr);
1353 wakeup((caddr_t)semakptr);
1357 wakeup((caddr_t)semakptr);
1424 struct semid_kernel *semakptr;
1431 semakptr = &sema[semid];
1432 if ((semakptr->u.sem_perm.mode & SEM_ALLOC) == 0)
1434 if (semnum >= semakptr->u.sem_nsems)
1443 semakptr->u.sem_base[semnum].semval);
1447 if (semakptr->u.sem_base[semnum].semval < -adjval)
1448 semakptr->u.sem_base[semnum].semval = 0;
1450 semakptr->u.sem_base[semnum].semval +=
1453 semakptr->u.sem_base[semnum].semval += adjval;
1455 /* Maybe we should build a list of semakptr's to wake
1464 sem_wakeup((caddr_t)semakptr);
1466 wakeup((caddr_t)semakptr);