1 #ifndef _PORT_H 2 #define _PORT_H 3 4 #include <stdint.h> 5 #include <list.h> 6 #include <resource.h> 7 8 #define PORT_SIZE(area) \ 9 (area->data.port.end - area->data.port.start + 1) 10 11 typedef uint8_t port_t; 12 13 typedef void port_data_t; 14 typedef uint8_t (*read_t)(port_data_t *data, port_t port); 15 typedef void (*write_t)(port_data_t *data, uint8_t b, port_t port); 16 17 struct pops { 18 read_t read; 19 write_t write; 20 }; 21 22 struct port_region { 23 struct resource *area; 24 struct pops *pops; 25 port_data_t *data; 26 }; 27 28 bool port_region_add(struct port_region *region); 29 void port_region_remove(struct port_region *region); 30 void port_region_remove_all(); 31 uint8_t port_read(port_t port); 32 void port_write(uint8_t b, port_t port); 33 34 #endif 35 36