extern int __check_region (struct resource *, unsigned long, unsigned long); #define check_region(start,n)-sprawdza czy dany zakres I/O jest wolny lub czy część z niego nie została już przyporządkowana innemu urządzeniu
extern void __release_region (struct resource *, unsigned long, unsigned long); #define release_region(start,n)-uwalnia dany zakres I/O przyporządkowany urządzeniu
extern struct resource * __request_region (struct resource *, unsigned long start, unsigned long n, const char *name); #define request\region(start,n,name)-przyporządkowuje dany zakres portów I/O urządzeniom.
extern int get_resource_list (struct resource *, char *buf, int size); #define get_ioport_list(buf)-pobranie listy zarezerwowanych portów
Listę aktualnie wykorzystywanych portów można pobrać z "pseudo pliku": proc/ioports, który zawiera wynik funkcji get_resource_list. Oto jego fragment:
0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 0376-0376 : ide1 03c0-03df : vga+ 03f6-03f6 : ide0Dostęp do portów zapewniają funkcje zadeklarowane w pliku
extern unsigned int _inb (unsigned long port); extern unsigned int _inw (unsigned long port); extern unsigned int _inl (unsigned long port);
extern void _outb (unsigned char b,unsigned long port); extern void _outw (unsigned short w,unsigned long port); extern void _outl (unsigned int l,unsigned long port);