进程管理API之task_tgid_nr_ns
2017-12-06 14:24
585 查看
pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) 用于获得task在ns下的局部pid号 其使用的例程如下: static u32 perf_event_pid(struct perf_event *event, struct task_struct *p) { /* * only top level events have the pid namespace they were created in */ if (event->parent) event = event->parent; return task_tgid_nr_ns(p, event->ns); } 其源码分析如下: pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return pid_nr_ns(task_tgid(tsk), ns); } 可以看到task_tgid_nr_ns 其实分为两部分,第一部分首先通过task_tgid拿到线程组leader的pid 其源码如下: static inline struct pid *task_tgid(struct task_struct *task) { return task->group_leader->pids[PIDTYPE_PID].pid; } 然后再通过pid_nr_ns,得到其在namespace下的pid号 这里很明显看到通过task_tgid得到的pid号是全局的,而pid_nr_ns得到的pid号是局部的.
相关文章推荐
- 进程管理API之__task_pid_nr_ns
- 进程管理API之task_active_pid_ns
- 进程管理API之pid_nr/pid_vnr/pid_nr_ns
- 进程管理API之find_task_by_pid_ns
- 进程管理API之get_task_mm
- 进程管理API之find_pid_ns
- 进程管理API之ns_of_pid
- 进程管理API之pid_task
- 进程管理API之find_task_by_vpid
- 进程管理API之get_task_pid
- 进程管理API之get_pid_task
- Linux进程的管理与调度(一)--- Linux进程描述符task_struct结构体详解
- Linux进程管理之task_struct结构体
- Linux进程管理之task struct结构体
- Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】
- Linux进程管理之task_struct结构体
- Linux进程管理之task_struct结构体(上)
- Linux进程管理之task_struct
- 进程管理API之find_get_pid
- Linux进程管理之task_struct结构体(下)