55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
|
#include "libnazgul.h"
|
|||
|
|
|||
|
int msgPut(msgSpace * space,int queueIndex, void * addr){
|
|||
|
// retrouver le pool, buffer qui correspondent <20> l'addresse...
|
|||
|
msgPoolData * poolDataTabAddr;
|
|||
|
int poolIndex;
|
|||
|
int bufferIndex;
|
|||
|
int err;
|
|||
|
msgPoolDataTabLock(space);
|
|||
|
poolDataTabAddr=msgPoolDataTabOpen(space);
|
|||
|
|
|||
|
err=msgBufferGetProcAttach(
|
|||
|
poolDataTabAddr,
|
|||
|
space->poolNb,
|
|||
|
&poolIndex,
|
|||
|
&bufferIndex,
|
|||
|
addr
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
// ouvrir la queue avec le bon index
|
|||
|
msgQueueId queueId;
|
|||
|
msgQueue * queue;
|
|||
|
msgQueueIdIntern(queueId,space->externId,queueIndex);
|
|||
|
queue = msgQueueOpen(queueId);
|
|||
|
|
|||
|
// TODO:creer un element vide
|
|||
|
msgQueueElemId newElemId;
|
|||
|
msgQueueElem * queueElem;
|
|||
|
|
|||
|
msgQueueElemCreate(newElemId,queueId,queue->elemCounter);
|
|||
|
// ouvrir l'element
|
|||
|
queueElem=msgQueueElemOpen(newElemId);
|
|||
|
// modifier les index pour retrouver le buffer
|
|||
|
queueElem->poolIndex=poolIndex;
|
|||
|
queueElem->bufferIndex=bufferIndex;
|
|||
|
// fermer l'element
|
|||
|
msgQueueElemClose(queueElem);
|
|||
|
|
|||
|
//ajouter le message a la bonne file...
|
|||
|
msgQueueElemAdd(queue,newElemId);
|
|||
|
|
|||
|
// fermer la file
|
|||
|
msgQueueClose(queue);
|
|||
|
|
|||
|
msgPoolDataTabClose(space,poolDataTabAddr);
|
|||
|
/* msgPoolDataTabUnlock(space->id);
|
|||
|
*/
|
|||
|
return 0;
|
|||
|
ERROR:
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
|