Skip to topic | Skip to bottom
Home
Minfo05
Minfo05.TpAsySeance5r1.3 - 25 Oct 2005 - 13:53 - FabriceHuettopic end

Start of topic | Skip to actions

Approfondissement Système - TP5

Un périphérique de stockage à sémantique variable

On souhaite maintenant enrichir le pilote précédent d'un nouveau mode de fonctionnement, plus conforme cette fois à la sémantique d'un fichier habituel :

  • en écriture : le fonctionnement est inchangé, ce qui revient à implémenter la sémantique du mode "append".
  • en lecture en revanche, on change complétement de mode de fonctionnement, puisqu'il s'agit cette fois d'implémenter la sémantique accès direct. Par conséquent, il faut ajouter les traitements suivants :
    • Implémenter l'opération lseek
    • gérer correctement l'avancement de la position courante lors des lectures (paramètre f_pos)
    • ne plus effacer les données au fur et à mesure des lectures

  • On ajoutera ensuite la reconnaissance des commandes ioctl() suivantes :
    • SET_MEM_ZERO (sans argument) : libère totalement la mémoire (effacement de la liste chainée)
    • GET_MEM_USAGE (sans argument) : retourne la quantité de mémoire utilisée par le pilote

Pour les plus courageux :

  • On désire maintenant pouvoir séléctionner le mode de fonctionnement pour les opérations de lecture en utilisant une fois encore une commande ioctl() avec les arguments suivants :
    • SET_MODE + argument entier :
      • argument = MODE_FIFO : bascule (ou reste) en mode de fonctionnement FIFO pour les lectures, c'est a dire que les données lues sont supprimées
      • argument = MODE_PERSIST : bascule (ou reste) en mode de fonctionnement persistant (cad accès direct en lecture, sans suppression des données)
    • GET_MODE (sans argument) : retourne le mode de fonctionnement courant

-- OlivierDalle - 18 Oct 2005
to top

You are here: Minfo05 > ApprofondissementSysteme > TpAsySeance5

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback