2012-04-27 15 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

答えて

1

私はあなたのコードで使用される任意のIO機能を参照してくださいdo'ntの、あなたがstdio.h

2

ですが、それは、stdio.hで宣言された任意の関数を呼び出すことはありません。 (実際には関数を呼び出すことはまったくありません)。その行を削除することは安全です。

stdio.hは、Cライブラリヘッダーです。通常のCプログラムで利用できますが、カーネルは異なります。カーネルは自己完結型です。ユーザ空間ライブラリはカーネルに依存して作業するため、ユーザ空間ライブラリに依存することはできません。代わりに、カーネルには、カーネル開発をしているかどうかを知りたい便利な関数の内部ライブラリがあります。

1

カーネルプログラミングではstdio.hは必要ありません。何かを印刷する必要がある場合はprintfの代わりにprintkを使用してください。

関連する問題