2012-04-28 135 views
2

我在做一个新的系统调用来获得FCFS调度的平均等待时间。 我将系统调用名称命名为“add2”。现在编译内核成功后,我在测试系统调用时遇到问题。在linux 2.6.39.4内核中测试系统调用

随着一些研究,我想出了这两个程序来测试我的系统调用。但这些问题仍然存在一些问题。我认为问题在于争论。请帮忙。

这里是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; 
} 
+1

此代码不会编译。你在'printf'语句中是否指'add2(a,b,n)'?在'add2'的执行过程中是在哪里声明的?您没有使用通过 – 2012-04-28 19:40:11

回答

3

添加一个系统调用来得到一个内核信息,最困难的方式。不要这样做,除非你真的需要。

有更好的方法,如:
1. /proc/sys下添加一个虚拟文件。这给你一个文本界面,这是非常容易使用。
2.添加设备驱动程序,创建/dev文件并使用ioctl函数。这很难使用,但可能更适合传递二进制结构。

+0

的任何参数,或者使用debugfs进行黑客/调试。 – mpe 2012-04-30 01:57:26