* ajouté un semaphore de protection du DataTab (et des infos qui en découlent)

* verrouillé le semaphore dans create
This commit is contained in:
glenux 2004-02-23 10:30:02 +00:00
parent c8091765fc
commit 0857256f59
3 changed files with 17 additions and 4 deletions

View file

@ -162,7 +162,7 @@ void * msgAllocate(msgSpace *space,
/* on acquiert le droit de modifier les infos sur la ressource */ /* on acquiert le droit de modifier les infos sur la ressource */
poolDataTabSemFd=sem_open(space->poolDataTabSemId,O_CREAT,SEM_DEFAULT_MODE,1); poolDataTabSemFd=sem_open(space->poolDataTabSemId,O_CREAT,SEM_DEFAULT_MODE,1);
printf("VOILAAA : %s\n",space->poolDataTabSemId);
//sem_wait(poolDataTabSemFd); //sem_wait(poolDataTabSemFd);
/* on modifie maintenant les données */ /* on modifie maintenant les données */
@ -173,7 +173,7 @@ void * msgAllocate(msgSpace *space,
// aucun buffer libre ? // aucun buffer libre ?
return NULL; return NULL;
} }
printf("Buffer %d libre a attacher !\n",bufferFreeIndex); printf("Buffer selected : %d,%d\n",selectedPoolIndex,bufferFreeIndex);
/*TODO: mapper le buffer libre dans l'esp addr du proc */ /*TODO: mapper le buffer libre dans l'esp addr du proc */
//TODO: //TODO:
/* - on s'enregistre aupres de ce buffer */ /* - on s'enregistre aupres de ce buffer */

View file

@ -16,7 +16,20 @@ int msgSpaceIdIntern(msgSpaceId dest,const msgSpaceId src ){
#endif #endif
return 0; return 0;
} }
int msgPoolDataTabSemIdIntern(
msgPoolSemId destSemId,
const msgSpaceId externId){
if (strlen(externId)>MSGSPACE_ID_LEN*4){
return -1;
}
/* sprintf(resNzgId,"/tmp/.nzg-%s",(char *)spaceId); */
#ifdef _NZG_REALFILEID
sprintf(destSemId,"/tmp/nzgPoolDTSem-%s",(char *)externId);
#else
sprintf(destSemId,"/nzgPoolDTSem-%s",(char *)externId);
#endif
return 0;
}
int msgPoolSemIdIntern( int msgPoolSemIdIntern(
msgPoolSemId destSemId, msgPoolSemId destSemId,
const msgSpaceId srcPoolId, const msgSpaceId srcPoolId,

View file

@ -38,7 +38,7 @@ int msgPoolCreate(
} }
// on met un semaphore sur le pool // on met un semaphore sur le pool
ressourceSemFd = sem_open(poolRessourceSemId, O_CREAT|O_EXCL, 0666, buffNb); ressourceSemFd = sem_open(poolRessourceSemId, O_CREAT|O_EXCL,SEM_DEFAULT_MODE, buffNb);
if (ressourceSemFd == SEM_FAILED){ if (ressourceSemFd == SEM_FAILED){
NZG_ERROR("sem_open : creation de la ressource",poolRessourceSemId); NZG_ERROR("sem_open : creation de la ressource",poolRessourceSemId);
return -1; return -1;