[SOS] Résultat différent sous Bochs & QEmu

Christophe Lucas clucas at rotomalug.org
Ven 5 Aou 11:51:46 CEST 2005


KAISER Edouard (edouard.kaiser at gmail.com) wrote:
> Salut à tous !
> 
> > Par exemple, dans le push, je crois bien que tu oublies de retablir le
> > lien begin->prev->next qui doit pointer vers le nouvel element si je ne
> > m'abuse. Et dans le del, je crois bien que tu ne distingues pas le cas
> > particulier ou l'element que tu supprimes se trouve etre la tete de la
> > liste (auquel cas il faut mettre a jour le parametre Begin de la
> > fonction. Encore une fois, ce ne sont que des suppositions par lecture
> > rapide, pas sures du tout, et ca ne corrige peut-etre pas tes bugs. Pour
> > ce genre de code, ca peut se tester aisement en mode utilisateur sous
> > Linux, c'est d'ailleurs ce qu'on avait fait dans kos.
> 
> Merci beaucoup David, je vais regarder les points qui t'ont semblés deffectueux.
> Effectivement ce code est testable en user mode, et c'est ce que
> j'avais fais sous Windows avec DevCpp et une banale application
> console en C, qui pareil faisait l'initialisation du tableaut du
> get_page en boucle pour rendre toutes les pages prises.
> Bien sur au début ça plantait mais quand je suis arrivait à un code
> stable et des tests concluant j'ai intégré les fichiers dans mon petit
> kernel, et la, je n'obtenais pas du tout les meme résultats pour un
> code identique et des testes identiques pourtant :(
> 

Je pense que ceci pourrait t'aider :
 - http://lxr.linux.no/source/include/linux/list.h
 - http://odie.mcom.fr/~clucas/sos.html (sos/list.h)

> > Sinon, je trouve que le code est bien ecrit et bien commente, c'est
> > plutot agreable a lire. Juste un truc qui m'embete, c'est ton parcours
> > du tableau au debut de freepage. Si c'est juste pour verifier que
> > l'adresse est alignee sur 12bits, c'est un peu violent. Si c'est pour
> > s'assurer que l'adresse est couverte par le tableau, c'est un peu
> > violent, en tout cas c'est violent si on suppose que l'espace RAM est un
> > segment (continu).
> > 
> > Bonne journee,
> > 
> 
> En effet le parcour du tableau est violent dans le free_page, mais
> d'un cote il faut que je recupere le descripteur associé à l'adresse
> pour pouvoir le supprimer en le passant en parametre dans ma fonction
> delete. Enfin je vois ça un peu comme ça !
> Que me conseillerais tu ?
> Merci !

Dans free_page():
 - décrémenter ton compteur de référence, si count == 0 alors on la met
   dans la liste de pages libres, sinon elle est référencée autre part.
 - Si l'addresse n'est pas supérieure à la mémoire physique alors son 
   alignement sur 4096 sera obligatoirement dans le tableau des pages
   physiques.


				- Christophe (clucas at rotomalug.org)


Plus d'informations sur la liste de diffusion Sos