*** empty log message ***

This commit is contained in:
glenux 2004-02-23 15:54:29 +00:00 committed by Glenn Y. Rolland
parent cf22adf9ac
commit 1007ca56c6
4 changed files with 89 additions and 3 deletions

View file

@ -38,7 +38,7 @@ void * msgAllocate(msgSpace *space,
/* TODO: verifier le premier arg du shm_open */
/* verifier le premier arg du shm_open */
mSPoolDataTabFd=shm_open(space->poolDataTabId,
O_RDWR,
MSGSPACE_DEFAULT_MODE);

View file

@ -1,6 +1,86 @@
#include "libnazgul.h"
int msgFree(msgSpace * space, void * addr){
int poolIndex;
int bufferIndex;
int poolDataTabFd;
msgPoolData * poolDataTabAddr;
sem_t * poolDataTabSemFd;
msgPoolDataTabSemId ressourceSemId;
sem_t * ressourceSemFd;
/* 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 -1;
}
sem_wait(poolDataTabSemFd);
/* verifier le premier arg du shm_open */
poolDataTabFd=shm_open(space->poolDataTabId,
O_RDWR,
MSGSPACE_DEFAULT_MODE);
if (poolDataTabFd == -1 ) {
fprintf( stderr, "Allocate %s failed: %s\n",
(char*)space->poolDataTabId,
strerror( errno ) );
return -1;
}
poolDataTabAddr = mmap( 0, (space->poolNb) * sizeof( msgPoolData ),
PROT_READ | PROT_WRITE,
MAP_SHARED, poolDataTabFd, 0 );
if( poolDataTabAddr == MAP_FAILED) {
fprintf( stderr, "mmap failed: %s\n",
strerror( errno ) );
return -1;
}
// TODO: verouiller semaphore DataInfo
int err;
err=msgBufferGetProcAttach(
poolDataTabAddr,
space->poolNb,
&poolIndex,
&bufferIndex,
addr
);
msgBufferDetachProc(poolDataTabAddr,poolIndex,bufferIndex,addr);
/* unmapper le msgPoolDataTab */
munmap(poolDataTabAddr,(space->poolNb) * sizeof( msgPoolData ));
close(poolDataTabFd);
// deverouiller semaphore DataInfo
sem_post(poolDataTabSemFd);
sem_close(poolDataTabSemFd);
// deverouiller semaphore ressource.
msgPoolSemIdIntern(ressourceSemId,space->id,poolIndex);
ressourceSemFd = sem_open(ressourceSemId,O_CREAT,SEM_DEFAULT_MODE,0);
if (ressourceSemFd == SEM_FAILED){
NZG_ERROR("sem_open",ressourceSemId);
return -1;
}
sem_post(ressourceSemFd);
sem_close(ressourceSemFd);
//sem_open ressource
//sem_post
//sem_close
return -1;
}

View file

@ -40,5 +40,11 @@ int msgSpaceDelete(msgSpaceId externId);
/* nzg_spaceOpen.c */
msgSpace *msgSpaceOpen(msgSpaceId externId);
/* nzg_state.c */
int msgBufferGetProcAttach(
msgPoolData * poolDataTabAddr,
int poolNb,
int * poolIndex,
int * bufferIndex,
void * addr
);
#endif