Revision f90074f4
ID | f90074f49309de9dd65b978a95d10f089017960a |
slavio_timer: avoid structure holes spotted by pahole
Report from pahole on amd64 host:
struct SLAVIO_TIMERState {
SysBusDevice busdev; /* 0 5648 /
/ --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- /
uint32_t num_cpus; / 5648 4 */
/* XXX 4 bytes hole, try to pack */
CPUTimerState cputimer[17]; /* 5656 816 /
/ --- cacheline 101 boundary (6464 bytes) was 8 bytes ago --- /
uint32_t cputimer_mode; / 6472 4 */
/* size: 6480, cachelines: 102 /
/ sum members: 6472, holes: 1, sum holes: 4 /
/ padding: 4 /
/ last cacheline: 16 bytes /
}; / definitions: 1 */
struct CPUTimerState {
qemu_irq irq; /* 0 8 /
ptimer_state * timer; / 8 8 /
uint32_t count; / 16 4 /
uint32_t counthigh; / 20 4 /
uint32_t reached; / 24 4 */
/* XXX 4 bytes hole, try to pack */
uint64_t limit; /* 32 8 /
uint32_t running; / 40 4 */
/* size: 48, cachelines: 1 /
/ sum members: 40, holes: 1, sum holes: 4 /
/ padding: 4 /
/ last cacheline: 48 bytes /
}; / definitions: 1 */
Fix by rearranging the structures to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Files
- added
- modified
- copied
- renamed
- deleted