2

我正在进行一个新的系统调用来获取 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; 
}
4

1 回答 1

3

添加系统调用是从内核获取信息的最难方法。不要这样做,除非你真的需要。

还有很多更好的方法,比如: 1. 在or
下添加一个虚拟文件。这为您提供了一个非常易于使用的文本界面。 2. 添加设备驱动,创建文件,使用功能。这更难使用,但可能更适合传递二进制结构。/proc/sys
/devioctl

于 2012-04-29T06:44:22.943 回答