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

5. La librairie rdevice

Cette librairie est composée de fonctions similaires à celles qui existent dans la librairie standard, sauf qu'elles sont préfixées par rdevice_.

Voici la liste des fonctions utilisables et des remarques éventuelles concernant celles qui peuvent poser problème ou qui ne sont pas complètement implémentées.

5.1 rdevice_open

Ceci est la fonction d'ouverture d'un fichier ou périphérique distant. Par rapport à la fonction open standard, elle a des différences:

Elle a besoin de 4 paramètres:

voici son prototype et un exemple d'utilisation:


int rdevice_open(char *host, char *device, int flags, int mode);

int rhandle;
rhandle = rdevice_open("palmier.youpi.fr", "/dev/cua2", O_RDWR | O_NONBLOCK, 0);
if (rhandle == -1)
        traite_erreur("Problème d'ouverture");
else        
{
        ouverture_reussie(rhandle);
        rdevice_close(rhandle);
}        

Cette fonction s'assure de la création d'une nouvelle connexion entre le poste client et le poste serveur.

5.2 rdevice_close

Il n'y a rien de particulier à dire sur cette fonction, sauf qu'elle coupe la connexion entre le client et le serveur.

Son prototype est identique à celui de la fonction close. Vous pouvez voir un exemple d'utilisation ci-dessus.

5.3 rdevice_read

Sur le serveur, cette fonction alloue un buffer de taille au moins égale au nombre d'octets à lire. Si plusieurs rdevice_read successifs sont effectués, le même bloc mémoire est utilisé sauf si le nombre d'octets à lire augmente, auquel cas le bloc précédent est libéré et un nouveau bloc est alloué.

Il n'y a pour l'instant aucun moyen de libérer la mémoire utilisée par le dernier rdevice_read, à part tuer le serveur rdeviced

Le prototype est le même que celui de la fonction read.

5.4 rdevice_write

Rien à dire.

5.5 rdevice_lseek

Rien à dire.

5.6 rdevice_isatty

Rien à dire.

5.7 rdevice_ioctl

Pour l'instant seules les valeurs suivantes pour le second argument de rdevice_ioctl sont reconnues:

Il faudra ajouter un maximum de valeurs possibles afin de pouvoir travailler avec d'autres périphériques que ceux de type TTY. Pour TIOCGPGRP et TIOCSPGRP veuillez vous référer aux remarques faites plus bas pour rdevice_tcsetpgrp et rdevice_tcgetpgrp.

5.8 rdevice_fcntl

Cette fonction n'est que partiellement implémentée et à la différence de la fonction fcntl il faut lui passer obligatoirement 3 paramètres. Le troisième sera utilisé ou pas en fonction du deuxième.

voici son prototype:


int rdevice_fcntl(int fhandle, int cmd, long argu);

Pour l'instant seuls F_GETFD, F_GETFL, F_SETFD et F_SETFL sont des valeurs valables pour le deuxième paramètre. Si le troisième paramètre n'est pas utile vous pouvez lui affecter n'importe quelle valeur sans risque.

Il faudra reconnaître d'autres valeurs, notamment pour pouvoir mettre des verrous.

5.9 rdevice_tcgetattr

cette fonction, ainsi que toutes les fonctions suivantes, utilisent en fait rdevice_ioctl en interne. Il n'y a rien de particulier à en dire et vous pouvez utiliser les fonctions standard de modification du contenu de la struct termios avec elles.

5.10 rdevice_tcsetattr

Rien à dire.

5.11 rdevice_tcdrain

Rien à dire.

5.12 rdevice_tcflow

Rien à dire.

5.13 rdevice_tcflush

Rien à dire.

5.14 rdevice_tcsendbreak

Rien à dire.

5.15 rdevice_tcgetpgrp

L'implementation de cette fonction fait que c'est le pgrp du serveur qui est renvoyé au client, or il n'a aucune signification sur celui-ci sauf si c'est la même machine que le serveur. Il faudra trouver un comportement acceptable, peut être en utilisant le pgrp du client.

5.16 rdevice_tcsetpgrp

L'implementation de cette fonction fait que c'est le pgrp du client qui est envoyé au serveur, or il n'a aucune signification sur celui-ci sauf si c'est la même machine que le client. Il faudra trouver un comportement acceptable, peut être en utilisant le pgrp de rdeviced sur le serveur.

Il y a en tout cas une incompatibilité entre ces dernières deux fonctions et les fonctions tcgetpgrp et tcsetpgrp.


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