Page précédente Page suivante Table des matières

2. Introduction

Par souci de meilleure gestion du matériel, il est souvent important de pouvoir partager des périphériques sur un réseau, c'est ce qui est généralement fait pour les imprimantes.

Je me suis posé la question de savoir pourquoi on ne partagerait pas aussi d'autres périphériques. Mais alors que les imprimantes acceptent facilement des files d'attente puisque ce sont des périphériques que l'on peut qualifier de batch, il en va tout autrement des autres périphériques comme les modems, les disques durs, les cartes réseau, etc...

J'ai donc commencé à écrire RDEVICE. Le but de ce logiciel est de pouvoir utiliser les fonctions standard (open, read, etc...) pour accèder à un périphérique distant exactement comme on les utilise pour un périphérique local.

Dans l'état actuel du développement de RDEVICE, tout programmeur qui désire l'utiliser doit savoir que les périphériques qu'il utilise sont distants, et doit utiliser des fonctions spécifiques (rdevice_open, rdevice_read, etc...). Dans l'idéal ce logiciel serait intégré au noyau ce qui permettrait de ne pas pouvoir différencier un périphérique local d'un périphérique distant.

La phase actuelle du développement est une phase de test, aussi, pour l'instant, seuls les périphériques de type TTY sont reconnus convenablement, le but à atteindre étant de réaliser une application d'accès à un modem via le réseau, ou de modifier une application existante pour utiliser RDEVICE afin de valider mon idée. Il est à noter que l'on peut également accèder à des fichiers distants sans aucun problème et que cela a été testé et validé, néanmoins les fonctions de verrouillage par fcntl ne sont pas implémentées. Les sources intègrent néanmoins un support ultra-minimal pour les CDROMS, les périphériques SCSI et les cartes sonores.

J'espère pouvoir intégrer un accès direct à d'autres périphériques, par exemple les disques durs, ce qui permettrait de faire un fdisk à distance par exemple. Pour ce faire j'ai besoin de connaître les différents paramètres acceptés par la fonction ioctl en fonction du périphérique, et ça c'est vraiment dur pour moi. Si vous connaissez pas mal le noyau votre aide pourrait m'être précieuse, mais si c'est le cas c'est moi qui ne vous serais d'aucune aide.

La spécificité de cette application est que pour l'instant on ne peut pas partager des périphériques entre des machines Linux d'architectures différentes. Le problème n'est pas une représentation standard des nombres ou des chaines de caractères, puisque les routines XDR sont utilisées, mais bien les légères incompatibilités possibles entre les constantes utilisées (ioctl, numéros de signaux, etc...). Il existe bien entendu une solution qui est de passer par des définitions internes et des routines de conversion, néanmoins j'ai jugé que pour l'instant seul le résultat comptait et que l'on modifierait le code pour supporter le partage entre architectures seulement si ça en valait la peine, c'est à dire seulement si le logiciel de base fonctionnait.

Ce logiciel se décompose en deux parties:

Pour faire les tests que vous désirez, vous pouvez modifier le programme rdevcli.c qui est un programme d'exemple complètement idiot et mal ficelé mais qui illustre bien l'utilisation de la librairie. Vous trouverez aussi des morceaux de programmes afin de tester certaines fonctionnalités.

Pour l'instant le mieux est de se référer au Makefile si vous voulez essayer de faire quelque chose de valable.


Page précédente Page suivante Table des matières