From 1e8ef0682018032d508a86e51049a79b2ea7d7b7 Mon Sep 17 00:00:00 2001 From: glenux Date: Tue, 24 Feb 2004 11:15:06 +0000 Subject: [PATCH] *** empty log message *** --- src/allocate.c | 21 ++++++--------------- src/get.c | 9 +++++++++ src/put.c | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/allocate.c b/src/allocate.c index 4582721..b37ac8a 100644 --- a/src/allocate.c +++ b/src/allocate.c @@ -22,7 +22,6 @@ void * msgAllocate(msgSpace *space, float semPoolCoef[space->poolNb]; int idxPoolOptimum; bool gotRessourceSem; - sem_t * poolDataTabSemFd; msgPoolDataTabSemId ressourceSemId; sem_t * ressourceSemFd; int ressourceSemVal; @@ -163,25 +162,19 @@ void * msgAllocate(msgSpace *space, printf("Passed %s\n",ressourceSemId); } + /* on a acqui un semaphore pour la ressouce */ /* on acquiert le droit de modifier les infos sur la ressource */ /* on protege le tableau des associations */ - poolDataTabSemFd=sem_open(space->poolDataTabSemId, - O_CREAT,SEM_DEFAULT_MODE,1); - if (poolDataTabSemFd == SEM_FAILED){ - NZG_ERROR("sem_open : ouverture de la ressource", - space->poolDataTabSemId); - return NULL; - } - sem_wait(poolDataTabSemFd); + msgPoolDataTabLock(space); /* on modifie maintenant les données */ /* - on récupere l'index du premier buffer libre */ bufferFreeIndex = msgBufferGetFreeIndex(mSPoolDataTabAddr,selectedPoolIndex); if (bufferFreeIndex < 0){ - sem_close(poolDataTabSemFd); // aucun buffer libre ? - return NULL; + NZG_ERROR("msgBufferGetFreeIndex",""); + goto ERROR; } printf("Buffer selected : %d,%d\n",selectedPoolIndex,bufferFreeIndex); /* mapper le buffer libre dans l'esp addr du proc */ @@ -220,8 +213,7 @@ void * msgAllocate(msgSpace *space, resultAddr); close(mSPoolFd); - sem_post(poolDataTabSemFd); - sem_close(poolDataTabSemFd); + msgPoolDataTabUnlock(space); /* unmapper le msgPoolDataTab */ munmap(mSPoolDataTabAddr,(space->poolNb) * sizeof( msgPoolData )); @@ -229,8 +221,7 @@ void * msgAllocate(msgSpace *space, return resultAddr; ERROR: NZG_ERROR("msgAllocate","error processing"); - sem_post(poolDataTabSemFd); - sem_close(poolDataTabSemFd); + msgPoolDataTabUnlock(space); munmap(mSPoolDataTabAddr,(space->poolNb) * sizeof( msgPoolData )); return NULL; } diff --git a/src/get.c b/src/get.c index 3cb7e11..e76cc78 100644 --- a/src/get.c +++ b/src/get.c @@ -32,7 +32,16 @@ void * msgGet(msgSpace * space,int queueIndex,int option){ oldElem = msgQueueElemOpen(oldElemId); + /* on récupere la taille des buffer dans la pool du buffer */ + int bufferSize; + msgPoolData * poolDataTab; + poolDataTab=msgPoolDataTabOpen(space); + bufferSize=poolDataTab[oldElem->poolIndex].bufferSize; + msgPoolDataTabClose(space,poolDataTab); // mapper le buffer dans l'espace mémoire du processus + + + // attacher au buffer... // fermer la file diff --git a/src/put.c b/src/put.c index 5a4ef10..818dd74 100644 --- a/src/put.c +++ b/src/put.c @@ -40,7 +40,7 @@ int msgPut(msgSpace * space,int queueIndex, void * addr){ msgQueueElemClose(queueElem); //ajouter le message a la bonne file... - msgQueueElemAdd(queue,newElemId); + msgQueueAdd(queue,newElemId); // fermer la file msgQueueClose(queue);