【随笔】thread_info

本文探讨了Linux内核中thread_info结构在32位和64位机器上的定义,以及其在内核栈中的位置。在X86架构下,thread_info位于内核栈的低地址,由BP寄存器指示。在64位系统中,thread_info不再包含task_struct,而是依赖于per-cpu的current指针来标识当前进程。此外,介绍了在被动调度中如何使用thread_info.flags的TIF_NEED_RESCHED标志位。
摘要由CSDN通过智能技术生成

看ULK3rd讲进程抢占提到thread_info.flags(调度基础、主动调度和被动调度),所以追了一下。

32bit机器上是这样定义的(https://elixir.bootlin.com/linux/v2.6.39.4/source/arch/x86/include/asm/thread_info.h#L26):

struct thread_info {
	struct task_struct	*task;		/* main task structure */
	__u32			flags;		/* low level flags */
	__u32			status;		/* thread synchronous flags */
	__u32			cpu;		/* current CPU */
	mm_segment_t		addr_limit;
	unsigned int		sig_on_uaccess_error:1;
	unsigned int		uaccess_err:1;	/* uaccess failed */
};

/* 其中__u32就是一个unsigned int */
typedef unsigned int __u32;

64bit机器上是这样定义的(

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值