Я вижу, что linux\pid.h
в ядре определяет следующий тип:
enum pid_type
{
PIDTYPE_PID,
PIDTYPE_TGID,
PIDTYPE_PGID,
PIDTYPE_SID,
PIDTYPE_MAX,
};
, а тип struct pid
использует его при отслеживании задач, связанных с PID:
struct pid
{
atomic_t count;
unsigned int level;
/* lists of tasks that use this pid */
struct hlist_head tasks[PIDTYPE_MAX];
struct rcu_head rcu;
struct upid numbers[1];
};
Но к чему относится каждый список? Насколько я понимаю, PIDTYPE_PID
относится к задачам, которые используют это как PID («идентификатор потока» с точки зрения ядра) и PIDTYPE_TGID
как задачи, которые используют это как TGID, то есть идентификатор группы потоков, который обозначает группу потоков, которые разделяют PID того же пользовательского пространства, что такое PIDTYPE_PGID
и PIDTYPE_SID
?