La función inb()
forma parte de las operaciones de entrada/salida en sistemas operativos basados en Linux. Se utiliza para leer un byte de datos desde un puerto de E/S especificado. Por lo general, es necesario incluir la biblioteca <sys/io.h>
para usarla, y los permisos adecuados para acceder a los puertos de hardware.
inb()
unsigned char inb(unsigned short int port);
Parámetro | Descripción | Tipo |
---|---|---|
port
|
Número del puerto de entrada que se lee. |
unsigned short int
|
El valor devuelto es un byte (unsigned char
) leído desde el puerto especificado.
inb()
:
1. Incluir la biblioteca <sys/io.h>
.
2. Usar ioperm()
o iopl()
para obtener permisos de acceso a puertos.
3. Leer datos del puerto usando inb()
.
A continuación, un ejemplo para leer datos desde el puerto 0x60 (usualmente asociado con el teclado en sistemas x86):
#include <stdio.h>
#include <sys/io.h>
int main() {
unsigned short port = 0x60;
unsigned char data;
// Habilitar acceso al rango de puertos
if (ioperm(port, 1, 1)) {
perror("No se pudo obtener acceso al puerto");
return 1;
}
// Leer un byte desde el puerto
data = inb(port);
printf("Dato leído del puerto 0x60: 0x%02X\n", data);
// Deshabilitar acceso al rango de puertos
if (ioperm(port, 1, 0)) {
perror("No se pudo deshabilitar acceso al puerto");
return 1;
}
return 0;
}
inb()
puede causar errores críticos, ya que interactúa directamente con el hardware.
Jorge García
Fullstack developer