???
This commit is contained in:
parent
eff2be3efa
commit
0293b5482c
1 changed files with 18 additions and 5 deletions
|
@ -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.
|
||||||
|
|
Loading…
Reference in a new issue