Makefile presque en place
parent
04bdb3700f
commit
bcea03f4ae
|
@ -1,2 +1,26 @@
|
|||
CC=gcc
|
||||
C = gcc
|
||||
SER = server
|
||||
CONS = consommateur
|
||||
PROD = producteur
|
||||
CFLAGS = -Wall -g
|
||||
COMMUN = sema.o global.o
|
||||
CONSOM = consommateur.o
|
||||
PRODUCT = producteur.o
|
||||
all: $(CONSOM) $(PRODUCT)
|
||||
$(CC) $(CONSOM) -o $(CONS)
|
||||
$(CC) $(PRODUCT) -o $(SER)
|
||||
|
||||
consommateur.o : consommateur.h consommateur.c
|
||||
$(CC) -o $@ -c $< $(CFLAGS)
|
||||
|
||||
producteur.o : producteur.h producteur.c
|
||||
$(CC) -o $@ -c $< $(CFLAGS)
|
||||
|
||||
sema.o : sema.h sema.c
|
||||
$(CC) -o $@ -c $< $(CFLAGS)
|
||||
|
||||
clean:
|
||||
@rm -rf *.o *.out
|
||||
mrproper: clean
|
||||
@rm $(PROD) $(CONS) 2>/dev/null
|
||||
|
||||
|
|
|
@ -11,83 +11,68 @@
|
|||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
int creat_sem(key_t cle,int val)
|
||||
|
||||
/* creation du semaphore cle ayant comme valeur initiale val
|
||||
retourne un identificateur de semaphore >=0 ou -1 si erreur
|
||||
*/
|
||||
|
||||
int creat_sem(key_t cle,int val)
|
||||
{
|
||||
int semid;
|
||||
int semid;
|
||||
|
||||
union semun{
|
||||
int val;
|
||||
struct semid_ds *buf;
|
||||
ushort *array;
|
||||
union semun{
|
||||
int val;
|
||||
struct semid_ds *buf;
|
||||
ushort *array;
|
||||
} arg;
|
||||
|
||||
if((semid=semget(cle,1,0666+IPC_CREAT+IPC_EXCL))>= 0)
|
||||
{
|
||||
arg.val=val;
|
||||
if(semctl(semid,0,SETVAL,arg)< 0)
|
||||
semid = -1;
|
||||
arg.val=val;
|
||||
if(semctl(semid,0,SETVAL,arg)< 0)
|
||||
semid = -1;
|
||||
}
|
||||
return(semid);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
|
||||
int del_sem(key_t cle)
|
||||
|
||||
/* destruction du semaphore cle
|
||||
retourne:
|
||||
0 si la destruction du semaphore s est effectuee correctement
|
||||
-1 si erreur
|
||||
*/
|
||||
|
||||
int del_sem(key_t cle)
|
||||
{
|
||||
|
||||
return(semctl((semget(cle,0,0)),0,IPC_RMID,0));
|
||||
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------*/
|
||||
|
||||
int open_sem(key_t cle)
|
||||
|
||||
/* recherche le semaphore cle
|
||||
retourne l'identificateur du semaphore >=0 ou -1 si erreur
|
||||
*/
|
||||
|
||||
int open_sem(key_t cle)
|
||||
{
|
||||
|
||||
return(semget(cle,0,0));
|
||||
|
||||
return(semget(cle,0,0));
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
void P(int semid)
|
||||
|
||||
{
|
||||
struct sembuf psembuf;
|
||||
struct sembuf psembuf;
|
||||
|
||||
psembuf.sem_op = -1;
|
||||
psembuf.sem_flg = 0;
|
||||
psembuf.sem_num = 0;
|
||||
semop(semid,&psembuf,1);
|
||||
psembuf.sem_op = -1;
|
||||
psembuf.sem_flg = 0;
|
||||
psembuf.sem_num = 0;
|
||||
semop(semid,&psembuf,1);
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
||||
void V(int semid)
|
||||
|
||||
{
|
||||
struct sembuf vsembuf;
|
||||
struct sembuf vsembuf;
|
||||
|
||||
vsembuf.sem_op = 1;
|
||||
vsembuf.sem_flg = 0;
|
||||
vsembuf.sem_num = 0;
|
||||
semop(semid,&vsembuf,1);
|
||||
vsembuf.sem_op = 1;
|
||||
vsembuf.sem_flg = 0;
|
||||
vsembuf.sem_num = 0;
|
||||
semop(semid,&vsembuf,1);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
|
||||
|
|
Loading…
Reference in New Issue