C'est un pointeur vers le processus courant (c'est-à-dire le processus qui a émis l'appel système).
Sur x86, il est défini dans arch/x86/include/asm/current.h
(fichiers similaires pour les autres arches).
#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 */
Plus d'informations dans le chapitre 2 des pilotes de périphériques Linux :
Le pointeur courant fait référence au processus utilisateur en cours d'exécution. Lors de l'exécution d'un appel système, tel que open ou read, le processus en cours est celui qui a invoqué l'appel. Le code du noyau peut utiliser des informations spécifiques au processus en utilisant current, s'il en a besoin. [...]
Current
est une variable globale de type struct task_struct
. Vous pouvez trouver sa définition sur [1].
Files
est un struct files_struct
et il contient des informations sur les fichiers utilisés par le processus en cours.
[1] http://students.mimuw.edu.pl/SO/LabLinux/PROCESY/ZRODLA/sched.h.html