mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 16:38:31 +00:00 
			
		
		
		
	 ed9559d38a
			
		
	
	
		ed9559d38a
		
	
	
	
	
		
			
			Obvious misc patch been in my queue (& linux-next) for over a cycle. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #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[], ...)
 | |
| 	__attribute__((format(printf, 3, 4)));
 | |
| 
 | |
| /**
 | |
|  * kthread_run - create and wake a thread.
 | |
|  * @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
 | |
|  * wake_up_process().  Returns the kthread or ERR_PTR(-ENOMEM).
 | |
|  */
 | |
| #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);
 | |
| int kthread_should_stop(void);
 | |
| 
 | |
| int kthreadd(void *unused);
 | |
| extern struct task_struct *kthreadd_task;
 | |
| 
 | |
| #endif /* _LINUX_KTHREAD_H */
 |