next up previous contents
Next: WYWOŁANIE SYSTEMOWE: shmget() Up: Struktury danych: wewnętrzne i Previous: Struktury danych: wewnętrzne i   Contents

Struktura shmid_ds w jądrze

Tak jak w przypadku kolejek wiadomości i zestawów semaforów, jądro przechowuje specjalną wewnętrzną strukturę dla każdego segmentu pamięci dzielonej. Struktura ta jest typu shmid_ds, który zdefiniowany jest w linux/shm.h:


           /* jedna struktura shmid dla każdego segmentu pamięci dzielonej w systemie. */
           struct shmid_ds {
                   struct ipc_perm shm_perm;        /* prawa dostępu */
                   int     shm_segsz;               /* rozmiar segmentu ( bajty ) */
                   time_t  shm_atime;               /* czas ostatniego podłączenia */
                   time_t  shm_dtime;               /* czas ostatniego odłączenia */
                   time_t  shm_ctime;               /* czas ostatniej zmiany */
                   unsigned short  shm_cpid;        /* pid twórcy */
                   unsigned short  shm_lpid;        /* pid ostatniego operatora */
                   short   shm_nattch;              /* ilość aktualnych podłączeń */
   
                                                    /* następujące są prywatne: */
   
                   unsigned short   shm_npages;     /* rozmiar segmentu ( strony ) */
                   unsigned long   *shm_pages;      /* tablica wskaźników do ramek -> SHMMAX */ 
                   struct vm_area_struct *attaches; /* deskryptory podłączeń */
           };
   

Operacje na tej strukturze wykonywane są przez specjalne wywołanie systemowe, nie powinieneś jej zmieniać inną metodą. Oto opis ważniejszych pól:

shm_perm

Jest to struktura ipc_perm, jest ona zdefiniowana w linux/ipc.h. Przechowuje ona informacje na temat praw dostępu, twórcy ( uid, itd. ).

shm_segsz

Rozmiar segmentu ( w bajtach ).

shm_atime

Czas ostatniego podpięcia segmentu.

shm_dtime

Czas ostatniego odpięcia segmentu.

shm_ctime

Czas ostatniej zmiany tej struktury ( zmiana trybu, itp. ).

shm_cpid

PID procesu tworzącego.

shm_lpid

PID procesu, który jako ostatni operował na segmencie.

shm_nattch

Liczba procesów podpiętych do segmentu.




2000-03-01


Poltronic