2010-02-16 05:48:27

by Leonidas .

[permalink] [raw]
Subject: Notification when a task is created/exits

Hi folks,

Is it possible to register a set of callbacks from my module so that
these call backs get called
whenever a certain task is created or exits. Basically, I want to keep
track of all the threads
which are created and are exiting, my module should get notified of
these events somehow.
One way is to call my functions directly from the task creation and
exit functions, but I personally
do not like this approach since I dont want to mess with this core kernel code.

-Leo.


2010-02-17 02:56:41

by Kamezawa Hiroyuki

[permalink] [raw]
Subject: Re: Notification when a task is created/exits

On Tue, 16 Feb 2010 11:18:25 +0530
"Leonidas ." <[email protected]> wrote:

> Hi folks,
>
> Is it possible to register a set of callbacks from my module so that
> these call backs get called
> whenever a certain task is created or exits. Basically, I want to keep
> track of all the threads
> which are created and are exiting, my module should get notified of
> these events somehow.
> One way is to call my functions directly from the task creation and
> exit functions, but I personally
> do not like this approach since I dont want to mess with this core kernel code.
>

AFAIK, there are no extensible notifier chain at task create/exit.
But I think you have 2 options.

1. use NETLINK and catch task create/exit in userland.
But this means "catch" is asyncronous.

2. implement cgroup subsystem
AFAIK, in the latest kernel, cgroup subsystem can be implemented as module.
cgroup has fork/exit handler.
And you can implement some useful controls for tasks you watch via
cgroup's control interface.

Thanks,
-Kame


> -Leo.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

2010-02-17 03:16:53

by Leonidas .

[permalink] [raw]
Subject: Re: Notification when a task is created/exits

Hi Kame,

>
> ?1. use NETLINK and catch task create/exit in userland.
> ? ?But this means "catch" is asyncronous.
>
This does not sounds like a possible solution to me in my setup. Using netlink
and having an user space component to do this job might be an over kill in what
I am doing.

> ?2. implement cgroup subsystem
> ? ?AFAIK, in the latest kernel, cgroup subsystem can be implemented as module.
> ? ?cgroup has fork/exit handler.
> ? ?And you can implement some useful controls for tasks you watch via
> ? ?cgroup's control interface.
>

This sounds close to what I have in mind, but unfortunately I dont
have any idea what is cgroup
subsystem. How to implement cgroup subsystem? Can you give pointers to
some existing code
or document? Also, using this mechanism can we monitor each thread created in
user space? I.e. it is only a fork handler or even a
pthread_create/clone can be tracked this way.


> Thanks,
> -Kame
>
>
>> -Leo.
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to [email protected]
>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at ?http://www.tux.org/lkml/
>>
>
>



--


-Leo.

2010-02-17 03:46:45

by Kamezawa Hiroyuki

[permalink] [raw]
Subject: Re: Notification when a task is created/exits

On Wed, 17 Feb 2010 08:46:51 +0530
"Leonidas ." <[email protected]> wrote:
\
> >  2. implement cgroup subsystem
> >    AFAIK, in the latest kernel, cgroup subsystem can be implemented as module.
> >    cgroup has fork/exit handler.
> >    And you can implement some useful controls for tasks you watch via
> >    cgroup's control interface.
> >
>
> This sounds close to what I have in mind, but unfortunately I dont
> have any idea what is cgroup
> subsystem. How to implement cgroup subsystem? Can you give pointers to
> some existing code
> or document?
Documentation/cgroup/*.txt
Maybe cpuacct cgroup in kernel/sche.c or device cgroup in security/device_cgroup.c
is portable size, but they are not module.
block/blk-cgroup is module and maybe in readable size.

> Also, using this mechanism can we monitor each thread created in
> user space? I.e. it is only a fork handler or even a
> pthread_create/clone can be tracked this way.
>
please read documents. I think you can.

Thanks,
-Kame

2010-02-17 05:43:38

by Leonidas .

[permalink] [raw]
Subject: Re: Notification when a task is created/exits

>> This sounds close to what I have in mind, but unfortunately I dont
>> have any idea what is cgroup
>> subsystem. How to implement cgroup subsystem? Can you give pointers to
>> some existing code
>> or document?
> Documentation/cgroup/*.txt
> Maybe cpuacct cgroup in kernel/sche.c or device cgroup in security/device_cgroup.c
> is portable size, but they are not module.
> block/blk-cgroup is module and maybe in readable size.

Will go through it.

>
>> Also, using this mechanism can we monitor each thread created in
>> user space? I.e. it is only a fork handler or even a
>> pthread_create/clone can be tracked this way.
>>
> please read documents. I think you can.
>

Okay, if it can then this is what I have been looking for...Thanks for
the pointers.

> Thanks,
> -Kame
>
>



--


-Leo.