Merge pull request #1063 from poettering/dbus-interface-from-type
cgls/cgtop: a variety of modernizations
This commit is contained in:
@@ -37,6 +37,14 @@ usec_t now(clockid_t clock_id) {
|
||||
return timespec_load(&ts);
|
||||
}
|
||||
|
||||
nsec_t now_nsec(clockid_t clock_id) {
|
||||
struct timespec ts;
|
||||
|
||||
assert_se(clock_gettime(clock_id, &ts) == 0);
|
||||
|
||||
return timespec_load_nsec(&ts);
|
||||
}
|
||||
|
||||
dual_timestamp* dual_timestamp_get(dual_timestamp *ts) {
|
||||
assert(ts);
|
||||
|
||||
@@ -130,6 +138,18 @@ usec_t timespec_load(const struct timespec *ts) {
|
||||
(usec_t) ts->tv_nsec / NSEC_PER_USEC;
|
||||
}
|
||||
|
||||
nsec_t timespec_load_nsec(const struct timespec *ts) {
|
||||
assert(ts);
|
||||
|
||||
if (ts->tv_sec == (time_t) -1 &&
|
||||
ts->tv_nsec == (long) -1)
|
||||
return NSEC_INFINITY;
|
||||
|
||||
return
|
||||
(nsec_t) ts->tv_sec * NSEC_PER_SEC +
|
||||
(nsec_t) ts->tv_nsec;
|
||||
}
|
||||
|
||||
struct timespec *timespec_store(struct timespec *ts, usec_t u) {
|
||||
assert(ts);
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ typedef struct dual_timestamp {
|
||||
#define DUAL_TIMESTAMP_NULL ((struct dual_timestamp) { 0ULL, 0ULL })
|
||||
|
||||
usec_t now(clockid_t clock);
|
||||
nsec_t now_nsec(clockid_t clock);
|
||||
|
||||
dual_timestamp* dual_timestamp_get(dual_timestamp *ts);
|
||||
dual_timestamp* dual_timestamp_from_realtime(dual_timestamp *ts, usec_t u);
|
||||
@@ -87,6 +88,8 @@ struct timespec *timespec_store(struct timespec *ts, usec_t u);
|
||||
usec_t timeval_load(const struct timeval *tv) _pure_;
|
||||
struct timeval *timeval_store(struct timeval *tv, usec_t u);
|
||||
|
||||
nsec_t timespec_load_nsec(const struct timespec *ts) _pure_;
|
||||
|
||||
char *format_timestamp(char *buf, size_t l, usec_t t);
|
||||
char *format_timestamp_utc(char *buf, size_t l, usec_t t);
|
||||
char *format_timestamp_us(char *buf, size_t l, usec_t t);
|
||||
|
||||
+37
-1
@@ -586,6 +586,42 @@ int unit_name_from_dbus_path(const char *path, char **name) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char* unit_dbus_interface_from_type(UnitType t) {
|
||||
|
||||
static const char *const table[_UNIT_TYPE_MAX] = {
|
||||
[UNIT_SERVICE] = "org.freedesktop.systemd1.Service",
|
||||
[UNIT_SOCKET] = "org.freedesktop.systemd1.Socket",
|
||||
[UNIT_BUSNAME] = "org.freedesktop.systemd1.BusName",
|
||||
[UNIT_TARGET] = "org.freedesktop.systemd1.Target",
|
||||
[UNIT_SNAPSHOT] = "org.freedesktop.systemd1.Snapshot",
|
||||
[UNIT_DEVICE] = "org.freedesktop.systemd1.Device",
|
||||
[UNIT_MOUNT] = "org.freedesktop.systemd1.Mount",
|
||||
[UNIT_AUTOMOUNT] = "org.freedesktop.systemd1.Automount",
|
||||
[UNIT_SWAP] = "org.freedesktop.systemd1.Swap",
|
||||
[UNIT_TIMER] = "org.freedesktop.systemd1.Timer",
|
||||
[UNIT_PATH] = "org.freedesktop.systemd1.Path",
|
||||
[UNIT_SLICE] = "org.freedesktop.systemd1.Slice",
|
||||
[UNIT_SCOPE] = "org.freedesktop.systemd1.Scope",
|
||||
};
|
||||
|
||||
if (t < 0)
|
||||
return NULL;
|
||||
if (t >= _UNIT_TYPE_MAX)
|
||||
return NULL;
|
||||
|
||||
return table[t];
|
||||
}
|
||||
|
||||
const char *unit_dbus_interface_from_name(const char *name) {
|
||||
UnitType t;
|
||||
|
||||
t = unit_name_to_type(name);
|
||||
if (t < 0)
|
||||
return NULL;
|
||||
|
||||
return unit_dbus_interface_from_type(t);
|
||||
}
|
||||
|
||||
static char *do_escape_mangle(const char *f, UnitNameMangle allow_globs, char *t) {
|
||||
const char *valid_chars;
|
||||
|
||||
@@ -787,7 +823,7 @@ static const char* const unit_type_table[_UNIT_TYPE_MAX] = {
|
||||
[UNIT_TIMER] = "timer",
|
||||
[UNIT_PATH] = "path",
|
||||
[UNIT_SLICE] = "slice",
|
||||
[UNIT_SCOPE] = "scope"
|
||||
[UNIT_SCOPE] = "scope",
|
||||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(unit_type, UnitType);
|
||||
|
||||
@@ -152,6 +152,9 @@ int unit_name_to_path(const char *name, char **ret);
|
||||
char *unit_dbus_path_from_name(const char *name);
|
||||
int unit_name_from_dbus_path(const char *path, char **name);
|
||||
|
||||
const char* unit_dbus_interface_from_type(UnitType t);
|
||||
const char *unit_dbus_interface_from_name(const char *name);
|
||||
|
||||
typedef enum UnitNameMangle {
|
||||
UNIT_NAME_NOGLOB,
|
||||
UNIT_NAME_GLOB,
|
||||
|
||||
Reference in New Issue
Block a user