task_nice
task_nice函数功能:获取某个进程的nice值,其中nice值为进程的优先级,与静态优先级有关(nice=static_prio-120)。
- nice的取值范围:-20 ~ 19
内核源码
- 根据内核的注释可以知道:task_nice返回一个整形,就是进程(任务)的优先级。前面几次的笔记也说过,nice的值越小则进程优先级越高。
使用示例
#include <linux/sched.h> #include <linux/module.h> #include <linux/pid.h> #include <linux/kthread.h> int MyThreadFunc(void* argc) { printk("Prompt:kernel thread function.\n"); printk("Prompt:kernel thread function static_prio : %d.\n", current->static_prio); printk("Prompt:kernel thread function PID : %d.\n", current->pid); printk("Prompt:kernel thread function nice : %d.\n", task_nice(current)); return 0; } static int __init TaskNiceFuncInit(void) { struct task_struct* new_task; int priority; new_task = kthread_create_on_node(MyThreadFunc, NULL, -1, "task_nice.c"); wake_up_process(new_task); priority = task_nice(new_task); printk("Prompt:child thread PID : %d.\n", new_task->pid); printk("Prompt:child thread static_prio : %d.\n", priority); printk("Prompt:current thread PID : %d.\n", current->pid); printk("Prompt:current thread static_prio : %d.\n", current->static_prio); return 0; } static void __exit TaskNiceFuncExit(void) { printk("Prompt:exit kernel.\n"); } module_init(TaskNiceFuncInit); module_exit(TaskNiceFuncExit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("lenn louis");
运行结果