烟酒生DAY_ONE_linux内核学习-------task_struct的头文件分析

仅仅为了是个人学习记录,

烟酒生的linu内核记录生活第一天DAY1

希望能坚持毕业后




task_struct{

state//描述现在任务中的状态

stread_info//俗称线程状态

/*找了 本书,看了其结构为:

struct stread_info{

struct task_task *task;//又有一个指向该任务的指针,不过正常嘛,毕竟线程信息,肯定要指向任务的呗

strcut exec_domain *exec_exec_domain;//呵呵,貌似是执行的,暂时还不知道,我先看看内核

unsigned long flags;//标记,32位无符号唉,线程信息里肯定需要标记的吧,看这个具体内容吧,我暂时也不知道唉

_u32 cpu

_s32preempt_count

mm_segment_addr_limit;看他的字面意思吧,内存区段地址的限制,那估计就是不能用的内存地址块(某些地址不准 用,BIOS等吧)

u8 supervisor_stack[0];感觉是个堆栈吧

}

上面的是老版,让我们看看新版:

struct thread_info {
unsigned long flags; /* low level flags */
int preempt_count; /* 0 => preemptable, <0 => bug */
mm_segment_t addr_limit; /* address limit */
struct task_struct *task; /* main task structure */
__u32 cpu;            /* cpu */
__u32 cpu_domain;     /* cpu domain */
struct cpu_context_save cpu_context;      /* cpu context */
__u32 syscall;                    /* syscall number */
__u8 used_cp[16];     / * thread used copro */
unsigned long tp_value[2];      /* TLS registers */
#ifdef CONFIG_CRUNCH
struct crunch_state crunchstate;
#endif
union fp_state fpstate __attribute__((aligned(8)));
union vfp_state vfpstate;
#ifdef CONFIG_ARM_THUMBEE
unsigned long thumbee_state; /* ThumbEE Handler Base register */
#endif


忽然发现,相差不多,都有:

1.肯定要标记,要标记东西

2.肯定有一个指向主任务的指针,线程,得切换,所以必须得有,这个很重要唉

3.不能访问的内存地址,这个也重要,不能乱访问

4.要有一个指向执行的指针,这个也重要

好了,暂时也就了解这么多了


};


*/



usage//据说是使用法则


run_list;/*     这个是运行列表的意思嘛,list_head的类型很重要唉,双向指针,这个里面有优先级等级,例如我等级是NO.1,劳资要插入到第一种,所以双向链表可已插入要运行的地方*/

mm  /*这个嘛  .MAMA,memory,momory ,记忆记忆,当然是内存空间了

real_parent//真正的父亲,当然是所有人的老大,INIT(),PID=1

parent//上一个进程,因为双向链表,必定指明他是谁生出来的,老外用词还是不错的

tty   //占时还没看到,以后看到再补充

fs//fs_struct------>指向当前目录,唉

file//-------------------->指向文件的指针,这个也是,毕竟任务,你丫能不让他访问文件嘛,人家牛比着呢

signal//--------------------------》singnal_STRUCT





}

你可能感兴趣的:(C语言学习)