Track the LED intensity, and emit a trace event when it changes.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/misc/led.h | 1 +
hw/misc/led.c | 5 +++++
hw/misc/trace-events | 1 +
3 files changed, 7 insertions(+)
diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h
index 883006bb8f..df5b32a2db 100644
--- a/include/hw/misc/led.h
+++ b/include/hw/misc/led.h
@@ -35,6 +35,7 @@ typedef struct LEDState {
DeviceState parent_obj;
/* Public */
+ uint16_t current_intensity;
qemu_irq irq;
/* Properties */
diff --git a/hw/misc/led.c b/hw/misc/led.c
index 8503dde777..37d9f1f3d2 100644
--- a/hw/misc/led.c
+++ b/hw/misc/led.c
@@ -32,6 +32,11 @@ void led_set_intensity(LEDState *s, uint16_t new_intensity)
{
trace_led_set_intensity(s->description ? s->description : "n/a",
s->color, new_intensity);
+ if (new_intensity != s->current_intensity) {
+ trace_led_change_intensity(s->description ? s->description : "n/a",
+ s->color,
+ s->current_intensity, new_intensity);
+ }
s->current_intensity = new_intensity;
}
diff --git a/hw/misc/trace-events b/hw/misc/trace-events
index f58853d367..57d39bf9b9 100644
--- a/hw/misc/trace-events
+++ b/hw/misc/trace-events
@@ -209,6 +209,7 @@ grlib_apb_pnp_read(uint64_t addr, uint32_t value) "APB PnP read addr:0x%03"PRIx6
# led.c
led_set_intensity(const char *color, const char *desc, uint16_t intensity) "LED desc:'%s' color:%s intensity: 0x%04"PRIx16
+led_change_intensity(const char *color, const char *desc, uint16_t old_intensity, uint16_t new_intensity) "LED desc:'%s' color:%s intensity 0x%04"PRIx16" -> 0x%04"PRIx16""
# pca9552.c
pca9552_gpio_status(const char *description, const char *buf) "%s GPIOs 0-15 [%s]"
--
2.21.3
On 6/20/20 4:07 PM, Philippe Mathieu-Daudé wrote:
> Track the LED intensity, and emit a trace event when it changes.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> include/hw/misc/led.h | 1 +
> hw/misc/led.c | 5 +++++
> hw/misc/trace-events | 1 +
> 3 files changed, 7 insertions(+)
>
> diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h
> index 883006bb8f..df5b32a2db 100644
> --- a/include/hw/misc/led.h
> +++ b/include/hw/misc/led.h
> @@ -35,6 +35,7 @@ typedef struct LEDState {
> DeviceState parent_obj;
> /* Public */
>
> + uint16_t current_intensity;
> qemu_irq irq;
Why not sort this new field next to the other uint16_t and (partially) fill the
hole?
Otherwise,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
On 6/21/20 9:23 PM, Richard Henderson wrote:
> On 6/20/20 4:07 PM, Philippe Mathieu-Daudé wrote:
>> Track the LED intensity, and emit a trace event when it changes.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>> include/hw/misc/led.h | 1 +
>> hw/misc/led.c | 5 +++++
>> hw/misc/trace-events | 1 +
>> 3 files changed, 7 insertions(+)
>>
>> diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h
>> index 883006bb8f..df5b32a2db 100644
>> --- a/include/hw/misc/led.h
>> +++ b/include/hw/misc/led.h
>> @@ -35,6 +35,7 @@ typedef struct LEDState {
>> DeviceState parent_obj;
>> /* Public */
>>
>> + uint16_t current_intensity;
>> qemu_irq irq;
>
> Why not sort this new field next to the other uint16_t and (partially) fill the
> hole?
From a reviewer point of view, I prefer to keep the state fields
separated from the properties fields, wasting few bits of RAM.
Anyway I switched to a percent value. What is better to hold
it, an 'unsigned' or 'uint8_t' type?
>
> Otherwise,
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Thanks!
>
>
> r~
>
On 6/21/20 3:25 PM, Philippe Mathieu-Daudé wrote: > Anyway I switched to a percent value. What is better to hold > it, an 'unsigned' or 'uint8_t' type? Might as well use unsigned; you'll not be saving space with uint8_t. r~
On 6/22/20 6:48 PM, Richard Henderson wrote: > On 6/21/20 3:25 PM, Philippe Mathieu-Daudé wrote: >> Anyway I switched to a percent value. What is better to hold >> it, an 'unsigned' or 'uint8_t' type? > > Might as well use unsigned; you'll not be saving space with uint8_t. Bah if we want to migrate the intensity, we can't use 'unsigned', so I'll keep uint8_t / VMSTATE_UINT8.
© 2016 - 2026 Red Hat, Inc.