Uso de inb, inl, inw para acessar o espaço do kernel a partir do espaço do usuário

6

Quais são alguns exemplos de espaço do usuário usando inb , inl e inw para acessar o espaço do kernel no Linux?

    
por Renjith G 18.01.2011 / 13:18

1 resposta

5

inb , outb e amigos não são destinados à comunicação do kernel, eles são usados para ler e gravar em portas IO específicas da plataforma.

O uso típico desses recursos seria interações diretas com as portas seriais ou paralelas (e, portanto, com os dispositivos conectados), sem percorrer todo o caminho e criar drivers de dispositivo de kernel específicos.
Os servidores X também podem usá-los para comunicação de baixo nível com o hardware de vídeo (ou possivelmente dispositivo de entrada).

Para usar essas chamadas do userspace, duas coisas são necessárias:

  • O processo de chamada deve ter CAP_SYS_RAWIO recurso (este geralmente significa que ele precisa ser executado como root).
  • O processo de chamada deve solicitar permissão para usar as portas desejadas, com o ioperm ou iopl chamadas do sistema.

Mini-HOWTO de programação de porta Linux I / O irá guiá-lo o essencial, e há um programa de exemplo simples no final * .
Observe que os programas que usam isso se comunicam diretamente com qualquer hardware (ou firmware) atrás dessas portas. O kernel não valida nem interfere com essas chamadas. Então usá-los mal poderia causar problemas sérios. Manuseie com cuidado.

* Você precisará #include <stdlib.h> e substituir <asm/io.h> por <sys/io.h> para compilar.

    
por 26.02.2012 / 09:27