2012-04-28 12 views
2

FCFSスケジューリングの平均待機時間を取得するための新しいシステムコールを作成しています。 システムコール名を「add2」と命名しました。今、カーネルを正常にコンパイルした後、私はシステムコールをテストする際に問題が発生しています。Linux 2.6.39.4カーネルでシステムコールをテストする

いくつかの調査で、私はシステムコールをテストするためにこれらの2つのプログラムを思いついた。しかし、まだこれらにいくつかの問題があります。私は問題が議論を通過することにあると思う。助けてください。ここで

は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'の実装で'どこに 'が宣言されていますか?渡されたパラメータを使用していません –

答えて

3

は、システムコールの追加であるカーネルから情報を取得するための最も困難な方法です。あなたが本当に必要な場合を除き、それをしないでください。
1. /procまたは/sys下の仮想ファイルの追加:

のようなより良い方法があります。これは非常に使いやすいテキストインターフェイスを提供します。
2.デバイスドライバを追加し、/devファイルを作成し、ioctl機能を使用します。これは使用するのが難しいですが、バイナリ構造を渡す方が適しているかもしれません。

+0

またはハッキング/デバッグでdebugfsを使用しています。 – mpe

関連する問題