GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist die aktuelle Linux-Kernelquelle?

Es ist ein Zeiger auf den aktuellen Prozess (d. h. der Prozess, der den Systemaufruf ausgegeben hat).

Auf x86 ist es in arch/x86/include/asm/current.h definiert (ähnliche Dateien für andere Bögen).

#ifndef _ASM_X86_CURRENT_H
#define _ASM_X86_CURRENT_H

#include <linux/compiler.h>
#include <asm/percpu.h>

#ifndef __ASSEMBLY__
struct task_struct;

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()

#endif /* __ASSEMBLY__ */

#endif /* _ASM_X86_CURRENT_H */

Weitere Informationen finden Sie in Kapitel 2 zu Linux-Gerätetreibern:

Der aktuelle Zeiger bezieht sich auf den aktuell ausgeführten Benutzerprozess. Während der Ausführung eines Systemaufrufs, z. B. open oder read, ist der aktuelle Prozess derjenige, der den Aufruf aufgerufen hat. Kernel-Code kann prozessspezifische Informationen mithilfe von current verwenden, wenn dies erforderlich ist. [...]


Current ist eine globale Variable vom Typ struct task_struct . Die Definition finden Sie unter [1].

Files ist ein struct files_struct und es enthält Informationen zu den Dateien, die vom aktuellen Prozess verwendet werden.

[1] http://students.mimuw.edu.pl/SO/LabLinux/PROCESY/ZRODLA/sched.h.html


Linux
  1. Linux vs. Unix:Was ist der Unterschied?

  2. Der Lebenszyklus des Linux-Kernel-Testens

  3. Was bedeutet &am Ende eines Linux-Befehls?

  4. Was ist die Definition einer Sitzung unter Linux?

  5. Was ist der Vorteil, wenn Sie Ihren eigenen Linux-Kernel kompilieren?

Was ist der Unterschied zwischen macOS- und Linux-Kernels

Was ist die Shell unter Linux?

Was tun bei einer Linux-Kernel-Panik?

Was ist der Kill-Befehl in Linux?

Was ist die Linux-Prozesstabelle? Woraus besteht es?

Was ist ein gestoppter Prozess unter Linux?