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.
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.
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.
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.
Rien à dire.
Rien à dire.
Rien à dire.
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.
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.
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.
Rien à dire.
Rien à dire.
Rien à dire.
Rien à dire.
Rien à dire.
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.
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.