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
|
/* creation du semaphore cle ayant comme valeur initiale val
|
||||||
retourne un identificateur de semaphore >=0 ou -1 si erreur
|
retourne un identificateur de semaphore >=0 ou -1 si erreur
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int creat_sem(key_t cle,int val)
|
||||||
{
|
{
|
||||||
int semid;
|
int semid;
|
||||||
|
|
||||||
union semun{
|
union semun{
|
||||||
int val;
|
int val;
|
||||||
struct semid_ds *buf;
|
struct semid_ds *buf;
|
||||||
ushort *array;
|
ushort *array;
|
||||||
} arg;
|
} arg;
|
||||||
|
|
||||||
if((semid=semget(cle,1,0666+IPC_CREAT+IPC_EXCL))>= 0)
|
if((semid=semget(cle,1,0666+IPC_CREAT+IPC_EXCL))>= 0)
|
||||||
{
|
{
|
||||||
arg.val=val;
|
arg.val=val;
|
||||||
if(semctl(semid,0,SETVAL,arg)< 0)
|
if(semctl(semid,0,SETVAL,arg)< 0)
|
||||||
semid = -1;
|
semid = -1;
|
||||||
}
|
}
|
||||||
return(semid);
|
return(semid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------*/
|
/*--------------------------------------------------------------*/
|
||||||
|
|
||||||
int del_sem(key_t cle)
|
|
||||||
|
|
||||||
/* destruction du semaphore cle
|
/* destruction du semaphore cle
|
||||||
retourne:
|
retourne:
|
||||||
0 si la destruction du semaphore s est effectuee correctement
|
0 si la destruction du semaphore s est effectuee correctement
|
||||||
-1 si erreur
|
-1 si erreur
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int del_sem(key_t cle)
|
||||||
{
|
{
|
||||||
|
|
||||||
return(semctl((semget(cle,0,0)),0,IPC_RMID,0));
|
return(semctl((semget(cle,0,0)),0,IPC_RMID,0));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------*/
|
|
||||||
|
|
||||||
int open_sem(key_t cle)
|
|
||||||
|
|
||||||
/* recherche le semaphore cle
|
/* recherche le semaphore cle
|
||||||
retourne l'identificateur du semaphore >=0 ou -1 si erreur
|
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)
|
void P(int semid)
|
||||||
|
|
||||||
{
|
{
|
||||||
struct sembuf psembuf;
|
struct sembuf psembuf;
|
||||||
|
|
||||||
psembuf.sem_op = -1;
|
psembuf.sem_op = -1;
|
||||||
psembuf.sem_flg = 0;
|
psembuf.sem_flg = 0;
|
||||||
psembuf.sem_num = 0;
|
psembuf.sem_num = 0;
|
||||||
semop(semid,&psembuf,1);
|
semop(semid,&psembuf,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
void V(int semid)
|
void V(int semid)
|
||||||
|
|
||||||
{
|
{
|
||||||
struct sembuf vsembuf;
|
struct sembuf vsembuf;
|
||||||
|
|
||||||
vsembuf.sem_op = 1;
|
vsembuf.sem_op = 1;
|
||||||
vsembuf.sem_flg = 0;
|
vsembuf.sem_flg = 0;
|
||||||
vsembuf.sem_num = 0;
|
vsembuf.sem_num = 0;
|
||||||
semop(semid,&vsembuf,1);
|
semop(semid,&vsembuf,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------*/
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue