| #ifndef IORANGE_H |
| #define IORANGE_H |
| |
| #include <stdint.h> |
| |
| typedef struct IORange IORange; |
| typedef struct IORangeOps IORangeOps; |
| |
| struct IORangeOps { |
| void (*read)(IORange *iorange, uint64_t offset, unsigned width, |
| uint64_t *data); |
| void (*write)(IORange *iorange, uint64_t offset, unsigned width, |
| uint64_t data); |
| void (*destructor)(IORange *iorange); |
| }; |
| |
| struct IORange { |
| const IORangeOps *ops; |
| uint64_t base; |
| uint64_t len; |
| }; |
| |
| static inline void iorange_init(IORange *iorange, const IORangeOps *ops, |
| uint64_t base, uint64_t len) |
| { |
| iorange->ops = ops; |
| iorange->base = base; |
| iorange->len = len; |
| } |
| |
| #endif |