diff -urN oldtree/fs/proc/array.c newtree/fs/proc/array.c
--- oldtree/fs/proc/array.c	2006-08-18 15:01:22.000000000 -0400
+++ newtree/fs/proc/array.c	2006-08-19 09:10:58.000000000 -0400
@@ -165,7 +165,12 @@
 	read_lock(&tasklist_lock);
 	buffer += sprintf(buffer,
 		"State:\t%s\n"
-		"SleepAVG:\t%lu%%\n"
+#ifdef CONFIG_INGOSCHED
+                "SleepAVG:\t%lu%%\n"
+#endif
+#ifdef CONFIG_STAIRCASE
+		"Bonus:\t%d\n"
+#endif
 		"Tgid:\t%d\n"
 		"Pid:\t%d\n"
 		"PPid:\t%d\n"
@@ -173,7 +178,12 @@
 		"Uid:\t%d\t%d\t%d\t%d\n"
 		"Gid:\t%d\t%d\t%d\t%d\n",
 		get_task_state(p),
-		(p->sleep_avg/1024)*100/(1020000000/1024),
+#ifdef CONFIG_INGOSCHED
+                (p->sleep_avg/1024)*100/(1020000000/1024),
+#endif
+#ifdef CONFIG_STAIRCASE
+                p->bonus,
+#endif
 	       	p->tgid,
 		p->pid, pid_alive(p) ? p->group_leader->real_parent->tgid : 0,
 		pid_alive(p) && p->ptrace ? p->parent->pid : 0,
diff -urN oldtree/include/linux/init_task.h newtree/include/linux/init_task.h
--- oldtree/include/linux/init_task.h	2006-08-19 09:06:33.000000000 -0400
+++ newtree/include/linux/init_task.h	2006-08-19 09:15:21.000000000 -0400
@@ -98,9 +98,16 @@
 	.usage		= ATOMIC_INIT(2),				\
 	.flags		= 0,						\
 	.lock_depth	= -1,						\
+#ifdef CONFIG_INGOSCHED                                                 \
+        .prio           = MAX_PRIO-20,                                  \
+        .static_prio    = MAX_PRIO-20,                                  \
+        .normal_prio    = MAX_PRIO-20,                                  \
+#endif                                                                  \
+#ifdef CONFIG_STAIRCASE                                                 \
 	.prio		= MAX_PRIO-21,					\
 	.static_prio	= MAX_PRIO-21,					\
 	.normal_prio	= MAX_PRIO-21,					\
+#endif                                                                  \
 	.policy		= SCHED_NORMAL,					\
 	.cpus_allowed	= CPU_MASK_ALL,					\
 	.mm		= NULL,						\
diff -urN oldtree/include/linux/sched.h newtree/include/linux/sched.h
--- oldtree/include/linux/sched.h	2006-08-19 09:06:33.000000000 -0400
+++ newtree/include/linux/sched.h	2006-08-19 09:21:47.000000000 -0400
@@ -34,15 +34,19 @@
 #define SCHED_FIFO		1
 #define SCHED_RR		2
 #define SCHED_BATCH		3
+#ifdef CONFIG_STAIRCASE
 #define SCHED_ISO               4
 #define SCHED_IDLEPRIO          5
+#endif
 
 #ifdef __KERNEL__
 
+#ifdef CONFIG_STAIRCASE
 #define SCHED_MAX              SCHED_IDLEPRIO
 #define SCHED_RANGE(policy)    ((policy) <= SCHED_MAX)
 #define SCHED_RT(policy)       ((policy) == SCHED_FIFO || \
                                         (policy) == SCHED_RR)
+#endif
 
 struct sched_param {
 	int sched_priority;
@@ -511,18 +515,30 @@
 
 #define MAX_USER_RT_PRIO	100
 #define MAX_RT_PRIO		MAX_USER_RT_PRIO
+#ifdef CONFIG_STAIRCASE
 #define ISO_PRIO                (MAX_RT_PRIO - 1)
 
 #define MAX_PRIO		(MAX_RT_PRIO + 41)
 #define MIN_USER_PRIO           (MAX_PRIO - 2)
 #define IDLEPRIO_PRIO           (MAX_PRIO - 1)
+#endif
+
+#ifdef CONFIG_INGOSCHED
+#define MAX_PRIO                (MAX_RT_PRIO + 40)
+#endif
 
 #define rt_prio(prio)		unlikely((prio) < MAX_RT_PRIO)
 #define rt_task(p)		rt_prio((p)->prio)
 #define batch_task(p)		(unlikely((p)->policy == SCHED_BATCH))
+#ifdef CONFIG_INGOSCHED
+#define has_rt_policy(p) \
+       unlikely((p)->policy != SCHED_NORMAL && (p)->policy != SCHED_BATCH)
+#endif
+#ifdef CONFIG_STAIRCASE
 #define has_rt_policy(p)        unlikely(SCHED_RT((p)->policy))
 #define iso_task(p)             (unlikely((p)->policy == SCHED_ISO))
 #define idleprio_task(p)       (unlikely((p)->policy == SCHED_IDLEPRIO))
+#endif
 
 /* Must be high prio: stop_machine expects to yield to it. */
 #define MIGRATION_THREAD_PRIO (MAX_RT_PRIO-20)
@@ -792,6 +808,7 @@
 struct pipe_inode_info;
 struct uts_namespace;
 
+#ifdef CONFIG_INGOSCHED
 enum sleep_type {
 	SLEEP_NORMAL,
 	SLEEP_NONINTERACTIVE,
@@ -800,6 +817,7 @@
 };
 
 struct prio_array;
+#endif
 
 struct task_struct {
 	volatile long state;	/* -1 unrunnable, 0 runnable, >0 stopped */
@@ -818,16 +836,28 @@
 	int load_weight;	/* for niceness load balancing purposes */
 	int prio, static_prio, normal_prio;
 	struct list_head run_list;
+#ifdef CONFIG_INGOSCHED
 	struct prio_array *array;
+#endif
 
 	unsigned short ioprio;
 #ifdef CONFIG_BLK_DEV_IO_TRACE
 	unsigned int btrace_seq;
 #endif
+#ifdef CONFIG_INGOSCHED
 	unsigned long sleep_avg;
-	unsigned long long timestamp, last_ran;
+        unsigned long long timestamp, last_ran;
+#endif
+#ifdef CONFIG_STAIRCASE
+        unsigned long long timestamp;
+        unsigned long runtime, totalrun, ns_debit, systime;
+        unsigned int bonus;
+        unsigned int slice, time_slice;
+#endif
 	unsigned long long sched_time; /* sched_clock time spent running */
+#ifdef CONFIG_INGOSCHED
 	enum sleep_type sleep_type;
+#endif
 
 	unsigned long policy;
 	cpumask_t cpus_allowed;
@@ -1117,9 +1147,15 @@
 #define PF_SWAPWRITE	0x00800000	/* Allowed to write to swap */
 #define PF_SPREAD_PAGE	0x01000000	/* Spread page cache over cpuset */
 #define PF_SPREAD_SLAB	0x02000000	/* Spread some slab caches over cpuset */
+#ifdef CONFIG_STAIRCASE
 #define PF_ISOREF       0x04000000      /* SCHED_ISO task has used up quota */
+#endif
 #define PF_MEMPOLICY	0x10000000	/* Non-default NUMA mempolicy */
 #define PF_MUTEX_TESTER	0x20000000	/* Thread belongs to the rt mutex tester */
+#ifdef CONFIG_STAIRCASE
+#define PF_NONSLEEP     0x40000000      /* Waiting on in kernel activity */
+#define PF_FORKED       0x80000000      /* Task just forked another process */
+#endif
 
 /*
  * Only the _current_ task can read/write to tsk->flags, but other
@@ -1255,7 +1291,9 @@
  static inline void kick_process(struct task_struct *tsk) { }
 #endif
 extern void FASTCALL(sched_fork(struct task_struct * p, int clone_flags));
+#ifdef CONFIG_INGOSCHED
 extern void FASTCALL(sched_exit(struct task_struct * p));
+#endif
 
 extern int in_group_p(gid_t);
 extern int in_egroup_p(gid_t);
diff -urN oldtree/kernel/exit.c newtree/kernel/exit.c
--- oldtree/kernel/exit.c	2006-08-18 15:01:22.000000000 -0400
+++ newtree/kernel/exit.c	2006-08-19 09:22:35.000000000 -0400
@@ -168,7 +168,9 @@
 		zap_leader = (leader->exit_signal == -1);
 	}
 
-	sched_exit(p);
+#ifdef CONFIG_INGOSCHED
+        sched_exit(p);
+#endif
 	write_unlock_irq(&tasklist_lock);
 	proc_flush_task(p);
 	release_thread(p);
