linux内核current宏实现原理,分析内核中的current宏,并自己实现

说明:

current宏,是一个全局指针,指向当前进程的struct task_struct结构体,即表示当前进程。

例如current->pid就能得到当前进程的pid,current-comm就能得到当前进程的名称。

每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。

当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;

当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。

在陷入内核后,系统调用中也是存在函数调用和自动变量,这些都需要栈支持。、

当进程因为中断或者系统调用而陷入内核态时,进程所使用的堆栈也要从用户栈转到内核栈。

程序一:urrent宏的使用

创建文件夹/nfsroot/kern/2012-04-16/01/。

创建文件/nfsroot/kern/2012-04-16/01/test.c,内容如下:

0818b9ca8b590ca3270a3433284dd417.png

说明:要使用current宏,必须声明头文件linux/sched.h。

上面的test_exit()函数的返回值应改为void。

创建文件/nfsroot/kern/2012-04-16/01/Makefile,内容如下:

你可能感兴趣的:(linux内核current宏实现原理,分析内核中的current宏,并自己实现)