Re: [patch] scheduler bits from 2.5.23-dj1

William Lee Irwin III
2002-06-20T17:21:33Z

On Thu, Jun 20, 2002 at 01:47:29AM +0200, Dave Jones wrote:
> I'll take a look at this tomorrow, unless William "no sleep `til 2.6" Irwin
> beats me to it 8-) (he did this part of the patch iirc).

How does this look? (compiles, boots, & runs on UP i386)

Cheers,
Bill

diff -urN linux-2.5.23-virgin/include/linux/sched.h linux-2.5.23-wli/include/linux/sched.h
--- linux-2.5.23-virgin/include/linux/sched.h Thu Jun 20 00:10:26 2002
+++ linux-2.5.23-wli/include/linux/sched.h Thu Jun 20 08:21:30 2002
@@ -144,6 +144,7 @@
typedef struct task_struct task_t;

extern void sched_init(void);
+extern void pidhash_init(void);
extern void init_idle(task_t *idle, int cpu);
extern void show_state(void);
extern void cpu_init (void);
diff -urN linux-2.5.23-virgin/init/main.c linux-2.5.23-wli/init/main.c
--- linux-2.5.23-virgin/init/main.c Thu Jun 20 00:10:27 2002
+++ linux-2.5.23-wli/init/main.c Thu Jun 20 08:21:04 2002
@@ -347,6 +347,7 @@
trap_init();
init_IRQ();
sched_init();
+ pidhash_init();
softirq_init();
time_init();

diff -urN linux-2.5.23-virgin/kernel/fork.c linux-2.5.23-wli/kernel/fork.c
--- linux-2.5.23-virgin/kernel/fork.c Thu Jun 20 00:10:27 2002
+++ linux-2.5.23-wli/kernel/fork.c Thu Jun 20 08:20:33 2002
@@ -27,7 +27,7 @@
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/jiffies.h>
-
+#include <linux/bootmem.h>
#include <asm/pgtable.h>
#include <asm/pgalloc.h>
#include <asm/uaccess.h>
@@ -49,6 +49,25 @@

list_t *pidhash;
unsigned long pidhash_size;
+
+void __init pidhash_init(void)
+{
+ int i, size = PAGE_SIZE*sizeof(list_t);
+
+ do {
+ pidhash = (list_t *)alloc_bootmem(size);
+ if (!pidhash)
+ size >>= 1;
+ } while (!pidhash && size >= sizeof(list_t));
+
+ if (!pidhash)
+ panic("Failed to allocated pid hash table!\n");
+
+ pidhash_size = size/sizeof(list_t);
+
+ for (i = 0; i < pidhash_size; ++i)
+ INIT_LIST_HEAD(&pidhash[i]);
+}

rwlock_t tasklist_lock __cacheline_aligned = RW_LOCK_UNLOCKED; /* outer */

diff -urN linux-2.5.23-virgin/kernel/sched.c linux-2.5.23-wli/kernel/sched.c
--- linux-2.5.23-virgin/kernel/sched.c Thu Jun 20 00:10:27 2002
+++ linux-2.5.23-wli/kernel/sched.c Thu Jun 20 08:20:47 2002
@@ -1662,21 +1662,7 @@
void __init sched_init(void)
{
runqueue_t *rq;
- int i, j, k, size = PAGE_SIZE*sizeof(list_t);
-
- do {
- pidhash = (list_t *)alloc_bootmem(size);
- if (!pidhash)
- size >>= 1;
- } while (!pidhash && size >= sizeof(list_t));
-
- if (!pidhash)
- panic("Failed to allocated pid hash table!\n");
-
- pidhash_size = size/sizeof(list_t);
-
- for (i = 0; i < pidhash_size; ++i)
- INIT_LIST_HEAD(&pidhash[i]);
+ int i, j, k;

for (i = 0; i < NR_CPUS; i++) {
prio_array_t *array;