Messages in this thread | | | Subject | Re: process creation/deletions hooks | From | Shaya Potter <> | Date | 27 Mar 2003 20:03:09 -0500 |
| |
In fleshing out the ideas a little more, I would think the hook would go right b4 wake_up_process(p) in do_fork() (at least on my 2.4.18 kernel), so that the process is totally setup, but not yet runnable. It would also seem correct to go right b/4 after the BSD process accounting code in do_exit().
so the pseudo code would be something like (pseudo in the fact that it's been over a year since I touched the kernel's linked list, so I believe I got them right)
list_for_each(tmp, &accounting_head) { as = list_entry(tmp, struct account_struct, as_list); if (as->remove) //or create as->remove(code); //or create(p) }
It would seem that the BSD proceed accounting could probably be changed to use this same infrastructure, so an IFDEF would be removed, though that's not a reason
The only negative I see is that there would have to be some sort of locking to prevent removal's from the list causing problems.
I'm also making the assumption that the only way a process is removed from the system is through do_exit().
anyways, comments would be appreciated.
thanks,
shaya
On Thu, 2003-03-27 at 18:56, Shaya Potter wrote: > Well, the ideas are somewhat similar, but I'm viewing it more from a > module perspective that lets any module author implement something, so > it's not specialized, and hopefully has a better chance of getting in > the kernel (i.e. I think your system could work for this as well). > > basically what I envision is something simple, in process creation and > deletion we do something like > > item = some list_head; > while (item) > { > item->function(task_struct); > item = item->next; > } > > so it has very little overhead into the actual kernel if it's not being > used (1 memory load and 1 compare/branch). > > the way pagg would work (I think, just did a cursory reading) is that > instead of storing the data in the task_struct, you'd have a seperate > struct that deal with it. Not as pretty in that regards, but also the > standard way modules that want to extend the linux kernel have to work, > and therefore hopefully linus would be willing to include it in his > kernel. > > shaya > > On Thu, 2003-03-27 at 16:31, Nathan Straz wrote: > > On Thu, Mar 27, 2003 at 04:08:10PM -0500, Shaya Potter wrote: > > > We are trying to write a module that does it's own accounting of > > > processes as they are created and deleted. We have an extremely ugly > > > hack of taking care of process creation (wrap fork() and clone() in a > > > syscall wrapper, as that's the only way processes can be created). > > > > You might want to look at the PAGG patch. SGI did something like this > > to implement CSA, an accounting package. Here are some links that might > > interest you: > > > > Linux PAGG home page: > > http://oss.sgi.com/projects/pagg/ > > > > Design Doc: > > http://oss.sgi.com/projects/pagg/pagg-lkd.txt > > - > 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/
- 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/
| |