![]() |
ASIM team
LIP6 Laboratory Paris, France |
![]() |
Pour pouvoir utiliser la couche PUT, il faut s'enregistrer. En effet, plusieurs applications utilisant cette couche peuvent fonctionner simultanément sur la machine MPC, il faut donc pouvoir les différencier, afin de leur distribuer des plages de MI disjointes et de déterminer laquelle des applications prévenir à chaque interruption.
Lors de son enregistrement, l'application fournit donc deux fonctions qui seront appelées par les routines de traitement d'interruption de PUT : l'une en cas de données venant de quitter le noeud, l'autre en cas de données venant d'entrer dans le noeud. Elles prennent en premier paramètre le numéro de la carte réseau HSL qui a généré l'interruption ; le numéro de MI correspondant leur est aussi fourni. La fonction d'interruption pour des données ayant quitté le système reçoit, en plus, l'entrée de LPE correspondante.
La fonction put_register_SAP()
permet de s'enregistrer :
/*
************************************************************
* put_register_SAP(minor, send, received) : register a user of
* the PUT interface for one board.
* minor : the board number.
* sent : the interrupt procedure for data sent.
* received : the interrupt procedure for data received.
*
* return values : -1 on error.
* the registration number for this SAP on success.
************************************************************
*/
int
put_register_SAP(minor, sent, received)
int minor;
void (*sent) __P((int, mi_t, lpe_entry_t));
void (*received) __P((int, mi_t));
Les deux paramètres sent et received sont des fonctions fournies par l'utilisateur, pour qu'il soit prévenu en cas d'interruption. La première reçoit en paramètres le numéro de la carte qui a généré l'interruption, le MI correspondant et dans le cas de sent l'entrée de LPE correspondante.
La fonction put_unregister_SAP() permet de terminer un
enregistrement :
/*
************************************************************
* put_unregister_SAP(minor, id) : unregister a user of the PUT
* interface.
* minor : the board number.
* id : the registration number for the SAP.
*
* return values : ENXIO : not enough structures allocated at
* compilation time to handle this board.
* ENOENT : this board is not initialized.
* EBADF : id out of range.
************************************************************
*/
int
put_unregister_SAP(minor, id)
int minor, id;
|
Server design A. Fenyö
mpc@mpc.lip6.fr - contact people About this Web Site $Date: 1998/02/14 17:06:25 $ |
Copyright © 1997-1998 UPMC/LIP6
All rights reserved |