Hello, for an embedded project I’m implementing a bootsplash application which should as well display service names are starting. This is based on kdbus and uses the sd-bus API to communicate with systemd (for example boot process percentage property is polled). Now I try to monitor the kdbus (system bus) to capture the events which indicate that a service was started. (works very well for testing with "busctl monitor“ tool). I assumed that the method_call „StartUnit“ would be a good indicator, so I tried to monitor for those messages by using following code (shortened and only significant parts copied here):
-.-.-.-.-.-.-.-.-.-.-. schnipp -.-.-.-.-.-.-.-.-.-.- r = sd_bus_open_system(&bus); … r = sd_bus_add_match(bus, NULL, "", do_something_callback, NULL); /* should not filter anything, I expect it triggers on any message */ … for (;;) { sd_bus_message *m = NULL; r = sd_bus_process(bus, &m); if (r < 0) { fprintf(stderr, "Failed to process bus: %s\n", strerror(-r)); goto finish; } if (r > 0) /* we processed a request, try to process another one, right-away */ continue; /* Wait for the next request to process */ r = sd_bus_wait(bus, (uint64_t) -1); if (r < 0) { fprintf(stderr, "Failed to wait on bus: %s\n", strerror(-r)); goto finish; } } … -.-.-.-.-.-.-.-.-.-.-. schnapp -.-.-.-.-.-.-.-.-.-.- The interesting thing is that this code only sees „signal“ type messages - but not any other like „method_call“. I did extensive testing, tried different code variants, for example by processing "sd_bus_message *m“ directly in the for loop with „sd_bus_message_is_method_call“ - but the effect is the same I don’t get „method_call“ as an event. Is there any suggestion what could be the reason ? (is that generally the right way what I try here to do ?) Many thanks for any feedback which points me to the right direction Kind Regards Thomas Schmidt _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel