Re: [PATCH 00/11] Task watchers: Introduction

From: Matt Helsley
Date: Wed Jun 21 2006 - 04:03:20 EST


On Wed, 2006-06-21 at 15:41 +1000, Peter Williams wrote:
> Matt Helsley wrote:
> > Task watchers is a notifier chain that sends notifications to registered
> > callers whenever a task forks, execs, changes its [re][ug]id, or exits.
> > The goal is to keep the these paths comparatively simple while
> > enabling the addition of per-task intialization, monitoring, and tear-down
> > functions by existing and proposed kernel features.
> >
> > The first patch adds a global atomic notifier chain, registration
> > functions, and a function to invoke the callers on the chain.
> >
> > Later patches:
> >
> > Register a task watcher for process events, shuffle bits of process events
> > functions around to reduce the code, and turn it into a module.
> >
> > Switch task watchers from an atomic to a blocking notifier chain
> >
> > Register task watchers for:
> > Audit
> > Per Task Delay Accounting (note: not the taskstats calls)
> > Profile
> >
> > Add a per-task raw notifier chain
>
> This feature is less useful than it could be in that it only allows a
> per-task raw notifier to be added to the current task. For the per
> process CPU capping client that I'm writing, I'd like to be able to
> attach one of these to a task that's being forked (from the forking
> task). Not being able to do this will force me to go to the expense of
> maintaining my own hash tables for locating my per task data.

You're right. The patches are missing the bit that allows the per-task
watcher to be copied on fork. I've got an patch which I'll post and CC
you on shortly. What it does is allow register_per_task_watcher() to
register for the child task.

> On a related note, I can't see where the new task's notify field gets
> initialized during fork.

It's initialized in kernel/sys.c:notify_per_task_watchers(), which calls
RAW_INIT_NOTIFIER_HEAD(&task->notify) in response to WATCH_TASK_INIT.

Cheers,
-Matt Helsley

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