当前位置: 首页 > article >正文

Linux 内核的 current

1. 进程结构体

task_struct 是描述 Linux 进程的一个结构体,记录着进程的信息

// include/linux/sched.h
struct task_struct {
	volatile long state;	/* -1 unrunnable, 0 runnable, >0 stopped */
	void *stack;
	atomic_t usage;
	unsigned int flags;	/* per process flags, defined below */
	unsigned int ptrace;
	.....
	.....
#ifdef CONFIG_UPROBES
	struct uprobe_task *utask;
#endif
#if defined(CONFIG_BCACHE) || defined(CONFIG_BCACHE_MODULE)
	unsigned int	sequential_io;
	unsigned int	sequential_io_avg;
#endif
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
	unsigned long	task_state_change;
#endif
};

2. current

current 宏其实就是静态函数 get_current()。它的返回值是一个 struct task_struct

static inline struct task_struct *get_current(void)
{
	return current_thread_info()->task;
}

#define current get_current()

通过调用 current,我们可以获取当前的进程的信息:

  • current->comm: 进程的名字
  • current->pid: 进程的 pid
  • 等等

http://www.kler.cn/a/106318.html

相关文章:

  • 论文《基于现实迷宫地形的电脑鼠设计》深度分析——智能车驱动算法
  • 006.精读《Apache Paimon Docs - Concepts》
  • 删除缓存之后,浏览器显示登录新设备
  • docker-hub 无法访问,使用windows魔法拉取docker images再上传到linux docker环境中
  • 计算机视觉 1-8章 (硕士)
  • Spring 4.3 源码导读
  • EtherNet Ip工业RFID读写器与欧姆龙PLC 配置示例说明
  • 【软件教程】如何用C++检查TCP或UDP端口是否被占用
  • 网工内推 | 急招网工,思科、华为认证优先,法定节假日三薪
  • mysql GRANT创建用户授权
  • 2023 年 的 DBA 有哪些变化?
  • zk-Bench:SNARKs性能对比评估工具
  • 【Linux】Linux+Nginx部署项目
  • Django viewsets 视图集与 router 路由实现评论接口开发
  • 大数据Flink(一百零四):SQL任务参数配置
  • 【ARM AMBA Q_Channel 详细介绍】
  • react-组件间的通讯
  • tftp服务的搭建
  • 京东(天猫)数据分析:2023下半年茶饮料市场高速增长,东方树叶一骑绝尘
  • pytorch 入门 (四)案例二:人脸表情识别-VGG16实现
  • 为什么虚拟dom会提高性能?
  • LSTM 与 GRU
  • 十九、类型信息(1)
  • 贪心区间类题目
  • 如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样,蓝牙接近了电脑,电脑自动解锁无需输入开机密码
  • 【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。