1*53e1df33Sjsg /* $OpenBSD: sched.h,v 1.5 2023/03/21 09:44:35 jsg Exp $ */
27f4dd379Sjsg /*
37f4dd379Sjsg * Copyright (c) 2013, 2014, 2015 Mark Kettenis
47f4dd379Sjsg *
57f4dd379Sjsg * Permission to use, copy, modify, and distribute this software for any
67f4dd379Sjsg * purpose with or without fee is hereby granted, provided that the above
77f4dd379Sjsg * copyright notice and this permission notice appear in all copies.
87f4dd379Sjsg *
97f4dd379Sjsg * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
107f4dd379Sjsg * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
117f4dd379Sjsg * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
127f4dd379Sjsg * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
137f4dd379Sjsg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
147f4dd379Sjsg * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
157f4dd379Sjsg * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
167f4dd379Sjsg */
177f4dd379Sjsg
187f4dd379Sjsg #ifndef _LINUX_SCHED_H
197f4dd379Sjsg #define _LINUX_SCHED_H
207f4dd379Sjsg
217f4dd379Sjsg #include <sys/param.h>
227f4dd379Sjsg #include <sys/systm.h>
237f4dd379Sjsg #include <sys/kernel.h>
247f4dd379Sjsg #include <sys/stdint.h>
257f4dd379Sjsg #include <sys/mutex.h>
267f4dd379Sjsg #include <linux/hrtimer.h>
27c349dbc7Sjsg #include <linux/sem.h>
287f4dd379Sjsg
297f4dd379Sjsg #define TASK_NORMAL 1
307f4dd379Sjsg #define TASK_UNINTERRUPTIBLE 0
317f4dd379Sjsg #define TASK_INTERRUPTIBLE PCATCH
327f4dd379Sjsg #define TASK_RUNNING -1
337f4dd379Sjsg
347f4dd379Sjsg #define MAX_SCHEDULE_TIMEOUT (INT32_MAX)
357f4dd379Sjsg
367f4dd379Sjsg #define TASK_COMM_LEN (MAXCOMLEN + 1)
377f4dd379Sjsg
387f4dd379Sjsg #define cond_resched() sched_pause(yield)
397f4dd379Sjsg #define drm_need_resched() \
407f4dd379Sjsg (curcpu()->ci_schedstate.spc_schedflags & SPCF_SHOULDYIELD)
417f4dd379Sjsg
42ad8b1aafSjsg static inline int
cond_resched_lock(struct mutex * mtxp)43ad8b1aafSjsg cond_resched_lock(struct mutex *mtxp)
44ad8b1aafSjsg {
45ad8b1aafSjsg if (drm_need_resched() == 0)
46ad8b1aafSjsg return 0;
47ad8b1aafSjsg
48ad8b1aafSjsg mtx_leave(mtxp);
49ad8b1aafSjsg cond_resched();
50ad8b1aafSjsg mtx_enter(mtxp);
51ad8b1aafSjsg
52ad8b1aafSjsg return 1;
53ad8b1aafSjsg }
54ad8b1aafSjsg
557f4dd379Sjsg void set_current_state(int);
567f4dd379Sjsg void __set_current_state(int);
577f4dd379Sjsg void schedule(void);
587f4dd379Sjsg long schedule_timeout(long);
59c349dbc7Sjsg long schedule_timeout_uninterruptible(long);
607f4dd379Sjsg
617f4dd379Sjsg #define io_schedule_timeout(x) schedule_timeout(x)
627f4dd379Sjsg
6363cf9471Smpi struct proc;
647f4dd379Sjsg int wake_up_process(struct proc *p);
657f4dd379Sjsg
667f4dd379Sjsg #endif
67