xref: /openbsd-src/sys/dev/pci/drm/include/linux/kthread.h (revision ad8b1aafbcc34f7eb86e4ebfd874be286017954b)
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