2012-04-27 61 views
0

我正在爲Linux 2.6.39內核進行SYSTEM CALL。編譯內核錯誤:stdio.h:沒有這樣的文件或目錄

我已完成文件中的所有編輯。現在,當我試圖編譯內核它顯示這個錯誤:

錯誤:stdio.h中:沒有這樣的文件或目錄

如果我刪除stdio.h中,將系統調用的工作???

我的代碼是

#include<stdio.h> 
#include <linux/linkage.h> 

asmlinkage long sys_atvfcfs(int at[], int bt[], int n) 
{ 

int i=0; 
int j,t,wt[n],sum,q; 

float avgwt; 


for(j=i+1;j<n;j++) 
    { 
    if(at[i]>at[j]) 

    { 
t=at[i]; 
at[i]=at[j]; 
at[j]=t; 
q=bt[i]; 
bt[i]=bt[j]; 
bt[j]=q; 
    } 
    } 


wt[0]=0; 
sum=0; 


for(i=0;i<n-1;i++) 
{ 

wt[i+1]=wt[i]+bt[i]; 
sum=sum+(wt[i+1]-at[i]); 

} 

avgwt=sum/n; 

return avgwt; 


} 
+0

你確定你應該寫內核的增強,當你不知道這樣的事情? – trojanfoe 2012-04-27 06:37:44

回答

1

我do'nt看到在你的代碼中使用任何IO功能,這樣你就不會需要包括stdio.h

2

我不知道你的系統調用是應該做的,但它不調用stdio.h聲明的任何功能。 (事實上​​,它根本不會調用任何函數)。因此,刪除該行應該是安全的。

stdio.h是C庫標題。它在普通的C程序中可用,但是內核是不同的。內核是獨立的;它不能依賴於用戶空間庫,因爲用戶空間庫依靠內核來完成他們的工作。相反,內核擁有自己的有用函數的內部庫,如果您正在進行內核開發,您將需要了解它們。

1

在內核編程中你不需要stdio.h。如果您需要打印某些內容,請使用printk而不是printf

相關問題