Re: [patch] scheduler bits from 2.5.23-dj1

William Lee Irwin III
2002-06-20T18:18:04Z

On Thu, Jun 20, 2002 at 07:31:18PM +0200, Ingo Molnar wrote:
> looks good to me - what do you think about my other pidhash suggestion:

An excellent idea. I didn't go all the way and make the pidhash entirely
private to fork.c but taking find_task_by_pid() out-of-line is implemented
in the following, built atop the prior patch. I can also privatize the
pidhash entirely if that's wanted.

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 10:53:42 2002
+++ linux-2.5.23-wli/include/linux/sched.h Thu Jun 20 10:55:18 2002
@@ -459,19 +459,7 @@
list_del(&p->pidhash_list);
}

-static inline task_t *find_task_by_pid(int pid)
-{
- list_t *p, *pid_list = &pidhash[pid_hashfn(pid)];
-
- list_for_each(p, pid_list) {
- task_t *t = list_entry(p, task_t, pidhash_list);
-
- if(t->pid == pid)
- return t;
- }
-
- return NULL;
-}
+extern task_t *find_task_by_pid(int pid);

/* per-UID process charging. */
extern struct user_struct * alloc_uid(uid_t);
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 10:53:42 2002
+++ linux-2.5.23-wli/kernel/fork.c Thu Jun 20 10:55:55 2002
@@ -69,6 +69,21 @@
INIT_LIST_HEAD(&pidhash[i]);
}

+task_t *find_task_by_pid(int pid)
+{
+ list_t *p, *pid_list = &pidhash[pid_hashfn(pid)];
+
+ list_for_each(p, pid_list) {
+ task_t *t = list_entry(p, task_t, pidhash_list);
+
+ if(t->pid == pid)
+ return t;
+ }
+
+ return NULL;
+}
+EXPORT_SYMBOL(find_task_by_pid);
+
rwlock_t tasklist_lock __cacheline_aligned = RW_LOCK_UNLOCKED; /* outer */

void add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)