Do spisu tresci tematu 3

3.2.4 Zestawy semaforow

Spis tresci


Spis rysunkow


Ogolne cechy


Struktury danych


Funkcja semget

int sys_semget (key_t klucz, int ilosc_semaforow, int flagi)

 findkey (key_t key):

newary (key_t klucz, int ilosc_semaforow, int flagi):


Funkcja semop ().

Interfejs.

Ponizsza funkcja sluzy do niepodzielnego wykonania wielu operacji na semaforach tego samego zestawu.

int sys_semop (int semid,struct sembuf* tsops, unsigned nsops)

semid - deskryptor zestawu semaforow
nsops - liczba operacji do wykonania na zestawie (0 < nsops < SEMOPM, nie powinna przekroczyc rozmiaru tablicy tsops - system nie wykryje tego bledu i bedzie pobieral informacje z poza tablicy, az strach pomyslec czym to grozi!)
tsops - wskaznik do tablicy operacji na poszczegolnych semaforach zestawu. Pojedyncza operacja jest opisywana struktura sembuf:

struct sembuf {

Pomyslny powrot: 0 (wszystkie operacje z tablicy tsops wykonano poprawnie).
Mozliwe errno: EINVAL, E2BIG, EFAULT, EIDRM, EACCES, EINTR.

Algorytm

Try_semop ()

int try_semop (struct semid_ds *sma, struct sembuf *sops, int nsops)

Powrot: 1-trzeba czekac, 0- mozna wykonac,<0 - kod bledu.

Do_semop ()

int do_semop (struct semid_ds *sma, struct sembuf *sops, int nsops, struct sem_undo *un, int pid)

Powrot: zawsze 0.

Update queue ()

void update_queue (struct semid_ds * sma)

Wnioski koncowe


Funkcja semctl

int sys_semctl (int id. zbioru, int numer_semafora, int komenda, union semun bufor_wywolania)

Komenda:


Smierc procesu

sem_exit ();

Funkcja wykonywana jest przez funkcje exit() przed zakonczeniem dzialania procesu.


Bibliografia


Autorzy: Dionizy Borun i Piotr Fetras