user2077511
user2077511

Reputation:

process information at runtime at kernel level

I am working on a linux kernel module which would take care of all the processes that are running for a specific task. Is it possible to know if the certain process named 'X' is still running or not and whats its current state???

Upvotes: 2

Views: 585

Answers (2)

flying-high
flying-high

Reputation: 219

Every Task in Linux is being represented by a structure (PCB/TCB) i.e. process/task control block. This is implemented as struct task_struct. It contains all the information about a process. All the PCBs are arranged in a link list and you can traverse through it and extract necessary information. Inside your module you can initiate a kernel thread as a helper to do this work for you.

Upvotes: 1

Anshul
Anshul

Reputation: 1446

well the code is ready.. you can try this..

#include<linux/init.h>
#include<linux/module.h>
#include<linux/sched.h>

MODULE_LICENSE("GPL");
static int info_init(void)
{
    struct task_struct *iTask;
    for_each_process(iTask) {
            printk(KERN_INFO "Process Info \nName: %s\nState:%ld\n",iTask->comm, iTask->state);
    }
    return 0;
}

static void info_exit(void)
{
    printk(KERN_INFO "Tata Bye-bye from Anshul");
}

module_init(info_init);
module_exit(info_exit);

~

After executing it run a

dmesg

command and you can see all the process namess and their states.

Upvotes: 1

Related Questions