shared: split out property get helpers
No code changes, just some refactoring.
This commit is contained in:
parent
9176326ba2
commit
40af3d020f
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "automount.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-automount.h"
|
||||
#include "dbus-util.h"
|
||||
#include "string-util.h"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include "af-list.h"
|
||||
#include "alloc-util.h"
|
||||
#include "bpf-firewall.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "cgroup-util.h"
|
||||
#include "cgroup.h"
|
||||
#include "dbus-cgroup.h"
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#include "af-list.h"
|
||||
#include "alloc-util.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "cap-list.h"
|
||||
#include "capability-util.h"
|
||||
#include "cpu-set-util.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "sd-bus.h"
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-util.h"
|
||||
#include "dbus-job.h"
|
||||
#include "dbus-unit.h"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-kill.h"
|
||||
#include "dbus-util.h"
|
||||
#include "kill.h"
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
#include "architecture.h"
|
||||
#include "build.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-log-control-api.h"
|
||||
#include "bus-util.h"
|
||||
#include "dbus-cgroup.h"
|
||||
#include "dbus-execute.h"
|
||||
#include "dbus-job.h"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-cgroup.h"
|
||||
#include "dbus-execute.h"
|
||||
#include "dbus-kill.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-path.h"
|
||||
#include "dbus-util.h"
|
||||
#include "list.h"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-cgroup.h"
|
||||
#include "dbus-kill.h"
|
||||
#include "dbus-scope.h"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "async.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-cgroup.h"
|
||||
#include "dbus-execute.h"
|
||||
#include "dbus-kill.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-cgroup.h"
|
||||
#include "dbus-execute.h"
|
||||
#include "dbus-kill.h"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Copyright © 2010 Maarten Lankhorst
|
||||
***/
|
||||
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-cgroup.h"
|
||||
#include "dbus-execute.h"
|
||||
#include "dbus-swap.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "dbus-timer.h"
|
||||
#include "dbus-util.h"
|
||||
#include "strv.h"
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
#include "alloc-util.h"
|
||||
#include "bpf-firewall.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
#include "cgroup-util.h"
|
||||
#include "condition.h"
|
||||
#include "dbus-job.h"
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-log-control-api.h"
|
||||
#include "bus-util.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "def.h"
|
||||
#include "fd-util.h"
|
||||
|
@ -22,8 +22,8 @@
|
|||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "process-util.h"
|
||||
#include "signal-util.h"
|
||||
#include "service-util.h"
|
||||
#include "signal-util.h"
|
||||
#include "socket-util.h"
|
||||
#include "stat-util.h"
|
||||
#include "string-table.h"
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "bootspec.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-error.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-locator.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-unit-util.h"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-label.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-label.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <errno.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
#include "format-util.h"
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
#include <sys/mount.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-label.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
#include "copy.h"
|
||||
#include "dissect-image.h"
|
||||
#include "fd-util.h"
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-internal.h"
|
||||
#include "bus-label.h"
|
||||
#include "bus-locator.h"
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "alloc-util.h"
|
||||
#include "btrfs-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-locator.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "cgroup-util.h"
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
#include "dns-domain.h"
|
||||
#include "networkd-link-bus.h"
|
||||
#include "networkd-link.h"
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-label.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-log-control-api.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
#include "dns-domain.h"
|
||||
#include "memory-util.h"
|
||||
#include "missing_capability.h"
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "bus-util.h"
|
||||
#include "parse-util.h"
|
||||
#include "resolve-util.h"
|
||||
#include "resolved-bus.h"
|
||||
|
|
|
@ -0,0 +1,149 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "bus-get-properties.h"
|
||||
#include "rlimit-util.h"
|
||||
#include "string-util.h"
|
||||
|
||||
int bus_property_get_bool(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
int b = *(bool*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 'b', &b);
|
||||
}
|
||||
|
||||
int bus_property_set_bool(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *value,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
int b, r;
|
||||
|
||||
r = sd_bus_message_read(value, "b", &b);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*(bool*) userdata = b;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bus_property_get_id128(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
sd_id128_t *id = userdata;
|
||||
|
||||
if (sd_id128_is_null(*id)) /* Add an empty array if the ID is zero */
|
||||
return sd_bus_message_append(reply, "ay", 0);
|
||||
else
|
||||
return sd_bus_message_append_array(reply, 'y', id->bytes, 16);
|
||||
}
|
||||
|
||||
#if __SIZEOF_SIZE_T__ != 8
|
||||
int bus_property_get_size(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
uint64_t sz = *(size_t*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 't', &sz);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if __SIZEOF_LONG__ != 8
|
||||
int bus_property_get_long(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
int64_t l = *(long*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 'x', &l);
|
||||
}
|
||||
|
||||
int bus_property_get_ulong(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
uint64_t ul = *(unsigned long*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 't', &ul);
|
||||
}
|
||||
#endif
|
||||
|
||||
int bus_property_get_rlimit(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
const char *is_soft;
|
||||
struct rlimit *rl;
|
||||
uint64_t u;
|
||||
rlim_t x;
|
||||
|
||||
assert(bus);
|
||||
assert(reply);
|
||||
assert(userdata);
|
||||
|
||||
is_soft = endswith(property, "Soft");
|
||||
|
||||
rl = *(struct rlimit**) userdata;
|
||||
if (rl)
|
||||
x = is_soft ? rl->rlim_cur : rl->rlim_max;
|
||||
else {
|
||||
struct rlimit buf = {};
|
||||
const char *s, *p;
|
||||
int z;
|
||||
|
||||
/* Chop off "Soft" suffix */
|
||||
s = is_soft ? strndupa(property, is_soft - property) : property;
|
||||
|
||||
/* Skip over any prefix, such as "Default" */
|
||||
assert_se(p = strstr(s, "Limit"));
|
||||
|
||||
z = rlimit_from_string(p + 5);
|
||||
assert(z >= 0);
|
||||
|
||||
(void) getrlimit(z, &buf);
|
||||
x = is_soft ? buf.rlim_cur : buf.rlim_max;
|
||||
}
|
||||
|
||||
/* rlim_t might have different sizes, let's map RLIMIT_INFINITY to (uint64_t) -1, so that it is the same on all
|
||||
* archs */
|
||||
u = x == RLIM_INFINITY ? (uint64_t) -1 : (uint64_t) x;
|
||||
|
||||
return sd_bus_message_append(reply, "t", u);
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
#pragma once
|
||||
|
||||
#include "sd-bus.h"
|
||||
|
||||
#include "sd-bus.h"
|
||||
|
||||
#include "macro.h"
|
||||
|
||||
int bus_property_get_bool(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
int bus_property_set_bool(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *value, void *userdata, sd_bus_error *error);
|
||||
int bus_property_get_id128(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
|
||||
#define bus_property_get_usec ((sd_bus_property_get_t) NULL)
|
||||
#define bus_property_set_usec ((sd_bus_property_set_t) NULL)
|
||||
|
||||
assert_cc(sizeof(int) == sizeof(int32_t));
|
||||
#define bus_property_get_int ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(unsigned) == sizeof(uint32_t));
|
||||
#define bus_property_get_unsigned ((sd_bus_property_get_t) NULL)
|
||||
|
||||
/* On 64bit machines we can use the default serializer for size_t and
|
||||
* friends, otherwise we need to cast this manually */
|
||||
#if __SIZEOF_SIZE_T__ == 8
|
||||
#define bus_property_get_size ((sd_bus_property_get_t) NULL)
|
||||
#else
|
||||
int bus_property_get_size(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
#endif
|
||||
|
||||
#if __SIZEOF_LONG__ == 8
|
||||
#define bus_property_get_long ((sd_bus_property_get_t) NULL)
|
||||
#define bus_property_get_ulong ((sd_bus_property_get_t) NULL)
|
||||
#else
|
||||
int bus_property_get_long(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
int bus_property_get_ulong(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
#endif
|
||||
|
||||
/* uid_t and friends on Linux 32 bit. This means we can just use the
|
||||
* default serializer for 32bit unsigned, for serializing it, and map
|
||||
* it to NULL here */
|
||||
assert_cc(sizeof(uid_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_uid ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(gid_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_gid ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(pid_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_pid ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(mode_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_mode ((sd_bus_property_get_t) NULL)
|
||||
|
||||
int bus_property_get_rlimit(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
|
||||
#define BUS_DEFINE_PROPERTY_GET_GLOBAL(function, bus_type, val) \
|
||||
int function(sd_bus *bus, \
|
||||
const char *path, \
|
||||
const char *interface, \
|
||||
const char *property, \
|
||||
sd_bus_message *reply, \
|
||||
void *userdata, \
|
||||
sd_bus_error *error) { \
|
||||
\
|
||||
assert(bus); \
|
||||
assert(reply); \
|
||||
\
|
||||
return sd_bus_message_append(reply, bus_type, val); \
|
||||
}
|
||||
|
||||
#define BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, get1, get2) \
|
||||
int function(sd_bus *bus, \
|
||||
const char *path, \
|
||||
const char *interface, \
|
||||
const char *property, \
|
||||
sd_bus_message *reply, \
|
||||
void *userdata, \
|
||||
sd_bus_error *error) { \
|
||||
\
|
||||
data_type *data = userdata; \
|
||||
\
|
||||
assert(bus); \
|
||||
assert(reply); \
|
||||
assert(data); \
|
||||
\
|
||||
return sd_bus_message_append(reply, bus_type, \
|
||||
get2(get1(data))); \
|
||||
}
|
||||
|
||||
#define ident(x) (x)
|
||||
#define BUS_DEFINE_PROPERTY_GET(function, bus_type, data_type, get1) \
|
||||
BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, get1, ident)
|
||||
|
||||
#define ref(x) (*(x))
|
||||
#define BUS_DEFINE_PROPERTY_GET_REF(function, bus_type, data_type, get) \
|
||||
BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, ref, get)
|
||||
|
||||
#define BUS_DEFINE_PROPERTY_GET_ENUM(function, name, type) \
|
||||
BUS_DEFINE_PROPERTY_GET_REF(function, "s", type, name##_to_string)
|
||||
|
||||
#define BUS_PROPERTY_DUAL_TIMESTAMP(name, offset, flags) \
|
||||
SD_BUS_PROPERTY(name, "t", bus_property_get_usec, (offset) + offsetof(struct dual_timestamp, realtime), (flags)), \
|
||||
SD_BUS_PROPERTY(name "Monotonic", "t", bus_property_get_usec, (offset) + offsetof(struct dual_timestamp, monotonic), (flags))
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-log-control-api.h"
|
||||
#include "bus-util.h"
|
||||
#include "log.h"
|
||||
|
|
|
@ -14,15 +14,14 @@
|
|||
#include "sd-event.h"
|
||||
#include "sd-id128.h"
|
||||
|
||||
#include "alloc-util.h"
|
||||
/* #include "alloc-util.h" */
|
||||
#include "bus-internal.h"
|
||||
#include "bus-label.h"
|
||||
#include "bus-util.h"
|
||||
#include "path-util.h"
|
||||
#include "rlimit-util.h"
|
||||
#include "socket-util.h"
|
||||
#include "stdio-util.h"
|
||||
#include "string-util.h"
|
||||
/* #include "string-util.h" */
|
||||
|
||||
static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
|
||||
sd_event *e = userdata;
|
||||
|
@ -333,102 +332,6 @@ int bus_connect_transport_systemd(BusTransport transport, const char *host, bool
|
|||
return r;
|
||||
}
|
||||
|
||||
int bus_property_get_bool(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
int b = *(bool*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 'b', &b);
|
||||
}
|
||||
|
||||
int bus_property_set_bool(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *value,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
int b, r;
|
||||
|
||||
r = sd_bus_message_read(value, "b", &b);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*(bool*) userdata = b;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bus_property_get_id128(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
sd_id128_t *id = userdata;
|
||||
|
||||
if (sd_id128_is_null(*id)) /* Add an empty array if the ID is zero */
|
||||
return sd_bus_message_append(reply, "ay", 0);
|
||||
else
|
||||
return sd_bus_message_append_array(reply, 'y', id->bytes, 16);
|
||||
}
|
||||
|
||||
#if __SIZEOF_SIZE_T__ != 8
|
||||
int bus_property_get_size(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
uint64_t sz = *(size_t*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 't', &sz);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if __SIZEOF_LONG__ != 8
|
||||
int bus_property_get_long(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
int64_t l = *(long*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 'x', &l);
|
||||
}
|
||||
|
||||
int bus_property_get_ulong(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
uint64_t ul = *(unsigned long*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 't', &ul);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* bus_path_encode_unique() - encode unique object path
|
||||
* @b: bus connection or NULL
|
||||
|
@ -556,54 +459,6 @@ int bus_path_decode_unique(const char *path, const char *prefix, char **ret_send
|
|||
return 1;
|
||||
}
|
||||
|
||||
int bus_property_get_rlimit(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
void *userdata,
|
||||
sd_bus_error *error) {
|
||||
|
||||
const char *is_soft;
|
||||
struct rlimit *rl;
|
||||
uint64_t u;
|
||||
rlim_t x;
|
||||
|
||||
assert(bus);
|
||||
assert(reply);
|
||||
assert(userdata);
|
||||
|
||||
is_soft = endswith(property, "Soft");
|
||||
|
||||
rl = *(struct rlimit**) userdata;
|
||||
if (rl)
|
||||
x = is_soft ? rl->rlim_cur : rl->rlim_max;
|
||||
else {
|
||||
struct rlimit buf = {};
|
||||
const char *s, *p;
|
||||
int z;
|
||||
|
||||
/* Chop off "Soft" suffix */
|
||||
s = is_soft ? strndupa(property, is_soft - property) : property;
|
||||
|
||||
/* Skip over any prefix, such as "Default" */
|
||||
assert_se(p = strstr(s, "Limit"));
|
||||
|
||||
z = rlimit_from_string(p + 5);
|
||||
assert(z >= 0);
|
||||
|
||||
(void) getrlimit(z, &buf);
|
||||
x = is_soft ? buf.rlim_cur : buf.rlim_max;
|
||||
}
|
||||
|
||||
/* rlim_t might have different sizes, let's map RLIMIT_INFINITY to (uint64_t) -1, so that it is the same on all
|
||||
* archs */
|
||||
u = x == RLIM_INFINITY ? (uint64_t) -1 : (uint64_t) x;
|
||||
|
||||
return sd_bus_message_append(reply, "t", u);
|
||||
}
|
||||
|
||||
int bus_track_add_name_many(sd_bus_track *t, char **l) {
|
||||
int r = 0;
|
||||
char **i;
|
||||
|
|
|
@ -37,110 +37,15 @@ int bus_connect_user_systemd(sd_bus **_bus);
|
|||
int bus_connect_transport(BusTransport transport, const char *host, bool user, sd_bus **bus);
|
||||
int bus_connect_transport_systemd(BusTransport transport, const char *host, bool user, sd_bus **bus);
|
||||
|
||||
int bus_property_get_bool(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
int bus_property_set_bool(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *value, void *userdata, sd_bus_error *error);
|
||||
int bus_property_get_id128(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
|
||||
#define bus_property_get_usec ((sd_bus_property_get_t) NULL)
|
||||
#define bus_property_set_usec ((sd_bus_property_set_t) NULL)
|
||||
|
||||
assert_cc(sizeof(int) == sizeof(int32_t));
|
||||
#define bus_property_get_int ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(unsigned) == sizeof(uint32_t));
|
||||
#define bus_property_get_unsigned ((sd_bus_property_get_t) NULL)
|
||||
|
||||
/* On 64bit machines we can use the default serializer for size_t and
|
||||
* friends, otherwise we need to cast this manually */
|
||||
#if __SIZEOF_SIZE_T__ == 8
|
||||
#define bus_property_get_size ((sd_bus_property_get_t) NULL)
|
||||
#else
|
||||
int bus_property_get_size(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
#endif
|
||||
|
||||
#if __SIZEOF_LONG__ == 8
|
||||
#define bus_property_get_long ((sd_bus_property_get_t) NULL)
|
||||
#define bus_property_get_ulong ((sd_bus_property_get_t) NULL)
|
||||
#else
|
||||
int bus_property_get_long(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
int bus_property_get_ulong(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
#endif
|
||||
|
||||
/* uid_t and friends on Linux 32 bit. This means we can just use the
|
||||
* default serializer for 32bit unsigned, for serializing it, and map
|
||||
* it to NULL here */
|
||||
assert_cc(sizeof(uid_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_uid ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(gid_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_gid ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(pid_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_pid ((sd_bus_property_get_t) NULL)
|
||||
|
||||
assert_cc(sizeof(mode_t) == sizeof(uint32_t));
|
||||
#define bus_property_get_mode ((sd_bus_property_get_t) NULL)
|
||||
|
||||
#define bus_log_parse_error(r) \
|
||||
log_error_errno(r, "Failed to parse bus message: %m")
|
||||
|
||||
#define bus_log_create_error(r) \
|
||||
log_error_errno(r, "Failed to create bus message: %m")
|
||||
|
||||
#define BUS_DEFINE_PROPERTY_GET_GLOBAL(function, bus_type, val) \
|
||||
int function(sd_bus *bus, \
|
||||
const char *path, \
|
||||
const char *interface, \
|
||||
const char *property, \
|
||||
sd_bus_message *reply, \
|
||||
void *userdata, \
|
||||
sd_bus_error *error) { \
|
||||
\
|
||||
assert(bus); \
|
||||
assert(reply); \
|
||||
\
|
||||
return sd_bus_message_append(reply, bus_type, val); \
|
||||
}
|
||||
|
||||
#define BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, get1, get2) \
|
||||
int function(sd_bus *bus, \
|
||||
const char *path, \
|
||||
const char *interface, \
|
||||
const char *property, \
|
||||
sd_bus_message *reply, \
|
||||
void *userdata, \
|
||||
sd_bus_error *error) { \
|
||||
\
|
||||
data_type *data = userdata; \
|
||||
\
|
||||
assert(bus); \
|
||||
assert(reply); \
|
||||
assert(data); \
|
||||
\
|
||||
return sd_bus_message_append(reply, bus_type, \
|
||||
get2(get1(data))); \
|
||||
}
|
||||
|
||||
#define ident(x) (x)
|
||||
#define BUS_DEFINE_PROPERTY_GET(function, bus_type, data_type, get1) \
|
||||
BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, get1, ident)
|
||||
|
||||
#define ref(x) (*(x))
|
||||
#define BUS_DEFINE_PROPERTY_GET_REF(function, bus_type, data_type, get) \
|
||||
BUS_DEFINE_PROPERTY_GET2(function, bus_type, data_type, ref, get)
|
||||
|
||||
#define BUS_DEFINE_PROPERTY_GET_ENUM(function, name, type) \
|
||||
BUS_DEFINE_PROPERTY_GET_REF(function, "s", type, name##_to_string)
|
||||
|
||||
#define BUS_PROPERTY_DUAL_TIMESTAMP(name, offset, flags) \
|
||||
SD_BUS_PROPERTY(name, "t", bus_property_get_usec, (offset) + offsetof(struct dual_timestamp, realtime), (flags)), \
|
||||
SD_BUS_PROPERTY(name "Monotonic", "t", bus_property_get_usec, (offset) + offsetof(struct dual_timestamp, monotonic), (flags))
|
||||
|
||||
int bus_path_encode_unique(sd_bus *b, const char *prefix, const char *sender_id, const char *external_id, char **ret_path);
|
||||
int bus_path_decode_unique(const char *path, const char *prefix, char **ret_sender, char **ret_external);
|
||||
|
||||
int bus_property_get_rlimit(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
|
||||
|
||||
int bus_track_add_name_many(sd_bus_track *t, char **l);
|
||||
|
||||
int bus_open_system_watch_bind_with_description(sd_bus **ret, const char *description);
|
||||
|
|
|
@ -27,6 +27,8 @@ shared_sources = files('''
|
|||
bpf-program.h
|
||||
bridge-util.c
|
||||
bridge-util.h
|
||||
bus-get-properties.c
|
||||
bus-get-properties.h
|
||||
bus-locator.c
|
||||
bus-locator.h
|
||||
bus-log-control-api.c
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-error.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-locator.h"
|
||||
#include "bus-log-control-api.h"
|
||||
#include "bus-map-properties.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "sd-bus.h"
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-get-properties.h"
|
||||
#include "bus-internal.h"
|
||||
#include "bus-log-control-api.h"
|
||||
#include "bus-protocol.h"
|
||||
|
|
Loading…
Reference in New Issue