|
|
1.1 ! root 1: /* ! 2: * (User) Shared Memory Control Functions ! 3: * ! 4: * Note: shmget() must be first function called. ! 5: * ! 6: * $Log:$ ! 7: * 87/04/26 Allan Cornish ! 8: * Support for 32 bit 'key' added to shmget. ! 9: */ ! 10: ! 11: #include <sys/shm.h> ! 12: ! 13: int shmfd = -1; ! 14: static char shmdev[] = "/dev/shm"; ! 15: ! 16: /* ! 17: * Shared Memory Control Operations. ! 18: */ ! 19: ! 20: shmctl( shmid, cmd, buf ) ! 21: ! 22: int shmid; ! 23: int cmd; ! 24: int buf; ! 25: ! 26: { ! 27: int parm[4]; ! 28: ! 29: if ( shmfd < 0 ) ! 30: return -1; ! 31: ! 32: parm[0] = -1; ! 33: parm[1] = shmid; ! 34: parm[2] = cmd; ! 35: parm[3] = buf; ! 36: ! 37: ioctl( shmfd, SHMCTL, parm ); ! 38: return parm[0]; ! 39: } ! 40: ! 41: /* ! 42: * Get Shared Memory Segment. ! 43: */ ! 44: ! 45: shmget( key, size, shmflg ) ! 46: ! 47: key_t key; ! 48: int size; ! 49: int shmflg; ! 50: ! 51: { ! 52: int parm[5]; ! 53: ! 54: if ( shmfd < 0 ) { ! 55: ! 56: if ( (shmfd = open(shmdev, 2)) < 0 ) { ! 57: ! 58: perror( shmdev ); ! 59: return -1; ! 60: } ! 61: } ! 62: ! 63: parm[0] = -1; ! 64: parm[1] = key; ! 65: parm[2] = key >> 16; ! 66: parm[3] = size; ! 67: parm[4] = shmflg; ! 68: ! 69: ioctl( shmfd, SHMGET, parm ); ! 70: return parm[0]; ! 71: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.