*** empty log message ***
This commit is contained in:
parent
e04b91a4de
commit
025e63852c
4 changed files with 89 additions and 3 deletions
|
@ -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,
|
mSPoolDataTabFd=shm_open(space->poolDataTabId,
|
||||||
O_RDWR,
|
O_RDWR,
|
||||||
MSGSPACE_DEFAULT_MODE);
|
MSGSPACE_DEFAULT_MODE);
|
||||||
|
|
|
@ -1,6 +1,86 @@
|
||||||
#include "libnazgul.h"
|
#include "libnazgul.h"
|
||||||
|
|
||||||
int msgFree(msgSpace * space, void * addr){
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,5 +40,11 @@ int msgSpaceDelete(msgSpaceId externId);
|
||||||
/* nzg_spaceOpen.c */
|
/* nzg_spaceOpen.c */
|
||||||
msgSpace *msgSpaceOpen(msgSpaceId externId);
|
msgSpace *msgSpaceOpen(msgSpaceId externId);
|
||||||
/* nzg_state.c */
|
/* nzg_state.c */
|
||||||
|
int msgBufferGetProcAttach(
|
||||||
|
msgPoolData * poolDataTabAddr,
|
||||||
|
int poolNb,
|
||||||
|
int * poolIndex,
|
||||||
|
int * bufferIndex,
|
||||||
|
void * addr
|
||||||
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue