#include "libnazgul.h" int msgPut(msgSpace * space,int queueIndex, void * addr){ // retrouver le pool, buffer qui correspondent à 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); msgQueueProtLock(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); msgQueueProtUnlock(space->externId,queueIndex); msgPoolDataTabClose(space,poolDataTabAddr); /* msgPoolDataTabUnlock(space->id); */ msgQueueReadUnlock(space->externId,queueIndex); return 0; ERROR: return -1; }