[SOS] changement de privileges + interrupt manager

David Decotigny david.decotigny at free.fr
Dim 6 Mar 16:55:05 CET 2005


Bonjour,

J'avoue que les details sur tes problemes de changement de privilege 
continuent de m'echapper. je m'y perds un peu dans tes histoires de 
handlers d'IRQ, d'interruptions logicielles, de TSS, etc...

stephane duverger wrote:
> - Concernant le probleme de valeur immediate pour "ljmp":
> #define set_kgdt_sel(index)	(((index)<<3))
> #define	switch_to_imm(sel)	asm volatile( "ljmp %0, $0"::"i"(sel) )
> 
> int	tss_desc_idx;
> tss_desc_idx = create_process( prog1 );
> switch_to_imm( set_kgdt_sel( (uint16)tss_desc_idx ) );

Normal. En faisant quelques expansions, ceci equivaudrait (en gros) à :
   ((( create_process( prog1 ) )<<3))
Et ceci ne peut pas devenir une valeur "immediate". C'est-a-dire une 
valeur que le compilateur peut connaitre a l'avance et integrer dans le 
binaire des la phase de compilation.

> - Sinon concernant la gestion des exceptions/interruptions:
> 
> Je vous disais dans un vieux mail que j'avais fait un truc inspiré de
> Plan9. J'ai vu en recuperant le code de sos-6.5 que vous faisiez
> toujours votre boucle en asm gas qui generait "n" fois le code des
> wrappers qui appelle le vrai handler d'interruptions.
[...]

Solution propre et elegante. On devrait faire une serie de pages web sur 
"comment sos aurait du etre ecrit" rien que pour ça ;)

Bonne journee,


Plus d'informations sur la liste de diffusion Sos