/usr/src/linux-3.2/include/linux/unistd.h
Linuxカーネルで定義された構造があります:
#ifndef _LINUX_UNISTD_H_
#define _LINUX_UNISTD_H_
struct threadinfo_struct {
int pid;
int nthreads;
int *tid;
};
/*
* Include machine specific syscall numbers
*/
#include <asm/unistd.h>
#endif /* _LINUX_UNISTD_H_ */
カーネルをコンパイルしてインストールし、そこから起動した後、次のプログラムをコンパイルして実行しようとします。
#include <stdio.h>
#include <linux/unistd.h>
int main(void) {
struct threadinfo_struct *ti = (struct threadinfo_struct*) malloc(sizeof(struct threadinfo_struct));
// ...
return 0;
}
ただし、これを実行しようとすると、プログラムのコンパイルでエラーが発生します。
test.c: In function 'main':
test.c:4:78: error: invalid application of 'sizeof' to incomplete type 'struct threadinfo_struct'
このエラーが発生する理由と解決方法を教えてください。私は Linux カーネルに非常に慣れていないため、多くの情報を見つけるのは困難です。