Code associated with "The Hazards of Device Driver Design" by Shaul Gal-Oz and Avi Cohen, pp. 34 to 46, May 1997 Listing 1 Structures generated with Microtec Research C compiler. typedef packed struct { /* 30 */ U32 Reserved [2]; /* Reserved */ /* 38 */ U16 Max_Idl; /* Maximum IDLE Characters (Receive) */ /* 3A */ volatile U16 Idlc; /* Temporary IDLE Counter */ /* 3C */ U16 Brkcr; /* Break Count Register (Transmit) */ /* 3E */ volatile U16 Parec; /* Receive Parity Error Counter */ /* 40 */ volatile U16 Frmec; /* Receive Framing Error Counter */ /* 42 */ volatile U16 Nosec; /* Receive Noise Counter */ /* 44 */ volatile U16 Brkec; /* Receive Break Condition Counter */ /* 46 */ volatile U16 Brkln; /* Last Received Break Length */ /* 48 */ U16 Addr [UART_NUM_OF_ADDRS]; /* UART Address Characters */ /* 4C */ volatile U16 Rtemp; /* Temp Storage */ /* 4E */ U16 Toseq; /* Transmit Out-Of-Seqence Character */ /* 50 */ U16 Char [UART_NUM_OF_CHARS]; /* Control Characters */ /* 60 */ U16 Rccm; /* Receive Control Character Mask */ /* 62 */ volatile U16 Rccr; /* Receive Control Character Register */ /* 64 */ volatile U16 Rlbc; /* Receive Last Break Character */ } SCC_UART_T, *SCC_UART_P ; listing 2 Structures generated with DIAB DATA C compiler. typedef __packed__(2,2) struct { /* 30 */ U32 Reserved [2]; /* Reserved */ /* 38 */ U16 Max_Idl; /* Maximum IDLE Characters (Receive) */ /* 3A */ volatile U16 Idlc; /* Temporary IDLE Counter */ /* 3C */ U16 Brkcr; /* Break Count Register (Transmit) */ /* 3E */ volatile U16 Parec; /* Receive Parity Error Counter */ /* 40 */ volatile U16 Frmec; /* Receive Framing Error Counter */ /* 42 */ volatile U16 Nosec; /* Receive Noise Counter */ /* 44 */ volatile U16 Brkec; /* Receive Break Condition Counter */ /* 46 */ volatile U16 Brkln; /* Last Received Break Length */ /* 48 */ U16 Addr [UART_NUM_OF_ADDRS]; /* UART Address Characters */ /* 4C */ volatile U16 Rtemp; /* Temp Storage */ /* 4E */ U16 Toseq; /* Transmit Out-Of-Seqence Character */ /* 50 */ U16 Char [UART_NUM_OF_CHARS]; /* Control Characters */ /* 60 */ U16 Rccm; /* Receive Control Character Mask */ /* 62 */ volatile U16 Rccr; /* Receive Control Character Register */ /* 64 */ volatile U16 Rlbc; /* Receive Last Break Character */ } SCC_UART_T, *SCC_UART_P ;