Re: [PATCH BlueZ 1/6] share/mainloop: Add handling of NOTIFY_SOCKET

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Luiz,

> This adds handling of systemd NOTIFY_SOCKET so application using
> mainloop instance do properly notify systemd what is their state.
> ---
> Makefile.am                  |   8 ++-
> src/shared/mainloop-glib.c   |   8 +++
> src/shared/mainloop-notify.c | 104 +++++++++++++++++++++++++++++++++++
> src/shared/mainloop-notify.h |  25 +++++++++
> src/shared/mainloop.c        |  12 ++++
> src/shared/mainloop.h        |   1 +
> 6 files changed, 156 insertions(+), 2 deletions(-)
> create mode 100644 src/shared/mainloop-notify.c
> create mode 100644 src/shared/mainloop-notify.h
> 
> diff --git a/Makefile.am b/Makefile.am
> index 0b26ccc3e..124c32482 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -130,12 +130,16 @@ endif
> src_libshared_glib_la_SOURCES = $(shared_sources) \
> 				src/shared/io-glib.c \
> 				src/shared/timeout-glib.c \
> -				src/shared/mainloop-glib.c
> +				src/shared/mainloop-glib.c \
> +				src/shared/mainloop-notify.h \
> +				src/shared/mainloop-notify.c
> 
> src_libshared_mainloop_la_SOURCES = $(shared_sources) \
> 				src/shared/io-mainloop.c \
> 				src/shared/timeout-mainloop.c \
> -				src/shared/mainloop.h src/shared/mainloop.c
> +				src/shared/mainloop.h src/shared/mainloop.c \
> +				src/shared/mainloop-notify.h \
> +				src/shared/mainloop-notify.c
> 
> if ELL
> src_libshared_ell_la_SOURCES = $(shared_sources) \
> diff --git a/src/shared/mainloop-glib.c b/src/shared/mainloop-glib.c
> index 8436969bb..9d588e8c5 100644
> --- a/src/shared/mainloop-glib.c
> +++ b/src/shared/mainloop-glib.c
> @@ -36,6 +36,7 @@
> #include <glib.h>
> 
> #include "mainloop.h"
> +#include "mainloop-notify.h"
> 
> static GMainLoop *main_loop;
> static int exit_status;
> @@ -43,6 +44,7 @@ static int exit_status;
> void mainloop_init(void)
> {
> 	main_loop = g_main_loop_new(NULL, FALSE);
> +	mainloop_notify_init();
> }
> 
> void mainloop_quit(void)
> @@ -70,11 +72,17 @@ int mainloop_run(void)
> 	if (!main_loop)
> 		return -EINVAL;
> 
> +	mainloop_notify("READY=1");
> +
> 	g_main_loop_run(main_loop);
> 
> +	mainloop_notify("STOPPING=1");
> +

I actually think this is too simple. Frankly what we want is some generic code that runs the mainloops and handles the terminations signals and also brings you onto D-Bus. And only then signal READY=1.

If you look at iwd and wired/dbus.c then I have started something in that direction with dbus_app_run. That needs to be a bit more unified and turned into l_dbus_run or some similar name.

My thinking really is that the main() function should be just deal with argument parsing and then getting you on the system or session bus. It should not be bothered with all the signal setup or the duplicated code for handling the asynchronous shutdown. And if you have that, then you do a nice integration with NOTIFY_SOCKET.

Regards

Marcel




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux