⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sched.h.txt

📁 linux内核学习笔记 希望想看的人可以很快下载到
💻 TXT
字号:
this is writen by netbear in nankai university
all copyright reserved
you can copy and modify it,but you cant use it to make profit

****************关于等待队列的一系列处理数***********************
对wait_queue的使用的函数和宏都定义在这个文件中,
wait_event

(2)wait_event_interruptible:(参数说明wq是wait_queue_head_t型的变量,condition是一个判断。),
将当前的进程(current)放入一个wait_queue_t型变量中.
在用init_waitque_entry对wait_queue_t型变量进行初始化,
然后将这个变量连接到一个wait_queue_head_t的参数变量中。
然后进入无限循环,将当前的进程的状态进行设置,设置是TASK_INTERRUPTIBLE型的。
然后判断condition条件,如果条件是true,就跳出循环,
否则判断信号,如果允许的话就进行进程调度(schedule函数),轮到自己的时候再进行循环,判断条件,以此类推,直到条件满足。
如果条件满足,跳出循环,奖进程的状态设置位可运行的TASK_RUNNING,最后从wq链表中把waitqueue移走。

(3)wait_event函数和wait_envent_interruptible函数基本一致,只是这个函数对应的是不可中断的等待,两者的区别仅仅是在循环中不用设置信号量。

(4):#define wake_up(x)    __wake_up((x),T)
定义唤醒函数,其参数就是一个wait_queue_head_t型的变量,其中__wake_up函数定义在/kernel/sched.c中。
*****************************************************************************


*********************可运行队列的一些处理函数******************************
(1):static inline int task_on_runqueue(struct task_struct *p)
验证进程p是不是在可运行队列中。
其实只是检验了一下p结构中run_list.next是否为空,因为这是一个双链表结构,如果进程p在可运行队列中,那么它的next指针一定指向另一个结构。
*****************************************************************************


//打开的文件列表,其中NR_OPEN_DEFAULT就是默认的打开的最大文件个数
struct files_struct {
        atomic_t count;
        rwlock_t file_lock;     /* Protects all the below members.  Nests insid tsk->alloc_lock */
        int max_fds;
        int max_fdset;
        int next_fd;
        struct file ** fd;      /* current fd array */
        fd_set *close_on_exec;
        fd_set *open_fds;
        fd_set close_on_exec_init;
        fd_set open_fds_init;
        struct file * fd_array[NR_OPEN_DEFAULT];
};


**********************验证是否当前的进程是否具有相应的cap权限*****************
相关文件capability.h

static inline int capable(int cap)
{
	if (cap_raised(current->cap_effective, cap))	//???
	{
		current->flags |= PF_SUPERPRIV;
		return 1;
	}
	return 0;
}
**********************************************************************************



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -