Я реализую системный вызов, который вызывается в пользовательском пространстве, скажем, через foo. Системный вызов обращается к структуре задачи foo (через текущий глобальный указатель), печатает ее имя и pid, затем переходит к родительскому процессу foo, родительскому процессу foo и т. д. Выводит все их имена и pid вплоть до процесса инициализации включительно.
Pid=1 зарезервирован для инициализации, pid=0 зарезервирован для подкачки.
Согласно структуре task_struct своппера, его родительским процессом является он сам.
Swapper (или sched) всегда имеет pid=0 и всегда является исходным родительским процессом?
Все ли pid неотрицательны? Могу ли я сделать такое предположение?