3a577616f8625948bf709e352f5fea0f94263c8f
[util-vserver.git] / kernel / sched_def.h
1 #ifndef _VX_SCHED_DEF_H
2 #define _VX_SCHED_DEF_H
3
4 #include <linux/spinlock.h>
5 #include <linux/jiffies.h>
6 #include <linux/cpumask.h>
7 #include <asm/atomic.h>
8 #include <asm/param.h>
9
10
11 struct _vx_ticks {
12         uint64_t user_ticks;            /* token tick events */
13         uint64_t sys_ticks;             /* token tick events */
14         uint64_t hold_ticks;            /* token ticks paused */
15         uint64_t unused[5];             /* cacheline ? */
16 };
17
18 /* context sub struct */
19
20 struct _vx_sched {
21         atomic_t tokens;                /* number of CPU tokens */
22         spinlock_t tokens_lock;         /* lock for token bucket */
23
24         int fill_rate;                  /* Fill rate: add X tokens... */
25         int interval;                   /* Divisor:   per Y jiffies   */
26         int tokens_min;                 /* Limit:     minimum for unhold */
27         int tokens_max;                 /* Limit:     no more than N tokens */
28         uint32_t jiffies;               /* last time accounted */
29
30         int priority_bias;              /* bias offset for priority */
31         int vavavoom;                   /* last calculated vavavoom */
32
33         cpumask_t cpus_allowed;         /* cpu mask for context */
34
35         struct _vx_ticks cpu[NR_CPUS];
36 };
37
38 #endif  /* _VX_SCHED_DEF_H */