(P10): Prácticas de Diseño Segundo Semestre Curso 2012/2013
(P10): Prácticas de Diseño Segundo Semestre Curso 2012/2013
(P10): Prácticas de Diseño Segundo Semestre Curso 2012/2013
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
SO #<strong>2013</strong>/1 Revisión 12.1<br />
1. Se solicitará la apertura <strong>de</strong> la biblioteca dinámica.<br />
2. Se buscará en ella el símbolo plugin info (el símbolo buscado<br />
se correspon<strong>de</strong>rá con el nombre <strong>de</strong> una función que<br />
<strong>de</strong>vuelve una estructura con información <strong>de</strong>l módulo).<br />
3. Se ejecutará dicha función (obteniendo un puntero a dicha<br />
estructura <strong>de</strong> información).<br />
4. Finalmente, se guarda el puntero a esta estructura que contiene<br />
los punteros a todas las funciones <strong>de</strong>l plugin.<br />
La <strong>de</strong>finición <strong>de</strong>l prototipo <strong>de</strong> dicha función, así como la estructura<br />
<strong>de</strong>vuelta se encuentran <strong>de</strong>scritos en el fichero <strong>de</strong> apoyo<br />
plugin info.h. Los campos <strong>de</strong> la citada estructura son:<br />
type<strong>de</strong>f struct plugin info st {<br />
char* banner;<br />
void (*plugin loop) ();<br />
void (*plugin stop) ();<br />
void (*plugin resume) ();<br />
int (*plugin finish) ();<br />
} plugin info t;<br />
plugin info t* plugin info();<br />
La estructura que <strong>de</strong>vuelve plugin info incluye los siguientes<br />
campos:<br />
❒ banner: Es la ca<strong>de</strong>na <strong>de</strong> caracteres que i<strong>de</strong>ntifica al plugin.<br />
Cuando se tenga que indicar el nombre <strong>de</strong>l plugin se usará esta<br />
ca<strong>de</strong>na.<br />
❒ plugin loop: Es un puntero a una función que se invoca en<br />
cada una <strong>de</strong> las iteraciones <strong>de</strong>l bucle <strong>de</strong> ejecución <strong>de</strong>l plugin.<br />
En otras palabras, la ejecución <strong>de</strong>l plugin (en un proceso o<br />
en un thread) consistirá en un bucle infinito en el que se<br />
invoca a esta función.<br />
(28)