Android OS の一部を変更するプロジェクトに取り組んでおり、すべてのプロセスのステータスを返す新しいシステム コールを実装しようとすると、次のエラーが発生しました。
kernel/sys.c: error: array tpye has incomplete element type.
私がsys.cで行ったことは次のとおりです。
/***previous code in sys.c***/
SYSCALL_DEFINE2(new_syscall, struct info __user*, buf, int __user*, nr){
if(!buf || !nr) return -EINVAL;
int nr_copy;
int success;
success = copy_from_user(&nr_copy, nr, sizeof(int));
if(success == 0) return -EINVAL;
if(nr_copy < 1) return -EINVAL;
struct info buf_copy[nr_copy]; /*************
return 0;
}
Complier は、星でマークされた行について不満を述べました。
私の info.h ファイルは次のようになります。
#ifndef __LINUX_INFO_H
#define __LINUX_INFO_H
struct info {
long state;
pid_t pid;
pid_t parent_pid;
};
#endif
sys.c に info.h を含めてみましたが、まったく役に立ちませんでした。私が何を調べるべきかについて誰かが私にいくつかの指示を与えることができますか?
ありがとう