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#endif
25
26enum {
32};
35};
36
37#if VSF_LINUX_APPLET_USE_SCHED == ENABLED
38typedef struct vsf_linux_sched_vplt_t {
40
49# ifndef __VSF_APPLET__
51# endif
52#endif
53
54#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_SCHED_LIB__))\
55 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_SCHED == ENABLED
56
57#ifndef VSF_LINUX_APPLET_SCHED_VPLT
58# if VSF_LINUX_USE_APPLET == ENABLED
59# define VSF_LINUX_APPLET_SCHED_VPLT \
60 ((vsf_linux_sched_vplt_t *)(VSF_LINUX_APPLET_VPLT->sched_vplt))
61# else
62# define VSF_LINUX_APPLET_SCHED_VPLT \
63 ((vsf_linux_sched_vplt_t *)vsf_vplt((void *)0))
64# endif
65#endif
66
67#define VSF_LINUX_APPLET_SCHED_ENTRY(__NAME) \
68 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_SCHED_VPLT, __NAME)
69#define VSF_LINUX_APPLET_SCHED_IMP(...) \
70 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_SCHED_VPLT, __VA_ARGS__)
71
72VSF_LINUX_APPLET_SCHED_IMP(sched_get_priority_max, int, int policy) {
74 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_get_priority_max)(policy);
75}
76VSF_LINUX_APPLET_SCHED_IMP(sched_get_priority_min, int, int policy) {
78 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_get_priority_min)(policy);
79}
80VSF_LINUX_APPLET_SCHED_IMP(sched_getparam, int, pid_t pid, struct sched_param *param) {
82 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_getparam)(pid, param);
83}
84VSF_LINUX_APPLET_SCHED_IMP(sched_getscheduler, int, pid_t pid) {
86 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_getscheduler)(pid);
87}
88VSF_LINUX_APPLET_SCHED_IMP(sched_setparam, int, pid_t pid, const struct sched_param *param) {
90 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_setparam)(pid, param);
91}
92VSF_LINUX_APPLET_SCHED_IMP(sched_setscheduler, int, pid_t pid, int policy, const struct sched_param *param) {
94 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_setscheduler)(pid, policy, param);
95}
96VSF_LINUX_APPLET_SCHED_IMP(sched_yield, int, void) {
98 return VSF_LINUX_APPLET_SCHED_ENTRY(sched_yield)();
99}
100
101#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SCHED
102
103int sched_get_priority_max(int policy);
104int sched_get_priority_min(int policy);
105int sched_getparam(pid_t pid, struct sched_param *param);
107int sched_setparam(pid_t pid, const struct sched_param *param);
108int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
109int sched_yield(void);
110
111#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SCHED
112
113#ifdef __cplusplus
114}
115#endif
116
117#endif
int pid_t
Definition types.h:85
#define sched_setparam
Definition sched.h:22
#define sched_get_priority_max
Definition sched.h:18
@ SCHED_OTHER
Definition sched.h:27
@ SCHED_IDLE
Definition sched.h:29
@ SCHED_RR
Definition sched.h:31
@ SCHED_BATCH
Definition sched.h:28
@ SCHED_FIFO
Definition sched.h:30
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param)
Definition vsf_linux.c:3663
#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:4883
#define sched_getscheduler
Definition sched.h:21
Definition sched.h:33
int sched_priority
Definition sched.h:34
Definition sched.h:38
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sched_yield)
vsf_vplt_info_t info
Definition sched.h:39
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_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