Whitespace nits and wrap some lines.
This commit is contained in:
parent
ef38ad00a0
commit
a67d24818d
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: sysv_sem.c,v 1.50 2004/03/18 01:16:44 christos Exp $ */
|
||||
/* $NetBSD: sysv_sem.c,v 1.51 2004/03/18 22:53:16 enami Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||
|
@ -46,7 +46,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: sysv_sem.c,v 1.50 2004/03/18 01:16:44 christos Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: sysv_sem.c,v 1.51 2004/03/18 22:53:16 enami Exp $");
|
||||
|
||||
#define SYSVSEM
|
||||
|
||||
|
@ -86,9 +86,9 @@ seminit()
|
|||
vaddr_t v;
|
||||
|
||||
/* Allocate pageable memory for our structures */
|
||||
sz = seminfo.semmni * sizeof(struct semid_ds)
|
||||
+ seminfo.semmns * sizeof(struct __sem)
|
||||
+ seminfo.semmnu * seminfo.semusz;
|
||||
sz = seminfo.semmni * sizeof(struct semid_ds) +
|
||||
seminfo.semmns * sizeof(struct __sem) +
|
||||
seminfo.semmnu * seminfo.semusz;
|
||||
if ((v = uvm_km_zalloc(kernel_map, round_page(sz))) == 0)
|
||||
panic("sysv_sem: cannot allocate memory");
|
||||
sema = (void *)v;
|
||||
|
@ -117,6 +117,7 @@ sys_semconfig(l, v, retval)
|
|||
void *v;
|
||||
register_t *retval;
|
||||
{
|
||||
|
||||
*retval = 0;
|
||||
return 0;
|
||||
}
|
||||
|
@ -154,7 +155,7 @@ semu_alloc(p)
|
|||
semu_list = suptr;
|
||||
suptr->un_cnt = 0;
|
||||
suptr->un_proc = p;
|
||||
return(suptr);
|
||||
return (suptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -179,7 +180,7 @@ semu_alloc(p)
|
|||
|
||||
/* If we didn't free anything then just give-up */
|
||||
if (!did_something)
|
||||
return(NULL);
|
||||
return (NULL);
|
||||
} else {
|
||||
/*
|
||||
* The second pass failed even though we freed
|
||||
|
@ -207,8 +208,10 @@ semundo_adjust(p, supptr, semid, semnum, adjval)
|
|||
struct undo *sunptr;
|
||||
int i;
|
||||
|
||||
/* Look for and remember the sem_undo if the caller doesn't provide
|
||||
it */
|
||||
/*
|
||||
* Look for and remember the sem_undo if the caller doesn't
|
||||
* provide it
|
||||
*/
|
||||
|
||||
suptr = *supptr;
|
||||
if (suptr == NULL) {
|
||||
|
@ -220,17 +223,17 @@ semundo_adjust(p, supptr, semid, semnum, adjval)
|
|||
}
|
||||
if (suptr == NULL) {
|
||||
if (adjval == 0)
|
||||
return(0);
|
||||
return (0);
|
||||
suptr = semu_alloc(p);
|
||||
if (suptr == NULL)
|
||||
return(ENOSPC);
|
||||
return (ENOSPC);
|
||||
*supptr = suptr;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Look for the requested entry and adjust it (delete if adjval becomes
|
||||
* 0).
|
||||
* Look for the requested entry and adjust it (delete if
|
||||
* adjval becomes 0).
|
||||
*/
|
||||
sunptr = &suptr->un_ent[0];
|
||||
for (i = 0; i < suptr->un_cnt; i++, sunptr++) {
|
||||
|
@ -246,21 +249,21 @@ semundo_adjust(p, supptr, semid, semnum, adjval)
|
|||
suptr->un_ent[i] =
|
||||
suptr->un_ent[suptr->un_cnt];
|
||||
}
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* Didn't find the right entry - create it */
|
||||
if (adjval == 0)
|
||||
return(0);
|
||||
return (0);
|
||||
if (suptr->un_cnt == SEMUME)
|
||||
return(EINVAL);
|
||||
return (EINVAL);
|
||||
|
||||
sunptr = &suptr->un_ent[suptr->un_cnt];
|
||||
suptr->un_cnt++;
|
||||
sunptr->un_adjval = adjval;
|
||||
sunptr->un_id = semid;
|
||||
sunptr->un_num = semnum;
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -509,14 +512,14 @@ sys_semget(l, v, retval)
|
|||
SEM_PRINTF(("found public key\n"));
|
||||
if ((eval = ipcperm(cred, &sema[semid].sem_perm,
|
||||
semflg & 0700)))
|
||||
return(eval);
|
||||
return (eval);
|
||||
if (nsems > 0 && sema[semid].sem_nsems < nsems) {
|
||||
SEM_PRINTF(("too small\n"));
|
||||
return(EINVAL);
|
||||
return (EINVAL);
|
||||
}
|
||||
if ((semflg & IPC_CREAT) && (semflg & IPC_EXCL)) {
|
||||
SEM_PRINTF(("not exclusive\n"));
|
||||
return(EEXIST);
|
||||
return (EEXIST);
|
||||
}
|
||||
goto found;
|
||||
}
|
||||
|
@ -527,12 +530,13 @@ sys_semget(l, v, retval)
|
|||
if (nsems <= 0 || nsems > seminfo.semmsl) {
|
||||
SEM_PRINTF(("nsems out of range (0<%d<=%d)\n", nsems,
|
||||
seminfo.semmsl));
|
||||
return(EINVAL);
|
||||
return (EINVAL);
|
||||
}
|
||||
if (nsems > seminfo.semmns - semtot) {
|
||||
SEM_PRINTF(("not enough semaphores left (need %d, got %d)\n",
|
||||
SEM_PRINTF(("not enough semaphores left "
|
||||
"(need %d, got %d)\n",
|
||||
nsems, seminfo.semmns - semtot));
|
||||
return(ENOSPC);
|
||||
return (ENOSPC);
|
||||
}
|
||||
for (semid = 0; semid < seminfo.semmni; semid++) {
|
||||
if ((sema[semid].sem_perm.mode & SEM_ALLOC) == 0)
|
||||
|
@ -540,7 +544,7 @@ sys_semget(l, v, retval)
|
|||
}
|
||||
if (semid == seminfo.semmni) {
|
||||
SEM_PRINTF(("no more semid_ds's available\n"));
|
||||
return(ENOSPC);
|
||||
return (ENOSPC);
|
||||
}
|
||||
SEM_PRINTF(("semid %d is available\n", semid));
|
||||
sema[semid].sem_perm._key = key;
|
||||
|
@ -557,17 +561,17 @@ sys_semget(l, v, retval)
|
|||
sema[semid]._sem_base = &sem[semtot];
|
||||
semtot += nsems;
|
||||
memset(sema[semid]._sem_base, 0,
|
||||
sizeof(sema[semid]._sem_base[0])*nsems);
|
||||
sizeof(sema[semid]._sem_base[0]) * nsems);
|
||||
SEM_PRINTF(("sembase = %p, next = %p\n", sema[semid]._sem_base,
|
||||
&sem[semtot]));
|
||||
} else {
|
||||
SEM_PRINTF(("didn't find it and wasn't asked to create it\n"));
|
||||
return(ENOENT);
|
||||
return (ENOENT);
|
||||
}
|
||||
|
||||
found:
|
||||
*retval = IXSEQ_TO_IPCID(semid, sema[semid].sem_perm);
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -598,30 +602,30 @@ sys_semop(l, v, retval)
|
|||
|
||||
semid = IPCID_TO_IX(semid); /* Convert back to zero origin */
|
||||
if (semid < 0 || semid >= seminfo.semmni)
|
||||
return(EINVAL);
|
||||
return (EINVAL);
|
||||
|
||||
semaptr = &sema[semid];
|
||||
if ((semaptr->sem_perm.mode & SEM_ALLOC) == 0 ||
|
||||
semaptr->sem_perm._seq != IPCID_TO_SEQ(SCARG(uap, semid)))
|
||||
return(EINVAL);
|
||||
return (EINVAL);
|
||||
|
||||
if ((eval = ipcperm(cred, &semaptr->sem_perm, IPC_W))) {
|
||||
SEM_PRINTF(("eval = %d from ipaccess\n", eval));
|
||||
return(eval);
|
||||
return (eval);
|
||||
}
|
||||
|
||||
if (nsops > MAX_SOPS) {
|
||||
SEM_PRINTF(("too many sops (max=%d, nsops=%lld)\n", MAX_SOPS,
|
||||
(long long)nsops));
|
||||
return(E2BIG);
|
||||
return (E2BIG);
|
||||
}
|
||||
|
||||
if ((eval = copyin(SCARG(uap, sops), sops, nsops * sizeof(sops[0])))
|
||||
!= 0) {
|
||||
if ((eval = copyin(SCARG(uap, sops),
|
||||
sops, nsops * sizeof(sops[0]))) != 0) {
|
||||
SEM_PRINTF(("eval = %d from copyin(%p, %p, %lld)\n", eval,
|
||||
SCARG(uap, sops), &sops,
|
||||
(long long)(nsops * sizeof(sops[0]))));
|
||||
return(eval);
|
||||
return (eval);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -642,19 +646,22 @@ sys_semop(l, v, retval)
|
|||
sopptr = &sops[i];
|
||||
|
||||
if (sopptr->sem_num >= semaptr->sem_nsems)
|
||||
return(EFBIG);
|
||||
return (EFBIG);
|
||||
|
||||
semptr = &semaptr->_sem_base[sopptr->sem_num];
|
||||
|
||||
SEM_PRINTF(("semop: semaptr=%p, sem_base=%p, semptr=%p, sem[%d]=%d : op=%d, flag=%s\n",
|
||||
SEM_PRINTF(("semop: semaptr=%p, sem_base=%p, "
|
||||
"semptr=%p, sem[%d]=%d : op=%d, flag=%s\n",
|
||||
semaptr, semaptr->_sem_base, semptr,
|
||||
sopptr->sem_num, semptr->semval, sopptr->sem_op,
|
||||
(sopptr->sem_flg & IPC_NOWAIT) ? "nowait" : "wait"));
|
||||
(sopptr->sem_flg & IPC_NOWAIT) ?
|
||||
"nowait" : "wait"));
|
||||
|
||||
if (sopptr->sem_op < 0) {
|
||||
if ((int)(semptr->semval +
|
||||
sopptr->sem_op) < 0) {
|
||||
SEM_PRINTF(("semop: can't do it now\n"));
|
||||
sopptr->sem_op) < 0) {
|
||||
SEM_PRINTF(("semop: "
|
||||
"can't do it now\n"));
|
||||
break;
|
||||
} else {
|
||||
semptr->semval += sopptr->sem_op;
|
||||
|
@ -687,7 +694,7 @@ sys_semop(l, v, retval)
|
|||
/*
|
||||
* No ... rollback anything that we've already done
|
||||
*/
|
||||
SEM_PRINTF(("semop: rollback 0 through %d\n", i-1));
|
||||
SEM_PRINTF(("semop: rollback 0 through %d\n", i - 1));
|
||||
for (j = 0; j < i; j++)
|
||||
semaptr->_sem_base[sops[j].sem_num].semval -=
|
||||
sops[j].sem_op;
|
||||
|
@ -697,7 +704,7 @@ sys_semop(l, v, retval)
|
|||
* NOWAIT flag set then return with EAGAIN.
|
||||
*/
|
||||
if (sopptr->sem_flg & IPC_NOWAIT)
|
||||
return(EAGAIN);
|
||||
return (EAGAIN);
|
||||
|
||||
if (sopptr->sem_op == 0)
|
||||
semptr->semzcnt++;
|
||||
|
@ -719,9 +726,9 @@ sys_semop(l, v, retval)
|
|||
/* The man page says to return EIDRM. */
|
||||
/* Unfortunately, BSD doesn't define that code! */
|
||||
#ifdef EIDRM
|
||||
return(EIDRM);
|
||||
return (EIDRM);
|
||||
#else
|
||||
return(EINVAL);
|
||||
return (EINVAL);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -729,6 +736,7 @@ sys_semop(l, v, retval)
|
|||
* The semaphore is still alive. Readjust the count of
|
||||
* waiting processes.
|
||||
*/
|
||||
semptr = &semaptr->_sem_base[sopptr->sem_num];
|
||||
if (sopptr->sem_op == 0)
|
||||
semptr->semzcnt--;
|
||||
else
|
||||
|
@ -739,7 +747,7 @@ sys_semop(l, v, retval)
|
|||
* need to decrement sem[nz]cnt either way.)
|
||||
*/
|
||||
if (eval != 0)
|
||||
return(EINTR);
|
||||
return (EINTR);
|
||||
SEM_PRINTF(("semop: good morning!\n"));
|
||||
}
|
||||
|
||||
|
@ -790,7 +798,7 @@ done:
|
|||
sops[j].sem_op;
|
||||
|
||||
SEM_PRINTF(("eval = %d from semundo_adjust\n", eval));
|
||||
return(eval);
|
||||
return (eval);
|
||||
} /* loop through the sops */
|
||||
} /* if (do_undos) */
|
||||
|
||||
|
@ -813,12 +821,12 @@ done:
|
|||
}
|
||||
SEM_PRINTF(("semop: done\n"));
|
||||
*retval = 0;
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Go through the undo structures for this process and apply the adjustments to
|
||||
* semaphores.
|
||||
* Go through the undo structures for this process and apply the
|
||||
* adjustments to semaphores.
|
||||
*/
|
||||
/*ARGSUSED*/
|
||||
void
|
||||
|
@ -830,8 +838,8 @@ semexit(p, v)
|
|||
struct sem_undo **supptr;
|
||||
|
||||
/*
|
||||
* Go through the chain of undo vectors looking for one associated with
|
||||
* this process.
|
||||
* Go through the chain of undo vectors looking for one
|
||||
* associated with this process.
|
||||
*/
|
||||
|
||||
for (supptr = &semu_list; (suptr = *supptr) != NULL;
|
||||
|
@ -872,7 +880,8 @@ semexit(p, v)
|
|||
if (semnum >= semaptr->sem_nsems)
|
||||
panic("semexit - semnum out of range");
|
||||
|
||||
SEM_PRINTF(("semexit: %p id=%d num=%d(adj=%d) ; sem=%d\n",
|
||||
SEM_PRINTF(("semexit: %p id=%d num=%d(adj=%d) ; "
|
||||
"sem=%d\n",
|
||||
suptr->un_proc, suptr->un_ent[ix].un_id,
|
||||
suptr->un_ent[ix].un_num,
|
||||
suptr->un_ent[ix].un_adjval,
|
||||
|
|
Loading…
Reference in New Issue