VSF Documented
sched.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_SCHED_H__
2#define __VSF_LINUX_SCHED_H__
3
5#include "kernel/vsf_kernel.h"
6
7#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
8# include "./sys/types.h"
9#else
10# include <sys/types.h>
11#endif
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#if VSF_LINUX_CFG_WRAPPER == ENABLED
18#define sched_get_priority_max VSF_LINUX_WRAPPER(sched_get_priority_max)
19#define sched_get_priority_min VSF_LINUX_WRAPPER(sched_get_priority_min)
20#define sched_getparam VSF_LINUX_WRAPPER(sched_getparam)
21#define sched_getscheduler VSF_LINUX_WRAPPER(sched_getscheduler)
22#define sched_setparam VSF_LINUX_WRAPPER(sched_setparam)
23#define sched_yield VSF_LINUX_WRAPPER(sched_yield)
24#define sched_getcpu VSF_LINUX_WRAPPER(sched_getcpu)
25#endif
26
27enum {
33};
36};
37
38#if VSF_LINUX_APPLET_USE_SCHED == ENABLED
39typedef struct vsf_linux_sched_vplt_t {
41
51# ifndef __VSF_APPLET__
53# endif
54#endif
55
56#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_SCHED_LIB__))\
57 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_SCHED == ENABLED
58
59#ifndef VSF_LINUX_APPLET_SCHED_VPLT
60# if VSF_LINUX_USE_APPLET == ENABLED
61# define VSF_LINUX_APPLET_SCHED_VPLT \
62 ((vsf_linux_sched_vplt_t *)(VSF_LINUX_APPLET_VPLT->sched_vplt))
63# else
64# define VSF_LINUX_APPLET_SCHED_VPLT \
65 ((vsf_linux_sched_vplt_t *)vsf_vplt((void *)0))
66# endif
67#endif
68
69#define VSF_LINUX_APPLET_SCHED_ENTRY(__NAME) \
70 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_SCHED_VPLT, __NAME)
71#define VSF_LINUX_APPLET_SCHED_IMP(...) \
72 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_SCHED_VPLT, __VA_ARGS__)
73
74VSF_LINUX_APPLET_SCHED_IMP(sched_get_priority_max, int, int policy) {
76 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_get_priority_max)(policy);
77}
78VSF_LINUX_APPLET_SCHED_IMP(sched_get_priority_min, int, int policy) {
80 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_get_priority_min)(policy);
81}
82VSF_LINUX_APPLET_SCHED_IMP(sched_getparam, int, pid_t pid, struct sched_param *param) {
84 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_getparam)(pid, param);
85}
86VSF_LINUX_APPLET_SCHED_IMP(sched_getscheduler, int, pid_t pid) {
88 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_getscheduler)(pid);
89}
90VSF_LINUX_APPLET_SCHED_IMP(sched_setparam, int, pid_t pid, const struct sched_param *param) {
92 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_setparam)(pid, param);
93}
94VSF_LINUX_APPLET_SCHED_IMP(sched_setscheduler, int, pid_t pid, int policy, const struct sched_param *param) {
96 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_setscheduler)(pid, policy, param);
97}
98VSF_LINUX_APPLET_SCHED_IMP(sched_yield, int, void) {
100 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_yield)();
101}
102VSF_LINUX_APPLET_SCHED_IMP(sched_getcpu, int, void) {
104 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_getcpu)();
105}
106
107#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SCHED
108
109int sched_get_priority_max(int policy);
110int sched_get_priority_min(int policy);
111int sched_getparam(pid_t pid, struct sched_param *param);
113int sched_setparam(pid_t pid, const struct sched_param *param);
114int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
115int sched_yield(void);
116int sched_getcpu(void);
117
118#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SCHED
119
120#ifdef __cplusplus
121}
122#endif
123
124#endif
int pid_t
Definition types.h:113
#define sched_getcpu
Definition sched.h:24
#define sched_setparam
Definition sched.h:22
#define sched_get_priority_max
Definition sched.h:18
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param)
Definition vsf_linux.c:3750
@ SCHED_OTHER
Definition sched.h:28
@ SCHED_IDLE
Definition sched.h:30
@ SCHED_RR
Definition sched.h:32
@ SCHED_BATCH
Definition sched.h:29
@ SCHED_FIFO
Definition sched.h:31
#define sched_yield
Definition sched.h:23
#define sched_get_priority_min
Definition sched.h:19
#define sched_getparam
Definition sched.h:20
__VSF_VPLT_DECORATOR__ vsf_linux_sched_vplt_t vsf_linux_sched_vplt
Definition vsf_linux.c:5003
#define sched_getscheduler
Definition sched.h:21
Definition sched.h:34
int sched_priority
Definition sched.h:35
Definition sched.h:39
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_yield)
vsf_vplt_info_t info
Definition sched.h:40
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_getparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_get_priority_min)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_getscheduler)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_setscheduler)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_setparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_getcpu)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_get_priority_max)
Definition vsf_cfg.h:95
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
Generated from commit: vsfteam/vsf@85be636