2 コミット 23ab04a863 ... 43664364c8

作者 SHA1 メッセージ 日付
  Rich Felker 43664364c8 fix compile regression in exit on archs without SYS_pause 1 ヶ月 前
  Rich Felker 6d8000d3c6 abstract missing SYS_pause syscall with macros 1 ヶ月 前
3 ファイル変更13 行追加6 行削除
  1. 1 1
      src/exit/exit.c
  2. 11 0
      src/internal/syscall.h
  3. 1 5
      src/unistd/pause.c

+ 1 - 1
src/exit/exit.c

@@ -38,7 +38,7 @@ _Noreturn void exit(int code)
 	int tid =  __pthread_self()->tid;
 	int prev = a_cas(exit_lock, 0, tid);
 	if (prev == tid) a_crash();
-	else if (prev) for (;;) __syscall(SYS_pause);
+	else if (prev) for (;;) __sys_pause();
 
 	__funcs_on_exit();
 	__libc_exit_fini();

+ 11 - 0
src/internal/syscall.h

@@ -391,6 +391,17 @@ static inline long __alt_socketcall(int sys, int sock, int cp, syscall_arg_t a,
 #define __sys_open_cp(...) __SYSCALL_DISP(__sys_open_cp,,__VA_ARGS__)
 #define sys_open_cp(...) __syscall_ret(__sys_open_cp(__VA_ARGS__))
 
+#ifdef SYS_pause
+#define __sys_pause() __syscall(SYS_pause)
+#define __sys_pause_cp() __syscall_cp(SYS_pause)
+#else
+#define __sys_pause() __syscall(SYS_ppoll, 0, 0, 0, 0)
+#define __sys_pause_cp() __syscall_cp(SYS_ppoll, 0, 0, 0, 0)
+#endif
+
+#define sys_pause() __syscall_ret(__sys_pause())
+#define sys_pause_cp() __syscall_ret(__sys_pause_cp())
+
 #ifdef SYS_wait4
 #define __sys_wait4(a,b,c,d) __syscall(SYS_wait4,a,b,c,d)
 #define __sys_wait4_cp(a,b,c,d) __syscall_cp(SYS_wait4,a,b,c,d)

+ 1 - 5
src/unistd/pause.c

@@ -3,9 +3,5 @@
 
 int pause(void)
 {
-#ifdef SYS_pause
-	return syscall_cp(SYS_pause);
-#else
-	return syscall_cp(SYS_ppoll, 0, 0, 0, 0);
-#endif
+	return sys_pause_cp();
 }