mirror of
https://github.com/systemd/systemd.git
synced 2025-03-28 02:50:16 +03:00
pid1: add --bus-introspect
This commit is contained in:
parent
f6e9aa9e45
commit
5c08257b70
@ -609,6 +609,14 @@ static const BusObjectImplementation manager_log_control_object = {
|
||||
.vtables = BUS_VTABLES(bus_manager_log_control_vtable),
|
||||
};
|
||||
|
||||
int bus_manager_introspect_implementations(FILE *out, const char *pattern) {
|
||||
return bus_introspect_implementations(
|
||||
out,
|
||||
pattern,
|
||||
BUS_IMPLEMENTATIONS(&bus_manager_object,
|
||||
&manager_log_control_object));
|
||||
}
|
||||
|
||||
static int bus_setup_api_vtables(Manager *m, sd_bus *bus) {
|
||||
int r;
|
||||
|
||||
|
@ -33,3 +33,4 @@ int bus_forward_agent_released(Manager *m, const char *path);
|
||||
uint64_t manager_bus_n_queued_write(Manager *m);
|
||||
|
||||
void dump_bus_properties(FILE *f);
|
||||
int bus_manager_introspect_implementations(FILE *out, const char *pattern);
|
||||
|
@ -93,8 +93,11 @@ static enum {
|
||||
ACTION_TEST,
|
||||
ACTION_DUMP_CONFIGURATION_ITEMS,
|
||||
ACTION_DUMP_BUS_PROPERTIES,
|
||||
ACTION_BUS_INTROSPECT,
|
||||
} arg_action = ACTION_RUN;
|
||||
|
||||
static const char *arg_bus_introspect = NULL;
|
||||
|
||||
/* Those variables are initialized to 0 automatically, so we avoid uninitialized memory access.
|
||||
* Real defaults are assigned in reset_arguments() below. */
|
||||
static char *arg_default_unit;
|
||||
@ -729,6 +732,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
ARG_VERSION,
|
||||
ARG_DUMP_CONFIGURATION_ITEMS,
|
||||
ARG_DUMP_BUS_PROPERTIES,
|
||||
ARG_BUS_INTROSPECT,
|
||||
ARG_DUMP_CORE,
|
||||
ARG_CRASH_CHVT,
|
||||
ARG_CRASH_SHELL,
|
||||
@ -758,6 +762,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{ "version", no_argument, NULL, ARG_VERSION },
|
||||
{ "dump-configuration-items", no_argument, NULL, ARG_DUMP_CONFIGURATION_ITEMS },
|
||||
{ "dump-bus-properties", no_argument, NULL, ARG_DUMP_BUS_PROPERTIES },
|
||||
{ "bus-introspect", required_argument, NULL, ARG_BUS_INTROSPECT },
|
||||
{ "dump-core", optional_argument, NULL, ARG_DUMP_CORE },
|
||||
{ "crash-chvt", required_argument, NULL, ARG_CRASH_CHVT },
|
||||
{ "crash-shell", optional_argument, NULL, ARG_CRASH_SHELL },
|
||||
@ -885,6 +890,11 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
arg_action = ACTION_DUMP_BUS_PROPERTIES;
|
||||
break;
|
||||
|
||||
case ARG_BUS_INTROSPECT:
|
||||
arg_bus_introspect = optarg;
|
||||
arg_action = ACTION_BUS_INTROSPECT;
|
||||
break;
|
||||
|
||||
case ARG_DUMP_CORE:
|
||||
if (!optarg)
|
||||
arg_dump_core = true;
|
||||
@ -1044,6 +1054,7 @@ static int help(void) {
|
||||
" --no-pager Do not pipe output into a pager\n"
|
||||
" --dump-configuration-items Dump understood unit configuration items\n"
|
||||
" --dump-bus-properties Dump exposed bus properties\n"
|
||||
" --bus-introspect=PATH Write XML introspection data\n"
|
||||
" --unit=UNIT Set default unit\n"
|
||||
" --dump-core[=BOOL] Dump core on crash\n"
|
||||
" --crash-vt=NR Change to specified VT on crash\n"
|
||||
@ -2615,7 +2626,7 @@ int main(int argc, char *argv[]) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
if (IN_SET(arg_action, ACTION_TEST, ACTION_HELP, ACTION_DUMP_CONFIGURATION_ITEMS, ACTION_DUMP_BUS_PROPERTIES))
|
||||
if (IN_SET(arg_action, ACTION_TEST, ACTION_HELP, ACTION_DUMP_CONFIGURATION_ITEMS, ACTION_DUMP_BUS_PROPERTIES, ACTION_BUS_INTROSPECT))
|
||||
(void) pager_open(arg_pager_flags);
|
||||
|
||||
if (arg_action != ACTION_RUN)
|
||||
@ -2635,6 +2646,10 @@ int main(int argc, char *argv[]) {
|
||||
dump_bus_properties(stdout);
|
||||
retval = EXIT_SUCCESS;
|
||||
goto finish;
|
||||
} else if (arg_action == ACTION_BUS_INTROSPECT) {
|
||||
r = bus_manager_introspect_implementations(stdout, arg_bus_introspect);
|
||||
retval = r >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
goto finish;
|
||||
}
|
||||
|
||||
assert_se(IN_SET(arg_action, ACTION_RUN, ACTION_TEST));
|
||||
|
Loading…
x
Reference in New Issue
Block a user