系统调用nice()的内核之路

本文探讨了系统调用nice()的工作原理,从调用流程开始,详细解析了nice()函数原型,以及内核中的sys_nice()函数实现,帮助读者深入掌握进程优先级调整的内核机制。
摘要由CSDN通过智能技术生成

调用过程

nice()->sys_nice()

函数原型

int nice(int inc);

SYSCALL_DEFINE1(nice, int, increment)

sys_nice()分析

SYSCALL_DEFINE1(nice, int, increment)
{
	long nice, retval;


	//下面是对参数的校验 并修正 
	if (increment < -40)
		increment = -40;
	if (increment > 40)
		increment = 40;

	//从此处可以看到nice()的参数是一个增量
	nice = TASK_NICE(current) + increment;
	//对nice值进行修改 校验
	if (nice < -20)
		nice = -20;
	if (nice > 19)
		nice = 19;

    //检查资源限制
	if (increment < 0 && !can_nice(current, nice))
		return -EPERM;

	//lsm钩子函数
	retval = security_task_setnice(current, nice);
	if (retval)
		return retval;

    //在此处才真正使用nice值设置优先级
	set_user_nice(current, nice);
	return 0;
}

-----------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值