accessing the struct task_struct using a pid

Amit Nadgar (vangough_spinlock@yahoo.com)
Sat, 15 Jun 2002 14:06:20 -0700 (PDT)


guys,
I am writing a kernel module where I am trying to
access the task_structs. Now I have tried this using
various mathods.
1) Using the pidhash array.
Here when I do a insmod I get a unresolved
symbol.
2) Directly accessing the location of pidhash as
seen in System.map.
Here when the pidhash_fn hashes the supplied pid
the particular location into which it indexes in NULL.
3) Starting from the init_task.
here the next task after the init task is found
to be NULL.

Could some one help me in this matter.
-vangough

Following is the piece of code which executes when an
apploication program does a sys_ptrace.

int new_syscall(long request,long pid,long addr,long
data)
struct task_struct *my_init_task = (struct
task_struct *)&init_task;
struct task_struct *task_ptr;
if(my_init_task)
{
task_ptr = my_init_task;
while(task_ptr && (task_ptr->next_task !=
my_init_task))
{
printk("<1> task_ptr pointer is %x\n",task_ptr);
printk("<1> task_ptr->pid is %d\n",task_ptr->pid);
printk("<1> task_ptr->next_task is
%x",task_ptr->next_task);
task_ptr = (struct task_struct*)task_ptr->next_task;
}
}
else
{
printk("<1> my_init_task pointer is
%d\n",my_init_task);
return 0;
}

_memcpy(sys_call_table[SYS_PTRACE_NUMBER],syscall_code,
sizeof(syscall_code));

/* ((long int (*)
(long,long,long,long))sys_call_table[SYS_PTRACE_NUMBER])(request,pid,addr,data);*/
}

__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/