aboutsummaryrefslogtreecommitdiff
path: root/src/libthread/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libthread/main.c')
-rw-r--r--src/libthread/main.c98
1 files changed, 0 insertions, 98 deletions
diff --git a/src/libthread/main.c b/src/libthread/main.c
deleted file mode 100644
index bc4efd27..00000000
--- a/src/libthread/main.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Thread library.
- */
-
-#include "threadimpl.h"
-
-typedef struct Mainarg Mainarg;
-struct Mainarg
-{
- int argc;
- char **argv;
-};
-
-int mainstacksize;
-
-extern void (*_sysfatal)(char*, va_list);
-extern Jmp *(*_notejmpbuf)(void);
-
-static void
-mainlauncher(void *arg)
-{
- Mainarg *a;
-
- a = arg;
- _kmaininit();
- threadmain(a->argc, a->argv);
- threadexits("threadmain");
-}
-
-int
-main(int argc, char **argv)
-{
- Mainarg a;
- Proc *p;
-
- /*
- * In pthreads, threadmain is actually run in a subprocess,
- * so that the main process can exit (if threaddaemonize is called).
- * The main process relays notes to the subprocess.
- * _Threadbackgroundsetup will return only in the subprocess.
- */
- _threadbackgroundinit();
-
- /*
- * Instruct QLock et al. to use our scheduling functions
- * so that they can operate at the thread level.
- */
- _qlockinit(_threadsleep, _threadwakeup);
-
- /*
- * Install our own _threadsysfatal which takes down
- * the whole confederation of procs.
- */
- _sysfatal = _threadsysfatal;
-
- /*
- * Install our own jump handler.
- */
- _notejmpbuf = _threadgetjmp;
-
- /*
- * Install our own signal handler.
- */
- notify(_threadnote);
-
- /*
- * Construct the initial proc running mainlauncher(&a).
- */
- if(mainstacksize == 0)
- mainstacksize = 32*1024;
- a.argc = argc;
- a.argv = argv;
- p = _newproc();
- _newthread(p, mainlauncher, &a, mainstacksize, "threadmain", 0);
- _threadscheduler(p);
- abort(); /* not reached */
- return 0;
-}
-
-/*
- * No-op function here so that sched.o drags in main.o.
- */
-void
-_threadlinkmain(void)
-{
-}
-
-Jmp*
-_threadgetjmp(void)
-{
- static Jmp j;
- Proc *p;
-
- p = _threadgetproc();
- if(p == nil)
- return &j;
- return &p->sigjmp;
-}