Plongeon en profondeur : suivi de l’appel système `write()` dans OpenBSD
Cet article explore en détail l’implémentation de bas niveau de l’appel système `write()` dans OpenBSD. En partant de l’appel `write()` dans l’espace utilisateur, il suit le parcours des données dans le noyau, détaillant le chemin complet de l’appel système jusqu’à l’écriture des données sur un disque dur NVMe. L’article révèle une chaîne d’appels de fonctions du noyau, notamment `mi_syscall`, `sys_write`, `dofilewritev`, `vn_write`, `ffs_write`, `uiomove`, `bdwrite`, `syncer`, `bwrite`, `ufs_strategy`, `spec_strategy`, `sdstrategy` et enfin le pilote NVMe. Il illustre la transformation et la transmission des données à travers différents niveaux d’abstraction, en soulignant des détails techniques clés tels que les mécanismes de mise en cache et les transferts DMA.