26#include <manux/errno.h>
27#include <manux/string.h>
43static int nbPageAlloueesIci = 0;
52#define NB_BUFF_TRAITES 16
73 for (
int n = 0; n < nbLu; n++) {
91void virtioConsoleGestionInt(
void * pr)
105 virtioConsoleTraiterBuffers(vc);
117int virtioConsoleInitPeripherique(
int PCINumeroPeripherique)
132 PCINumeroPeripherique,
138 virtioConsoleGestionInt,
153 for (
int i = 0 ; i < fr->taille ; i++) {
154 buffers[0] = pointeur;
156 pointeur += longueurs[0];
177size_t virtioConsoleEcrire(
Fichier * f,
void *
b,
size_t l)
186 virtioConsoleTraiterBuffers(vc);
194 nbPageAlloueesIci ++;
218size_t virtioConsoleLire(
Fichier * f,
void *
b,
size_t l)
246 .
ouvrir = virtioConsoleOuvrir,
247 .lire = virtioConsoleLire,
248 .ecrire = virtioConsoleEcrire
257 int PCINumeroPeripherique;
267 if (PCINumeroPeripherique == -1) {
272 if (virtioConsoleInitPeripherique(PCINumeroPeripherique)== 0) {
288#ifdef MANUX_VIRTIO_AUDIT
292void virtioConsoleAfficher(
void)
297 printk(
" Etat de sa file :\n");
#define MANUX_VIRTIO_CONSOLE_MAJEUR
Le numéro majeur des consoles virtio.
typedef void(Handler(void))
void * allouerPages(uint32_t nombre)
void libererPage(void *pageLiberee)
void printk(char *format,...)
Fonction principale d'affichage dans le noyau.
void * memcpy(void *dest, const void *src, size_t n)
int i8259aAjouterHandler(int numIRQ, void(*handler)(void *), void *private)
Ajout d'un handler.
void i8259aAutoriserIRQ(uint8_t numIRQ)
Masquage d'une IRQ.
#define inb(port, adresseOctet)
Lecture d'un octet depuis un port.
#define DBG_KERNEL_VIRTIO
#define paniqueNoyau(fmt, args...)
#define printk_debug(lvl, fmt, args...)
int PCIObtenirProchainEquipement(uint16_t vendeur, uint16_t equipement, int precedent)
: récuperer l'identifiant du prochain équipement PCI
PCIEquipement * PCIEquipementNumero(int n)
#define PCI_PERIPHERIQUE_VIRTIO_CONSOLE
void virtioFileAutoriserInterruption(VirtioFileVirtuelle *fv)
int virtioInitPeripheriquePCI(VirtioPeripherique *vp, int PCINum, uint32_t masque)
#define VRING_DESC_F_WRITE
int virtioFournirBuffers(VirtioPeripherique *vp, uint16_t id, void *bu[], int lg[], int nb, uint16_t fl)
: Fournir un(e chaine de) buffer(s) au périphérique.
int virtioFileRecupererBuffers(VirtioFileVirtuelle *fv, void *bu[], int lg[], int nb)
on va récupérer des buffers
#define PCI_VENDEUR_VIRTIO
VirtioPeripherique virtioPeripherique
: Qu'est-ce qu'un fichier ouvert du point de vue du noyau ?
void * prive
Caractérisation du fichier ouvert.
: Un INoeud représente un fichier, d'un point de vue statique Il s'agit donc de la description d'un f...
TypePeripherique typePeripherique
MethodesFichier * methodesFichier
: Définition des opérations réalisables sur un fichier
int(* ouvrir)(INoeud *iNoeud, Fichier *f, uint16_t fanions, uint16_t mode)
: structure permettant d'identifier un équipement PCI
#define NB_BUFF_TRAITES
Gestion des buffers utilisés par le périphérique.
int virtioConsoleInitialisation(INoeud *iNoeudVirtioConsole)
Initialisation des périphériques.
VirtioConsole virtioConsole
Variable globale stockant la seule console virtio ! WARNING : pour le moment on crée un unique périph...
struct VirtioConsole_t VirtioConsole
Définition des éléments de base des consoles virtio.
#define VIRTIO_CONSOLE_F_SIZE
#define VIRTIO_CONSOLE_F_MULTIPORT
#define VIRTIO_CONSOLE_PORT0_OUT
#define VIRTIO_CONSOLE_PORT0_IN