Makefile presque en place

master
Philippe Pittoli 2011-03-17 16:25:02 +01:00
parent 04bdb3700f
commit bcea03f4ae
2 changed files with 49 additions and 40 deletions

View File

@ -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

View File

@ -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);
}
/*--------------------------------------------------------------*/