Statistics
| Branch: | Revision:

root / iorange.h @ 82b11662

History | View | Annotate | Download (705 Bytes)

1 acd1c812 Avi Kivity
#ifndef IORANGE_H
2 acd1c812 Avi Kivity
#define IORANGE_H
3 acd1c812 Avi Kivity
4 acd1c812 Avi Kivity
#include <stdint.h>
5 acd1c812 Avi Kivity
6 acd1c812 Avi Kivity
typedef struct IORange IORange;
7 acd1c812 Avi Kivity
typedef struct IORangeOps IORangeOps;
8 acd1c812 Avi Kivity
9 acd1c812 Avi Kivity
struct IORangeOps {
10 acd1c812 Avi Kivity
    void (*read)(IORange *iorange, uint64_t offset, unsigned width,
11 acd1c812 Avi Kivity
                 uint64_t *data);
12 acd1c812 Avi Kivity
    void (*write)(IORange *iorange, uint64_t offset, unsigned width,
13 acd1c812 Avi Kivity
                  uint64_t data);
14 c5b703ac Avi Kivity
    void (*destructor)(IORange *iorange);
15 acd1c812 Avi Kivity
};
16 acd1c812 Avi Kivity
17 acd1c812 Avi Kivity
struct IORange {
18 acd1c812 Avi Kivity
    const IORangeOps *ops;
19 acd1c812 Avi Kivity
    uint64_t base;
20 acd1c812 Avi Kivity
    uint64_t len;
21 acd1c812 Avi Kivity
};
22 acd1c812 Avi Kivity
23 acd1c812 Avi Kivity
static inline void iorange_init(IORange *iorange, const IORangeOps *ops,
24 acd1c812 Avi Kivity
                                uint64_t base, uint64_t len)
25 acd1c812 Avi Kivity
{
26 acd1c812 Avi Kivity
    iorange->ops = ops;
27 acd1c812 Avi Kivity
    iorange->base = base;
28 acd1c812 Avi Kivity
    iorange->len = len;
29 acd1c812 Avi Kivity
}
30 acd1c812 Avi Kivity
31 acd1c812 Avi Kivity
#endif