Mercurial > hg > CbC > CbC_gcc
comparison libgo/misc/cgo/test/sigprocmask.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 // Copyright 2015 The Go Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style | |
3 // license that can be found in the LICENSE file. | |
4 | |
5 // +build !windows | |
6 | |
7 #include <signal.h> | |
8 #include <stdlib.h> | |
9 #include <pthread.h> | |
10 #include <stdio.h> | |
11 #include <unistd.h> | |
12 | |
13 extern void IntoGoAndBack(); | |
14 | |
15 int CheckBlocked() { | |
16 sigset_t mask; | |
17 sigprocmask(SIG_BLOCK, NULL, &mask); | |
18 return sigismember(&mask, SIGIO); | |
19 } | |
20 | |
21 static void* sigthreadfunc(void* unused) { | |
22 sigset_t mask; | |
23 sigemptyset(&mask); | |
24 sigaddset(&mask, SIGIO); | |
25 sigprocmask(SIG_BLOCK, &mask, NULL); | |
26 IntoGoAndBack(); | |
27 return NULL; | |
28 } | |
29 | |
30 int RunSigThread() { | |
31 pthread_t thread; | |
32 int r; | |
33 | |
34 r = pthread_create(&thread, NULL, &sigthreadfunc, NULL); | |
35 if (r != 0) | |
36 return r; | |
37 return pthread_join(thread, NULL); | |
38 } |