taglinefilesource code
sma91include/linux/sem.hstruct semid_ds *  sma;   /* semaphore array for operations */
sma69ipc/sem.cstruct semid_ds *sma;
sma72ipc/sem.cwhile ((sma = semary[id]) == IPC_NOID)
sma74ipc/sem.cif (sma == IPC_UNUSED)
sma76ipc/sem.cif (key == sma->sem_perm.key)
sma85ipc/sem.cstruct semid_ds *sma;
sma100ipc/sem.csize = sizeof (*sma) + nsems * sizeof (struct sem);
sma102ipc/sem.csma = (struct semid_ds *) kmalloc (size, GFP_KERNEL);
sma103ipc/sem.cif (!sma) {
sma110ipc/sem.cmemset (sma, 0, size);
sma111ipc/sem.csma->sem_base = (struct sem *) &sma[1];
sma112ipc/sem.cipcp = &sma->sem_perm;
sma117ipc/sem.csma->sem_perm.seq = sem_seq;
sma119ipc/sem.csma->sem_pending_last = &sma->sem_pending;
sma121ipc/sem.csma->sem_nsems = nsems;
sma122ipc/sem.csma->sem_ctime = CURRENT_TIME;
sma126ipc/sem.csemary[id] = sma;
sma129ipc/sem.creturn (unsigned int) sma->sem_perm.seq * SEMMNI + id;
sma135ipc/sem.cstruct semid_ds *sma;
sma148ipc/sem.csma = semary[id];
sma149ipc/sem.cif (nsems > sma->sem_nsems)
sma151ipc/sem.cif (ipcperms(&sma->sem_perm, semflg))
sma153ipc/sem.creturn (unsigned int) sma->sem_perm.seq * SEMMNI + id;
sma159ipc/sem.cstatic inline void insert_into_queue (struct semid_ds * sma, struct sem_queue * q)
sma161ipc/sem.c*(q->prev = sma->sem_pending_last) = q;
sma162ipc/sem.c*(sma->sem_pending_last = &q->next) = NULL;
sma164ipc/sem.cstatic inline void remove_from_queue (struct semid_ds * sma, struct sem_queue * q)
sma170ipc/sem.csma->sem_pending_last = q->prev;
sma177ipc/sem.cstatic int try_semop (struct semid_ds * sma, struct sembuf * sops, int nsops)
sma184ipc/sem.cstruct sem * curr = &sma->sem_base[sop->sem_num];
sma208ipc/sem.cstruct sem * curr = &sma->sem_base[sop->sem_num];
sma216ipc/sem.cstatic int do_semop (struct semid_ds * sma, struct sembuf * sops, int nsops,
sma223ipc/sem.cstruct sem * curr = &sma->sem_base[sop->sem_num];
sma244ipc/sem.csma->sem_otime = CURRENT_TIME;
sma257ipc/sem.cstatic void update_queue (struct semid_ds * sma)
sma264ipc/sem.cfor (q = sma->sem_pending; q; q = q->next) {
sma265ipc/sem.cerror = try_semop(sma, q->sops, q->nsops);
sma271ipc/sem.cerror = do_semop(sma, q->sops, q->nsops, q->undo, q->pid);
sma274ipc/sem.cremove_from_queue(sma,q);
sma291ipc/sem.cstatic int count_semncnt (struct semid_ds * sma, ushort semnum)
sma297ipc/sem.cfor (q = sma->sem_pending; q; q = q->next) {
sma309ipc/sem.cstatic int count_semzcnt (struct semid_ds * sma, ushort semnum)
sma315ipc/sem.cfor (q = sma->sem_pending; q; q = q->next) {
sma331ipc/sem.cstruct semid_ds *sma = semary[id];
sma336ipc/sem.csma->sem_perm.seq++;
sma338ipc/sem.cused_sems -= sma->sem_nsems;
sma347ipc/sem.cfor (un = sma->undo; un; un = un->id_next)
sma351ipc/sem.cfor (q = sma->sem_pending; q; q = q->next) {
sma357ipc/sem.ckfree(sma);
sma365ipc/sem.cstruct semid_ds *sma;
sma409ipc/sem.csma = semary[semid];
sma410ipc/sem.cif (sma == IPC_UNUSED || sma == IPC_NOID)
sma412ipc/sem.cif (ipcperms (&sma->sem_perm, S_IRUGO))
sma414ipc/sem.cid = (unsigned int) sma->sem_perm.seq * SEMMNI + semid;
sma415ipc/sem.ctbuf.sem_perm   = sma->sem_perm;
sma416ipc/sem.ctbuf.sem_otime  = sma->sem_otime;
sma417ipc/sem.ctbuf.sem_ctime  = sma->sem_ctime;
sma418ipc/sem.ctbuf.sem_nsems  = sma->sem_nsems;
sma424ipc/sem.csma = semary [id];
sma425ipc/sem.cif (sma == IPC_UNUSED || sma == IPC_NOID)
sma427ipc/sem.cipcp = &sma->sem_perm;
sma428ipc/sem.cnsems = sma->sem_nsems;
sma429ipc/sem.cif (sma->sem_perm.seq != (unsigned int) semid / SEMMNI)
sma440ipc/sem.ccurr = &sma->sem_base[semnum];
sma455ipc/sem.ccase GETNCNT: return count_semncnt(sma,semnum);
sma456ipc/sem.ccase GETZCNT: return count_semzcnt(sma,semnum);
sma499ipc/sem.cif (sma->sem_perm.seq != (unsigned int) semid / SEMMNI)
sma506ipc/sem.cfor (i = 0; i < sma->sem_nsems; i++)
sma507ipc/sem.csem_io[i] = sma->sem_base[i].semval;
sma513ipc/sem.cfor (un = sma->undo; un; un = un->id_next)
sma516ipc/sem.csma->sem_ctime = CURRENT_TIME;
sma518ipc/sem.cupdate_queue(sma);
sma526ipc/sem.csma->sem_ctime = CURRENT_TIME;
sma533ipc/sem.ctbuf.sem_perm   = sma->sem_perm;
sma534ipc/sem.ctbuf.sem_otime  = sma->sem_otime;
sma535ipc/sem.ctbuf.sem_ctime  = sma->sem_ctime;
sma536ipc/sem.ctbuf.sem_nsems  = sma->sem_nsems;
sma543ipc/sem.csma->sem_base[i].semval = sem_io[i];
sma544ipc/sem.cfor (un = sma->undo; un; un = un->id_next)
sma547ipc/sem.csma->sem_ctime = CURRENT_TIME;
sma549ipc/sem.cupdate_queue(sma);
sma560ipc/sem.cstruct semid_ds *sma;
sma575ipc/sem.cif ((sma = semary[id]) == IPC_UNUSED || sma == IPC_NOID)
sma577ipc/sem.cif (sma->sem_perm.seq != (unsigned int) semid / SEMMNI)
sma581ipc/sem.cif (sop->sem_num >= sma->sem_nsems)
sma588ipc/sem.cif (ipcperms(&sma->sem_perm, alter ? S_IWUGO : S_IRUGO))
sma590ipc/sem.cerror = try_semop(sma, sops, nsops);
sma601ipc/sem.csize = sizeof(struct sem_undo) + sizeof(short)*sma->sem_nsems;
sma610ipc/sem.cun->id_next = sma->undo;
sma611ipc/sem.csma->undo = un;
sma617ipc/sem.cerror = do_semop(sma, sops, nsops, un, current->pid);
sma619ipc/sem.cupdate_queue(sma);
sma627ipc/sem.cqueue.sma = sma;
sma633ipc/sem.cinsert_into_queue(sma,&queue);
sma645ipc/sem.cremove_from_queue(sma,&queue);
sma667ipc/sem.cstruct semid_ds *sma;
sma675ipc/sem.cremove_from_queue(q->sma,q);
sma682ipc/sem.csma = semary[(unsigned int) u->semid % SEMMNI];
sma683ipc/sem.cif (sma == IPC_UNUSED || sma == IPC_NOID)
sma685ipc/sem.cif (sma->sem_perm.seq != (unsigned int) u->semid / SEMMNI)
sma688ipc/sem.cfor (unp = &sma->undo; (un = *unp); unp = &un->id_next) {
sma697ipc/sem.cnsems = sma->sem_nsems;
sma699ipc/sem.cstruct sem * sem = &sma->sem_base[i];
sma705ipc/sem.csma->sem_otime = CURRENT_TIME;
sma707ipc/sem.cupdate_queue(sma);