Expand description
Wrappers de la famille process.
Cf. docs/specs/layer-0/family-process.md. Couvre l’identité (getpid,
gettid), la création/attente (clone3, waitid, exit_group), l’exec
et la redirection (execve, execveat, dup3, fchdir, chdir), les
groupes/sessions, prctl (opérations individuelles), les rlimits, les
capabilities et l’affinité CPU.
Les wrappers exécutent les syscalls Linux directement via
core::arch::asm! ; la libc n’est pas dans le chemin d’appel
(cf. CLAUDE.md : « variantes modernes préférées, syscalls non wrappés
listés dans UNSUPPORTED.md »).
Modules§
- fuzz_
api - API de fuzzing pure (sans syscall) de la frontière de marshalling
argv/envp(CStrArray). Le harnais cargo-fuzz (fuzz/fuzz_targets/fuzz_exec_argv.rs) y délègue ; l’oracle vit ici pour accéder aux internes deCStrArray(le tableau de pointeurs) tout en restant testé et couvert. Suit le pattern de [crate::io_uring::fuzz_api].
Structs§
- CStr
Array - Tableau de pointeurs C terminé par
NULL, pour le marshalling d’argv/envpversexecve(2)/execveat(2).
Functions§
- cap_
ambient_ clear_ all - Vide totalement l’ensemble ambient du thread.
- cap_
ambient_ is_ set - Indique si
capest dans l’ensemble ambient. - cap_
ambient_ lower - Retire
capde l’ensemble ambient. - cap_
ambient_ raise - Ajoute
capà l’ensemble ambient du thread. - capget
- Lit les capabilities du thread cible.
- capset
- Écrit les capabilities du thread cible.
- chdir
- Change le répertoire de travail courant du processus pour
path(chdir(2)). - chroot
- Change le répertoire racine du processus vers
path(chroot(2)) — descellement additif ADR-085 pour la face libc. Confinement de processus (CAP_SYS_CHROOTrequis). - clone3⚠
- Crée un nouveau processus via le syscall
clone3(2). - clone_
thread ⚠ - Crée un thread (mémoire partagée,
CLONE_VM) viaclone3(2). - dup3
- Duplique le descripteur
oldvers le numéronew(dup3(2)), en fermant atomiquementnews’il était ouvert. Retourne le nouveau descripteur, possédé ([OwnedFd], fermé auDrop). - execve
- Remplace l’image mémoire du processus courant par l’exécutable situé à
path, avec les argumentsargvet l’environnementenvp. - execve_
prepared - Variante d’
execvesans allocation : reçoit des tableaux de pointeursargv/envpdéjà construits (CStrArray). - execveat
- Variante *at d’
execve(préférée par ADR-021) : résout l’exécutable relativement àdirfd, ou — avec [ExecveatFlags::EMPTY_PATH] etpath == c""— exécute directement le binaire désigné pardirfd(un fd ouvert sur l’exécutable, typiquement avecO_PATH), éliminant toute race entre l’ouverture/vérification et l’exec. - exit_
group - Termine immédiatement le processus appelant (tous ses threads) avec le
code
status, via le syscallchild_exit(2). - fchdir
- Change le répertoire de travail courant du processus pour celui référencé
par le descripteur
dir(fchdir(2)). - get_
cpu_ affinity - Lit l’affinité CPU courante d’une tâche (
sched_getaffinity(2)) danscpus(buffer fourni, zéro allocation).tid = Nonecible la tâche appelante. - get_
dumpable - Retourne le mode
dumpableactuel. - get_
groups - Lit la liste courante des groupes supplémentaires (
getgroups) dans lebufferfourni — zéro allocation — et retourne la sous-tranche remplie. - get_
keep_ caps - Indique si le bit
keep_capsest positionné. - get_
no_ new_ privs - Indique si le bit
no_new_privsest positionné pour le processus. - get_
parent_ death_ signal - Retourne le signal envoyé au processus à la mort du parent.
Ok(None)si la notification est désactivée. - get_
resgid - Lit les trois composantes GID réelle / effective / sauvegardée
(
getresgid) — vérification défensive (confirmer qu’on ne peut plus revenir en arrière). - get_
resuid - Lit les trois composantes UID réelle / effective / sauvegardée
(
getresuid) — vérification défensive. - get_
thread_ name - Retourne le nom du thread courant.
- getcwd
- Écrit le répertoire courant (chemin absolu) dans
bufet retourne la tranche d’octets correspondante, sans l’octet NUL terminal (getcwd(2)). - getpgid
- Retourne le process group ID de
pid(ou du processus courant siNone). - getpid
- Retourne le PID du processus appelant.
- getppid
- Retourne le PID du parent du processus appelant (
getppid(2)). - getrlimit
- Retourne la
Rlimitcourante du processus pourresource. - getrusage
- Renseigne les statistiques de ressources (
getrusage(2)) pour la cible [RusageWho] demandée. - getsid
- Retourne le session ID de
pid(ou du processus courant siNone). - gettid
- Retourne le TID du thread appelant.
- pidfd_
getfd - Duplique un FD ouvert dans le processus référencé par
pidfd. - pidfd_
open - Ouvre un pidfd qui référence le processus identifié par
pid. - pidfd_
send_ signal - Envoie un signal au processus référencé par
pidfd. - prlimit
prlimit64: lit et/ou modifie atomiquement laRlimitd’un processus.- sched_
yield - Cède volontairement le CPU à un autre thread prêt (
sched_yield(2)). - set_
cpu_ affinity - Fixe l’affinité CPU d’une tâche (
sched_setaffinity(2)) : la tâche ne sera ordonnancée que sur les CPU présents danscpus.tid = Nonecible la tâche appelante. Débloqueair-thread::cpu_affinity(couche 1). - set_
dumpable - Définit le mode
dumpabledu processus. - set_
groups - Remplace la liste des groupes supplémentaires du processus (
setgroups). - set_
keep_ caps - Définit le bit
keep_caps: si vrai, les capabilitiespermittedsont conservées lors d’un changement d’UID effectif vers non-zéro. - set_
no_ new_ privs - Active le bit
no_new_privsdu processus. - set_
parent_ death_ signal - Définit le signal envoyé au processus courant à la mort de son parent.
- set_
resgid - Fixe real + effective + saved GID en un seul appel (
setresgid). - set_
resuid - Fixe real + effective + saved UID en un seul appel (
setresuid). - set_
thread_ name - Définit le nom du thread (max 15 caractères + NUL).
- set_
tid_ ⚠address - Enregistre l’adresse
clear_child_tiddu thread appelant et retourne son TID (set_tid_address(2)). À la fin du thread, le kernel écrit0à cette adresse et émet unFUTEX_WAKEdessus — primitif de join (cf.clone_threadet la famillefutex). - set_
timer_ slack - Définit la « timer slack » du processus (nanosecondes).
- setpgid
- Place
piddans le process grouppgid. - setrlimit
- Définit la
Rlimitcourante du processus pourresource. - setsid
- Crée une nouvelle session avec l’appelant comme session leader, et le place dans un nouveau process group dont il est le leader. Retourne le nouveau session ID.
- umask
- Fixe le masque de création de fichiers du processus et retourne l’ancien
(
umask(2)). Opération totale (ne peut pas échouer). - waitid
- Attend un événement sur un processus enfant via le syscall
waitid(2).