*** empty log message ***
This commit is contained in:
parent
a1367fd5ee
commit
a501a39ba6
2 changed files with 33 additions and 4 deletions
11
src/get.c
11
src/get.c
|
@ -4,6 +4,10 @@
|
||||||
|
|
||||||
void * msgGet(msgSpace * space,int queueIndex,int option){
|
void * msgGet(msgSpace * space,int queueIndex,int option){
|
||||||
void * resultAddr;
|
void * resultAddr;
|
||||||
|
msgQueueId queueId;
|
||||||
|
msgQueue * queue;
|
||||||
|
msgQueueElemId oldElemId;
|
||||||
|
msgQueueElem * oldElem;
|
||||||
// on teste la possibilité de lecture sur la liste...
|
// on teste la possibilité de lecture sur la liste...
|
||||||
if (option == NONBLOCK){
|
if (option == NONBLOCK){
|
||||||
if (msgQueueReadTryLock(space->externId,queueIndex) <0){
|
if (msgQueueReadTryLock(space->externId,queueIndex) <0){
|
||||||
|
@ -19,19 +23,18 @@ void * msgGet(msgSpace * space,int queueIndex,int option){
|
||||||
// la lecture est possible
|
// la lecture est possible
|
||||||
// on essaye donc de modifier la liste
|
// on essaye donc de modifier la liste
|
||||||
msgQueueProtLock(space->externId,queueIndex);
|
msgQueueProtLock(space->externId,queueIndex);
|
||||||
msgQueueId queueId;
|
|
||||||
msgQueue * queue;
|
|
||||||
msgQueueIdIntern(queueId,space->externId,queueIndex);
|
msgQueueIdIntern(queueId,space->externId,queueIndex);
|
||||||
// ouvrir la file
|
// ouvrir la file
|
||||||
queue = msgQueueOpen(queueId);
|
queue = msgQueueOpen(queueId);
|
||||||
|
|
||||||
msgQueueElemId oldElemId;
|
|
||||||
// recupérer l'id de l'ancien element...
|
// recupérer l'id de l'ancien element...
|
||||||
msgQueueRem(queue, oldElemId);
|
msgQueueRem(queue, oldElemId);
|
||||||
|
|
||||||
msgQueueElem * oldElem;
|
|
||||||
oldElem = msgQueueElemOpen(oldElemId);
|
oldElem = msgQueueElemOpen(oldElemId);
|
||||||
|
|
||||||
|
// mapper le buffer dans l'espace mémoire du processus
|
||||||
|
// attacher au buffer...
|
||||||
|
|
||||||
// fermer la file
|
// fermer la file
|
||||||
msgQueueClose(queue);
|
msgQueueClose(queue);
|
||||||
|
|
||||||
|
|
26
src/queueReadTryLock.c
Normal file
26
src/queueReadTryLock.c
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#include "libnazgul.h"
|
||||||
|
#include "ids.h"
|
||||||
|
|
||||||
|
int msgQueueReadTryLock(msgSpaceId externId,int queueIdx){
|
||||||
|
sem_t * queueSemFd;
|
||||||
|
msgQueueSemId queueSemId;
|
||||||
|
|
||||||
|
msgQueueReadSemIdIntern(queueSemId,externId,queueIdx);
|
||||||
|
queueSemFd=sem_open(queueSemId,O_CREAT|O_EXCL,SEM_DEFAULT_MODE,1);
|
||||||
|
if(queueSemFd==SEM_FAILED){
|
||||||
|
NZG_ERROR("sem_open",queueSemId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sem_trywait(queueSemFd)==-1){
|
||||||
|
NZG_ERROR("sem_wait",queueSemId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
sem_close(queueSemFd);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
ERROR:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue