Skip to content
Snippets Groups Projects
Commit 91c9ee13 authored by Florent Gluck's avatar Florent Gluck
Browse files

updated 02-KVM.md

finished lab-virtual_game_machine.md
parent 9d3a18e2
No related branches found
No related tags found
No related merge requests found
...@@ -1310,6 +1310,12 @@ static inline void sti() { ...@@ -1310,6 +1310,12 @@ static inline void sti() {
} }
``` ```
[//]: # ----------------------------------------------------------------
## VMM: virtual PIC side effect
- After a virtual PIC is created, `KVM_EXIT_HLT` is **not triggered anymore** when guest OS executes the `hlt` instruction!
- Some deep digging into KVM is required to explain this behavior...
[//]: # ---------------------------------------------------------------- [//]: # ----------------------------------------------------------------
# Miscellaneous # Miscellaneous
......
...@@ -282,11 +282,16 @@ Le périphérique se programme en MMIO. ...@@ -282,11 +282,16 @@ Le périphérique se programme en MMIO.
### (6) Clavier ### (6) Clavier
Ce périphérique est exposé physiquement et virtuellement. Côté guest OS, lorsque l'interruption matérielle 1 est reçue, cela signifie qu'une touche clavier à été pressée et la valeur de celle-ci peut être récupérée par le guest. Ce périphérique est exposé physiquement et virtuellement. Côté guest OS, lorsque l'interruption matérielle 1 est reçue, cela signifie qu'une touche clavier à été pressée et la valeur de celle-ci peut être lue.
**Comportement du VMM** **Comportement du VMM**
**TODO**: cette section sera ajoutée bientôt Le VMM doit récupérer toute touche pressée grâce à la librairie SDL/gfx (fonction `gfx_keypressed`).
Si la touche ESC est pressée, l'exécution du VMM doit se terminer. Tout autre touche pressée provoque l'injection de l'interruption matérielle n°1 dans la VM.
Si le VMM émule un clavier natif (physique), alors il injectera le code de la touche pressée sur 32 bits dans le port 0x60 lorsque le guest le lira.
Si le VMM présente un clavier virtuel, alors il écrira le code de la touche pressée dans le buffer d'hypercall.
**Guest: accès paravirtualisé** **Guest: accès paravirtualisé**
...@@ -298,6 +303,8 @@ Ce périphérique est exposé physiquement et virtuellement. Côté guest OS, lo ...@@ -298,6 +303,8 @@ Ce périphérique est exposé physiquement et virtuellement. Côté guest OS, lo
``` ```
\normalsize \normalsize
Le VMM écrit le code de la touche pressée dans `key` et le guest doit récupérer la valeur écrite par le VMM.
**Guest: accès physique** **Guest: accès physique**
Le périphérique se programme en PMIO. Le périphérique se programme en PMIO.
...@@ -308,6 +315,15 @@ Comment obtenir le code de la touche pressée\ ? ...@@ -308,6 +315,15 @@ Comment obtenir le code de la touche pressée\ ?
1. Lire 32 bits (le code de la touche) depuis le registre de donnée 1. Lire 32 bits (le code de la touche) depuis le registre de donnée
**Comportement du guest**
Ajoutez au guest la possibilité de déplacer un sprite avec les touches suivantes du clavier\ :
- "a" déplace le sprite à gauche
- "d" déplace le sprite à droite
- "w" déplace le sprite en haut
- "s" déplace le sprite en bas
## Cahier des charges ## Cahier des charges
### Processus de build ### Processus de build
...@@ -585,4 +601,16 @@ L'affichage devrait ressembler à ceci\ : ...@@ -585,4 +601,16 @@ L'affichage devrait ressembler à ceci\ :
### `guest_sprites_phys.bin` ### `guest_sprites_phys.bin`
\vspace{-.3cm} \vspace{-.3cm}
Ce guest réalise exactement les mêmes fonctionnalités que `guest_sprites_pv.bin`, mais en utilisant des drivers natifs (physiques). Ce guest réalise exactement les mêmes fonctionnalités que `guest_sprites_pv.bin`, mais en utilisant des drivers natifs (physiques).
\ No newline at end of file
### `guest_sprites_keyb_pv.bin`
\vspace{-.3cm}
Ce guest réalise les mêmes fonctionnalités que le guest `guest_sprites_pv` mais avec en plus la gestion du clavier à l'aide d'hypercalls, à savoir\ :
- Les touches "a", "d", "w" et "s" permettent de déplacer le sprite "Tux jedi" à gauche, à droite, en haut et en bas.
### `guest_sprites_keyb_phys.bin`
\vspace{-.3cm}
Ce guest réalise exactement les mêmes fonctionnalités que `guest_sprites_keyb_pv.bin`, mais en utilisant des drivers natifs (physiques).
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment