2012-04-28 3 views
2

Я делаю новый системный вызов для получения среднего времени ожидания планирования FCFS. Я назвал имя системного вызова «add2». Теперь, после компиляции ядра успешно, я испытываю проблему при тестировании системного вызова.test system call in linux 2.6.39.4 kernel

С некоторыми исследованиями я придумал эти две программы для тестирования моего системного вызова. Но все же в этом есть какая-то проблема. Я думаю, что проблема заключается в передаче аргументов. Пожалуйста помоги.

Вот 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

Этот код не компилируется. Вы имели в виду 'add2 (a, b, n)' в 'printf' statement? В реализации 'add2', где объявляется' i'? Вы не используете переданные параметры. –

ответ

3

Добавление системного вызова тяжелейший способ получить информацию из ядра. Не делайте этого, если вам действительно не нужно.

Есть гораздо более эффективные способы, такие как:
1. Добавление виртуального файла под /proc или /sys. Это дает вам текстовый интерфейс, который очень прост в использовании.
2. Добавление драйвера устройства, создание файла /dev и использование функции ioctl. Это труднее использовать, но может быть более подходящим для передачи двоичных структур.

+0

Или для взлома/отладки используйте debugfs. – mpe