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