ライブラリを含める必要がありますか?誰かがそれについて詳しく説明してもらえますか?
から呼び出されている現在のタスクのプロセスIDを取得するために使用されていることを知っています
しかし、current->pidで何かをprintkしたい
printk("My current process id/pid is %d\n", current->pid);
...そして私にエラーを与えています
error: dereferencing pointer to incomplete type
あなたが探して#include <linux/sched.h>
いる。それtask_struct
が宣言されているところです。
コードは機能するはずです。おそらくいくつかのヘッダーが欠落しています。
current
はで定義されたCPUごとの変数ですlinux/arch/x86/include/asm/current.h
(すべてのコードはx86の場合用です):
DECLARE_PER_CPU(struct task_struct *, current_task);
static __always_inline struct task_struct *get_current(void)
{
return percpu_read_stable(current_task);
}
#define current get_current()
current
特定の瞬間にCPUで実行されているタスクを指します。そのタイプはstruct task_struct
であり、次のように定義されていlinux/include/linux/sched.h
ます。
struct task_struct {
...
pid_t pid; // process identifier
pid_t tgid; // process thread group id
...
};
これらのファイルのコードは、Linuxクロスリファレンスで参照できます。
getpid()システムコールを探していると思います。何なのかわかりませんcurrent
。