我正在进行新的系统调用以获得FCFS调度的平均等待时间。 我将系统调用名称命名为“add2”。现在,在成功编译内核之后,我在测试系统调用时遇到了问题。
通过一些研究,我想出了这两个程序来测试我的系统调用。但这些仍然存在一些问题。我认为问题在于传递论点。请帮忙。
这是addnewsystemcall.h
#include<linux/unistd.h>
#define __NR_add2 307
long add2(int at[], int bt[], int n)
{
return syscall(__NR_atvfcfs,i);
}
这是addnewsystemcall.c
#include<string.h>
#include <stdio.h>
#include "add2.h"
int main()
{
int avgwt;
int n,i,at[50],bt[50];
printf("\n\nEnter the number of processes:");
scanf("%d",&n);
printf("\n\n BURST TIME and ARRIVAL TIME of thr process");
for(i=0;i<n;i++)
{
printf("\n ARRIVAL TIME :");
scanf("%d",&at[i]);
printf(" BURST TIME : ");
scanf("%d",&bt[i]);
}
printf("\n\nAverage waiting time = ");
printf("%d\n", add2(int at[], int bt[], int n));
return 0;
}
答案 0 :(得分:3)
添加系统调用是从内核获取信息的最难的方法。不要这样做,除非你真的需要。
有更好的方法,例如:
1.在/proc
或/sys
下添加虚拟文件。这为您提供了一个易于使用的文本界面
2.添加设备驱动程序,创建/dev
文件并使用ioctl
功能。这很难使用,但可能更适合传递二进制结构。