Update the thread shim to use the current kernel threading API.

We need to use kthread_create() here for a few reasons.  First
off to old kernel_thread() API functioin will be going away.
Secondly, and more importantly if I use kthread_create() we can
then properly implement a thread_exit() function which terminates
the kernel thread at any point with do_exit().  This fixes our
cleanup bug which was caused by dropping a mutex twice after
thread_exit() didn't really exit.



git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@66 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
This commit is contained in:
behlendo
2008-04-04 04:44:16 +00:00
parent 996faa6869
commit 968eccd1d1
2 changed files with 17 additions and 17 deletions
+5 -4
View File
@@ -8,6 +8,7 @@ extern "C" {
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/spinlock.h>
#include <linux/kthread.h>
#include <sys/types.h>
#include <sys/sysmacros.h>
@@ -30,14 +31,14 @@ typedef void (*thread_func_t)(void *);
#define thread_create(stk, stksize, func, arg, len, pp, state, pri) \
__thread_create(stk, stksize, (thread_func_t)func, \
arg, len, pp, state, pri)
#func, arg, len, pp, state, pri)
#define thread_exit() __thread_exit()
#define curthread get_current()
extern kthread_t *__thread_create(caddr_t stk, size_t stksize,
thread_func_t func, void *args,
size_t len, int *pp, int state,
pri_t pri);
thread_func_t func, const char *name,
void *args, size_t len, int *pp,
int state, pri_t pri);
extern void __thread_exit(void);
#ifdef __cplusplus