È un puntatore al processo corrente (ovvero il processo che ha emesso la chiamata di sistema).
Su x86, è definito in arch/x86/include/asm/current.h
(file simili per altri archi).
#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 */
Maggiori informazioni in Linux Device Drivers capitolo 2:
Il puntatore corrente si riferisce al processo utente attualmente in esecuzione. Durante l'esecuzione di una chiamata di sistema, come open o read, il processo corrente è quello che ha invocato la chiamata. Il codice del kernel può utilizzare informazioni specifiche del processo utilizzando current, se necessario. [...]
Current
è una variabile globale di tipo struct task_struct
. Puoi trovare la sua definizione in [1].
Files
è un struct files_struct
e contiene informazioni sui file utilizzati dal processo corrente.
[1] http://students.mimuw.edu.pl/SO/LabLinux/PROCESY/ZRODLA/sched.h.html