From f20db3714742bb08dea2852bbb82635744cc6ee5 Mon Sep 17 00:00:00 2001 From: glenux Date: Mon, 23 Feb 2004 10:01:26 +0000 Subject: [PATCH] =?UTF-8?q?*=20modifi=C3=A9=20le=20selecteur=20ANYPOOL=20*?= =?UTF-8?q?=20corrig=C3=A9=20un=20bug=20de=20semaphore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/nzg_allocate.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/nzg_allocate.c b/src/nzg_allocate.c index 34dc422..2a2fc90 100644 --- a/src/nzg_allocate.c +++ b/src/nzg_allocate.c @@ -89,7 +89,7 @@ void * msgAllocate(msgSpace *space, printf("resVal < 0 : %d\n",ressourceSemVal); /* il y a ressourceSemVal processus qui attendent déja... */ semPoolCoef[nbLockedSem] = - (float) (- (ressourceSemVal) / mSPoolDataTabAddr[i].bufferNb); + (float) ((1-ressourceSemVal) / mSPoolDataTabAddr[i].bufferNb); nbLockedSem++; } if(sem_trywait(ressourceSemFd)==0) { @@ -146,7 +146,10 @@ void * msgAllocate(msgSpace *space, return NULL; } - printf("SemWait... %s\n",ressourceSemId); + //TODO:virer la ligne suivante: + sem_getvalue(ressourceSemFd, &ressourceSemVal); + + printf("SemWait... %s : %d\n",ressourceSemId,ressourceSemVal); if (sem_wait(ressourceSemFd) < 0){ NZG_ERROR("sem_wait",ressourceSemId); sem_close(ressourceSemFd); @@ -157,8 +160,11 @@ void * msgAllocate(msgSpace *space, /* on a acqui un semaphore pour la ressouce */ /* on acquiert le droit de modifier les infos sur la ressource */ + poolDataTabSemFd=sem_open(space->poolDataTabSemId,O_CREAT,SEM_DEFAULT_MODE,1); + //sem_wait(poolDataTabSemFd); + /* on modifie maintenant les données */ /* - on récupere l'index du premier buffer libre */ bufferFreeIndex = msgBufferGetFreeIndex(mSPoolDataTabAddr,selectedPoolIndex); @@ -174,6 +180,7 @@ void * msgAllocate(msgSpace *space, //TODO: msgBufferAttachProc(space,selectedPoolIndex,resultAddr); + // sem_post(poolDataTabSemFd); sem_close(poolDataTabSemFd); /* TODO: unmapper le msgPoolDataTab */