فهرست منبع

- moved shm_*lock back to shm_mem.h (to have them properly inlined)

Andrei Pelinescu-Onciul 24 سال پیش
والد
کامیت
8bb87b9605
2فایلهای تغییر یافته به همراه53 افزوده شده و 51 حذف شده
  1. 0 49
      mem/shm_mem.c
  2. 53 2
      mem/shm_mem.h

+ 0 - 49
mem/shm_mem.c

@@ -104,56 +104,7 @@ void* _shm_resize( void* p , unsigned int s)
 }
 
 
-inline void shm_lock()
-{
-	struct sembuf sop;
-	
-	sop.sem_num=0;
-	sop.sem_op=-1; /*down*/
-	sop.sem_flg=0 /*SEM_UNDO*/;
-again:
-	semop(shm_semid, &sop, 1);
-#if 0
-	switch(ret){
-		case 0: /*ok*/
-			break;
-		case EINTR: /*interrupted by signal, try again*/
-			DBG("sh_lock: interrupted by signal, trying again...\n");
-			goto again;
-		default:
-			LOG(L_ERR, "ERROR: sh_lock: error waiting on semaphore: %s\n",
-					strerror(errno));
-	}
-#endif
-}
-
-
-
-inline void shm_unlock()
-{
-	struct sembuf sop;
-	
-	sop.sem_num=0;
-	sop.sem_op=1; /*up*/
-	sop.sem_flg=0 /*SEM_UNDO*/;
-again:
-	semop(shm_semid, &sop, 1);
-#if 0
-	/*should ret immediately*/
-	switch(ret){
-		case 0: /*ok*/
-			break;
-		case EINTR: /*interrupted by signal, try again*/
-			DBG("sh_lock: interrupted by signal, trying again...\n");
-			goto again;
-		default:
-			LOG(L_ERR, "ERROR: sh_lock: error waiting on semaphore: %s\n",
-					strerror(errno));
-	}
-#endif
-}
 
-/* ret -1 on erro*/
 int shm_mem_init()
 {
 

+ 53 - 2
mem/shm_mem.h

@@ -44,11 +44,62 @@ extern int shm_semid;
 
 int shm_mem_init();
 void shm_mem_destroy();
-inline void shm_lock();
-inline void shm_unlock();
 
 
 
+/* inline functions (do not move them to *.c, they won't be inlined anymore) */
+static inline void shm_lock()
+{
+	struct sembuf sop;
+	
+	sop.sem_num=0;
+	sop.sem_op=-1; /*down*/
+	sop.sem_flg=0 /*SEM_UNDO*/;
+again:
+	semop(shm_semid, &sop, 1);
+#if 0
+	switch(ret){
+		case 0: /*ok*/
+			break;
+		case EINTR: /*interrupted by signal, try again*/
+			DBG("sh_lock: interrupted by signal, trying again...\n");
+			goto again;
+		default:
+			LOG(L_ERR, "ERROR: sh_lock: error waiting on semaphore: %s\n",
+					strerror(errno));
+	}
+#endif
+}
+
+
+
+static inline void shm_unlock()
+{
+	struct sembuf sop;
+	
+	sop.sem_num=0;
+	sop.sem_op=1; /*up*/
+	sop.sem_flg=0 /*SEM_UNDO*/;
+again:
+	semop(shm_semid, &sop, 1);
+#if 0
+	/*should ret immediately*/
+	switch(ret){
+		case 0: /*ok*/
+			break;
+		case EINTR: /*interrupted by signal, try again*/
+			DBG("sh_lock: interrupted by signal, trying again...\n");
+			goto again;
+		default:
+			LOG(L_ERR, "ERROR: sh_lock: error waiting on semaphore: %s\n",
+					strerror(errno));
+	}
+#endif
+}
+
+/* ret -1 on erro*/
+
+
 
 #ifdef DBG_QM_MALLOC