This commit is contained in:
stormrider1982 2004-02-26 10:48:56 +00:00
parent eff2be3efa
commit 0293b5482c

View file

@ -75,21 +75,34 @@ bibliot
pas traitées ici, car leur utilité est décrite dans la partie {\sc Difficultés recontrées}. pas traitées ici, car leur utilité est décrite dans la partie {\sc Difficultés recontrées}.
\begin{itemize} \begin{itemize}
\item{\sc msgAllocate(\dots)} \item{\sc msgAllocate(\dots)} Prend en argument : un espace de mesage
\item{\sc msgFree(\dots)} {\em msgSpace *}, un numéro de {\em pool} qui est un {\em int}, une
taille {\em int} et une option {\em int}. Cette fonction, comme
spécifié dans l'énoncé, alloue un buffer
dans le {\em pool} spécifié, ou sinon dans le {\em pool} le plus proche
en taille (supérieure ou égale) et qui sera ``potentiellement'' libre
le plus rapidement, sauf s'il l'est déjà. Pour cela, on regarde le
nombre de {\em locks}, qu'il y a dessus gr{\^a}ce aux sémaphores. On
choisit le buffer dont le {\em pool} a le moins de ``locks'' en fonction
du nombre de ses buffers.
\item{\sc msgFree(\dots)} Cette fonction prend en argument un espace de
message {\em msgSpace *} et l'adresse d'un buffer {\em void *}. Celle-ci
restitue le buffer au {\em pool} d'où il a été extrait.
\item{\sc msgGet(\dots)} Notre fonction {\em void * msgGet(\dots)}, est \item{\sc msgGet(\dots)} Notre fonction {\em void * msgGet(\dots)}, est
telle qu'elle corresponde bien à l'énoncé. Elle prend en argument un telle qu'elle corresponde bien à l'énoncé. Elle prend en argument un
espace de messages {\em msgSpace *}, un numéro de file, ou {\em queue}, espace de messages {\em msgSpace *}, un numéro de file, ou {\em queue},
{\em int} et l'adresse d'un buffer {\em void *}. Elle renvoie l'adresse {\em int} et l'adresse d'un buffer {\em void *}. Elle renvoie l'adresse
du buffer en t{\^e}te de la file du numéro donné dans l'espace de du buffer en t{\^e}te de la file du numéro donné dans l'espace de
messages spécifiés.\\ messages spécifiés. Lors d'un appel à cette fonction, celle-ci
``locke'' d'abord le sémaphore qu'il y a sur la {\em queue}. Si la file
est vide, cela bloque le {\em get}.\\
{\sc Remarque :} Nous n'avons pas implémenté le cas du \verb+ANYFILE+. {\sc Remarque :} Nous n'avons pas implémenté le cas du \verb+ANYFILE+.
\item{\sc msgList(\dots)}
\item{\sc msgPut(\dots)} Cette fonction fait exactement ce qu'elle est \item{\sc msgPut(\dots)} Cette fonction fait exactement ce qu'elle est
sensée faire tel que énoncé dans le rapport. Elle prend en argument un sensée faire tel que énoncé dans le rapport. Elle prend en argument un
espace de messages {\em msgSpace *}, un numéro de file, ou {\em queue}, {\em int} et espace de messages {\em msgSpace *}, un numéro de file, ou {\em queue}, {\em int} et
l'adresse d'un buffer {\em void *}. Elle insère le buffer dans le numéro l'adresse d'un buffer {\em void *}. Elle insère le buffer dans le numéro
de file de messages de l'espace de messages. de file de messages de l'espace de messages. Lorsque l'on appelle cette
fonction, à la fin, on ``délocke'' le sémaphore sur la {\em queue}.
\item{\sc msgSpaceState(\dots)} Cette fonction prend en argument, un \item{\sc msgSpaceState(\dots)} Cette fonction prend en argument, un
``id'' d'espace de message, {\em msgSpaceId}, et permet de conna{\^i}tre ``id'' d'espace de message, {\em msgSpaceId}, et permet de conna{\^i}tre
l'état de l'espace de message dont l'``id'' est donnée en argument. l'état de l'espace de message dont l'``id'' est donnée en argument.