style cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40547 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -15,49 +15,54 @@ static bool blocking[4];
|
|||||||
static pthread_key_t self;
|
static pthread_key_t self;
|
||||||
|
|
||||||
|
|
||||||
static void suspendLoop(int *i) {
|
static void
|
||||||
sigjmp_buf env;
|
suspendLoop(int *i) {
|
||||||
sigset_t mask;
|
sigjmp_buf env;
|
||||||
|
sigset_t mask;
|
||||||
|
|
||||||
sigsetjmp(env, false);
|
sigsetjmp(env, false);
|
||||||
|
|
||||||
state[*i] = false;
|
state[*i] = false;
|
||||||
|
|
||||||
sigfillset(&mask);
|
sigfillset(&mask);
|
||||||
sigdelset(&mask, SIGUSR1);
|
sigdelset(&mask, SIGUSR1);
|
||||||
sigdelset(&mask, SIGTERM);
|
sigdelset(&mask, SIGTERM);
|
||||||
|
|
||||||
while(state[*i] == false && blocking[*i] == false)
|
while (state[*i] == false && blocking[*i] == false)
|
||||||
sigsuspend(&mask);
|
sigsuspend(&mask);
|
||||||
|
|
||||||
state[*i] = true;
|
state[*i] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void suspendHandler(int sig) {
|
static void
|
||||||
int *i = (int*)pthread_getspecific(self);
|
suspendHandler(int sig) {
|
||||||
suspendLoop(i);
|
int *i = (int*)pthread_getspecific(self);
|
||||||
|
suspendLoop(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initialiseSignals()
|
|
||||||
|
static void
|
||||||
|
initialiseSignals()
|
||||||
{
|
{
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
sigset_t mask;
|
sigset_t mask;
|
||||||
|
|
||||||
act.sa_handler = suspendHandler;
|
act.sa_handler = suspendHandler;
|
||||||
sigemptyset(&act.sa_mask);
|
sigemptyset(&act.sa_mask);
|
||||||
act.sa_flags = 0;
|
act.sa_flags = 0;
|
||||||
sigaction(SIGUSR1, &act, NULL);
|
sigaction(SIGUSR1, &act, NULL);
|
||||||
|
|
||||||
sigemptyset(&mask);
|
sigemptyset(&mask);
|
||||||
sigaddset(&mask, SIGQUIT);
|
sigaddset(&mask, SIGQUIT);
|
||||||
sigaddset(&mask, SIGINT);
|
sigaddset(&mask, SIGINT);
|
||||||
sigaddset(&mask, SIGPIPE);
|
sigaddset(&mask, SIGPIPE);
|
||||||
sigprocmask(SIG_BLOCK, &mask, NULL);
|
sigprocmask(SIG_BLOCK, &mask, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void self_suspend(int* i)
|
static void
|
||||||
|
self_suspend(int* i)
|
||||||
{
|
{
|
||||||
sigset_t mask;
|
sigset_t mask;
|
||||||
|
|
||||||
@@ -77,7 +82,9 @@ static void self_suspend(int* i)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void *threadStart(void *arg) {
|
void *
|
||||||
|
threadStart(void *arg)
|
||||||
|
{
|
||||||
int *i = (int*)arg;
|
int *i = (int*)arg;
|
||||||
pthread_setspecific(self, i);
|
pthread_setspecific(self, i);
|
||||||
|
|
||||||
@@ -94,7 +101,8 @@ void *threadStart(void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*void suspendAllThreads()
|
/*void
|
||||||
|
suspendAllThreads()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
blocking[i] = false;
|
blocking[i] = false;
|
||||||
@@ -111,7 +119,8 @@ void *threadStart(void *arg) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void resumeAllThreads()
|
void
|
||||||
|
resumeAllThreads()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
blocking[i] = true;
|
blocking[i] = true;
|
||||||
@@ -130,14 +139,15 @@ void resumeAllThreads()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
initialiseSignals();
|
initialiseSignals();
|
||||||
|
|
||||||
pthread_key_create(&self, NULL);
|
pthread_key_create(&self, NULL);
|
||||||
|
|
||||||
pthread_attr_init(&attributes);
|
pthread_attr_init(&attributes);
|
||||||
pthread_attr_setdetachstate(&attributes, PTHREAD_CREATE_DETACHED);
|
pthread_attr_setdetachstate(&attributes, PTHREAD_CREATE_DETACHED);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
if (pthread_create(&tid[i], &attributes, threadStart, &i) != 0)
|
if (pthread_create(&tid[i], &attributes, threadStart, &i) != 0)
|
||||||
@@ -152,3 +162,4 @@ int main(int argc, char **argv)
|
|||||||
resumeAllThreads();
|
resumeAllThreads();
|
||||||
printf("resuming all threads done\n");
|
printf("resuming all threads done\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user