GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la source actuelle du noyau Linux ?

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


Linux
  1. Linux vs Unix :Quelle est la différence ?

  2. Qu'est-ce que le noyau Linux et devez-vous mettre à niveau vers le dernier noyau ?

  3. Quel est le niveau d'exécution actuel du système Linux ?

  4. Que signifie __init dans le code du noyau Linux ?

  5. Quelle est la définition d'une session sous Linux?

Quelle est la différence entre les noyaux macOS et Linux

Qu'est-ce que le Shell sous Linux ?

Que faire en cas de panique du noyau Linux

Qu'est-ce que la commande kill sous Linux ?

Qu'est-ce que la table des processus Linux ? En quoi cela consiste?

Qu'est-ce qu'un processus arrêté sous Linux ?