diff options
Diffstat (limited to 'src/libthread/setproc.c')
| -rw-r--r-- | src/libthread/setproc.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libthread/setproc.c b/src/libthread/setproc.c new file mode 100644 index 00000000..5f1e2a8d --- /dev/null +++ b/src/libthread/setproc.c @@ -0,0 +1,36 @@ +/* + * Avoid using threading calls for single-proc programs. + */ + +#include "threadimpl.h" + +static int multi; +static Proc *theproc; + +void +_threadsetproc(Proc *p) +{ + if(!multi) + theproc = p; + else + _kthreadsetproc(p); +} + +Proc* +_threadgetproc(void) +{ + if(!multi) + return theproc; + return _kthreadgetproc(); +} + +void +_threadmultiproc(void) +{ + if(multi) + return; + + multi = 1; + _kthreadinit(); + _threadsetproc(theproc); +} |
