소스 검색

clean up pthread_sigmask/sigprocmask dependency order

it's nicer for the function that doesn't use errno to be independent,
and have the other one call it. saves some time and avoids clobbering
errno.
Rich Felker 13 년 전
부모
커밋
ad5881842e
2개의 변경된 파일7개의 추가작업 그리고 11개의 파일을 삭제
  1. 4 8
      src/signal/sigprocmask.c
  2. 3 3
      src/thread/pthread_sigmask.c

+ 4 - 8
src/signal/sigprocmask.c

@@ -1,14 +1,10 @@
 #include <signal.h>
 #include <errno.h>
-#include "syscall.h"
-#include "libc.h"
-#include "pthread_impl.h"
 
 int sigprocmask(int how, const sigset_t *set, sigset_t *old)
 {
-	if (how > 2U) {
-		errno = EINVAL;
-		return -1;
-	}
-	return syscall(SYS_rt_sigprocmask, how, set, old, 8);
+	int r = pthread_sigmask(how, set, old);
+	if (!r) return r;
+	errno = r;
+	return -1;
 }

+ 3 - 3
src/thread/pthread_sigmask.c

@@ -1,10 +1,10 @@
 #include <signal.h>
 #include <errno.h>
 #include <pthread.h>
+#include "syscall.h"
 
 int pthread_sigmask(int how, const sigset_t *set, sigset_t *old)
 {
-	int ret = sigprocmask(how, set, old);
-	if (ret) return errno;
-	return 0;
+	if (how > 2U) return EINVAL;
+	return -__syscall(SYS_rt_sigprocmask, how, set, old, 8);
 }