next up previous contents
Next: SYSTEM CALL: shmget() Up: Internal and User Data Previous: Internal and User Data

Kernel shmid_ds structure

As with message queues and semaphore sets, the kernel maintains a special internal data structure for each shared memory segment which exists within its addressing space. This structure is of type shmid_ds, and is defined in linux/shm.h as follows:

        /* One shmid data structure for each shared memory segment in the system. */
        struct shmid_ds {
                struct ipc_perm shm_perm;        /* operation perms */
                int     shm_segsz;               /* size of segment (bytes) */
                time_t  shm_atime;               /* last attach time */
                time_t  shm_dtime;               /* last detach time */
                time_t  shm_ctime;               /* last change time */
                unsigned short  shm_cpid;        /* pid of creator */
                unsigned short  shm_lpid;        /* pid of last operator */
                short   shm_nattch;              /* no. of current attaches */

                                                 /* the following are private */

                unsigned short   shm_npages;     /* size of segment (pages) */
                unsigned long   *shm_pages;      /* array of ptrs to frames -> SHMMAX */
                struct vm_area_struct *attaches; /* descriptors for attaches */

Operations on this structure are performed by a special system call, and should not be tinkered with directly. Here are descriptions of the more pertinent fields:


This is an instance of the ipc_perm structure, which is defined for us in linux/ipc.h. This holds the permission information for the segment, including the access permissions, and information about the creator of the segment (uid, etc).


Size of the segment (measured in bytes).


Time the last process attached the segment.


Time the last process detached the segment.


Time of the last change to this structure (mode change, etc).


The PID of the creating process.


The PID of the last process to operate on the segment.


Number of processes currently attached to the segment.

Converted on:
Fri Mar 29 14:43:04 EST 1996