1 #ifndef _VX_SCHED_DEF_H
2 #define _VX_SCHED_DEF_H
4 #include <linux/spinlock.h>
5 #include <linux/jiffies.h>
6 #include <linux/cpumask.h>
7 #include <asm/atomic.h>
11 /* context sub struct */
14 spinlock_t tokens_lock; /* lock for token bucket */
16 int tokens; /* number of CPU tokens */
17 int fill_rate[2]; /* Fill rate: add X tokens... */
18 int interval[2]; /* Divisor: per Y jiffies */
19 int tokens_min; /* Limit: minimum for unhold */
20 int tokens_max; /* Limit: no more than N tokens */
22 unsigned update_mask; /* which features should be updated */
23 cpumask_t update; /* CPUs which should update */
25 int prio_bias; /* bias offset for priority */
26 int vavavoom; /* last calculated vavavoom */
30 int tokens; /* number of CPU tokens */
31 int flags; /* bucket flags */
33 int fill_rate[2]; /* Fill rate: add X tokens... */
34 int interval[2]; /* Divisor: per Y jiffies */
35 int tokens_min; /* Limit: minimum for unhold */
36 int tokens_max; /* Limit: no more than N tokens */
38 unsigned long norm_time; /* last time accounted */
39 unsigned long idle_time; /* non linear time for fair sched */
40 unsigned long token_time; /* token time for accounting */
41 unsigned long onhold; /* jiffies when put on hold */
43 uint64_t user_ticks; /* token tick events */
44 uint64_t sys_ticks; /* token tick events */
45 uint64_t hold_ticks; /* token ticks paused */
49 #define VXSF_ONHOLD 0x0001
50 #define VXSF_IDLE_TIME 0x0100
52 #ifdef CONFIG_VSERVER_DEBUG
54 static inline void __dump_vx_sched(struct _vx_sched *sched)
56 printk("\t_vx_sched:\n");
57 printk("\t tokens: %4d/%4d, %4d/%4d, %4d, %4d\n",
58 sched->fill_rate[0], sched->interval[0],
59 sched->fill_rate[1], sched->interval[1],
60 sched->tokens_min, sched->tokens_max);
61 printk("\t priority = %4d, %4d\n",
62 sched->prio_bias, sched->vavavoom);
67 #endif /* _VX_SCHED_DEF_H */