Hi, I see that the idle process (process 0) , is called "swapper". init_idle() in kernel/sched/core.c: ... #if defined(CONFIG_SMP) sprintf(idle->comm, "%s/%d", INIT_TASK_COMM, cpu); #endif ... #define INIT_TASK_COMM "swapper" in include/linux/init_task.h Two questions: 1) why does this #if defined(CONFIG_SMP) here ? shouldn't we name it swapper also in non SMP mode ? 2) Is there a reason that we do not see it with ps aux (and also not under proc; there is no /proc/0). - 1) no process 0; processes start from "1". - 2) following command gives nothing: ps aux | grep -i swapper rgs, Kevin
On Fri, 15 Feb 2013 22:24:29 +0200, Kevin Wilson said:
#if defined(CONFIG_SMP) sprintf(idle->comm, "%s/%d", INIT_TASK_COMM, cpu); #endif ... #define INIT_TASK_COMM "swapper" in include/linux/init_task.h
Two questions: 1) why does this #if defined(CONFIG_SMP) here ? shouldn't we name it swapper also in non SMP mode ?
That code is entered once per CPU as the CPU is started up. And that %d doesn't make much sense in single-processor mode.
2) Is there a reason that we do not see it with ps aux (and also not under proc; there is no /proc/0).
/bin/ps just pretty-prints stuff out of /proc - so you don't see it with ps because you don't have a /proc/0. And that's because in fs/proc/base.c we see this code in proc_pid_lookup: tgid = name_to_int(dentry); if (tgid == ~0U) goto out; In other words, if you ask for pid 0, it bails and doesn't return anything.
Hi,
we see this code in proc_pid_lookup:
tgid = name_to_int(dentry); if (tgid == ~0U) goto out;
In other words, if you ask for pid 0, it bails and doesn't return anything.
Are you sure that this is what it cjecks? ~0U is not 0 but -1; for example, try: printf("%d\n",~0U ); printf("%x\n",~0U ); printf("%x\n",-1 ); and you get: -1 ffffffff ffffffff rgs Kevin
On Sat, 2013-02-16 at 18:48 +0200, Kevin Wilson wrote:
Hi,
we see this code in proc_pid_lookup:
tgid = name_to_int(dentry); if (tgid == ~0U) goto out; It is the error case when name can't be converted to integer i.e. name is wrong.
In other words, if you ask for pid 0, it bails and doesn't return anything.
Are you sure that this is what it cjecks?
~0U is not 0 but -1; right
for example, try: printf("%d\n",~0U ); printf("%x\n",~0U ); printf("%x\n",-1 ); and you get: -1 ffffffff ffffffff rgs Kevin
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
participants (3)
-
anish kumar -
Kevin Wilson -
Valdis.Kletnieks@vt.edu