Browse Source

:bug:Debug semaphore

Loquicom 6 years ago
parent
commit
a188331297
2 changed files with 20 additions and 5 deletions
  1. 12 5
      sem.c
  2. 8 0
      sem.h

+ 12 - 5
sem.c

@@ -14,14 +14,17 @@ extern int errno;
 /**
  * Initialise les semaphores
  * @param semaphore* Le tableau de semaphore
+ * @param int La taille du tableau
  * @param int* Valeur à initialiser
  * @return boolean Reussite
  */
-boolean ini_sem(semaphore* sem, int* iniVal) {
+boolean ini_sem(semaphore* sem, int size, int* iniVal) {
     /* Initialisation des valeurs */
-    if (semctl(sem->id, 0, SETALL, iniVal) == ERR) {
-        addperror("Impossible d'initialiser le tableau de semaphore");
-        return false;
+    for(int i = 0; i < size; i++){
+        if(semctl(sem->id, i, SETVAL, iniVal[i]) == ERR){
+            addperror("Impossible d'initialiser le tableau de semaphore");
+            return false;
+        }
     }
     /* Retour */
     return true;
@@ -52,7 +55,7 @@ boolean create_sem(semaphore* sem, int code, int nb, int* iniVal) {
     sem->key = key;
     sem->nb = nb;
     /* Initialise semaphore */
-    return ini_sem(sem, iniVal);
+    return ini_sem(sem, nb, iniVal);
 }
 
 boolean get_sem(semaphore* sem, int code) {
@@ -130,4 +133,8 @@ boolean delete_sem(semaphore* sem) {
     sem->key = 0;
     sem->nb = 0;
     return true;
+}
+
+int get_sem_value(semaphore* sem, int num){
+    return semctl(sem->id, num, GETVAL);
 }

+ 8 - 0
sem.h

@@ -60,4 +60,12 @@ boolean V(semaphore*, int);
  */
 boolean delete_sem(semaphore*);
 
+/**
+ * Récupère la valeur d'un semaphore
+ * @param semaphore* Le tableau de semaphore
+ * @param int Le numero du semaphore dans le tableau
+ * @return int La valeur actuel du semaphore
+ */
+int get_sem_value(semaphore*, int);
+
 #endif