aboutsummaryrefslogtreecommitdiff
path: root/src/libthread
AgeCommit message (Collapse)AuthorFilesLines
2021-01-14libthread: call setpgrp in programs that will backgroundRuss Cox1-0/+7
This fixes the 'run stats from rc; exit rc; stats dies' problem. It's unclear whether this is the right fix or whether rc should be starting all its interactive commands in their own process groups. But at least it does fix stats dying.
2020-12-30libthread: drop schedlockRuss Cox2-2/+1
Having two locks in the proc was causing deadlocks.
2020-12-30libthread: simplifyRuss Cox21-1469/+11
Now that everything uses pthreads and pthreadperthread, can delete various conditionals, all the custom context code, and so on. Also update documents. Fixes #355.
2020-12-30libthread: make pthreadperthread the defaultRuss Cox1-1/+1
2020-12-30libthread: fix pthreadperthread bugsRuss Cox2-107/+187
2020-12-30libthread: add threadmaybackgroundRuss Cox4-7/+15
Programs that want to background themselves now need to define threadmaybackground returning 1. This avoids a confusing (to people and debuggers) extra parent process for all the threaded programs that will never want to background themselves.
2020-12-30libthread: delete NetBSD special caseRuss Cox4-465/+4
I added a direct call from thread.c to pthread.c's _threadpthreadstart in May, and no one has complained about NetBSD being broken. So probably no one is using this on NetBSD at all. Make pthread the only option.
2020-12-15libthread: fix use after free of first thread in each procRuss Cox1-1/+9
This was causing sporadic but frequent crashes at startup in 9pserve on the new M1 Macs, correctly diagnosing a use-after-free.
2020-06-15libthread: use libc functions in ucontext for macOS (#417)Xiao-Yong3-81/+3
2020-05-17libthread: handle spurious _procsleep wakeups, fix $LIBTHREAD handlingRuss Cox2-6/+26
2020-05-17libthread: add pthreadperthread mode and use under ASANRuss Cox4-18/+120
ASAN can't deal with the coroutine stacks. In theory we can call into ASAN runtime to let it know about them, but ASAN still has problems with fork or exit happening from a non-system stack. Bypass all possible problems by just having a full OS thread for each libthread thread. The threads are still cooperatively scheduled within a proc (in thos mode, a group of OS threads). Setting the environment variable LIBTHREAD=pthreadperthread will enable the pthreadperthread mode, as will building with CC9FLAGS='-fsanitize=address' in $PLAN9/config. This solution is much more general than ASAN - for example if you are trying to find all the thread stacks in a reproducible crash you can use pthreadperthread mode with any debugger that knows only about OS threads.
2020-02-11libthread: fix ARM build by renaming fileNeven Sajko1-0/+0
Fixes #363 Change-Id: Ic8ad5ccce3935fdf00732d78d3024b535db90447
2020-01-24libthread: comment stack border a bit moreRuss Cox1-4/+10
2020-01-19libthread: fix test deps, cleanup in mkfileRuss Cox1-1/+4
2020-01-19libthread: clean up sysofiles.sh a bit moreRuss Cox1-25/+10
2020-01-19libthread: rm OpenBSD tas implementationsRuss Cox2-23/+1
OpenBSD is using pthreads now, so no need for tas.
2020-01-19libthread: use consistent stack calculation code in makecontextRuss Cox11-83/+36
Also reduce duplication: makecontext is per-arch not per-os-arch. May fix #353.
2020-01-19libthread: rm NetBSD pthread reference in sysofiles.shRuss Cox1-1/+1
It may be that pthreads on NetBSD is now good enough, but the build as written (introduced in 23a2368 at my suggestion) is certainly broken, since both NetBSD.c and pthread.c define the same functions. If NetBSD does support pthreads now, then a few things should happen together: - libthread/sysofiles.sh should drop its top NetBSD case entirely - libthread/NetBSD.c should be deleted - libthread/NetBSD-*-asm.s should be deleted - include/u.h's NetBSD case should define PLAN9PORT_USING_PTHREADS and #include <pthread.h> For now, restore to less clearly broken build.
2020-01-19all: remove Linux 2.4 vs 2.6 detectionRuss Cox2-44/+3
Linux 2.4 is dead. (The libthread code hasn't worked for Linux 2.4 for a long time.)
2020-01-19libthread: remove Linux 2.4 codeRuss Cox7-513/+462
Linux.c was for Linux 2.4 and is no longer used directly, only indirectly because NetBSD.c was a 1-line file #including Linux.c. So mv Linux.c NetBSD.c. Also rm Linux-*-asm.s which was for Linux 2.4 as well.
2020-01-19libthread: rm unused sparc-ucontext.hRuss Cox2-37/+0
More dead code.
2020-01-19libthread: rm Darwin pre-11.0.0 supportRuss Cox5-192/+0
Darwin 11.0.0 was Mac OS X 10.7.0 aka Lion. The previous version was Snow Leopard, which has been unsupported by Apple since February 2014.
2020-01-19libthread: rm FreeBSD 4 codeRuss Cox6-500/+52
Pretty sure FreeBSD 4 is gone now. :-)
2020-01-19libthread: rm OpenBSD.cRuss Cox1-145/+0
This should have been deleted in 20f5692b (2012-07-14), which removed the mkfile and sysofiles.sh references to it.
2020-01-19libthread: rm unused ARM (get|set)mcontext (#354)Neven Sajko1-43/+0
They were just a duplicate of my(get|set)mcontext from the other assembly file, and unused from threadimpl.h. Change-Id: Id8003e5177ed9d37a7f0210037acbe55bbf7f708
2020-01-16libthread: NetBSD supports pthreads, remove ancient systems in sysofiles.shDan Cross1-8/+1
Signed-off-by: Dan Cross <cross@gajendra.net>
2020-01-14libthread: use mmap to allocate OpenBSD stacksRuss Cox6-8/+61
Should fix faults on OpenBSD. Fixes #218. Fixes #226.
2020-01-13libthread: fix fault in teardown of procRuss Cox2-1/+2
Fixes #332.
2020-01-13libthread: fix nbrecvul, recvul to match man page, Plan 9Russ Cox1-2/+2
They return 0 on failure, not -1. Bug introduced in my original libthread-for-Unix code. Fixes #230.
2020-01-12libthread: run first thread in proc on system stackRuss Cox3-17/+47
For pthread systems that are fussy about which stack is used, this makes sure that threadmain runs on a system stack. If you only use proccreate (never threadcreate), all threads run on system stacks.
2020-01-10Trivial changes: whitespace and modes.Dan Cross23-54/+29
Remote whitespace at the ends of lines. Remove blank lines from the ends of files. Change modes on source files so that they are not executable. Signed-off-by: Dan Cross <cross@gajendra.net>
2012-10-22libthread: add threadspawndRuss Cox2-6/+16
R=rsc http://codereview.appspot.com/6742064
2012-10-20fix gcc 4.7 warnings (thanks Tuncer Ayaz)Russ Cox1-2/+1
R=rsc http://codereview.appspot.com/6744053
2012-07-14openbsd updates (thanks Pascal Stumpf)Russ Cox7-138/+80
R=rsc http://codereview.appspot.com/6401049
2011-10-23OS X PowerPC fixes (thanks Cameron Kaiser)Russ Cox2-2/+2
2011-10-14libthread: fix 10.5.8 build - uname says 9.8.0Russ Cox1-1/+1
2011-10-13libthread: Lion context routinesRuss Cox6-3/+129
2011-08-02build: OS X 64-bit buildRuss Cox5-18/+27
R=rsc http://codereview.appspot.com/4838047
2011-05-18arm: build fixesRichard Miller3-20/+17
Get p9p to build cleanly for ARM - based on suggestions from rsc and eekee, plus a final tweak from me. Tested (a bit) on sheevaplug (ubuntu jaunty), Nokia N800 (maemo 4) and Nokia N900 (maemo 5). R=rsc CC=plan9port.codebot http://codereview.appspot.com/4524056
2009-11-18libthread: context switching for arm, still not completeRuss Cox4-4/+78
2009-09-11INSTALL: fix build on Snow LeopardRuss Cox1-0/+3
http://codereview.appspot.com/116073
2009-08-17libthread: make page work on OS XRuss Cox2-0/+5
2008-12-23libthread: work around gcc warning on FreeBSDRuss Cox1-1/+1
2008-10-26libthread: correct sysfatal handler prototypeRuss Cox1-4/+2
2008-07-20libthread: add proper sysfatalTim Wiess1-0/+16
2008-07-09libthread: abort on single-threaded lock contentionRuss Cox1-0/+24
2008-06-01libthread: fix 64-bit bug in threadstart (Nathaniel Filardo)Russ Cox1-1/+1
2008-05-06libthread: fix no-receive nbrecv etc. bug (David Jeannot)Russ Cox1-8/+12
2008-05-05libthread: input sanity checksRuss Cox1-2/+3
2008-02-28libthread: remove bogus write in threadmainRuss Cox1-1/+0