[Kos-dev] non intrusive bochs

Thomas Petazzoni kos-dev@enix.org
Wed, 04 Jun 2003 10:37:53 +0200


This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigFDF48A0BAE8049E1331D3033
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Bonjour,

> Rappel pour ceux qui n'auraient pas suivi : il suffirait d'ajouter le
> necessaire pour que bx_pc_system::tick1() et tickn() ne touchent pas
> au currCountDown(). Le truc, c'est qu'il faut etre sur que dans la
> sequence qu'on choisit non-intrusive, il n'y ait aucun appel a
> register_timer() ni activate_timer() ni deactivate_timer()... sinon ca
> veut dire que le code n'est pas reellement non-intrusif puisqu'il
> implique des actions dans l'avenir (ie une fois que le tick bochs sera
> relance).

Proposition :
 * Ecriture de 0x1 sur le port 0xE8
   -> On vérifie que le booleen est bien a FAUX
   -> On note que le timer est desactive dans un booleen (booleen = VRAI)
   -> On desactive le timer
   -> On recule le temps d'une instruction (pour compenser le outb -> il
faudra donc bien que l'ecriture de 0x1 se fasse en une seule et unique
instruction, mais je suis pas sur que ce soit possible sur Intel, auquel
cas on pourra compter 2 instructions).
  * Ecriture de 0x2 sur le port 0xE8
   -> On verifie que booleen est bien a VRAI
   -> On le passe a faux
   -> On recule le temps d'une ou deux instructions
   -> On reactive le timer

Et dans register_time, activate_timer et deactivate_timer, on met les
ASSERT()s qui vont bien sur le booléen pour vérifier qu'on appelle pas
ces fonctions quand il faut pas.

J'ai bon ?

Thomas
-- 
PETAZZONI Thomas - thomas DOT petazzoni AT enix DOT org - UIN : 34937744
Web: http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

--------------enigFDF48A0BAE8049E1331D3033
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE+3a/h9lPLMJjT96cRAr9KAJ4mc2+S4AOTl9Ly59o3TKBu0nQPogCeNXWG
XHPB0Oi+1A+pB8kFWHJ+ZsE=
=zjk6
-----END PGP SIGNATURE-----

--------------enigFDF48A0BAE8049E1331D3033--