SimpleOS

SOSPatches

Navigation



  • Rechercher :

Site hébergé par : enix

Contributions et propositions de patches pour SOS


Cette page est destinée à rassembler différents patches qui rajoutent ou étendent les fonctionnalités de SOS. Pour les patches de correction de bugs, voir la page des bugs.

Combinaison de touches ctrl-alt-del pour rebooter (article >= 2)


Mettre ce fichier sos/reboot.c dans sos/, rajouter sos/reboot.o dans la variable OBJECTS du Makefile, et un appel à setup_ctrlaltdel(); dans sos/main.c.

Le principe est simple : à chaque interruption clavier, on tient à jour la variable ctrlaltdel en fonction des touches appuyées ou relâchées, parmi celles qui nous intéressent (ctrl, alt, et del). Chaque touche appuyée/relâchée est obtenue par lecture du port 0x60. On distingue une touche appuyée/relâchée suivant que le bit 7 de l'octet lu est à 1 ou pas. Le reste constitue le code de la touche. Quand on remarque que les 3 touches sont dans l'état "appuyée", la fonction reboot() est appelée.

Cette routine reboot() réinitialise le processeur en provoquant une faute triple. Pour cela, elle initialise une IDT vide, dans laquelle en particulier aucun handler pour la faute double n'est défini. Puis elle appelle une interruption quelconque, ce qui provoque le reboot immédiat de la machine. Cette méthode est brutale et ne fonctionnera pas sur toutes les machines. Regarder arch/i386/kernel/reboot.c de Linux pour avoir toutes les variantes de cette fonction.

printk avec scrolling et prise en compte de '\n' (article >= 1)


Dans l'article 1 nous avions précisé que le "driver" de console était très primitif et n'interprétait rien du tout, en particulier pas le '\n'. Christophe Lucas propose un patch implantant le comportement classique de printk avec scrolling correct de l'écran de la console : appliquer ce patch.

Utilisation du secteur de boot SOS pour tous les articles


Dès l'article 1, les sources de SOS contiennent un secteur de boot. Celui-ci suffisait à charger SOS pour l'article 1. A partir de l'article 2, il ne suffisait pas car il ne renseignait pas sur la taille de la mémoire physique disponible. Christopher Goyet nous a proposé un petite modification au secteur de boot pour qu'il soit utilisable au-delà de l'article 1 : la modification consiste à indiquer la taille de la RAM disponible en appelant l'interruption 15H du BIOS. Cette technique devrait fonctionner sur la plupart des machines, mais pas forcément sur toutes. Pour un résultat garanti, utilisez Grub.

Voici le patch sur l'article 7.5. Ce patch est intégré au code des articles >= 8.

[Intégré dans la mise à jour disponible au SOSDownload ]
[Intégré dans l'article 8]

Patch pour le support du port 0xe9 dans qemu


Dans les sources de sos figure un patch pour que le port I/O 0xe9 soit utilisé comme sortie d'affichage quand sos s'exécute dans qemu. C'est un hack bien pratique repris de bochs. Le code source de sos dispose déjà d'un patch pour cela mais il risque de ne pas être applicable sur les versions récentes de qemu (code en perpétuelle évolution).

Voici donc une version remise à jour de ce patch, version moins basique et plus intégrée à qemu : patch sur qemu 0.7.0 et patch sur qemu 0.7.1 par Christophe Lucas (version originale : http://lists.gnu.org/archive/html/qemu-devel/2005-01/msg00391.html par Thomas).


Améliorations de l'allocateur slab


Anthoine Bourgeois nous a annoncé les améliorations suivantes sur l'allocateur slab présenté dans l'article 5 :
<<
J'ai ajouté les fonctionnalités proposées dans l'entete kmem_slab.h, a savoir:

J'ai constaté une amélioration de la rapidité du calcul de 1000! de 24% principalement grace au cache coloring.
>>

Merci à lui ! Son patch est disponible dans ce fichier.

Passage d'arguments et de variables d'environnement aux nouveaux programmes, PID de processus (article >= 7.5)


Nous proposons une série de patches pour permettre :

[Intégré dans l'article 10]