[Kos-dev] Syscall (pour julien) plus histoire du double fault

Thomas Petazzoni kos-dev@yoda.isnpro.com
Wed, 21 Feb 2001 22:20:49 +0100


salut,

Syscall
-------

KOS aura donc un syscall, qui permettra aux applis utilisateurs (dont la
libc) de faire appel au noyau pour diverses raisons : appels aux drivers
materiels, ipc et autres...
On va donc definir une interruption, pour l'instant l'interruption 48
(en decimal, cf modules/idt/idt.h).

Cette interruption prendra plusieurs parametres :
	- dans %eax : le numero de syscall
	- dans %ebx : le premier parametre du syscall (peut etre par exemple le
numero d'interface pour babel, mais peut etre autre chose pour des IPC,
a moins que les IPC ne soient referencees dans Babel?)
	- dans %ecx : le second parametre du sycall (par exemple le numero
d'instance pour babel)
	- dans %edx : un autre parametre
si besoin est on pourra peut etre aussi utiliser %esi et %edi. (ca reste
a voir).
c'est assez similaire au fonctionnement des syscalls dans Linux, mais je
vois pas trop d'autre solution, et vous ?

Contrairement a ce que nous pensions avec julien, le syscall ne
retournera pas l'adresse de la fonction a appeler au CPL3. C'est
directement le syscall qui fera cet appel. En effet, toutes les
operations d'entrees sorties seront interdites pour le CPL3 (sauf cas
particuliers genre serveur X), et donc les drivers devront operer en
CPL0. Babel recevra donc un appel du CPL3 via un syscall pour faire tel
ou tel truc, et Babel appelera directement la chose en question.

Bien sur cet appel peut etre distinct de Babel, si on veut que Babel
reste un strict gestionnaire de ressources.

Voila pour mon petit topo sur les sycalls

L'histoire du double fault
--------------------------

Si vraiment ca ne marche pas avec un double fault, on pourra aussi s'en
sortir en mettant un task gate sur le page fault. on y avait deja pense
bien sur, mais c'est une solution.
maintenant reste a voir si c'est viable au niveau performance : intel
precise bien que passer par un task gate est bien plus long que de
passer par une interrupt gate.

Amicalement,

thomas
-- 
PETAZZONI Thomas
thomas.petazzoni@meridon.com     UIN : 34937744
Projet KOS : http://kos.enix.org