<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\section{Puerto Serie}

La implementaciÃ³n del puerto serie la basÃ© en la explicaciÃ³n en osdev.org.
BÃ¡sicamente inicializamos el dispositivo con una serie de valores en sus
puertos, registramos el dispositivo con las operaciones y su handler.

El handler de la interrupciÃ³n se encarga de leer y guardar todos los caracteres
que pueda del puerto mientras el dispositivo se mantenga ready. Utilizo un
buffer circular para grabar los datos que recibo, descartando todo lo que me lo
llene. Es importante tener en cuenta que utilizo un semÃ¡foro para contar la
cantidad de bytes recibidos. En cada byte lo signalizo, luego un proceso que
haga un read tomarÃ¡ bytes del buffer y por cada uno manda un wait. AsÃ­ me
aseguro de que el proceso se mantenga bloqueado hasta no tener todo lo que
pidiÃ³.
</pre></body></html>