2

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

いくつかの調査により、システムコールをテストするためのこれら 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; 
}
4

1 に答える 1

3

システム コールを追加することは、カーネルから情報を取得する最も難しい方法です。本当に必要でない限り、それをしないでください。

1.または
の下に仮想ファイルを追加します。これにより、非常に使いやすいテキスト インターフェイスが提供されます。 2. デバイス ドライバを追加し、ファイルを作成して機能を使用する。これは使いにくいですが、バイナリ構造を渡すのにより適している場合があります。/proc/sys
/devioctl

于 2012-04-29T06:44:22.943 に答える