System processes recognition.
From: Pawel Jakub Dawidek (pjd_at_FreeBSD.org)
Date: 03/15/05
- Previous message: Jeff Roberson: "Re: Freeing vnodes."
- Next in thread: Garance A Drosihn: "Re: System processes recognition (Adding P_KTHREAD to swapper)"
- Reply: Garance A Drosihn: "Re: System processes recognition (Adding P_KTHREAD to swapper)"
- Reply: John Baldwin: "Re: System processes recognition."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tue, 15 Mar 2005 13:51:36 +0100 To: freebsd-arch@freebsd.org
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
(argv == NULL || argv[0] == NULL), but this is not true:
char *argv[1] = { NULL };
execve("/path/to/somewhere", argv, NULL);
/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:
--- init_main.c 17 Feb 2005 10:00:09 -0000 1.255
+++ init_main.c 15 Mar 2005 12:48:04 -0000
@@ -365,7 +365,7 @@ proc0_init(void *dummy __unused)
session0.s_leader = p;
p->p_sysent = &null_sysvec;
- p->p_flag = P_SYSTEM;
+ p->p_flag = P_SYSTEM | P_KTHREAD;
p->p_sflag = PS_INMEM;
p->p_state = PRS_NORMAL;
knlist_init(&p->p_klist, &p->p_mtx);
Opinions?
-- Pawel Jakub Dawidek http://www.wheel.pl pjd@FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am!
- application/pgp-signature attachment: stored
- Previous message: Jeff Roberson: "Re: Freeing vnodes."
- Next in thread: Garance A Drosihn: "Re: System processes recognition (Adding P_KTHREAD to swapper)"
- Reply: Garance A Drosihn: "Re: System processes recognition (Adding P_KTHREAD to swapper)"
- Reply: John Baldwin: "Re: System processes recognition."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|