My Project
Chargement...
Recherche...
Aucune correspondance
Macros | Fonctions
Référence du fichier virtio.c
#include <manux/virtio.h>
#include <manux/debug.h>
#include <manux/memoire.h>
#include <manux/string.h>
#include <manux/i386.h>
#include <manux/errno.h>
#include <manux/io.h>
Graphe des dépendances par inclusion de virtio.c:

Aller au code source de ce fichier.

Macros

#define min(a, b)   (((a)<(b))?(a):(b))
 
#define max(a, b)   (((a)>(b))?(a):(b))
 

Fonctions

int virtioInitPeripheriquePCI (VirtioPeripherique *vp, int PCINum, uint32_t masque)
 
int virtioFournirBuffer (VirtioPeripherique *vp, uint16_t id, void *bu, int lg, uint16_t fl)
 Fourniture d'un buffer au périphérique.
 
int virtioFournirBuffers (VirtioPeripherique *vp, uint16_t id, void *bu[], int lg[], int nb, uint16_t fl)
 Fournir plusieurs buffers au périphérique.
 
int virtioFileRecupererBuffers (VirtioFileVirtuelle *fv, void *bu[], int lg[], int nb)
 on va récupérer des buffers
 
void virtioFileInterdireInterruption (VirtioFileVirtuelle *fv)
 
void virtioFileAutoriserInterruption (VirtioFileVirtuelle *fv)
 

Description détaillée

WARNING : on utilise ici en fait les spécifications v0.9.5, qualifiées de "legacy" dans la v1.0. J'utiliserai autant que possible des macros/variables du genre VIRTIO_HIST... pour faire la différence chaque fois que possible. Attention !! Il y a des petites différences entre la v0.9.5 et la version dite legacy dans la v1 !! Apparemment une typo dans la v1 sur l'ordre des champs de contrôle ...

Sources intéressantes [1] http://docs.oasis-open.org/virtio/virtio/v1.0/csprd01/virtio-v1.0-csprd01.html [2] https://www.redhat.com/en/blog/virtqueues-and-virtio-ring-how-data-travels
[3] http://ozlabs.org/~rusty/virtio-spec/virtio-0.9.5.pdf

Définition dans le fichier virtio.c.

Documentation des macros

◆ max

#define max (   a,
  b 
)    (((a)>(b))?(a):(b))

Définition à la ligne 31 du fichier virtio.c.

◆ min

#define min (   a,
  b 
)    (((a)<(b))?(a):(b))

Définition à la ligne 30 du fichier virtio.c.

Documentation des fonctions

◆ virtioFileAutoriserInterruption()

void virtioFileAutoriserInterruption ( VirtioFileVirtuelle *  fv)

Définition à la ligne 450 du fichier virtio.c.

◆ virtioFileInterdireInterruption()

void virtioFileInterdireInterruption ( VirtioFileVirtuelle *  fv)

Définition à la ligne 444 du fichier virtio.c.

◆ virtioFileRecupererBuffers()

int virtioFileRecupererBuffers ( VirtioFileVirtuelle *  fv,
void *  bu[],
int  lg[],
int  nb 
)

on va récupérer des buffers

Renvoie
Le nombre de pointeurs initialisés

Voir [3] section 2.4.2 "Receiving Used Buffers From The Device"

On fait au plus simple : on renvoie un ensembles de buffers. Attention, on revnoie des pointeurs vers les buffers virtio, pas de nouveaux pointeurs alloués. L'appelant doit donc immédiatement en recopier le contenu.

Définition à la ligne 387 du fichier virtio.c.

◆ virtioFournirBuffer()

int virtioFournirBuffer ( VirtioPeripherique *  vp,
uint16_t  id,
void *  bu,
int  lg,
uint16_t  fl 
)

Fourniture d'un buffer au périphérique.

: Fournir un buffer au périphérique.

Paramètres
vple périphérique concerné
idnuméro de la file sur le périphérique
bule buffer (pointeur sur les données/la place)
lgla taille du buffer
fllecture/écriture (VRING_DESC_F_WRITE ou 0)

Définition à la ligne 283 du fichier virtio.c.

◆ virtioFournirBuffers()

int virtioFournirBuffers ( VirtioPeripherique *  vp,
uint16_t  id,
void *  bu[],
int  lg[],
int  nb,
uint16_t  fl 
)

Fournir plusieurs buffers au périphérique.

: Fournir un(e chaine de) buffer(s) au périphérique.

Paramètres
vple périphérique virtio concerné
idindex de la file
bules buffers (tableau de pointeurs sur les données/la place)
lgla taille des buffers
nble nombre de buffers
fllecture/écriture (VRING_DESC_F_WRITE ou 0)
Renvoie
le nombre de buffers réellement fournis

L'idée est de fournir une chaîne de buffers . WARNING pas d'erreur gérée !

Définition à la ligne 304 du fichier virtio.c.

◆ virtioInitPeripheriquePCI()

int virtioInitPeripheriquePCI ( VirtioPeripherique *  vp,
int  PCINum,
uint32_t  masque 
)

Initialisation d'un périphérique de type virtio accédé en PCI. L'essentiel de ce qui suit est conforme à la v0.9.5 a priori, (voir [3] section 2.2.1), mais pas à la v1.0

Paramètres
vppointeur sur une structure déjà allouée (ou statique)
PCINuml'identifiant PCI
masqueles caractéristiques à ne pas utiliser

Définition à la ligne 173 du fichier virtio.c.