From 60bf94ec27a04dfee53b16e9a7e40f1e599b6d00 Mon Sep 17 00:00:00 2001 From: Flemmard Date: Mon, 10 Mar 2014 20:18:45 +0100 Subject: on stock android, pthread_cancel and phtread_setcancelstate doesn't exist Change-Id: Icbe281a301004ae2bcda4821a50fb4a41088e85d --- fuse/fuse_loop_mt.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'fuse/fuse_loop_mt.c') diff --git a/fuse/fuse_loop_mt.c b/fuse/fuse_loop_mt.c index 7e400c2a4..aefc3ec98 100644 --- a/fuse/fuse_loop_mt.c +++ b/fuse/fuse_loop_mt.c @@ -81,9 +81,13 @@ static void *fuse_do_work(void *data) }; int res; +#ifndef ANDROID pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); +#endif res = fuse_session_receive_buf(mt->se, &fbuf, &ch); +#ifndef ANDROID pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); +#endif if (res == -EINTR) continue; if (res <= 0) { @@ -245,8 +249,13 @@ int fuse_session_loop_mt(struct fuse_session *se) while (!fuse_session_exited(se)) sem_wait(&mt.finish); +#ifndef ANDROID for (w = mt.main.next; w != &mt.main; w = w->next) pthread_cancel(w->thread_id); +#else + for (w = mt.main.next; w != &mt.main; w = w->next) + pthread_kill(w->thread_id, SIGUSR1); +#endif mt.exit = 1; while (mt.main.next != &mt.main) -- cgit v1.2.3