Linux 内核的 current

1. 进程结构体

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

cpp 复制代码
// 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

c 复制代码
static inline struct task_struct *get_current(void)
{
	return current_thread_info()->task;
}

#define current get_current()

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

  • current->comm: 进程的名字
  • current->pid: 进程的 pid
  • 等等
相关推荐
文静小土豆14 分钟前
Centos7负载异常过高排查思路(Load Average)
linux
Deitymoon17 分钟前
linux——原子操作
linux
沉鱼.4419 分钟前
第十三届题目
c语言·c++·算法
亚空间仓鼠1 小时前
OpenEuler系统常用服务(四)
linux·运维·服务器·网络
昪彧翀忞1 小时前
dhcp小实验
linux·服务器·网络
bukeyiwanshui1 小时前
20260407系统间复制文档
linux
23.2 小时前
【Linux】grep -F 及 双横线--的妙用
linux·命令模式
橙露2 小时前
Linux 驱动入门:字符设备驱动框架与编写流程
linux·运维·服务器
hong1616883 小时前
TypeScript类型断言
linux·javascript·typescript
算法鑫探3 小时前
10个数下标排序:最大值、最小值与平均值(下)
c语言·数据结构·算法·排序算法·新人首发