Listing 1: An I/O register designator from iohw.h.

enum _Access_type {_Port8, _Port16, _Mem8, _Mem16};
typedef struct _IOreg {
    enum _Access_type type;
    union {
        unsigned short port;
        volatile unsigned char *ptr8;
        volatile unsigned short *ptr16;
    } location;
} _IOreg;