Lines Matching defs:semaptr
541 struct semid_ds *sembuf = v, *semaptr;
555 semaptr = &sema[ix];
556 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0 ||
557 semaptr->sem_perm._seq != IPCID_TO_SEQ(semid)) {
564 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_M)) != 0)
566 semaptr->sem_perm.cuid = kauth_cred_geteuid(cred);
567 semaptr->sem_perm.uid = kauth_cred_geteuid(cred);
568 semtot -= semaptr->sem_nsems;
569 for (i = semaptr->_sem_base - sem; i < semtot; i++)
570 sem[i] = sem[i + semaptr->sem_nsems];
573 sema[i]._sem_base > semaptr->_sem_base)
574 sema[i]._sem_base -= semaptr->sem_nsems;
576 semaptr->sem_perm.mode = 0;
582 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_M)))
585 semaptr->sem_perm.uid = sembuf->sem_perm.uid;
586 semaptr->sem_perm.gid = sembuf->sem_perm.gid;
587 semaptr->sem_perm.mode = (semaptr->sem_perm.mode & ~0777) |
589 semaptr->sem_ctime = time_second;
593 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
597 sembuf->sem_perm = semaptr->sem_perm;
599 sembuf->sem_nsems = semaptr->sem_nsems;
600 sembuf->sem_otime = semaptr->sem_otime;
601 sembuf->sem_ctime = semaptr->sem_ctime;
605 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
607 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
611 *retval = semaptr->_sem_base[semnum].semncnt;
615 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
617 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
621 *retval = semaptr->_sem_base[semnum].sempid;
625 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
627 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
631 *retval = semaptr->_sem_base[semnum].semval;
635 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
638 for (i = 0; i < semaptr->sem_nsems; i++) {
639 error = copyout(&semaptr->_sem_base[i].semval,
647 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_R)))
649 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
653 *retval = semaptr->_sem_base[semnum].semzcnt;
657 if ((error = ipcperm(cred, &semaptr
659 if (semnum < 0 || semnum >= semaptr->sem_nsems) {
668 semaptr->_sem_base[semnum].semval = arg->val;
674 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_W)))
677 for (i = 0; i < semaptr->sem_nsems; i++) {
687 semaptr->_sem_base[i].semval = semval;
819 struct semid_ds *semaptr;
857 semaptr = &sema[semid];
859 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0 ||
860 semaptr->sem_perm._seq != seq) {
865 if ((error = ipcperm(cred, &semaptr->sem_perm, IPC_W))) {
871 if (sops[i].sem_num >= semaptr->sem_nsems) {
891 semptr = &semaptr->_sem_base[sopptr->sem_num];
893 SEM_PRINTF(("semop: semaptr=%p, sem_base=%p, "
895 semaptr, semaptr->_sem_base, semptr,
939 semaptr->_sem_base[sops[i].sem_num].semval -=
968 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0 ||
969 semaptr->sem_perm._seq != seq) {
978 semptr = &semaptr->_sem_base[sopptr->sem_num];
1043 semaptr->_sem_base[sops[i].sem_num].semval -=
1055 semptr = &semaptr->_sem_base[sopptr->sem_num];
1060 semaptr->sem_otime = time_second;
1212 struct semid_ds *semaptr;
1214 semaptr = &sema[semid];
1215 if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0)
1216 if (semnum >= semaptr->sem_nsems)
1224 semaptr->_sem_base[semnum].semval));
1227 semaptr->_sem_base[semnum].semval < -adjval)
1228 semaptr->_sem_base[semnum].semval = 0;
1230 semaptr->_sem_base[semnum].semval += adjval;