corectionsujets2

This commit is contained in:
2026-10-23 11:04:00 +02:00
parent 48728bb4bd
commit ca77961912
10 changed files with 100 additions and 56 deletions

View File

@@ -1,19 +1,24 @@
# Little Penguin — Linux Kernel Development
Traduction française du sujet. Le PDF reste la source en cas de doute.
Les sorties de commandes, les noms de fichiers et les deux fichiers C sont recopiés. Pour le style (espaces, retours), les captures C4 et C6 font foi : l’extraction texte aplatit une partie de l’indentation, et c’est justement ce style qu’il faudra corriger.
Les sorties de commandes, les noms de fichiers et les deux fichiers C sont recopiés. Pour les espaces du code, les figures C4 et C6 restent l’image du PDF.
| | |
|--|--|
| Fichier d’origine à la racine | `little_pinguin sujet.pdf` |
| Copie de travail | [originaux/little_penguin_subject.pdf](originaux/little_penguin_subject.pdf) |
| PDF | [originaux/little_penguin_subject.pdf](originaux/little_penguin_subject.pdf) |
| Auteurs | Louis Solofrizzo louis@ne02ptzero.me, 42 Staff pedago@42.fr |
| Version | 1.1 |
| Date du PDF | 9 mai 2025 |
| Pages | 20 |
| Résumé (anglais) | This entire project is based on the Eudyptula Challenge. All credits go to little@eudyptula-challenge.org |
Visuels : [C1](captures/01-couverture-42.png), [C2](captures/02-habillage-page.png), [C4](captures/04-little-penguin-assignment-03-11.png), [C5](captures/05-little-penguin-assignment-08-17.png), [C6](captures/05-little-penguin-assignment-08-18.png).
![Marque 42 : bande verticale de triangles gris sur fond noir](captures/01-couverture-42.png)
**Fig. C1 — page de titre.** Aucun texte dans l’image. Interprétation : habillage 42, pas une consigne.
![Filigrane géométrique gris pâle](captures/02-habillage-page.png)
**Fig. C2 — pages intérieures.** Aucun texte. Interprétation : filigrane répété. Les figures qui portent le contenu du sujet sont C4, C5 et C6, plus bas.
## Liens
@@ -23,7 +28,7 @@ Visuels : [C1](captures/01-couverture-42.png), [C2](captures/02-habillage-page.p
| `pedago@42.fr` | mailto |
| URL de la page de titre | <http://eudyptula-challenge.org/> |
`Linux Device Drivers, 3rd Edition` est cité au chapitre 14, sans URL dans le PDF. Les chemins `Documentation/...` sont des chemins dans l’arbre des sources du noyau, pas des liens web.
Le livre *Linux Device Drivers, 3rd Edition* est cité à l’assignment 04, chapitre 14 du livre, sans URL dans le PDF. Les chemins `Documentation/...` sont des chemins dans l’arbre des sources du noyau, pas des liens web.
---
@@ -31,16 +36,18 @@ Visuels : [C1](captures/01-couverture-42.png), [C2](captures/02-habillage-page.p
### I.1 Extrait de `Documentation/CodingStyle`
Le PDF colle un extrait du style de code du noyau Linux.
Le PDF ouvre sur le titre « Linux kernel coding style », puis colle un extrait.
Le style est personnel. L’auteur de ce document ne force pas ses vues, mais c’est le standard de ce qu’il maintient, et il préférerait qu’il s’applique à la plupart des autres projets. Au moins considérer ces points.
C’est un court document qui décrit le style de code préféré pour le noyau Linux. Le style est très personnel, et l’auteur ne *forcerait* pas ses vues sur quiconque (le PDF souligne `_force_`), mais c’est le standard de ce qu’il maintient, et il préférerait qu’il s’applique aussi à la plupart des autres projets. Merci au moins de considérer les points faits ici.
D’abord, imprimer les GNU coding standards, puis ne pas les lire. Les brûler — c’est un beau geste symbolique.
Le PDF ajoute : « ;) ok, it’s definitely not an eco-responsible move. »
D’abord, il recommande d’imprimer un exemplaire des GNU coding standards, puis de ne PAS le lire. Le brûler — c’est un beau geste symbolique.
Le PDF ajoute, de son cru : « ;) ok, it’s definitely not an eco-responsible move. » Autrement dit : d’accord, ce n’est clairement pas un geste éco-responsable.
Bref, commençons.
Chapitre 1 : Indentation.
Les tabulations font 8 caractères de large, donc les indentations aussi. Des tentatives utilisent 4, voire 2 caractères. Le texte compare ça à définir PI comme valant 3.
Les tabulations font 8 caractères de large, donc les indentations aussi. Il existe des tentatives mal avisées d’indenter sur 4 caractères, voire 2. C’est comme essayer de définir PI comme valant 3.
## II. Introduction
@@ -62,7 +69,7 @@ Ce « challenge » est une série d’exercices de programmation du noyau Linux,
Retirer les petites roues et construire son propre noyau. Plus question de s’appuyer sur des versions précompilées.
Pour cette tâche, il faut faire tourner son propre noyau — et utiliser Git. « Exciting, right? No? Well... okay. »
Pour cette tâche, il faut faire tourner son propre noyau — et utiliser Git. Passionnant, non ? Non ? Bon... d’accord. Le PDF écrit : « Exciting, right? No? Well... okay. »
### À faire
@@ -122,7 +129,11 @@ Alors il est temps de quelque chose de plus pédant — histoire de rappeler à
- La version mise à jour du fichier C.
Le fichier est sur la page suivante. Capture [C4](captures/04-little-penguin-assignment-03-11.png). La transcription garde les décalages d’indentation de l’extraction du PDF : ils font partie du fichier à corriger. Si un espace diverge, la capture fait foi.
Le fichier est sur la page suivante du PDF.
![Listing C sur fond noir, en-tête Little Penguin / Linux Kernel Development](captures/04-little-penguin-assignment-03-11.png)
**Fig. C4 — assignment 03, page 10.** En-tête de page : « Little Penguin » à gauche, « Linux Kernel Development » à droite. Aucune autre légende. Interprétation : c’est le fichier C à remettre au style du noyau. Le fond noir et la coloration ne font pas partie du fichier à rendre. La transcription sous l’image reprend le texte. Si un espace diverge, l’image fait foi.
```c
#include <linux/module.h>
@@ -170,7 +181,7 @@ Chaîne exacte dans le code : `We slept a long time!`
## IX. Assignment 04
Tu as survécu au chaos du style de code — bien joué.
Passons à quelque chose de plus « real », parce que le sujet devine qu’on commence à s’ennuyer.
Passons à quelque chose de plus concret, parce que le sujet devine qu’on commence à s’ennuyer. Le PDF met des guillemets à « real ».
### À faire
@@ -182,7 +193,7 @@ Passons à quelque chose de plus « real », parce que le sujet devine qu’on c
- Le code mis à jour.
- Une preuve que le module fonctionne comme prévu.
Le sujet dit que ça a l’air simple et que c’est un peu piégeux. Indice : chapitre 14 du livre *Linux Device Drivers, 3rd Edition*, disponible gratuitement en ligne.
Le sujet dit que ça a l’air simple et que c’est un peu piégeux. Indice : chapitre 14 du livre *Linux Device Drivers, 3rd Edition*. Il est librement disponible en ligne, pas besoin de l’acheter. Le PDF écrit : « no purchase required ».
## X. Assignment 05
@@ -191,7 +202,7 @@ En parlant de vrai développement — écrivons du code digne de ce nom.
### À faire
- Reprendre le module de l’assignment 01 et en faire un driver de périphérique caractère `misc`. L’interface misc est un moyen très simple de créer un périphérique caractère sans s’emberlificoter dans sysfs et l’enregistrement de devices. Le sujet dit : « Trust me, it’s way easier this way! »
- Reprendre le module de l’assignment 01 et en faire un driver de périphérique caractère `misc`. L’interface misc est un moyen très simple de créer un périphérique caractère sans s’emberlificoter dans sysfs et l’enregistrement de devices. Le sujet demande qu’on le croie : c’est bien plus simple comme ça. Texte du PDF : « Trust me, it’s way easier this way! »
- Le device misc est créé avec un numéro mineur dynamique. Inutile de s’acharner à réserver un mineur statique pour un module de test. Ce serait une corvée pour rien.
- Implémenter `read` et `write`.
- Le nœud doit apparaître dans `/dev/fortytwo`.
@@ -234,7 +245,7 @@ On reviendra au noyau linux-next dans une tâche ultérieure, donc ne pas suppri
Cette tâche ressemble à l’assignment 05, où l’on a créé un device misc. Cette fois, une autre interface entre l’utilisateur et le noyau : debugfs.
La rumeur dit que le créateur de debugfs aurait affirmé que la seule règle est : « There are no rules. » Le sujet propose de tester cette théorie.
La rumeur dit que le créateur de debugfs aurait affirmé que la seule règle est : « Il n’y a pas de règles. » Le PDF écrit : « There are no rules. » Le sujet propose de tester cette théorie.
La distribution doit monter debugfs sur `/sys/kernel/debug/`. Sinon, la monter avec la commande recopiée :
@@ -252,7 +263,7 @@ Il faut que ce soit activé dans le noyau avec l’option `CONFIG_DEBUG_FS`, par
- `jiffies` : lecture seule pour n’importe quel utilisateur. La lecture retourne la valeur courante du timer `jiffies` du noyau.
- `foo` : inscriptible seulement par root, lisible par tout le monde. Les données écrites sont stockées, jusqu’à une page. La lecture retourne les données stockées. Verrouillage correct pour les lectures et écritures concurrentes.
- Au déchargement du module, tous les fichiers debugfs sont nettoyés et la mémoire allouée est libérée.
- Note du sujet : le répertoire debug doit être lisible globalement. Comme il n’y a pas d’option pour ça, utiliser `chown`.
- Note du sujet : le répertoire debug doit être lisible globalement. Comme il n’y a pas d’option pour ça, utiliser le bon vieux `chown`. Le PDF écrit : « use good old chown ».
### À rendre
@@ -272,10 +283,13 @@ On ralentit un peu, et on revient au style de code.
- Le fichier C mis à jour et conforme au style.
Encadré [C5](captures/05-little-penguin-assignment-08-17.png) : « But wait—what is this code supposed to do? »
Suite : « That’s part of the challenge. Have fun figuring it out! »
![Page Assignment 08 et encadré bleu : But wait—what is this code supposed to do?](captures/05-little-penguin-assignment-08-17.png)
Capture du code [C6](captures/05-little-penguin-assignment-08-18.png). Transcription alignée sur l’extraction du PDF. Le numéro de page imprimé à côté de `module_init` n’appartient pas au code. Si un espace diverge, la capture fait foi.
**Fig. C5 — assignment 08, page 16.** L’encadré bleu porte exactement : « But wait—what is this code supposed to do? » En français : mais attends, qu’est-ce que ce code est censé faire ? Interprétation : le sujet ne décrit pas le comportement attendu. La phrase sous l’encadré dit que ça fait partie du défi, et de s’amuser à le découvrir. Le PDF écrit : « That’s part of the challenge. Have fun figuring it out! »
![Listing C du module reverse, fond noir](captures/05-little-penguin-assignment-08-18.png)
**Fig. C6 — page 17.** Même en-tête que la fig. C4 : « Little Penguin », « Linux Kernel Development ». Interprétation : c’est le fichier à restyler et à corriger. Le device s’y nomme `reverse`. Le numéro de page imprimé près de `module_init` n’appartient pas au code. Si un espace diverge, l’image fait foi.
```c
#include <linux/module.h>
@@ -389,7 +403,7 @@ dev /dev
Ce n’est pas une tâche dure, mais elle peut être piégeuse.
Le sujet renvoie à la documentation sur les points de montage, le listage de répertoires, et le parcours de listes chaînées dans le noyau.
Et surtout — s’amuser :)
Et surtout, amuse-toi :) Le PDF écrit : « And above all—have fun :) »
## XV. Rendu et évaluation par les pairs