Diff for /rpl/src/semaphores.c between versions 1.67 and 1.68

version 1.67, 2015/01/05 15:32:25 version 1.68, 2015/01/27 14:18:09
Line 32  nom_segment_semaphore(pid_t pid, int ord Line 32  nom_segment_semaphore(pid_t pid, int ord
 {  {
     unsigned char               *fichier;      unsigned char               *fichier;
   
     if ((fichier = malloc((1 + 256 + 1) * sizeof(unsigned char))) == NULL)      if ((fichier = sys_malloc((1 + 256 + 1) * sizeof(unsigned char))) == NULL)
     {      {
         return(NULL);          return(NULL);
     }      }
Line 47  nom_segment_semaphore_thread(pid_t pid, Line 47  nom_segment_semaphore_thread(pid_t pid,
 {  {
     unsigned char               *fichier;      unsigned char               *fichier;
   
     if ((fichier = malloc((1 + 256 + 1) * sizeof(unsigned char))) == NULL)      if ((fichier = sys_malloc((1 + 256 + 1) * sizeof(unsigned char))) == NULL)
     {      {
         return(NULL);          return(NULL);
     }      }
Line 84  sem_init2(unsigned int valeur, pid_t pid Line 84  sem_init2(unsigned int valeur, pid_t pid
   
     semaphore = sem_open(chemin, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR,      semaphore = sem_open(chemin, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR,
             valeur);              valeur);
     free(chemin);      sys_free(chemin);
   
     return(semaphore);      return(semaphore);
 }  }
Line 104  sem_init3(unsigned int valeur, pid_t pid Line 104  sem_init3(unsigned int valeur, pid_t pid
   
     semaphore = sem_open(chemin, O_CREAT | O_EXCL | O_RDWR, S_IRUSR | S_IWUSR,      semaphore = sem_open(chemin, O_CREAT | O_EXCL | O_RDWR, S_IRUSR | S_IWUSR,
             valeur);              valeur);
     free(chemin);      sys_free(chemin);
   
     return(semaphore);      return(semaphore);
 }  }
Line 123  sem_open2(pid_t pid, int ordre) Line 123  sem_open2(pid_t pid, int ordre)
     }      }
   
     semaphore = sem_open(chemin, O_RDWR);      semaphore = sem_open(chemin, O_RDWR);
     free(chemin);      sys_free(chemin);
   
     return(semaphore);      return(semaphore);
 }  }
Line 144  sem_destroy2(sem_t *semaphore, pid_t pid Line 144  sem_destroy2(sem_t *semaphore, pid_t pid
     }      }
   
     erreur = sem_unlink(chemin);      erreur = sem_unlink(chemin);
     free(chemin);      sys_free(chemin);
   
     return(erreur);      return(erreur);
 }  }
Line 165  sem_destroy3(sem_t *semaphore, pid_t pid Line 165  sem_destroy3(sem_t *semaphore, pid_t pid
     }      }
   
     erreur = sem_unlink(chemin);      erreur = sem_unlink(chemin);
     free(chemin);      sys_free(chemin);
   
     return(erreur);      return(erreur);
 }  }
Line 290  sem_init_SysV(sem_t *semaphore, int shar Line 290  sem_init_SysV(sem_t *semaphore, int shar
         else          else
         {          {
             // Sémaphore partagé entre plusieurs processus              // Sémaphore partagé entre plusieurs processus
             if (((*semaphore).path = malloc((strlen(racine_segment)              if (((*semaphore).path = sys_malloc((strlen(racine_segment)
                     + 2 + 256 + 1) * sizeof(unsigned char))) == NULL)                      + 2 + 256 + 1) * sizeof(unsigned char))) == NULL)
             {              {
                 return(-1);                  return(-1);
Line 304  sem_init_SysV(sem_t *semaphore, int shar Line 304  sem_init_SysV(sem_t *semaphore, int shar
             if ((desc = open((*semaphore).path, O_RDWR | O_CREAT | O_EXCL,              if ((desc = open((*semaphore).path, O_RDWR | O_CREAT | O_EXCL,
                     S_IRUSR | S_IWUSR)) == -1)                      S_IRUSR | S_IWUSR)) == -1)
             {              {
                 free((*semaphore).path);                  sys_free((*semaphore).path);
                 return(-1);                  return(-1);
             }              }
   
Line 315  sem_init_SysV(sem_t *semaphore, int shar Line 315  sem_init_SysV(sem_t *semaphore, int shar
   
             if (clef == -1)              if (clef == -1)
             {              {
                 free((*semaphore).path);                  sys_free((*semaphore).path);
                 return(-1);                  return(-1);
             }              }
   
Line 339  sem_init_SysV(sem_t *semaphore, int shar Line 339  sem_init_SysV(sem_t *semaphore, int shar
   
         psem = semaphore;          psem = semaphore;
   
         if (((*psem).cnt = malloc(sizeof(ULONG))) == NULL)          if (((*psem).cnt = sys_malloc(sizeof(ULONG))) == NULL)
         {          {
             free(psem);              sys_free(psem);
             errno = ENOMEM;              errno = ENOMEM;
             return(-1);              return(-1);
         }          }
   
         if (((*psem).nopened = malloc(sizeof(ULONG))) == NULL)          if (((*psem).nopened = sys_malloc(sizeof(ULONG))) == NULL)
         {          {
             free((*psem).cnt);              sys_free((*psem).cnt);
             free(psem);              sys_free(psem);
             errno = ENOMEM;              errno = ENOMEM;
             return(-1);              return(-1);
         }          }
   
         if (DosCreateMutexSem(NULL, &((*psem).hmtx), 0, 0) != 0)          if (DosCreateMutexSem(NULL, &((*psem).hmtx), 0, 0) != 0)
         {          {
             free((*psem).cnt);              sys_free((*psem).cnt);
             free((*psem).nopened);              sys_free((*psem).nopened);
             free(psem);              sys_free(psem);
             return(-1);              return(-1);
         }          }
   
Line 366  sem_init_SysV(sem_t *semaphore, int shar Line 366  sem_init_SysV(sem_t *semaphore, int shar
                 != 0)                  != 0)
         {          {
             DosCloseMutexSem((*psem).hmtx);              DosCloseMutexSem((*psem).hmtx);
             free((*psem).cnt);              sys_free((*psem).cnt);
             free((*psem).nopened);              sys_free((*psem).nopened);
             free(psem);              sys_free(psem);
             return(-1);              return(-1);
         }          }
   
Line 427  sem_destroy_SysV(sem_t *semaphore) Line 427  sem_destroy_SysV(sem_t *semaphore)
   
         if ((*psem).shared == 0)          if ((*psem).shared == 0)
         {          {
             free((*psem).cnt);              sys_free((*psem).cnt);
             free((*psem).nopened);              sys_free((*psem).nopened);
         }          }
         else          else
         {          {
Line 440  sem_destroy_SysV(sem_t *semaphore) Line 440  sem_destroy_SysV(sem_t *semaphore)
   
         if ((*psem).allocated != 0)          if ((*psem).allocated != 0)
         {             {   
             free(psem);              sys_free(psem);
         }          }
   
         return(0);          return(0);
Line 719  sem_t Line 719  sem_t
 #   endif  #   endif
   
 #   ifndef OS2 // IPCS_SYSV  #   ifndef OS2 // IPCS_SYSV
         if ((nom_absolu = malloc((strlen(racine_segment) + strlen(nom)          if ((nom_absolu = sys_malloc((strlen(racine_segment) + strlen(nom)
                 + 2) * sizeof(unsigned char))) == NULL)                  + 2) * sizeof(unsigned char))) == NULL)
         {          {
             return(SEM_FAILED);              return(SEM_FAILED);
Line 727  sem_t Line 727  sem_t
   
         sprintf(nom_absolu, "%s/%s", racine_segment, nom);          sprintf(nom_absolu, "%s/%s", racine_segment, nom);
   
         if ((semaphore = malloc(sizeof(sem_t))) == NULL)          if ((semaphore = sys_malloc(sizeof(sem_t))) == NULL)
         {          {
             return(SEM_FAILED);              return(SEM_FAILED);
         }          }
Line 736  sem_t Line 736  sem_t
         (*semaphore).pid = getpid();          (*semaphore).pid = getpid();
         (*semaphore).tid = pthread_self();          (*semaphore).tid = pthread_self();
 #   else  #   else
         if ((nom_segment = malloc((strlen(racine_memoire_OS2) + strlen(nom) + 1)          if ((nom_segment = sys_malloc((strlen(racine_memoire_OS2) + strlen(nom)
                 * sizeof(unsigned char))) == NULL)                  + 1) * sizeof(unsigned char))) == NULL)
         {          {
             return(SEM_FAILED);              return(SEM_FAILED);
         }             }   
Line 755  sem_t Line 755  sem_t
             ptr++;              ptr++;
         }          }
   
         if ((nom_absolu = malloc((strlen(racine_semaphores_OS2) + strlen(nom)          if ((nom_absolu = sys_malloc((strlen(racine_semaphores_OS2) +
                 + 2) * sizeof(unsigned char))) == NULL)                  strlen(nom) + 2) * sizeof(unsigned char))) == NULL)
         {          {
             return(SEM_FAILED);              return(SEM_FAILED);
         }          }
Line 776  sem_t Line 776  sem_t
   
         (*(ptr + 1)) = d_code_fin_chaine;          (*(ptr + 1)) = d_code_fin_chaine;
   
         if ((psem = malloc(sizeof(sem_t))) == NULL)          if ((psem = sys_malloc(sizeof(sem_t))) == NULL)
         {          {
             return(SEM_FAILED);              return(SEM_FAILED);
         }          }
Line 802  sem_t Line 802  sem_t
   
             if ((*semaphore).sem == -1)              if ((*semaphore).sem == -1)
             {                 {   
                 free(semaphore);                  sys_free(semaphore);
                 free(nom_absolu);                  sys_free(nom_absolu);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
 #       else // OS/2  #       else // OS/2
             if ((psem = malloc(sizeof(sem_t))) == NULL)              if ((psem = sys_malloc(sizeof(sem_t))) == NULL)
             {              {
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
   
Line 819  sem_t Line 819  sem_t
   
             if (DosOpenMutexSem(nom_absolu, &((*psem).hmtx)) != 0)              if (DosOpenMutexSem(nom_absolu, &((*psem).hmtx)) != 0)
             {              {
                 free(psem);                  sys_free(psem);
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 832  sem_t Line 832  sem_t
             {              {
                 DosCloseMutexSem((*psem).hmtx);                  DosCloseMutexSem((*psem).hmtx);
   
                 free(psem);                  sys_free(psem);
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 844  sem_t Line 844  sem_t
             {              {
                 DosCloseMutexSem((*psem).hmtx);                  DosCloseMutexSem((*psem).hmtx);
   
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
                 free(psem);                  sys_free(psem);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
   
             free(nom_segment);              sys_free(nom_segment);
   
             (*psem).cnt = (ULONG *) base;              (*psem).cnt = (ULONG *) base;
             (*psem).nopened = ((ULONG *) base) + 1;              (*psem).nopened = ((ULONG *) base) + 1;
Line 861  sem_t Line 861  sem_t
             {              {
                 DosCloseMutexSem((*psem).hmtx);                  DosCloseMutexSem((*psem).hmtx);
   
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
                 free(psem);                  sys_free(psem);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 891  sem_t Line 891  sem_t
             if ((desc = open(nom_absolu, O_CREAT | O_EXCL | O_RDWR,              if ((desc = open(nom_absolu, O_CREAT | O_EXCL | O_RDWR,
                     S_IRUSR | S_IWUSR)) == -1)                      S_IRUSR | S_IWUSR)) == -1)
             {              {
                 free(semaphore);                  sys_free(semaphore);
                 free(nom_absolu);                  sys_free(nom_absolu);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 900  sem_t Line 900  sem_t
             if ((clef = ftok(nom_absolu, 1)) == -1)              if ((clef = ftok(nom_absolu, 1)) == -1)
             {              {
                 close(desc);                  close(desc);
                 free(semaphore);                  sys_free(semaphore);
                 free(nom_absolu);                  sys_free(nom_absolu);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 917  sem_t Line 917  sem_t
   
             if ((*semaphore).sem == -1)              if ((*semaphore).sem == -1)
             {                 {   
                 free(semaphore);                  sys_free(semaphore);
                 free(nom_absolu);                  sys_free(nom_absolu);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 926  sem_t Line 926  sem_t
             argument.val = (int) valeur;              argument.val = (int) valeur;
             semctl((*semaphore).sem, 0, SETVAL, argument);              semctl((*semaphore).sem, 0, SETVAL, argument);
 #       else // OS/2  #       else // OS/2
             if ((psem = malloc(sizeof(sem_t))) == NULL)              if ((psem = sys_malloc(sizeof(sem_t))) == NULL)
             {              {
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 938  sem_t Line 938  sem_t
   
             if (DosCreateMutexSem(nom_absolu, &((*psem).hmtx), 0, 0) != 0)              if (DosCreateMutexSem(nom_absolu, &((*psem).hmtx), 0, 0) != 0)
             {              {
                 free(psem);                  sys_free(psem);
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 952  sem_t Line 952  sem_t
             {              {
                 DosCloseMutexSem((*psem).hmtx);                  DosCloseMutexSem((*psem).hmtx);
   
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
                 free(psem);                  sys_free(psem);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
Line 964  sem_t Line 964  sem_t
             {              {
                 DosCloseMutexSem((*psem).hmtx);                  DosCloseMutexSem((*psem).hmtx);
   
                 free(nom_absolu);                  sys_free(nom_absolu);
                 free(nom_segment);                  sys_free(nom_segment);
                 free(psem);                  sys_free(psem);
   
                 return(SEM_FAILED);                  return(SEM_FAILED);
             }              }
   
             free(nom_segment);              sys_free(nom_segment);
   
             (*psem).cnt = (ULONG *) base;              (*psem).cnt = (ULONG *) base;
             (*psem).nopened = ((ULONG *) base) + 1;              (*psem).nopened = ((ULONG *) base) + 1;
Line 992  sem_close_SysV(sem_t *semaphore) Line 992  sem_close_SysV(sem_t *semaphore)
 #   ifndef OS2 // IPCS_SYSV  #   ifndef OS2 // IPCS_SYSV
         if ((*semaphore).path != NULL)          if ((*semaphore).path != NULL)
         {          {
             free((*semaphore).path);              sys_free((*semaphore).path);
         }          }
   
         if ((*semaphore).alloue == -1)          if ((*semaphore).alloue == -1)
         {          {
             free(semaphore);              sys_free(semaphore);
         }          }
   
         return(0);          return(0);
Line 1020  sem_close_SysV(sem_t *semaphore) Line 1020  sem_close_SysV(sem_t *semaphore)
   
         if ((*psem).shared == 0)          if ((*psem).shared == 0)
         {          {
             free((*psem).cnt);              sys_free((*psem).cnt);
             free((*psem).nopened);              sys_free((*psem).nopened);
         }          }
         else          else
         {          {
Line 1033  sem_close_SysV(sem_t *semaphore) Line 1033  sem_close_SysV(sem_t *semaphore)
   
         if ((*psem).allocated != 0)          if ((*psem).allocated != 0)
         {          {
             free(psem);              sys_free(psem);
         }          }
   
         return(0);          return(0);
Line 1052  sem_unlink_SysV(char *nom) Line 1052  sem_unlink_SysV(char *nom)
             return(EACCES);              return(EACCES);
         }          }
   
         free(nom);          sys_free(nom);
         return(0);          return(0);
 #   else  #   else
         return(0);          return(0);

Removed from v.1.67  
changed lines
  Added in v.1.68


CVSweb interface <joel.bertrand@systella.fr>