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
  • 等等
相关推荐
水饺编程5 分钟前
第1章,[Win32 章节]:Windows 简史
c语言·c++·visual studio
硅基手札10 分钟前
【Linux 内核专栏 13】快IO层
linux·服务器·嵌入式硬件
嵌入式分享22 分钟前
嵌入式分享#63:RK3588 怎么选?全系列选型指南
linux
Pointer Pursuit36 分钟前
Linux调试器 ——gdb/cgdb
linux·运维·服务器
chenlance1 小时前
PADS灌铜、覆铜过程和技巧小汇总
linux·服务器·网络
HideF1 小时前
【无标题】
linux
高山有多高1 小时前
【Linux笔记】NAT与内网穿透
linux
福大大架构师每日一题1 小时前
Rust 1.99.0发布:C 可变参数、裸函数、Cargo 配置、Rustdoc 性能与大量兼容性调整全解析
c语言·开发语言·rust
迷途之人不知返2 小时前
自主实现一个简单的shell命令行
linux
动词ing2 小时前
【C语言题目练习】算法 整数反转
c语言·开发语言·算法