Annotation of coherent/a/usr/man/COHERENT/shm, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: shm                       Device Driver                       shm
                      4: 
                      5: 
                      6: 
                      7: 
                      8: Shared memory device driver
                      9: 
                     10: 
                     11: The device  /dev/shm is an interface to  the shared memory device
                     12: driver.  It is assigned major  device 24 (minor device 0) and can
                     13: be accessed as a character-special device.
                     14: 
                     15: Shared memory  access operations  are performed by  seeks, reads,
                     16: and  writes through  the  interface /ddeevv/sshhmm.   The desired  seek
                     17: location is (sshhmmiidd << 16L) + offset.
                     18: 
                     19: Shared memory control operations are performed through the system
                     20: call ioctl.  The  operations shmctl and shmget are performed with
                     21: an integer  parameter array.  The  first element of  the array is
                     22: reserved for the return value (default, -1).  Subsequent elements
                     23: represent  arguments.   ioctl passes  SHMCTL,  SHMGET, SHMAT,  or
                     24: SHMDT  as the  second argument,  and the  parameter array  as the
                     25: third argument.  The first argument is an open file descriptor to
                     26: /dev/shm.  Seeks, reads, and  writes on shared memory can be per-
                     27: formed through the file descriptor shmfd.
                     28: 
                     29: ***** Access *****
                     30: 
                     31: To access shared memory, do the following:
                     32: 
                     33: 1. Be  sure that /dev/shm is present  as a special-character file
                     34:    with major number 24, minor number 0, and broad enough permis-
                     35:    sions.  The command
                     36: 
                     37:            /etc/mknod /dev/shm c 24 0
                     38: 
                     39:    will create /dev/shm if it does not yet exist.
                     40: 
                     41: 2. Become the superuser root.  Execute the command
                     42:            /etc/drvld /drv/shm
                     43: 
                     44:    to load the driver.
                     45: 
                     46: 3.  Use the  COHERENT system  call shmget()  to create  a shared-
                     47:    memory segment and obtain shmid value for it.
                     48: 
                     49: 4. Use  the COHERENT system call lseek() to  position for read or
                     50:    write of a shared-memory segment.  The first argument to lseek
                     51:    is shmfd,  which is an external  declared in <sys/shm.h>.  The
                     52:    second argument to lseek is a long whose high word is the seg-
                     53:    ment identifier shmid and  whose low word is the offset within
                     54:    the  shared-memory segment.   The third  argument to  lseek is
                     55:    zero.
                     56: 
                     57: 5. Use the COHERENT system calls read() and write() to access the
                     58:    segment.  Again, use shmfd as the file descriptor.
                     59: 
                     60: 6. When you are finished using shared memory, use the call
                     61:            shmctl(shmid, IPC_RMID, 0)
                     62: 
                     63: 
                     64: COHERENT Lexicon                                           Page 1
                     65: 
                     66: 
                     67: 
                     68: 
                     69: shm                       Device Driver                       shm
                     70: 
                     71: 
                     72: 
                     73: 
                     74:    to remove segments when you are finished.
                     75: 
                     76: 7. Finally,  use ps  -d to obtain  the process identifier  of the
                     77:    shared-memory driver.  To unload the driver, become the super-
                     78:    user root, and then type the command
                     79: 
                     80:            kill  -9 _x_x_x_x
                     81: 
                     82:    where xxxx is the process identifier for the shm driver.
                     83: 
                     84: Note that this manner of  proceding is not entirely in the spirit
                     85: of  System  V  IPC  shared  memory:  COHERENT  does  not  support
                     86: functions shmat() and shmdt().  Unfortunately, true attachment of
                     87: shared segments is not possible in SMALL-model systems.
                     88: 
                     89: ***** Notes *****
                     90: 
                     91: If you allocate too  many shared memory identifiers, you will ex-
                     92: haust kernel data space, and thus halt the system in its tracks.
                     93: 
                     94: Creating  many  large shared  memory  segments  can exhaust  main
                     95: memory, as shared  memory segments do not currently support swap-
                     96: ping.
                     97: 
                     98: The functions shmat and shmdt are not currently supported.
                     99: 
                    100: Private shared  memory is not supported.   Shared memory segments
                    101: must be removed manually  when no longer required.  To remove all
                    102: shared memory segments use the following C code:
                    103: 
                    104: 
                    105: #include <sys/shm.h>
                    106: 
                    107: #define NSHMID 16
                    108: 
                    109: shmget( 0, 0, 0 );        /* must do first */
                    110: 
                    111: for ( id=0; id < NSHMID; ++id )
                    112:         shmctl( id, IPC_RMID, 0 );
                    113: 
                    114: 
                    115: To load shm into memory, use the command drvld.
                    116: 
                    117: ***** Files *****
                    118: 
                    119: /usr/include/sys/ipc.h
                    120: /usr/include/sys/shm.h
                    121: /dev/shm
                    122: /drv/shm
                    123: 
                    124: ***** See Also *****
                    125: 
                    126: device drivers, drvld, shmctl(), shmget()
                    127: 
                    128: 
                    129: 
                    130: COHERENT Lexicon                                           Page 2
                    131: 
                    132: 

unix.superglobalmegacorp.com

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