17f4dd379Sjsg /* Public domain. */ 27f4dd379Sjsg 37f4dd379Sjsg #ifndef _LINUX_KTHREAD_H 47f4dd379Sjsg #define _LINUX_KTHREAD_H 57f4dd379Sjsg 67f4dd379Sjsg /* both for printf */ 77f4dd379Sjsg #include <sys/types.h> 87f4dd379Sjsg #include <sys/systm.h> 9*ad8b1aafSjsg #include <sys/task.h> 107f4dd379Sjsg 1163b8f014Skettenis struct proc *kthread_run(int (*)(void *), void *, const char *); 1263b8f014Skettenis void kthread_park(struct proc *); 1363b8f014Skettenis void kthread_unpark(struct proc *); 1463b8f014Skettenis int kthread_should_park(void); 1563b8f014Skettenis void kthread_parkme(void); 1663b8f014Skettenis void kthread_stop(struct proc *); 1763b8f014Skettenis int kthread_should_stop(void); 187f4dd379Sjsg 19*ad8b1aafSjsg struct kthread_work { 20*ad8b1aafSjsg struct task task; 21*ad8b1aafSjsg struct taskq *tq; 22*ad8b1aafSjsg }; 23*ad8b1aafSjsg 24*ad8b1aafSjsg struct kthread_worker { 25*ad8b1aafSjsg struct taskq *tq; 26*ad8b1aafSjsg }; 27*ad8b1aafSjsg 28*ad8b1aafSjsg struct kthread_worker * 29*ad8b1aafSjsg kthread_create_worker(unsigned int, const char *, ...); 30*ad8b1aafSjsg void kthread_destroy_worker(struct kthread_worker *); 31*ad8b1aafSjsg void kthread_init_work(struct kthread_work *, void (*)(struct kthread_work *)); 32*ad8b1aafSjsg bool kthread_queue_work(struct kthread_worker *, struct kthread_work *); 33*ad8b1aafSjsg bool kthread_cancel_work_sync(struct kthread_work *); 34*ad8b1aafSjsg void kthread_flush_work(struct kthread_work *); 35*ad8b1aafSjsg void kthread_flush_worker(struct kthread_worker *); 36*ad8b1aafSjsg 377f4dd379Sjsg #endif 38