itlibthread: make pthreadperthread the default - plan9port - [fork] Plan 9 from user space Err mx1.adamsgaard.dk 70 hgit clone git://src.adamsgaard.dk/plan9port URL:git://src.adamsgaard.dk/plan9port mx1.adamsgaard.dk 70 1Log /src/plan9port/log.gph mx1.adamsgaard.dk 70 1Files /src/plan9port/files.gph mx1.adamsgaard.dk 70 1Refs /src/plan9port/refs.gph mx1.adamsgaard.dk 70 1README /src/plan9port/file/README.md.gph mx1.adamsgaard.dk 70 1LICENSE /src/plan9port/file/LICENSE.gph mx1.adamsgaard.dk 70 i--- Err mx1.adamsgaard.dk 70 1commit e68f07d46f5f168dc2076286627279540bf1f99e /src/plan9port/commit/e68f07d46f5f168dc2076286627279540bf1f99e.gph mx1.adamsgaard.dk 70 1parent b73633b1b4e9d3dbd680edf900b2b53befbf5a9a /src/plan9port/commit/b73633b1b4e9d3dbd680edf900b2b53befbf5a9a.gph mx1.adamsgaard.dk 70 hAuthor: Russ Cox URL:mailto:rsc@swtch.com mx1.adamsgaard.dk 70 iDate: Wed, 30 Dec 2020 00:16:10 -0500 Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 ilibthread: make pthreadperthread the default Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 iDiffstat: Err mx1.adamsgaard.dk 70 i M man/man3/thread.3 | 34 +++++++++++++------------------ Err mx1.adamsgaard.dk 70 i M src/libthread/thread.c | 2 +- Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i2 files changed, 15 insertions(+), 21 deletions(-) Err mx1.adamsgaard.dk 70 i--- Err mx1.adamsgaard.dk 70 1diff --git a/man/man3/thread.3 b/man/man3/thread.3 /src/plan9port/file/man/man3/thread.3.gph mx1.adamsgaard.dk 70 it@@ -158,27 +158,21 @@ by Err mx1.adamsgaard.dk 70 i The thread library provides a Err mx1.adamsgaard.dk 70 i .I main Err mx1.adamsgaard.dk 70 i function that sets up a proc with a single thread executing Err mx1.adamsgaard.dk 70 i-.I threadmain Err mx1.adamsgaard.dk 70 i-on a stack of size Err mx1.adamsgaard.dk 70 i-.I mainstacksize Err mx1.adamsgaard.dk 70 i-(default eight kilobytes). Err mx1.adamsgaard.dk 70 i-To set Err mx1.adamsgaard.dk 70 i-.IR mainstacksize , Err mx1.adamsgaard.dk 70 i-declare a global variable Err mx1.adamsgaard.dk 70 i-initialized to the desired value Err mx1.adamsgaard.dk 70 i-.RI ( e.g. , Err mx1.adamsgaard.dk 70 i-.B int Err mx1.adamsgaard.dk 70 i-.B mainstacksize Err mx1.adamsgaard.dk 70 i-.B = Err mx1.adamsgaard.dk 70 i-.BR 1024 ). Err mx1.adamsgaard.dk 70 i-When using the Err mx1.adamsgaard.dk 70 i+.IR threadmain . Err mx1.adamsgaard.dk 70 i+.PP Err mx1.adamsgaard.dk 70 i+Every thread is backed by an operating system-provided Err mx1.adamsgaard.dk 70 i .I pthread Err mx1.adamsgaard.dk 70 i-library, Err mx1.adamsgaard.dk 70 i-.B mainstacksize Err mx1.adamsgaard.dk 70 i-is ignored, as is the stack size argument to Err mx1.adamsgaard.dk 70 i-.BR proccreate : Err mx1.adamsgaard.dk 70 i-the first thread in each proc Err mx1.adamsgaard.dk 70 i-runs on the native system stack. Err mx1.adamsgaard.dk 70 i+and runs on its system-provided stack; Err mx1.adamsgaard.dk 70 i+.I mainstacksize Err mx1.adamsgaard.dk 70 i+and the the stack size arguments to Err mx1.adamsgaard.dk 70 i+.I proccreate Err mx1.adamsgaard.dk 70 i+and Err mx1.adamsgaard.dk 70 i+.I threadcreate Err mx1.adamsgaard.dk 70 i+are ignored. Err mx1.adamsgaard.dk 70 i+Although each thread is backed by a separate Err mx1.adamsgaard.dk 70 i+.IR pthread , Err mx1.adamsgaard.dk 70 i+the threads in a proc are still scheduled non-preemptively Err mx1.adamsgaard.dk 70 i+as on Plan 9 and as described below. Err mx1.adamsgaard.dk 70 i .PP Err mx1.adamsgaard.dk 70 i .I Threadcreate Err mx1.adamsgaard.dk 70 i creates a new thread in the calling proc, returning a unique integer Err mx1.adamsgaard.dk 70 1diff --git a/src/libthread/thread.c b/src/libthread/thread.c /src/plan9port/file/src/libthread/thread.c.gph mx1.adamsgaard.dk 70 it@@ -7,7 +7,7 @@ static uint threadnsysproc; Err mx1.adamsgaard.dk 70 i static Lock threadnproclock; Err mx1.adamsgaard.dk 70 i static Ref threadidref; Err mx1.adamsgaard.dk 70 i static Proc *threadmainproc; Err mx1.adamsgaard.dk 70 i-static int pthreadperthread; Err mx1.adamsgaard.dk 70 i+static int pthreadperthread = 1; Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i static void addproc(Proc*); Err mx1.adamsgaard.dk 70 i static void delproc(Proc*); Err mx1.adamsgaard.dk 70 .