+<foil>
+<title>lseek</title>
+<para>
+A chamada de sistema lseek muda a posição corrente do arquivo, permitindo a
+leitura ou escrita naquela posição. Posicionar em um dispositivo pode ter
+diferentes significados.
+</para>
+<para>
+off\_t lseek (int fd, off\_t pos, int whence);
+</para>
+<para>
+O significado da posição depende do valor de whence, que pode ser
+SEEK\_SET (a posição absoluta), SEEK\_CUR (relativa a posição corrente),
+SEEK\_END (relativa ao fim do arquivo).
+</para>
+<para>
+Exemplo:
+</para>
+<para>
+lseek (fd, 0, SEEK\_END);
+</para>
+</foil>
+
+<foil>
+<title>ioctl</title>
+<para>
+A chamada de sistema ioctl é uma operação "pega-tudo". Para aquelas operações
+que não se encaixam no modelo leitura/escrita, ioctl permite ao usuário enviar
+um comando com um argumento opcional ao dispositivo. Esse comando pode aceitar
+entrada ou gerar saída.
+</para>
+<para>
+int ioctl (int fd, int request, char *arg);
+</para>
+<para>
+O último argumento é opcional e depende do tipo de requisição. Todo dispositivo
+ou classe de dispositivo pode ter seu diferente conjunto de ioctl's.
+</para>
+<para>
+Exemplo:
+</para>
+<para>
+struct ifreq req; ioctl (fd, SIOCGIFFLAGS, \&req);
+</para>
+</foil>
+
+<foil>
+<title>Módulos do Linux</title>
+<para>
+Linux é modularizado. Drivers, sistemas de arquivos, protocolos de rede e outros
+podem ser carregados em tempo de execução. Todo módulos tem uma função init e
+uma função exit.
+</para>
+<para>
+Módulos podem ter parâmetros. Em tempo de carga, parâmetros, que podem ser
+booleanos, inteiros ou strings, são dados pelo usuário.
+</para>
+</foil>
+
+<foil>
+<title>Tipos e números de dispositivos</title>
+<para>
+Dispositivos no Linux podem ter diferentes tipos, incluindo dispositivos de
+caractere, dispositivos de bloco e dispositivos de rede. Tanto dispositivos de
+caractere quanto de bloco têm números identificadores, um número maior e um
+número menor.
+</para>
+</foil>
+
+<foil>
+<title>Alocação de dispositivos de caractere</title>
+<para>
+No Linux, números maior e menor devem ser requisitados ou alocados. As chamadas
+para fazê-lo para os dispositivos de caractere são:
+</para>
+<para>
+int register\_chrdev\_region (dev\_t first, unsigned int count, char
+*name);
+int alloc\_chrdev\_region (dev\_t *dev, unsigned int firstminor,
+unsigned int count, char *name);
+void unregister\_chrdev\_region (dev\_t dev, unsigned int count);
+</para>
+</foil>
+