博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统调用之sys_gettid
阅读量:4215 次
发布时间:2019-05-26

本文共 732 字,大约阅读时间需要 2 分钟。

这个系统调用返回当前进程当前namespace中leader线程的pid其源码分析如下:SYSCALL_DEFINE0(gettid){	#从这里可以看出是返回当前进程current	return task_pid_vnr(current);}static inline pid_t task_pid_vnr(struct task_struct *tsk){	#读取的是PID	return __task_pid_nr_ns(tsk, PIDTYPE_PID, NULL);}pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,			struct pid_namespace *ns){	pid_t nr = 0;	rcu_read_lock();	#本例中ns为null,所以采用当前进程的namespace	if (!ns)		ns = task_active_pid_ns(current);	#如果当前进程已经死了,则返回0	if (likely(pid_alive(task))) {		if (type != PIDTYPE_PID) {			if (type == __PIDTYPE_TGID)				type = PIDTYPE_PID;			#可以看到如果当前进程如果有很大线程,则取leader线程的pid			task = task->group_leader;		}		nr = pid_nr_ns(rcu_dereference(task->pids[type].pid), ns);	}	rcu_read_unlock();	return nr;}

转载地址:http://cjnmi.baihongyu.com/

你可能感兴趣的文章
POJ 1661 解题报告
查看>>
POJ 1101 解题报告
查看>>
ACM POJ catalogues[转载]
查看>>
ACM经历总结[转载]
查看>>
C/C++文件操作[转载]
查看>>
小米笔试:最大子数组乘积
查看>>
常见的排序算法
查看>>
5.PyTorch实现逻辑回归(二分类)
查看>>
hdu 3460 Ancient Printer(trie tree)
查看>>
KMP求前缀函数(next数组)
查看>>
KMP
查看>>
poj 3863Business Center
查看>>
Android编译系统简要介绍和学习计划
查看>>
Android编译系统环境初始化过程分析
查看>>
user2eng 笔记
查看>>
DRM in Android
查看>>
ARC MRC 变换
查看>>
Swift cell的自适应高度
查看>>
【linux】.fuse_hiddenXXXX 文件是如何生成的?
查看>>
【LKM】整合多个LKM为1个
查看>>