« Previous | Next » 

Revision 9a975d63

ID9a975d63563c2d09279b0e9a7fb7c2abcbd512b9

Added by Blue Swirl over 12 years ago

esp: avoid structure holes spotted by pahole

Report from pahole on amd64 host:
struct ESPState {
SysBusDevice busdev; /* 0 5648 /
/
--- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- /
uint32_t it_shift; /
5648 4 */

/* XXX 4 bytes hole, try to pack */
qemu_irq                   irq;                  /*  5656     8 /
uint8_t rregs[16]; /
5664 16 /
uint8_t wregs[16]; /
5680 16 /
/
--- cacheline 89 boundary (5696 bytes) --- /
int32_t ti_size; /
5696 4 /
uint32_t ti_rptr; /
5700 4 /
uint32_t ti_wptr; /
5704 4 /
uint8_t ti_buf[16]; /
5708 16 /
uint32_t status; /
5724 4 /
uint32_t dma; /
5728 4 */
/* XXX 4 bytes hole, try to pack */
SCSIBus                    bus;                  /*  5736  2120 /
/
--- cacheline 122 boundary (7808 bytes) was 48 bytes ago --- /
SCSIDevice * current_dev; /
7856 8 /
SCSIRequest * current_req; /
7864 8 /
/
--- cacheline 123 boundary (7872 bytes) --- /
uint8_t cmdbuf[16]; /
7872 16 /
uint32_t cmdlen; /
7888 4 /
uint32_t do_cmd; /
7892 4 /
uint32_t dma_left; /
7896 4 /
uint32_t dma_counter; /
7900 4 /
uint8_t * async_buf; /
7904 8 /
uint32_t async_len; /
7912 4 */
/* XXX 4 bytes hole, try to pack */
ESPDMAMemoryReadWriteFunc  dma_memory_read;      /*  7920     8 /
ESPDMAMemoryReadWriteFunc dma_memory_write; /
7928 8 /
/
--- cacheline 124 boundary (7936 bytes) --- /
void * dma_opaque; /
7936 8 /
int dma_enabled; /
7944 4 */
/* XXX 4 bytes hole, try to pack */
void                       (dma_cb)(ESPState *); /  7952     8 */
/* size: 7960, cachelines: 125 /
/
sum members: 7944, holes: 4, sum holes: 16 /
/
last cacheline: 24 bytes /
}; /
definitions: 1 */

Fix by rearranging the structure to avoid padding.

Signed-off-by: Blue Swirl <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences