Es un puntero al proceso actual (es decir, el proceso que emitió la llamada al sistema).
En x86, está definido en arch/x86/include/asm/current.h
(archivos similares para otros arcos).
#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 */
Más información en Controladores de dispositivos Linux capítulo 2:
El puntero actual se refiere al proceso de usuario que se está ejecutando actualmente. Durante la ejecución de una llamada al sistema, como abrir o leer, el proceso actual es el que invocó la llamada. El código del núcleo puede usar información específica del proceso mediante el uso actual, si es necesario. [...]
Current
es una variable global de tipo struct task_struct
. Puede encontrar su definición en [1].
Files
es un struct files_struct
y contiene información de los archivos usados por el proceso actual.
[1] http://students.mimuw.edu.pl/SO/LabLinux/PROCESY/ZRODLA/sched.h.html