GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la fuente actual del kernel de Linux?

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


Linux
  1. Linux vs Unix:¿Cuál es la diferencia?

  2. ¿Qué es el Kernel de Linux? ¿Debería actualizar a la última versión del Kernel?

  3. Linux:¿qué fuentes de entropía utiliza el kernel de Linux?

  4. En Linux, ¿qué significan todos los valores en el comando superior?

  5. ¿Qué significa __init en el código del kernel de Linux?

¿Cuál es la diferencia entre los núcleos de macOS y Linux?

¿Qué es el Shell en Linux?

Qué hacer en caso de pánico en el kernel de Linux

¿Qué es el comando matar en Linux?

¿Qué es la tabla de procesos de Linux? ¿En qué consiste?

¿Qué es un proceso detenido en Linux?