10

ライブラリを含める必要がありますか?誰かがそれについて詳しく説明してもらえますか?

から呼び出されている現在のタスクのプロセスIDを取得するために使用されていることを知っています

しかし、current->pidで何かをprintkしたい

printk("My current process id/pid is %d\n", current->pid);

...そして私にエラーを与えています

error: dereferencing pointer to incomplete type

4

3 に答える 3

15

あなたが探して#include <linux/sched.h>いる。それtask_structが宣言されているところです。

于 2012-05-31T17:28:48.833 に答える
7

コードは機能するはずです。おそらくいくつかのヘッダーが欠落しています。

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クロスリファレンスで参照できます。

于 2012-05-31T17:58:15.460 に答える
-2

getpid()システムコールを探していると思います。何なのかわかりませんcurrent

于 2012-05-31T17:27:57.663 に答える