* [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE @ 2023-07-05 13:31 Philippe Mathieu-Daudé 2023-07-05 13:31 ` [PATCH 1/4] io/channel: Explicit QIOChannel doc is based on GLib's IOChannel Philippe Mathieu-Daudé ` (4 more replies) 0 siblings, 5 replies; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2023-07-05 13:31 UTC (permalink / raw) To: qemu-devel Cc: Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Marc-André Lureau, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé, Philippe Mathieu-Daudé Improve qio and chardev frontend documentation, have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE. Philippe Mathieu-Daudé (4): io/channel: Explicit QIOChannel doc is based on GLib's IOChannel chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask chardev/char-fe: Document FEWatchFunc typedef hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE include/chardev/char-fe.h | 18 ++++++++++++++++-- include/io/channel.h | 2 +- hw/char/cadence_uart.c | 8 ++++---- hw/char/cmsdk-apb-uart.c | 6 +++--- hw/char/ibex_uart.c | 8 ++++---- hw/char/nrf51_uart.c | 4 ++-- hw/char/serial.c | 2 +- hw/char/virtio-console.c | 2 +- hw/usb/redirect.c | 2 +- monitor/monitor.c | 2 +- net/vhost-user.c | 2 +- 11 files changed, 35 insertions(+), 21 deletions(-) -- 2.38.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/4] io/channel: Explicit QIOChannel doc is based on GLib's IOChannel 2023-07-05 13:31 [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé @ 2023-07-05 13:31 ` Philippe Mathieu-Daudé 2023-07-05 14:52 ` Daniel P. Berrangé 2023-07-05 13:31 ` [PATCH 2/4] chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask Philippe Mathieu-Daudé ` (3 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2023-07-05 13:31 UTC (permalink / raw) To: qemu-devel Cc: Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Marc-André Lureau, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé, Philippe Mathieu-Daudé One can get lost looking for "public API docs". Explicit we are referring to GLib IOChannel documentation. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- include/io/channel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/io/channel.h b/include/io/channel.h index 229bf36910..998718b470 100644 --- a/include/io/channel.h +++ b/include/io/channel.h @@ -97,7 +97,7 @@ struct QIOChannel { * The first five callbacks are mandatory to support, others * provide additional optional features. * - * Consult the corresponding public API docs for a description + * Consult the corresponding GLib IOChannel public API docs for a description * of the semantics of each callback. io_shutdown in particular * must be thread-safe, terminate quickly and must not block. */ -- 2.38.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] io/channel: Explicit QIOChannel doc is based on GLib's IOChannel 2023-07-05 13:31 ` [PATCH 1/4] io/channel: Explicit QIOChannel doc is based on GLib's IOChannel Philippe Mathieu-Daudé @ 2023-07-05 14:52 ` Daniel P. Berrangé 0 siblings, 0 replies; 11+ messages in thread From: Daniel P. Berrangé @ 2023-07-05 14:52 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Marc-André Lureau, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm On Wed, Jul 05, 2023 at 03:31:36PM +0200, Philippe Mathieu-Daudé wrote: > One can get lost looking for "public API docs". Explicit > we are referring to GLib IOChannel documentation. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > include/io/channel.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/io/channel.h b/include/io/channel.h > index 229bf36910..998718b470 100644 > --- a/include/io/channel.h > +++ b/include/io/channel.h > @@ -97,7 +97,7 @@ struct QIOChannel { > * The first five callbacks are mandatory to support, others > * provide additional optional features. > * > - * Consult the corresponding public API docs for a description > + * Consult the corresponding GLib IOChannel public API docs for a description This is refering to the public API docs in this very file. ie for io_writev callback, the qio_channel_io_writev docs define semantics. > * of the semantics of each callback. io_shutdown in particular > * must be thread-safe, terminate quickly and must not block. > */ > -- > 2.38.1 > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/4] chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask 2023-07-05 13:31 [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé 2023-07-05 13:31 ` [PATCH 1/4] io/channel: Explicit QIOChannel doc is based on GLib's IOChannel Philippe Mathieu-Daudé @ 2023-07-05 13:31 ` Philippe Mathieu-Daudé 2023-07-10 11:19 ` Marc-André Lureau 2023-07-05 13:31 ` [PATCH 3/4] chardev/char-fe: Document FEWatchFunc typedef Philippe Mathieu-Daudé ` (2 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2023-07-05 13:31 UTC (permalink / raw) To: qemu-devel Cc: Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Marc-André Lureau, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé, Philippe Mathieu-Daudé qemu_chr_fe_add_watch() can poll for multiple conditions. It's @cond argument is a combination of all the condition bits. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- include/chardev/char-fe.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h index 8c420fa36e..309960046a 100644 --- a/include/chardev/char-fe.h +++ b/include/chardev/char-fe.h @@ -179,8 +179,8 @@ typedef gboolean (*FEWatchFunc)(void *do_not_use, GIOCondition condition, void * /** * qemu_chr_fe_add_watch: - * @cond: the condition to poll for - * @func: the function to call when the condition happens + * @cond: bitwise combination of conditions to poll for + * @func: the function to call when the conditions are satisfied * @user_data: the opaque pointer to pass to @func * * If the backend is connected, create and add a #GSource that fires -- 2.38.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/4] chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask 2023-07-05 13:31 ` [PATCH 2/4] chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask Philippe Mathieu-Daudé @ 2023-07-10 11:19 ` Marc-André Lureau 2023-07-10 13:42 ` Philippe Mathieu-Daudé 0 siblings, 1 reply; 11+ messages in thread From: Marc-André Lureau @ 2023-07-10 11:19 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé [-- Attachment #1: Type: text/plain, Size: 1324 bytes --] On Wed, Jul 5, 2023 at 5:33 PM Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > qemu_chr_fe_add_watch() can poll for multiple conditions. > It's @cond argument is a combination of all the condition bits. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > include/chardev/char-fe.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h > index 8c420fa36e..309960046a 100644 > --- a/include/chardev/char-fe.h > +++ b/include/chardev/char-fe.h > @@ -179,8 +179,8 @@ typedef gboolean (*FEWatchFunc)(void *do_not_use, > GIOCondition condition, void * > > /** > * qemu_chr_fe_add_watch: > - * @cond: the condition to poll for > - * @func: the function to call when the condition happens > + * @cond: bitwise combination of conditions to poll for > + * @func: the function to call when the conditions are satisfied > Not really worth imo, do you want to also fix all the io/ docs for @condition? and probably elsewhere... The rewording of @func isn't much clearer either... "any of the conditions"? > * @user_data: the opaque pointer to pass to @func > * > * If the backend is connected, create and add a #GSource that fires > -- > 2.38.1 > > > -- Marc-André Lureau [-- Attachment #2: Type: text/html, Size: 2265 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/4] chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask 2023-07-10 11:19 ` Marc-André Lureau @ 2023-07-10 13:42 ` Philippe Mathieu-Daudé 0 siblings, 0 replies; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2023-07-10 13:42 UTC (permalink / raw) To: Marc-André Lureau Cc: qemu-devel, Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé On 10/7/23 13:19, Marc-André Lureau wrote: > > > On Wed, Jul 5, 2023 at 5:33 PM Philippe Mathieu-Daudé <philmd@linaro.org > <mailto:philmd@linaro.org>> wrote: > > qemu_chr_fe_add_watch() can poll for multiple conditions. > It's @cond argument is a combination of all the condition bits. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org > <mailto:philmd@linaro.org>> > --- > include/chardev/char-fe.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h > index 8c420fa36e..309960046a 100644 > --- a/include/chardev/char-fe.h > +++ b/include/chardev/char-fe.h > @@ -179,8 +179,8 @@ typedef gboolean (*FEWatchFunc)(void > *do_not_use, GIOCondition condition, void * > > /** > * qemu_chr_fe_add_watch: > - * @cond: the condition to poll for > > - * @func: the function to call when the condition happens > + * @cond: bitwise combination of conditions to poll for > + * @func: the function to call when the conditions are satisfied > > > Not really worth imo, do you want to also fix all the io/ docs for > @condition? and probably elsewhere... > > The rewording of @func isn't much clearer either... "any of the conditions"? Hmm OK I'll just drop this patch for now, thanks. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/4] chardev/char-fe: Document FEWatchFunc typedef 2023-07-05 13:31 [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé 2023-07-05 13:31 ` [PATCH 1/4] io/channel: Explicit QIOChannel doc is based on GLib's IOChannel Philippe Mathieu-Daudé 2023-07-05 13:31 ` [PATCH 2/4] chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask Philippe Mathieu-Daudé @ 2023-07-05 13:31 ` Philippe Mathieu-Daudé 2023-07-10 11:22 ` Marc-André Lureau 2023-07-05 13:31 ` [PATCH 4/4] hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé 2023-07-10 11:11 ` [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé 4 siblings, 1 reply; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2023-07-05 13:31 UTC (permalink / raw) To: qemu-devel Cc: Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Marc-André Lureau, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé, Philippe Mathieu-Daudé Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- include/chardev/char-fe.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h index 309960046a..ec3f706a14 100644 --- a/include/chardev/char-fe.h +++ b/include/chardev/char-fe.h @@ -175,6 +175,20 @@ void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...) G_GNUC_PRINTF(2, 3); +/** + * FEWatchFunc: a #GSourceFunc called when any conditions requested by + * qemu_chr_fe_add_watch() is satisfied. + * @do_not_use: depending on the underlying chardev, a GIOChannel or a + * QIOChannel. DO NOT USE! + * @cond: bitwise combination of conditions watched and satisfied + * before calling this callback. + * @data: user data passed at creation to qemu_chr_fe_add_watch(). Can + * be NULL. + * + * Returns: G_SOURCE_REMOVE if the GSource should be removed from the + * main loop, or G_SOURCE_CONTINUE to leave the GSource in + * the main loop. + */ typedef gboolean (*FEWatchFunc)(void *do_not_use, GIOCondition condition, void *data); /** -- 2.38.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4] chardev/char-fe: Document FEWatchFunc typedef 2023-07-05 13:31 ` [PATCH 3/4] chardev/char-fe: Document FEWatchFunc typedef Philippe Mathieu-Daudé @ 2023-07-10 11:22 ` Marc-André Lureau 0 siblings, 0 replies; 11+ messages in thread From: Marc-André Lureau @ 2023-07-10 11:22 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé [-- Attachment #1: Type: text/plain, Size: 1458 bytes --] Hi On Wed, Jul 5, 2023 at 5:33 PM Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > include/chardev/char-fe.h | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h > index 309960046a..ec3f706a14 100644 > --- a/include/chardev/char-fe.h > +++ b/include/chardev/char-fe.h > @@ -175,6 +175,20 @@ void qemu_chr_fe_printf(CharBackend *be, const char > *fmt, ...) > G_GNUC_PRINTF(2, 3); > > > +/** > + * FEWatchFunc: a #GSourceFunc called when any conditions requested by > + * qemu_chr_fe_add_watch() is satisfied. > + * @do_not_use: depending on the underlying chardev, a GIOChannel or a > + * QIOChannel. DO NOT USE! > + * @cond: bitwise combination of conditions watched and satisfied > + * before calling this callback. > + * @data: user data passed at creation to qemu_chr_fe_add_watch(). Can > + * be NULL. > + * > + * Returns: G_SOURCE_REMOVE if the GSource should be removed from the > + * main loop, or G_SOURCE_CONTINUE to leave the GSource in > + * the main loop. > + */ > typedef gboolean (*FEWatchFunc)(void *do_not_use, GIOCondition condition, > void *data); > > /** > -- > 2.38.1 > > > Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com> -- Marc-André Lureau [-- Attachment #2: Type: text/html, Size: 2105 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/4] hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE 2023-07-05 13:31 [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé ` (2 preceding siblings ...) 2023-07-05 13:31 ` [PATCH 3/4] chardev/char-fe: Document FEWatchFunc typedef Philippe Mathieu-Daudé @ 2023-07-05 13:31 ` Philippe Mathieu-Daudé 2023-07-10 11:23 ` Marc-André Lureau 2023-07-10 11:11 ` [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé 4 siblings, 1 reply; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2023-07-05 13:31 UTC (permalink / raw) To: qemu-devel Cc: Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Marc-André Lureau, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé, Philippe Mathieu-Daudé GLib recommend to use G_SOURCE_REMOVE / G_SOURCE_CONTINUE for GSourceFunc callbacks. Our FEWatchFunc is a GSourceFunc returning such value. Use such definitions which are "more memorable" [*]. [*] https://docs.gtk.org/glib/callback.SourceFunc.html#return-value Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/char/cadence_uart.c | 8 ++++---- hw/char/cmsdk-apb-uart.c | 6 +++--- hw/char/ibex_uart.c | 8 ++++---- hw/char/nrf51_uart.c | 4 ++-- hw/char/serial.c | 2 +- hw/char/virtio-console.c | 2 +- hw/usb/redirect.c | 2 +- monitor/monitor.c | 2 +- net/vhost-user.c | 2 +- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 807e398541..eff0304a18 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -307,11 +307,11 @@ static gboolean cadence_uart_xmit(void *do_not_use, GIOCondition cond, /* instant drain the fifo when there's no back-end */ if (!qemu_chr_fe_backend_connected(&s->chr)) { s->tx_count = 0; - return FALSE; + return G_SOURCE_REMOVE; } if (!s->tx_count) { - return FALSE; + return G_SOURCE_REMOVE; } ret = qemu_chr_fe_write(&s->chr, s->tx_fifo, s->tx_count); @@ -326,12 +326,12 @@ static gboolean cadence_uart_xmit(void *do_not_use, GIOCondition cond, cadence_uart_xmit, s); if (!r) { s->tx_count = 0; - return FALSE; + return G_SOURCE_REMOVE; } } uart_update_status(s); - return FALSE; + return G_SOURCE_REMOVE; } static void uart_write_tx_fifo(CadenceUARTState *s, const uint8_t *buf, diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c index f8dc89ee3d..d466cd93de 100644 --- a/hw/char/cmsdk-apb-uart.c +++ b/hw/char/cmsdk-apb-uart.c @@ -199,7 +199,7 @@ static gboolean uart_transmit(void *do_not_use, GIOCondition cond, void *opaque) s->watch_tag = 0; if (!(s->ctrl & R_CTRL_TX_EN_MASK) || !(s->state & R_STATE_TXFULL_MASK)) { - return FALSE; + return G_SOURCE_REMOVE; } ret = qemu_chr_fe_write(&s->chr, &s->txbuf, 1); @@ -215,7 +215,7 @@ static gboolean uart_transmit(void *do_not_use, GIOCondition cond, void *opaque) } /* Transmit pending */ trace_cmsdk_apb_uart_tx_pending(); - return FALSE; + return G_SOURCE_REMOVE; } buffer_drained: @@ -227,7 +227,7 @@ buffer_drained: s->intstatus |= R_INTSTATUS_TX_MASK; } cmsdk_apb_uart_update(s); - return FALSE; + return G_SOURCE_REMOVE; } static void uart_cancel_transmit(CMSDKAPBUART *s) diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c index f70adb5308..51708c0836 100644 --- a/hw/char/ibex_uart.c +++ b/hw/char/ibex_uart.c @@ -147,7 +147,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, GIOCondition cond, /* instant drain the fifo when there's no back-end */ if (!qemu_chr_fe_backend_connected(&s->chr)) { s->tx_level = 0; - return FALSE; + return G_SOURCE_REMOVE; } if (!s->tx_level) { @@ -156,7 +156,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, GIOCondition cond, s->uart_intr_state |= R_INTR_STATE_TX_EMPTY_MASK; s->uart_intr_state &= ~R_INTR_STATE_TX_WATERMARK_MASK; ibex_uart_update_irqs(s); - return FALSE; + return G_SOURCE_REMOVE; } ret = qemu_chr_fe_write(&s->chr, s->tx_fifo, s->tx_level); @@ -171,7 +171,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, GIOCondition cond, ibex_uart_xmit, s); if (!r) { s->tx_level = 0; - return FALSE; + return G_SOURCE_REMOVE; } } @@ -192,7 +192,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, GIOCondition cond, } ibex_uart_update_irqs(s); - return FALSE; + return G_SOURCE_REMOVE; } static void uart_write_tx_fifo(IbexUartState *s, const uint8_t *buf, diff --git a/hw/char/nrf51_uart.c b/hw/char/nrf51_uart.c index 3c6f982de9..dfe2276d71 100644 --- a/hw/char/nrf51_uart.c +++ b/hw/char/nrf51_uart.c @@ -93,13 +93,13 @@ static gboolean uart_transmit(void *do_not_use, GIOCondition cond, void *opaque) */ goto buffer_drained; } - return FALSE; + return G_SOURCE_REMOVE; } buffer_drained: s->reg[R_UART_TXDRDY] = 1; s->pending_tx_byte = false; - return FALSE; + return G_SOURCE_REMOVE; } static void uart_cancel_transmit(NRF51UARTState *s) diff --git a/hw/char/serial.c b/hw/char/serial.c index 270e1b1094..f3094f860f 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -226,7 +226,7 @@ static gboolean serial_watch_cb(void *do_not_use, GIOCondition cond, SerialState *s = opaque; s->watch_tag = 0; serial_xmit(s); - return FALSE; + return G_SOURCE_REMOVE; } static void serial_xmit(SerialState *s) diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index dd5a02e339..dbe0b28e60 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -45,7 +45,7 @@ static gboolean chr_write_unblocked(void *do_not_use, GIOCondition cond, vcon->watch = 0; virtio_serial_throttle_port(VIRTIO_SERIAL_PORT(vcon), false); - return FALSE; + return G_SOURCE_REMOVE; } /* Callback function that's called when the guest sends us data */ diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 39fbaaab16..4bbf8afb33 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -278,7 +278,7 @@ static gboolean usbredir_write_unblocked(void *do_not_use, GIOCondition cond, dev->watch = 0; usbredirparser_do_write(dev->parser); - return FALSE; + return G_SOURCE_REMOVE; } static int usbredir_write(void *priv, uint8_t *data, int count) diff --git a/monitor/monitor.c b/monitor/monitor.c index dc352f9e9d..941f87815a 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -144,7 +144,7 @@ static gboolean monitor_unblocked(void *do_not_use, GIOCondition cond, QEMU_LOCK_GUARD(&mon->mon_lock); mon->out_watch = 0; monitor_flush_locked(mon); - return FALSE; + return G_SOURCE_REMOVE; } /* Caller must hold mon->mon_lock */ diff --git a/net/vhost-user.c b/net/vhost-user.c index 5993e4afca..12555518e8 100644 --- a/net/vhost-user.c +++ b/net/vhost-user.c @@ -239,7 +239,7 @@ static gboolean net_vhost_user_watch(void *do_not_use, GIOCondition cond, qemu_chr_fe_disconnect(&s->chr); - return TRUE; + return G_SOURCE_CONTINUE; } static void net_vhost_user_event(void *opaque, QEMUChrEvent event); -- 2.38.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 4/4] hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE 2023-07-05 13:31 ` [PATCH 4/4] hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé @ 2023-07-10 11:23 ` Marc-André Lureau 0 siblings, 0 replies; 11+ messages in thread From: Marc-André Lureau @ 2023-07-10 11:23 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé [-- Attachment #1: Type: text/plain, Size: 7558 bytes --] On Wed, Jul 5, 2023 at 5:33 PM Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > GLib recommend to use G_SOURCE_REMOVE / G_SOURCE_CONTINUE > for GSourceFunc callbacks. Our FEWatchFunc is a GSourceFunc > returning such value. Use such definitions which are > "more memorable" [*]. > > [*] https://docs.gtk.org/glib/callback.SourceFunc.html#return-value > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > hw/char/cadence_uart.c | 8 ++++---- > hw/char/cmsdk-apb-uart.c | 6 +++--- > hw/char/ibex_uart.c | 8 ++++---- > hw/char/nrf51_uart.c | 4 ++-- > hw/char/serial.c | 2 +- > hw/char/virtio-console.c | 2 +- > hw/usb/redirect.c | 2 +- > monitor/monitor.c | 2 +- > net/vhost-user.c | 2 +- > 9 files changed, 18 insertions(+), 18 deletions(-) > > diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c > index 807e398541..eff0304a18 100644 > --- a/hw/char/cadence_uart.c > +++ b/hw/char/cadence_uart.c > @@ -307,11 +307,11 @@ static gboolean cadence_uart_xmit(void *do_not_use, > GIOCondition cond, > /* instant drain the fifo when there's no back-end */ > if (!qemu_chr_fe_backend_connected(&s->chr)) { > s->tx_count = 0; > - return FALSE; > + return G_SOURCE_REMOVE; > } > > if (!s->tx_count) { > - return FALSE; > + return G_SOURCE_REMOVE; > } > > ret = qemu_chr_fe_write(&s->chr, s->tx_fifo, s->tx_count); > @@ -326,12 +326,12 @@ static gboolean cadence_uart_xmit(void *do_not_use, > GIOCondition cond, > cadence_uart_xmit, s); > if (!r) { > s->tx_count = 0; > - return FALSE; > + return G_SOURCE_REMOVE; > } > } > > uart_update_status(s); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > static void uart_write_tx_fifo(CadenceUARTState *s, const uint8_t *buf, > diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c > index f8dc89ee3d..d466cd93de 100644 > --- a/hw/char/cmsdk-apb-uart.c > +++ b/hw/char/cmsdk-apb-uart.c > @@ -199,7 +199,7 @@ static gboolean uart_transmit(void *do_not_use, > GIOCondition cond, void *opaque) > s->watch_tag = 0; > > if (!(s->ctrl & R_CTRL_TX_EN_MASK) || !(s->state & > R_STATE_TXFULL_MASK)) { > - return FALSE; > + return G_SOURCE_REMOVE; > } > > ret = qemu_chr_fe_write(&s->chr, &s->txbuf, 1); > @@ -215,7 +215,7 @@ static gboolean uart_transmit(void *do_not_use, > GIOCondition cond, void *opaque) > } > /* Transmit pending */ > trace_cmsdk_apb_uart_tx_pending(); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > buffer_drained: > @@ -227,7 +227,7 @@ buffer_drained: > s->intstatus |= R_INTSTATUS_TX_MASK; > } > cmsdk_apb_uart_update(s); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > static void uart_cancel_transmit(CMSDKAPBUART *s) > diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c > index f70adb5308..51708c0836 100644 > --- a/hw/char/ibex_uart.c > +++ b/hw/char/ibex_uart.c > @@ -147,7 +147,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, > GIOCondition cond, > /* instant drain the fifo when there's no back-end */ > if (!qemu_chr_fe_backend_connected(&s->chr)) { > s->tx_level = 0; > - return FALSE; > + return G_SOURCE_REMOVE; > } > > if (!s->tx_level) { > @@ -156,7 +156,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, > GIOCondition cond, > s->uart_intr_state |= R_INTR_STATE_TX_EMPTY_MASK; > s->uart_intr_state &= ~R_INTR_STATE_TX_WATERMARK_MASK; > ibex_uart_update_irqs(s); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > ret = qemu_chr_fe_write(&s->chr, s->tx_fifo, s->tx_level); > @@ -171,7 +171,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, > GIOCondition cond, > ibex_uart_xmit, s); > if (!r) { > s->tx_level = 0; > - return FALSE; > + return G_SOURCE_REMOVE; > } > } > > @@ -192,7 +192,7 @@ static gboolean ibex_uart_xmit(void *do_not_use, > GIOCondition cond, > } > > ibex_uart_update_irqs(s); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > static void uart_write_tx_fifo(IbexUartState *s, const uint8_t *buf, > diff --git a/hw/char/nrf51_uart.c b/hw/char/nrf51_uart.c > index 3c6f982de9..dfe2276d71 100644 > --- a/hw/char/nrf51_uart.c > +++ b/hw/char/nrf51_uart.c > @@ -93,13 +93,13 @@ static gboolean uart_transmit(void *do_not_use, > GIOCondition cond, void *opaque) > */ > goto buffer_drained; > } > - return FALSE; > + return G_SOURCE_REMOVE; > } > > buffer_drained: > s->reg[R_UART_TXDRDY] = 1; > s->pending_tx_byte = false; > - return FALSE; > + return G_SOURCE_REMOVE; > } > > static void uart_cancel_transmit(NRF51UARTState *s) > diff --git a/hw/char/serial.c b/hw/char/serial.c > index 270e1b1094..f3094f860f 100644 > --- a/hw/char/serial.c > +++ b/hw/char/serial.c > @@ -226,7 +226,7 @@ static gboolean serial_watch_cb(void *do_not_use, > GIOCondition cond, > SerialState *s = opaque; > s->watch_tag = 0; > serial_xmit(s); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > static void serial_xmit(SerialState *s) > diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c > index dd5a02e339..dbe0b28e60 100644 > --- a/hw/char/virtio-console.c > +++ b/hw/char/virtio-console.c > @@ -45,7 +45,7 @@ static gboolean chr_write_unblocked(void *do_not_use, > GIOCondition cond, > > vcon->watch = 0; > virtio_serial_throttle_port(VIRTIO_SERIAL_PORT(vcon), false); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > /* Callback function that's called when the guest sends us data */ > diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c > index 39fbaaab16..4bbf8afb33 100644 > --- a/hw/usb/redirect.c > +++ b/hw/usb/redirect.c > @@ -278,7 +278,7 @@ static gboolean usbredir_write_unblocked(void > *do_not_use, GIOCondition cond, > dev->watch = 0; > usbredirparser_do_write(dev->parser); > > - return FALSE; > + return G_SOURCE_REMOVE; > } > > static int usbredir_write(void *priv, uint8_t *data, int count) > diff --git a/monitor/monitor.c b/monitor/monitor.c > index dc352f9e9d..941f87815a 100644 > --- a/monitor/monitor.c > +++ b/monitor/monitor.c > @@ -144,7 +144,7 @@ static gboolean monitor_unblocked(void *do_not_use, > GIOCondition cond, > QEMU_LOCK_GUARD(&mon->mon_lock); > mon->out_watch = 0; > monitor_flush_locked(mon); > - return FALSE; > + return G_SOURCE_REMOVE; > } > > /* Caller must hold mon->mon_lock */ > diff --git a/net/vhost-user.c b/net/vhost-user.c > index 5993e4afca..12555518e8 100644 > --- a/net/vhost-user.c > +++ b/net/vhost-user.c > @@ -239,7 +239,7 @@ static gboolean net_vhost_user_watch(void *do_not_use, > GIOCondition cond, > > qemu_chr_fe_disconnect(&s->chr); > > - return TRUE; > + return G_SOURCE_CONTINUE; > } > > static void net_vhost_user_event(void *opaque, QEMUChrEvent event); > -- > 2.38.1 > > > -- Marc-André Lureau [-- Attachment #2: Type: text/html, Size: 9359 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE 2023-07-05 13:31 [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé ` (3 preceding siblings ...) 2023-07-05 13:31 ` [PATCH 4/4] hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé @ 2023-07-10 11:11 ` Philippe Mathieu-Daudé 4 siblings, 0 replies; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2023-07-10 11:11 UTC (permalink / raw) To: qemu-devel Cc: Gerd Hoffmann, Joel Stanley, Markus Armbruster, Alistair Francis, Laurent Vivier, Edgar E. Iglesias, Peter Maydell, Dr. David Alan Gilbert, Marc-André Lureau, Paolo Bonzini, Amit Shah, qemu-riscv, Michael S. Tsirkin, Jason Wang, qemu-arm, Daniel P. Berrangé Hi Paolo & Marc-André, On 5/7/23 15:31, Philippe Mathieu-Daudé wrote: > Improve qio and chardev frontend documentation, > have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE. > > Philippe Mathieu-Daudé (4): > io/channel: Explicit QIOChannel doc is based on GLib's IOChannel > chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a > mask > chardev/char-fe: Document FEWatchFunc typedef > hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE Could you Ack patches 2-4? ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-07-10 13:42 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-07-05 13:31 [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé 2023-07-05 13:31 ` [PATCH 1/4] io/channel: Explicit QIOChannel doc is based on GLib's IOChannel Philippe Mathieu-Daudé 2023-07-05 14:52 ` Daniel P. Berrangé 2023-07-05 13:31 ` [PATCH 2/4] chardev/char-fe: Clarify qemu_chr_fe_add_watch 'condition' arg is a mask Philippe Mathieu-Daudé 2023-07-10 11:19 ` Marc-André Lureau 2023-07-10 13:42 ` Philippe Mathieu-Daudé 2023-07-05 13:31 ` [PATCH 3/4] chardev/char-fe: Document FEWatchFunc typedef Philippe Mathieu-Daudé 2023-07-10 11:22 ` Marc-André Lureau 2023-07-05 13:31 ` [PATCH 4/4] hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé 2023-07-10 11:23 ` Marc-André Lureau 2023-07-10 11:11 ` [PATCH 0/4] chardev/char-fe: Document FEWatchFunc and use G_SOURCE_CONTINUE/REMOVE Philippe Mathieu-Daudé
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).