diff --git a/C_Language/TP_SYS/tp_sema/constantes.h b/C_Language/TP_SYS/tp_sema/constantes.h new file mode 100644 index 0000000..593574b --- /dev/null +++ b/C_Language/TP_SYS/tp_sema/constantes.h @@ -0,0 +1,6 @@ +#define NPLEIN 1 +#define NVIDE 2 +#define MUTEX_1 3 +#define MUTEX_2 4 +#define MAX_PROD 5 // Maximum de producteurs +#define MAX_BUF 100 // Taille maximale du buffer diff --git a/C_Language/TP_SYS/tp_sema/sema.c b/C_Language/TP_SYS/tp_sema/sema.c index 57c13d1..0459ab0 100644 --- a/C_Language/TP_SYS/tp_sema/sema.c +++ b/C_Language/TP_SYS/tp_sema/sema.c @@ -9,26 +9,6 @@ #include #include - -/*void erreurMes(char * format, ...) -{ -char texte[200]; -va_list liste_arguments; - -va_start(liste_arguments,format); - -vsnprintf(texte,200,format,liste_arguments); - -va_end(liste_arguments); - -if(errno) - perror(texte); -else - fprintf(stderr,texte); - exit(1); -} -*/ - /*-----------------------------------------------------------*/ int creat_sem(key_t cle,int val) diff --git a/C_Language/TP_SYS/tp_sema/types.h b/C_Language/TP_SYS/tp_sema/types.h new file mode 100644 index 0000000..f002739 --- /dev/null +++ b/C_Language/TP_SYS/tp_sema/types.h @@ -0,0 +1,17 @@ +typedef MEMP // Structure de sémaphore +{ + int max_prod; + int tete; + int queue; + 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 +} + +// 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 + +typedef struct MSG +{ + char c; // caractère émi + int idp; // indice du producteur +}