Subject: Re: Why no /usr/include/sys/kthread.h?
To: Frederick Bruckman <>
From: Jason R Thorpe <>
List: tech-kern
Date: 06/04/2000 08:29:42
On Sun, Jun 04, 2000 at 07:48:09AM -0500, Frederick Bruckman wrote:

 > It says in kern/kern_kthread.c that any process can fork a kernel
 > thread. Is that true? If so, will the interface be exported in 1.5?
 > I ask because, in looking at the "wine" FreeBSD assembly, it seems
 > that all it's trying to do is start a single "wineserver" kthread.
 > It seems the natural way to do this on NetBSD would be to call
 > kthread_create(). Does that make sense?

FreeBSD's `kthread' term refers to a user process created with rfork(2)
that shares all of the same address space, file descriptors, etc. with
the parent, i.e. like Linux's __clone(2).

kthreads in NetBSD are completely different; they are for the kernel's
use only.

What you should do is add a __clone(2) to the NetBSD C library; we already
have all the support for it in the kernel, and there's precedent for it
(Linux).  (Editorial note: calling it rfork(2) would be wrong, since the
semantics needed would be incompatible with the original rfork(2) from
Plan 9.)

        -- Jason R. Thorpe <>