File tree 1 file changed +0
-52
lines changed
1 file changed +0
-52
lines changed Original file line number Diff line number Diff line change @@ -7,14 +7,10 @@ package main
7
7
import "fmt"
8
8
9
9
/*
10
- #cgo CFLAGS: -pthread
11
- #cgo LDFLAGS: -pthread
12
-
13
10
#include <signal.h>
14
11
#include <stdlib.h>
15
12
#include <stdio.h>
16
13
#include <string.h>
17
- #include <pthread.h>
18
14
19
15
int *p;
20
16
static void sigsegv() {
@@ -30,60 +26,12 @@ static void segvhandler(int signum) {
30
26
}
31
27
}
32
28
33
- static volatile sig_atomic_t sigioSeen;
34
-
35
- // Use up some stack space.
36
- static void recur(int i, char *p) {
37
- char a[1024];
38
-
39
- *p = '\0';
40
- if (i > 0) {
41
- recur(i - 1, a);
42
- }
43
- }
44
-
45
- static void iohandler(int signum) {
46
- char a[1024];
47
-
48
- recur(4, a);
49
- sigioSeen = 1;
50
- }
51
-
52
- static void* sigioThread(void* arg __attribute__ ((unused))) {
53
- raise(SIGIO);
54
- return NULL;
55
- }
56
-
57
- static void sigioOnThread() {
58
- pthread_t tid;
59
- int i;
60
-
61
- pthread_create(&tid, NULL, sigioThread, NULL);
62
- pthread_join(tid, NULL);
63
-
64
- // Wait until the signal has been delivered.
65
- i = 0;
66
- while (!sigioSeen) {
67
- if (sched_yield() < 0) {
68
- perror("sched_yield");
69
- }
70
- i++;
71
- if (i > 10000) {
72
- fprintf(stderr, "looping too long waiting for signal\n");
73
- exit(EXIT_FAILURE);
74
- }
75
- }
76
- }
77
-
78
29
static void __attribute__ ((constructor)) sigsetup(void) {
79
30
struct sigaction act;
80
31
81
32
memset(&act, 0, sizeof act);
82
33
act.sa_handler = segvhandler;
83
34
sigaction(SIGSEGV, &act, NULL);
84
-
85
- act.sa_handler = iohandler;
86
- sigaction(SIGIO, &act, NULL);
87
35
}
88
36
*/
89
37
import "C"
You can’t perform that action at this time.
0 commit comments