From 41b9ea4414c81a022733b6c177ec2bf8f0419f5a Mon Sep 17 00:00:00 2001
From: glenux <glenux>
Date: Sun, 22 Feb 2004 11:50:29 +0000
Subject: [PATCH] * renommages

---
 src/nzg_allocate.c                      | 29 ++++++++------
 src/nzg_buffer.c                        | 14 ++-----
 src/nzg_bufferInit.c                    | 13 +++----
 src/nzg_proto.h                         |  2 +-
 src/{nzg_spaces.c => nzg_spaceCreate.c} | 52 +------------------------
 src/nzg_spaceDelete.c                   | 35 +++++++++++++++++
 src/nzg_spaceOpen.c                     | 25 ++++++++++++
 7 files changed, 88 insertions(+), 82 deletions(-)
 rename src/{nzg_spaces.c => nzg_spaceCreate.c} (77%)
 create mode 100644 src/nzg_spaceDelete.c
 create mode 100644 src/nzg_spaceOpen.c

diff --git a/src/nzg_allocate.c b/src/nzg_allocate.c
index 00e7f09..1ad73a5 100644
--- a/src/nzg_allocate.c
+++ b/src/nzg_allocate.c
@@ -29,11 +29,14 @@ void * msgAllocate(msgSpace *space,
   int * ressourceSemVal=NULL;
   float minPoolCoef;
   int selectedPoolIndex;
+  int bufferFreeIndex;
   
   selectedPoolIndex=-1;
 
   /* TODO: verifier le premier arg du shm_open */
-  mSPoolDataTabFd=shm_open(space->poolDataTabId,O_RDWR,MSGSPACE_DEFAULT_MODE);
+  mSPoolDataTabFd=shm_open(space->poolDataTabId,
+	  O_RDWR,
+	  MSGSPACE_DEFAULT_MODE);
   if (mSPoolDataTabFd == -1 ) {
 	fprintf( stderr, "Allocate %s failed: %s\n",
 		(char*)space->poolDataTabId,
@@ -41,13 +44,13 @@ void * msgAllocate(msgSpace *space,
 	return NULL;
   }
 
-  msgPoolData * mSPoolDataTab;
+  msgPoolData * mSPoolDataTabAddr;
 
-  mSPoolDataTab = mmap( 0, (space->poolNb) * sizeof( msgPoolData ),
+  mSPoolDataTabAddr = mmap( 0, (space->poolNb) * sizeof( msgPoolData ),
 	  PROT_READ | PROT_WRITE,
 	  MAP_SHARED, mSPoolDataTabFd, 0 );
 
-  if( mSPoolDataTab == MAP_FAILED) {
+  if( mSPoolDataTabAddr == MAP_FAILED) {
 	fprintf( stderr, "mmap failed: %s\n",
 		strerror( errno ) );
 	return NULL;
@@ -64,26 +67,24 @@ void * msgAllocate(msgSpace *space,
   if ( pool == ANYPOOL){
 	// choisir le pool au hasard (ou presque)
 	for(i=0; i<(space->poolNb); i++) {
-	  if(mSPoolDataTab[i].bufferSize >= taille) {
+	  if(mSPoolDataTabAddr[i].bufferSize >= taille) {
 		/* choisir le numero du semaphore
 		   en fonction du nombre de lock poses / nombre de buffer */
 		msgPoolSemIdIntern(ressourceSemId,space->id,i);
 		ressourceSemFd = sem_open(ressourceSemId,O_CREAT,SEM_DEFAULT_MODE,0);
 		if (ressourceSemFd == SEM_FAILED){ 
-#warning "G�rer mieu les erreurs..." 
 		  perror("sem_open"); return NULL; 
 		}
 		/* on remplit le tableau avec les valeurs des semaphores */
 				
 		if (sem_getvalue(ressourceSemFd, ressourceSemVal) < 0){ 
-#warning "G�rer mieu les erreurs..."
 		  perror("sem_getvalue"); return NULL; 
 		}
 
 		if ((*ressourceSemVal) < 0){
 		  /* il y a ressourceSemVal processus qui attendent d�ja... */
 		  semPoolCoef[nbLockedSem] = 
-			(float) (- (*ressourceSemVal) / mSPoolDataTab[i].bufferNb);
+			(float) (- (*ressourceSemVal) / mSPoolDataTabAddr[i].bufferNb);
 		  nbLockedSem++;
 		}
 		if(sem_trywait(ressourceSemFd)) {
@@ -94,7 +95,6 @@ void * msgAllocate(msgSpace *space,
 		  break;
 		}
 	if(	sem_close(ressourceSemFd) <0){
-#warning "G�rer mieu les erreurs..." 
 		  perror("sem_getvalue"); return NULL; 
 	}
 	  } // if buffSize > taille
@@ -125,7 +125,7 @@ void * msgAllocate(msgSpace *space,
   }
 
   if (!gotRessourceSem){
-	strcpy(resultPoolId,mSPoolDataTab[selectedPoolIndex].id);
+	strcpy(resultPoolId,mSPoolDataTabAddr[selectedPoolIndex].id);
 	msgPoolSemIdIntern(ressourceSemId,space->id,selectedPoolIndex);
 	ressourceSemFd=sem_open(ressourceSemId,O_CREAT,SEM_DEFAULT_MODE,0);
 	if(ressourceSemFd==SEM_FAILED){
@@ -146,8 +146,13 @@ void * msgAllocate(msgSpace *space,
 
   /* on modifie maintenant les donn�es */
   /* - on r�cupere l'index du premier buffer libre */
-  //TODO:int bufferFreeIndex = msgBufferGetFreeIndex(space,selectedPoolIndex);
-  
+  bufferFreeIndex = msgBufferGetFreeIndex(mSPoolDataTabAddr,selectedPoolIndex);
+  if (bufferFreeIndex < 0){
+	sem_close(poolDataTabSemFd);
+	// aucun buffer libre ?
+	return NULL;
+  }
+  printf("Buffer %d libre a attacher !\n",bufferFreeIndex);
   /*TODO: mapper le buffer libre dans l'esp addr du proc */
   //TODO:
   /* - on s'enregistre aupres de ce buffer */  
diff --git a/src/nzg_buffer.c b/src/nzg_buffer.c
index 6851883..57a51e6 100644
--- a/src/nzg_buffer.c
+++ b/src/nzg_buffer.c
@@ -1,10 +1,4 @@
-#include "libnazgul.h"
-#include "nzg_ids.h"
-
-int msgBufferGetFreeIndex(msgSpaceId spaceId,int poolIndex){
-  return -1;
-}
-
-int msgBufferAttachProc(msgSpaceId spaceId,int poolIndex,void * addr){
-  return -1;
-}
+/*
+   int msgBufferDetachProc(msgSpace * space, int poolIndex){
+   }
+   */
diff --git a/src/nzg_bufferInit.c b/src/nzg_bufferInit.c
index 17f1661..38fb8d8 100644
--- a/src/nzg_bufferInit.c
+++ b/src/nzg_bufferInit.c
@@ -5,7 +5,6 @@ int msgBufferInit(msgPoolData * poolDataTabAddr,int poolIndex){
 int bufferInfoTabFd;
 msgBufferInfo * bufferInfoTabAddr;
 int bufferInfoNb;  
-int bufferFreeIndex;
 
   //r�cuperer l'ID du BufferInfoTab;
   strcpy(bufferInfoTabId, poolDataTabAddr[poolIndex].bufferInfoTabId);
@@ -21,16 +20,14 @@ int bufferFreeIndex;
   bufferInfoTabAddr=mmap(NULL,bufferInfoNb*sizeof(msgBufferInfo),
 	  PROT_READ,MAP_SHARED,bufferInfoTabFd,(off_t)0);
 
-  int i=0;
-  while ((i<bufferInfoNb) 
-	  && (bufferInfoTabAddr[i].ownerPid != (pid_t)-1)){ i++; }
-  if (i == bufferInfoNb){ return -1; }
-  bufferFreeIndex=i;
+  int i;
+  for (i=0;i<bufferInfoNb;i++){
+	bufferInfoTabAddr[i].ownerPid = (pid_t)-1;
+  }
   
   if (munmap(bufferInfoTabAddr,bufferInfoNb*sizeof(msgBufferInfo))< 0)
   {	perror("munmap"); return -1; }
 
-  
- return -1; 
+  return 0;
 }
 
diff --git a/src/nzg_proto.h b/src/nzg_proto.h
index b27daed..0c6c82c 100644
--- a/src/nzg_proto.h
+++ b/src/nzg_proto.h
@@ -14,7 +14,7 @@ msgSpace *msgSpaceOpen(msgSpaceId spaceId);
 int msgSpaceDelete(msgSpaceId spaceId);
 /* src/nzg_buffer.c */
 int msgBufferGetFreeIndex(msgPoolData * poolDataTab, int poolIndex);
-int msgBufferAttachProc(msgPoolData * poolDataTab, int poolIndex, void *addr);
+int msgBufferAttachProc(msgPoolData * poolDataTab, int poolIndex, int bufferIndex,void *addr);
 
 
 #endif
diff --git a/src/nzg_spaces.c b/src/nzg_spaceCreate.c
similarity index 77%
rename from src/nzg_spaces.c
rename to src/nzg_spaceCreate.c
index 386875e..0bd4d63 100644
--- a/src/nzg_spaces.c
+++ b/src/nzg_spaceCreate.c
@@ -1,10 +1,7 @@
 #include "libnazgul.h"
 #include "nzg_ids.h"
 
-/* prototypes des f#define MSGSPACE_DEFAULT_MODE 0600
-#define MSGSPACE_ID_LEN 32
-
-onctions annexes � ne pas exporter */
+/* prototypes des fonctions annexes � ne pas exporter */
 int msgSpaceIdIntern(msgSpaceId dest,const msgSpaceId src );
 int msgPoolDataIdIntern(msgSpaceId dest,const msgSpaceId src );
 
@@ -146,51 +143,4 @@ msgSpace * msgSpaceCreate(
 }
 
 
-/*
- * spaceId : blabla
- */
-
-msgSpace * msgSpaceOpen(msgSpaceId spaceId){
-  int shmFd;
-  msgSpaceId nzgId;
-  msgSpace * mSAddr;
-  if (msgSpaceIdIntern(nzgId,spaceId) < 0){
-	return NULL;
-  }
-  if ((shmFd=shm_open(nzgId,O_RDWR,MSGSPACE_DEFAULT_MODE)) < 0){
-	perror("shm_open");
-	return NULL;
-  }
-  mSAddr=mmap(NULL,sizeof(msgSpace),PROT_READ|PROT_WRITE,MAP_SHARED,shmFd,(off_t)0);
-  
-  return mSAddr;
-}
-
-int msgSpaceDelete(msgSpaceId spaceId){
-  fprintf(stderr,"Deleting msgSpace with id : %s\n",spaceId);
-  //int shmId;
-  msgSpaceId nzgId;
-  msgSpace * space;
-  if (msgSpaceIdIntern(nzgId,spaceId) == -1){
-	//TODO: message d'erreur
-	return -1;
-  }
-
-  space = msgSpaceOpen(spaceId);
-  /* TODO: supprimer chaque pool */
-  
-  printf("openned successfully !\n");
-  printf("Unlinking DataTab... ");
-  if (shm_unlink(space->poolDataTabId) < 0){
-  	perror("shm_unlink");
-	return -1;
-  }
-  printf("ok\n");
-
-  if (shm_unlink(nzgId)<0){
-	perror("shm_unlink");
-	return -1;
-  };
-  return 0;
-}
 
diff --git a/src/nzg_spaceDelete.c b/src/nzg_spaceDelete.c
new file mode 100644
index 0000000..186819d
--- /dev/null
+++ b/src/nzg_spaceDelete.c
@@ -0,0 +1,35 @@
+#include "libnazgul.h"
+#include "nzg_ids.h"
+
+/* prototypes des fonctions annexes � ne pas exporter */
+int msgSpaceIdIntern(msgSpaceId dest,const msgSpaceId src );
+int msgPoolDataIdIntern(msgSpaceId dest,const msgSpaceId src );
+
+int msgSpaceDelete(msgSpaceId spaceId){
+  fprintf(stderr,"Deleting msgSpace with id : %s\n",spaceId);
+  //int shmId;
+  msgSpaceId nzgId;
+  msgSpace * space;
+  if (msgSpaceIdIntern(nzgId,spaceId) == -1){
+	//TODO: message d'erreur
+	return -1;
+  }
+
+  space = msgSpaceOpen(spaceId);
+  /* TODO: supprimer chaque pool */
+  
+  printf("openned successfully !\n");
+  printf("Unlinking DataTab... ");
+  if (shm_unlink(space->poolDataTabId) < 0){
+  	perror("shm_unlink");
+	return -1;
+  }
+  printf("ok\n");
+
+  if (shm_unlink(nzgId)<0){
+	perror("shm_unlink");
+	return -1;
+  };
+  return 0;
+}
+
diff --git a/src/nzg_spaceOpen.c b/src/nzg_spaceOpen.c
new file mode 100644
index 0000000..c29bb56
--- /dev/null
+++ b/src/nzg_spaceOpen.c
@@ -0,0 +1,25 @@
+#include "libnazgul.h"
+#include "nzg_ids.h"
+
+/* prototypes des fonctions annexes � ne pas exporter */
+int msgSpaceIdIntern(msgSpaceId dest,const msgSpaceId src );
+int msgPoolDataIdIntern(msgSpaceId dest,const msgSpaceId src );
+
+
+msgSpace * msgSpaceOpen(msgSpaceId spaceId){
+  int shmFd;
+  msgSpaceId nzgId;
+  msgSpace * mSAddr;
+  if (msgSpaceIdIntern(nzgId,spaceId) < 0){
+	return NULL;
+  }
+  if ((shmFd=shm_open(nzgId,O_RDWR,MSGSPACE_DEFAULT_MODE)) < 0){
+	perror("shm_open");
+	return NULL;
+  }
+  mSAddr=mmap(NULL,sizeof(msgSpace),PROT_READ|PROT_WRITE,MAP_SHARED,shmFd,(off_t)0);
+  
+  return mSAddr;
+}
+
+