arm32的linux的进程控制块定义
时间: 2024-02-12 15:04:58 浏览: 25
ARM32的Linux进程控制块(Process Control Block,简称PCB)定义如下:
```c
struct task_struct {
volatile long state; // 进程状态
void *stack; // 进程内核栈指针
struct list_head tasks; // 进程链表
pid_t pid; // 进程ID
pid_t tgid; // 进程组ID
struct task_struct *parent; // 父进程指针
struct list_head children; // 子进程链表
struct mm_struct *mm; // 内存描述符指针
struct files_struct *files; // 文件描述符指针
struct signal_struct *signal; // 信号处理描述符指针
struct sighand_struct *sighand; // 信号处理函数指针
struct pt_regs *thread_regs; // 线程寄存器指针
unsigned int flags; // 进程标志位
struct user_struct *user; // 用户描述符指针
struct fs_struct *fs; // 文件系统信息指针
struct group_info *group_info; // 进程所属的用户组信息指针
int exit_code; // 进程退出码
struct completion *vfork_done; // vfork完成信号量
struct pid_link pids[PIDTYPE_MAX]; // 进程ID链表
struct list_head thread_group; // 线程组链表
struct cred *cred; // 进程所属的安全凭证信息指针
char comm[TASK_COMM_LEN]; // 进程名
struct mempolicy *mempolicy; // 内存策略指针
struct timer_list real_timer; // 实时定时器
struct timer_list *real_timer_rebase; // 实时定时器重新计数指针
struct rt_mutex_waiter *pi_waiters; // pi等待链表
};
```
其中,state为进程状态,包括TASK_RUNNING(运行中)、TASK_INTERRUPTIBLE(可中断的等待)、TASK_UNINTERRUPTIBLE(不可中断的等待)等;stack为进程内核栈指针;pid为进程ID;parent为父进程指针;mm为内存描述符指针;files为文件描述符指针;signal为信号处理描述符指针;sighand为信号处理函数指针;flags为进程标志位,如PF_EXITING(退出标记)等;user为用户描述符指针;fs为文件系统信息指针;group_info为进程所属的用户组信息指针;exit_code为进程退出码;pids为进程ID链表;cred为进程所属的安全凭证信息指针等。