mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
adb: add autopoll_blocked variable to block autopoll
Whilst autopoll is enabled it is necessary to prevent the ADB buffer contents from being overwritten until the host has read back the response in its entirety. Add adb_autopoll_block() and adb_autopoll_unblock() functions in preparation for ensuring that the ADB buffer contents are protected for explicit ADB requests. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Tested-by: Finn Thain <fthain@telegraphics.com.au> Acked-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20200623204936.24064-16-mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
d2288b7584
commit
4e5df0369f
2 changed files with 25 additions and 0 deletions
|
@ -157,6 +157,26 @@ void adb_set_autopoll_mask(ADBBusState *s, uint16_t mask)
|
|||
}
|
||||
}
|
||||
|
||||
void adb_autopoll_block(ADBBusState *s)
|
||||
{
|
||||
s->autopoll_blocked = true;
|
||||
|
||||
if (s->autopoll_enabled) {
|
||||
timer_del(s->autopoll_timer);
|
||||
}
|
||||
}
|
||||
|
||||
void adb_autopoll_unblock(ADBBusState *s)
|
||||
{
|
||||
s->autopoll_blocked = false;
|
||||
|
||||
if (s->autopoll_enabled) {
|
||||
timer_mod(s->autopoll_timer,
|
||||
qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) +
|
||||
s->autopoll_rate_ms);
|
||||
}
|
||||
}
|
||||
|
||||
static void adb_autopoll(void *opaque)
|
||||
{
|
||||
ADBBusState *s = opaque;
|
||||
|
@ -184,6 +204,7 @@ static const VMStateDescription vmstate_adb_bus = {
|
|||
VMSTATE_BOOL(autopoll_enabled, ADBBusState),
|
||||
VMSTATE_UINT8(autopoll_rate_ms, ADBBusState),
|
||||
VMSTATE_UINT16(autopoll_mask, ADBBusState),
|
||||
VMSTATE_BOOL(autopoll_blocked, ADBBusState),
|
||||
VMSTATE_END_OF_LIST()
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue