kthread.h 1.1 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11
#ifndef _LINUX_KTHREAD_H
#define _LINUX_KTHREAD_H
/* Simple interface for creating and stopping kernel threads without mess. */
#include <linux/err.h>
#include <linux/sched.h>

struct task_struct *kthread_create(int (*threadfn)(void *data),
				   void *data,
				   const char namefmt[], ...);

/**
12
 * kthread_run - create and wake a thread.
L
Linus Torvalds 已提交
13 14 15 16 17
 * @threadfn: the function to run until signal_pending(current).
 * @data: data ptr for @threadfn.
 * @namefmt: printf-style name for the thread.
 *
 * Description: Convenient wrapper for kthread_create() followed by
18 19
 * wake_up_process().  Returns the kthread or ERR_PTR(-ENOMEM).
 */
L
Linus Torvalds 已提交
20 21 22 23 24 25 26 27 28 29 30
#define kthread_run(threadfn, data, namefmt, ...)			   \
({									   \
	struct task_struct *__k						   \
		= kthread_create(threadfn, data, namefmt, ## __VA_ARGS__); \
	if (!IS_ERR(__k))						   \
		wake_up_process(__k);					   \
	__k;								   \
})

void kthread_bind(struct task_struct *k, unsigned int cpu);
int kthread_stop(struct task_struct *k);
A
Alan Stern 已提交
31
int kthread_stop_sem(struct task_struct *k, struct semaphore *s);
L
Linus Torvalds 已提交
32 33 34
int kthread_should_stop(void);

#endif /* _LINUX_KTHREAD_H */