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 */