Blame


1 912fba95 2003-11-24 devnull #define NOPLAN9DEFINES
2 912fba95 2003-11-24 devnull #include <u.h>
3 912fba95 2003-11-24 devnull #include <libc.h>
4 fd04aace 2003-11-23 devnull #include <pthread.h>
5 983990c8 2004-05-14 devnull #include "9proc.h"
6 fd04aace 2003-11-23 devnull
7 fd04aace 2003-11-23 devnull extern int __isthreaded;
8 fd04aace 2003-11-23 devnull int
9 fd04aace 2003-11-23 devnull ffork(int flags, void(*fn)(void*), void *arg)
10 fd04aace 2003-11-23 devnull {
11 fd04aace 2003-11-23 devnull pthread_t tid;
12 fd04aace 2003-11-23 devnull
13 fd04aace 2003-11-23 devnull if(flags != (RFMEM|RFNOWAIT)){
14 fd04aace 2003-11-23 devnull werrstr("ffork unsupported");
15 fd04aace 2003-11-23 devnull return -1;
16 fd04aace 2003-11-23 devnull }
17 fd04aace 2003-11-23 devnull
18 b1455f33 2004-04-30 devnull _p9uproc(0);
19 fd04aace 2003-11-23 devnull if(pthread_create(&tid, NULL, (void*(*)(void*))fn, arg) < 0)
20 fd04aace 2003-11-23 devnull return -1;
21 b1455f33 2004-04-30 devnull if((int)tid == 0)
22 b1455f33 2004-04-30 devnull _p9uproc(0);
23 fd04aace 2003-11-23 devnull return (int)tid;
24 fd04aace 2003-11-23 devnull }
25 fd04aace 2003-11-23 devnull
26 fd04aace 2003-11-23 devnull int
27 fd04aace 2003-11-23 devnull getfforkid(void)
28 fd04aace 2003-11-23 devnull {
29 fd04aace 2003-11-23 devnull return (int)pthread_self();
30 fd04aace 2003-11-23 devnull }
31 fd04aace 2003-11-23 devnull