Просмотр исходного кода

Allow ipcc library to work on some arches which have different parameter
passing requirements for enums.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1886 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 17 лет назад
Родитель
Сommit
0e70079b5c
1 измененных файлов с 13 добавлено и 2 удалено
  1. 13 2
      lib/coroipcc.c

+ 13 - 2
lib/coroipcc.c

@@ -261,6 +261,15 @@ priv_change_send (struct ipc_segment *ipc_segment)
 	ipc_segment->euid = req_priv_change.euid;
 	return (0);
 }
+
+#if defined(_SEM_SEMUN_UNDEFINED)
+union semun {
+        int val;
+        struct semid_ds *buf;
+        unsigned short int *array;
+        struct seminfo *__buf;
+};
+#endif
 	
 cs_error_t
 coroipcc_service_connect (
@@ -277,6 +286,7 @@ coroipcc_service_connect (
 	int res;
 	mar_req_setup_t req_setup;
 	mar_res_setup_t res_setup;
+	union semun semun;
 
 	res_setup.error = CS_ERR_LIBRARY;
 
@@ -336,12 +346,13 @@ coroipcc_service_connect (
 		goto error_exit;
 	}
 	
-	res = semctl (ipc_segment->semid, 0, SETVAL, 0);
+	semun.val = 0;
+	res = semctl (ipc_segment->semid, 0, SETVAL, semun);
 	if (res != 0) {
 		goto error_exit;
 	}
 
-	res = semctl (ipc_segment->semid, 1, SETVAL, 0);
+	res = semctl (ipc_segment->semid, 1, SETVAL, semun);
 	if (res != 0) {
 		goto error_exit;
 	}