l3.libnazgul/src/nzg_msgList.c

103 lines
2.1 KiB
C
Raw Normal View History

#include "libnazgul.h"
2004-02-22 17:29:10 +00:00
// fonction pour la creation d'une liste de msgSpace
// cree un shm qui connait l'element de debut de liste
// et l'element de fin de liste.
// il ne se cr<63>e que s'il n'en existe pas deja un.
//
// cr<63>e <20>galement un s<>maphore de gestion de liste
// a verouiller avant toute modification
msgSpaceListInit();
2004-02-22 15:37:47 +00:00
2004-02-22 17:29:10 +00:00
// verouille le semaphore de la liste
msgSpaceListLock();
2004-02-22 15:37:47 +00:00
2004-02-22 17:29:10 +00:00
// deverouille le semaphore de la liste
msgSpaceListUnlock();
// cree un nouvel elemen
msgSpaceListElemCreate(msgSpaceListElemId resultName,msgSpaceId spaceId);
// modifie l'element suivant de l'element choisi
// et le fait pointer sur un nouvel ID
msgSpaceListElemLinkNext(msgSpaceListElemId current,msgSpaceListElemId next);
// ajoute un element en d<>but de liste.
// fait pointer l'ancien dernier vers lui
// il s'enregistre en tant que dernier chez la liste
msgSpaceListAdd(msgSpaceListElemId );
msgSpaceListRem(msgSpaceListElemId spaceId);
2004-02-22 15:37:47 +00:00
void *add(char * idAncien, char *idNouveau);
int descMemory;
void * add(char * idAncien, char *idNouveau){
descMemory=shm_open("/titi",
O_RDWR|O_CREAT|O_EXCL|O_TRUNC,
0600);
if (descMemory== -1){
printf("erreur de sh_open\n");
return NULL;
};
if (ftruncate(descMemory,1024)== -1 ){
printf("erreur ftruncate");
}
/* memory= mmap(0, 1024,
PROT_READ | PROT_WRITE,
MAP_SHARED, mSFd, 0)*/
2004-02-22 15:56:01 +00:00
strcpy(idAncien, idNouveau);
2004-02-22 17:17:09 +00:00
return NULL;
2004-02-22 15:37:47 +00:00
}
/* ajout dans la liste */
/*AVEC POINTEUR */
/*
msgSpaceListElem *addBegining( msgSpaceListElem*list,int ownerpid){
msgSpaceListElem *unSpacemsgListElem;
if( (unSpacemsgListElem=(msgSpaceListElem *)malloc(sizeof(msgSpaceListElem) ) )==NULL){
perror("ereur dallocation de memoire");
exit(1);}
unSpacemsgListElem->ownerPid = ownerpid;
return(unSpacemsgListElem);
}
int test(int argc,char **argv){
msgSpaceListElem *ma_liste;
msgSpaceListElem *listMove;
ma_liste=NULL;
ma_liste=addBegining(ma_liste, 3);
ma_liste=addBegining(ma_liste, 6);
ma_liste=addBegining(ma_liste, 5);
for (listMove=ma_liste ;listMove!=NULL ; listMove=listMove->next)
{
2004-02-19 23:30:05 +00:00
printf("valaeur :%d\n",listMove->ownerPid);
}
return(0);
}
2004-02-22 15:37:47 +00:00
*/