内核编译请参考Ubuntu环境内核编译
本人是在CentOS7环境(内核版本3.10.0)中编译从linux内核官网下载的4.19.34内核。
内核程序和https://www.cnblogs.com/tsruixi/p/10777242.html一样,都是获取或者设置进程优先级和nice值。
本人的测试程序如下:
#include<unistd.h>
#include<sys/syscall.h>
#include<stdio.h>
#define _SYSCALL_MYSETNICE_ 335
#define EFALUT 14
int main()
{
int pid, flag, nicevalue;
int pre_prio, pre_nice, cur_prio, cur_nice;
int result;
pre_prio = 99;
pre_nice = 99;
cur_prio = 99;
cur_nice = 99;
printf("Hello, welcome to Lab1 syscall\n");
printf("Please input pid, flag and nicevalue:\n");
scanf("%d%d%d", &pid, &flag, &nicevalue);
printf("pid:[%d] flag:[%d] nicevalue:[%d]\n", pid, flag, nicevalue);
result = syscall(_SYSCALL_MYSETNICE_, pid, 0, nicevalue, &pre_prio, &pre_nice);
if (result == EFALUT)
{
printf("Get priority and nice vlaue failed!");
return 1;
}
printf("pid:[%d], prio:[%d], nice:[%d]\n", pid, pre_prio, pre_nice);
if (flag == 1)
{
syscall(_SYSCALL_MYSETNICE_, pid, 1, nicevalue, &cur_prio, &cur_nice);
printf("Current priority is:[%d], current nice value is [%d]\n", cur_prio, cur_nice);
}
return 0;
}
结果如下: