next up previous contents
Next: Struktura sem w jądrze Up: Wewnętrzne struktury jądra Previous: Wewnętrzne struktury jądra   Contents

Struktura semid_ds w jądrze

Tak jak w przypadku kolejek wiadomości jądro utrzymuje specjalną strukturę dla każdego zestawu semaforów, istnieje ona wewnątrz obszaru adresowego jądra. Struktura ta jest typu semid_ds, który zdefiniowany jest w linux/sem.h:


           /* jedna struktura semid dla każdego zestawu semaforów w systemie */
           struct semid_ds {
                   struct ipc_perm sem_perm;       /* restrykcje .. zobacz ipc.h */
                   time_t          sem_otime;      /* czas ostatniej operacji semop */
                   time_t          sem_ctime;      /* czas ostatniej zmiany */
                   struct sem      *sem_base;      /* wkaźnik do pierwszego semaforu w tablicy */
                   struct wait_queue *eventn;
                   struct wait_queue *eventz;
                   struct sem_undo  *undo;         /* odwołaj żądania dla tej tablicy */
                   ushort          sem_nsems;      /* liczba semaforów w tablicy */
           };
   

Tak jak w przypadku kolejek wiadomości, operacje na tej strukturze przeprowadzane są przez specjalne wywołanie systemowe i tylko przez nie, nie powinieneś zabawiać się :) z tą strukturą w inny sposób. Opis niektórych pól:

sem_perm

Jest to struktura typu ipc_perm, który jest zdefiniowany w linux/ipc.h. Przechowuje prawa dostępu, oraz informacje o twórcy i właścicielu zestawu.

sem_otime

Czas ostaniej operacji semop() ( więcej o tym za chwilkę )

sem_ctime

Czas ostatniej zmiany struktury ( np.: zmiana praw, itp. )

sem_base

Wskaźnik do pierwszego semaforu w tablicy ( zobacz następną strukturę )

sem_undo

Liczba żądań odwołania (undo) dla tej tablicy ( więcej za chwilę )

sem_nsems

Liczba semaforów w zestawie ( tablicy ).




2000-03-01


Poltronic