cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / include / linux / sched / types.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _LINUX_SCHED_TYPES_H
3 #define _LINUX_SCHED_TYPES_H
4
5 #include <linux/types.h>
6
7 struct sched_param {
8         int sched_priority;
9 };
10
11 #define SCHED_ATTR_SIZE_VER0    48      /* sizeof first published struct */
12
13 /*
14  * Extended scheduling parameters data structure.
15  *
16  * This is needed because the original struct sched_param can not be
17  * altered without introducing ABI issues with legacy applications
18  * (e.g., in sched_getparam()).
19  *
20  * However, the possibility of specifying more than just a priority for
21  * the tasks may be useful for a wide variety of application fields, e.g.,
22  * multimedia, streaming, automation and control, and many others.
23  *
24  * This variant (sched_attr) is meant at describing a so-called
25  * sporadic time-constrained task. In such model a task is specified by:
26  *  - the activation period or minimum instance inter-arrival time;
27  *  - the maximum (or average, depending on the actual scheduling
28  *    discipline) computation time of all instances, a.k.a. runtime;
29  *  - the deadline (relative to the actual activation time) of each
30  *    instance.
31  * Very briefly, a periodic (sporadic) task asks for the execution of
32  * some specific computation --which is typically called an instance--
33  * (at most) every period. Moreover, each instance typically lasts no more
34  * than the runtime and must be completed by time instant t equal to
35  * the instance activation time + the deadline.
36  *
37  * This is reflected by the actual fields of the sched_attr structure:
38  *
39  *  @size               size of the structure, for fwd/bwd compat.
40  *
41  *  @sched_policy       task's scheduling policy
42  *  @sched_flags        for customizing the scheduler behaviour
43  *  @sched_nice         task's nice value      (SCHED_NORMAL/BATCH)
44  *  @sched_priority     task's static priority (SCHED_FIFO/RR)
45  *  @sched_deadline     representative of the task's deadline
46  *  @sched_runtime      representative of the task's runtime
47  *  @sched_period       representative of the task's period
48  *
49  * Given this task model, there are a multiplicity of scheduling algorithms
50  * and policies, that can be used to ensure all the tasks will make their
51  * timing constraints.
52  *
53  * As of now, the SCHED_DEADLINE policy (sched_dl scheduling class) is the
54  * only user of this new interface. More information about the algorithm
55  * available in the scheduling class file or in Documentation/.
56  */
57 struct sched_attr {
58         __u32 size;
59
60         __u32 sched_policy;
61         __u64 sched_flags;
62
63         /* SCHED_NORMAL, SCHED_BATCH */
64         __s32 sched_nice;
65
66         /* SCHED_FIFO, SCHED_RR */
67         __u32 sched_priority;
68
69         /* SCHED_DEADLINE */
70         __u64 sched_runtime;
71         __u64 sched_deadline;
72         __u64 sched_period;
73 };
74
75 #endif /* _LINUX_SCHED_TYPES_H */