GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è l'attuale sorgente del kernel Linux?

È 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


Linux
  1. Cosa significa __init nel codice del kernel di Linux?

  2. Dove trovo la versione di un albero dei sorgenti del kernel Linux?

  3. Cosa significa &alla fine di un comando Linux?

  4. Qual è lo stato attuale del supporto dei driver video di Linux?

  5. Qual è la definizione di una sessione in Linux?

Qual ​​è la differenza tra i kernel macOS e Linux

Che cos'è la shell in Linux?

Cosa fare in caso di panico del kernel Linux

Qual è il comando kill in Linux?

Qual è la tabella dei processi Linux? In cosa consiste?

Cos'è un processo interrotto in Linux?