Quelques changements utiles, ça compile

master
Philippe Pittoli 2011-03-17 17:15:13 +01:00
parent 0f0a0c5c6c
commit f39c6934dd
4 changed files with 31 additions and 30 deletions

View File

@ -8,5 +8,6 @@ int main( int argc, char **argv)
{ {
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
return -1;
} }

View File

@ -8,13 +8,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/ipc.h> #include <sys/ipc.h>
#include <sys/sem.h> #include <sys/sem.h>
/*-----------------------------------------------------------*/
/* 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 creat_sem(key_t cle,int val)
{ {
int semid; int semid;
@ -33,24 +26,10 @@ int creat_sem(key_t cle,int val)
} }
return(semid); return(semid);
} }
/*--------------------------------------------------------------*/
/* destruction du semaphore cle
retourne:
0 si la destruction du semaphore s est effectuee correctement
-1 si erreur
*/
int del_sem(key_t cle) 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));
} }
/* recherche le semaphore cle
retourne l'identificateur du semaphore >=0 ou -1 si erreur
*/
int open_sem(key_t cle) int open_sem(key_t cle)
{ {
return(semget(cle,0,0)); return(semget(cle,0,0));

View File

@ -10,9 +10,30 @@
#include <sys/sem.h> #include <sys/sem.h>
void erreur(char *s); void erreur(char *s);
int creat_sem(key_t cle, ushort val);
int del_sem(key_t cle);
int open_sem(key_t cle); int open_sem(key_t cle);
void P(int semid); void P(int semid);
void V(int semid); void V(int semid);
/*-----------------------------------------------------------*/
int creat_sem(key_t cle, ushort val);
/* creation du semaphore cle ayant comme valeur initiale val
retourne un identificateur de semaphore >=0 ou -1 si erreur
*/
/*--------------------------------------------------------------*/
int del_sem(key_t cle);
/* destruction du semaphore cle
retourne:
0 si la destruction du semaphore s est effectuee correctement
-1 si erreur
*/
/* recherche le semaphore cle
retourne l'identificateur du semaphore >=0 ou -1 si erreur
*/

View File

@ -1,19 +1,19 @@
#include "constantes.h" #include "constantes.h"
typedef MEMP // Structure de sémaphore typedef struct msg_s
{
char c; // caractère émi
int idp; // indice du producteur
} MSG;
typedef struct memp_s // Structure de sémaphore
{ {
int max_prod; int max_prod;
int tete; int tete;
int queue; int queue;
int tpa[MAX_PROD]; // -1 de tpa[i] alors libre, 0 sinon int tpa[MAX_PROD]; // -1 de tpa[i] alors libre, 0 sinon
MSG f[MAX_BUF]; // Buffer stockant les caractères émis par les différents producteurs MSG f[MAX_BUF]; // Buffer stockant les caractères émis par les différents producteurs
} } MEMP;
// Arrêt sur ^D du consommateur, arrêt de tous les IPC et on s'arrête // Arrêt sur ^D du consommateur, arrêt de tous les IPC et on s'arrête
// du producteur, arrêt des IPC, met à jour le tableau à -1 sur sa case et il s'arrête // du producteur, arrêt des IPC, met à jour le tableau à -1 sur sa case et il s'arrête
typedef struct MSG
{
char c; // caractère émi
int idp; // indice du producteur
}