Annotation of coherent/b/lib/libc/sys/i8086/semop.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * User Semaphore Functions.
                      3:  *
                      4:  *     Note: Semget() must be first function called.
                      5:  *
                      6:  * $Log:$
                      7:  * 87/04/26    Allan Cornish
                      8:  * Support for 32 bit 'key' added to semget.
                      9:  */
                     10:  
                     11: #include <sys/sem.h>
                     12: 
                     13: static int  semfno   = -1;
                     14: static char semdev[] = "/dev/sem";
                     15: 
                     16: /*
                     17:  * Semaphore Control Operations.
                     18:  */
                     19: 
                     20: semctl( semid, semnum, cmd, arg )
                     21: 
                     22: int semid;
                     23: int semnum;
                     24: int cmd;
                     25: int arg;
                     26: 
                     27: {
                     28:        int parm[5];
                     29: 
                     30:        if ( semfno < 0 )
                     31:                return -1;
                     32: 
                     33:        parm[0] = -1;
                     34:        parm[1] = semid;
                     35:        parm[2] = semnum;
                     36:        parm[3] = cmd;
                     37:        parm[4] = arg;
                     38: 
                     39:        ioctl( semfno, SEMCTL, parm );
                     40:        return parm[0];
                     41: }
                     42: 
                     43: /*
                     44:  * Get Set of Semaphores.
                     45:  */
                     46: 
                     47: semget( key, nsems, semflg )
                     48: 
                     49: key_t key;
                     50: int nsems;
                     51: int semflg;
                     52: 
                     53: {
                     54:        int parm[5];
                     55: 
                     56:        if ( semfno < 0 ) {
                     57: 
                     58:                if ( (semfno = open(semdev, 0)) < 0 ) {
                     59: 
                     60:                        perror( semdev );
                     61:                        return -1;
                     62:                }
                     63:        }
                     64: 
                     65:        parm[0] = -1;
                     66:        parm[1] = key;
                     67:        parm[2] = key >> 16;
                     68:        parm[3] = nsems;
                     69:        parm[4] = semflg;
                     70: 
                     71:        ioctl( semfno, SEMGET, parm );
                     72:        return parm[0];
                     73: }
                     74: 
                     75: /*
                     76:  * Semaphore Operations.
                     77:  */
                     78:  
                     79: semop( semid, sops, nsops )
                     80: 
                     81: int semid;
                     82: struct sembuf (*sops)[];
                     83: int nsops;
                     84: 
                     85: {
                     86:        int parm[4];
                     87: 
                     88:        if ( semfno < 0 )
                     89:                return -1;
                     90: 
                     91:        parm[0] = -1;
                     92:        parm[1] = semid;
                     93:        parm[2] = sops;
                     94:        parm[3] = nsops;
                     95: 
                     96:        ioctl( semfno, SEMOP, parm );
                     97:        return parm[0];
                     98: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.