Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Mar 2005 17:07:00 -0500
From:      Garance A Drosihn <drosih@rpi.edu>
To:        Pawel Jakub Dawidek <pjd@freebsd.org>, freebsd-arch@freebsd.org
Subject:   Re: System processes recognition (Adding P_KTHREAD to swapper)
Message-ID:  <p06210202be5d09b2ca17@[128.113.24.47]>
In-Reply-To: <20050315125136.GH9291@darkness.comp.waw.pl>
References:  <20050315125136.GH9291@darkness.comp.waw.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
At 1:51 PM +0100 3/15/05, Pawel Jakub Dawidek wrote:
>Hi.
>
>I found, that there is no way to know if the given process is a system
>(kernel) process or not:
>
>- P_SYSTEM flag is used also for userland processes (init),
>- P_KTHREAD flag is not used for swapper,
>- ps(1) thinks, that it found system process when there are
>   no arguments, checking:   (argv == NULL || argv[0] == NULL)
>   but this is not true:
>
>	char *argv[1] = { NULL };
>	execve("/path/to/somewhere", argv, NULL);
>
>   The /path/to/somewhere process will be recognized by ps(1)
>   as a system process.
>
>The easiest way to fix it, is to add P_KTHREAD flag to the
>swapper, I think:

Something like this would be helpful, but I don't know enough
kernel-stuff to know if there would be any side-effects by
setting that bit.  If that doesn't work, then we could have
pkill/pgrep/ps check for 'pid == 0 && uid == 0', and assume
any process that matches is also a "kernel thread process".

But obviously it would be cleaner if we could just set that
bit on the swapper process...  I suppose I could just try that
on a test system, and see if the system goes haywire  :-)

-- 
Garance Alistair Drosehn            =   gad@gilead.netel.rpi.edu
Senior Systems Programmer           or  gad@freebsd.org
Rensselaer Polytechnic Institute    or  drosih@rpi.edu



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?p06210202be5d09b2ca17>