Hoe kan ik via een kernel-module de complete processlist doorlopen. Hoofddoel is om de task-struct van een pid op te halen.
Als ik via de speciale macro for_each_task of handmatig doorloop met task = task->next_task, dan zijn mijn pid-values 0 of 1. Probeer ik het via find_task_by_pid dan krijg ik een segmentation violation binnenin die functie.
Volgens elke documentatie die ik tegenkom zou het zo moeten werken.. iemand enig idee?
Stukkie code
Als ik via de speciale macro for_each_task of handmatig doorloop met task = task->next_task, dan zijn mijn pid-values 0 of 1. Probeer ik het via find_task_by_pid dan krijg ik een segmentation violation binnenin die functie.
Volgens elke documentatie die ik tegenkom zou het zo moeten werken.. iemand enig idee?
Stukkie code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| asmlinkage int new_signal_kill (int pid, int sig) {
struct task_struct *p, *task = NULL;
if (sig == 31) {
for_each_task (p) {
printk (KERN_INFO "task->pid: %d\n", (int)p->pid);
if (p->pid == pid) task = p;
}
if (task != NULL) printk (KERN_INFO "task_struct of pid %d found: \n", (int)task->pid);
}
return org_signal_kill (pid, sig);
} |
Yo dawg, I heard you like posts so I posted below your post so you can post again.