# [['src/test/test-device-nodes.c'],
# [],
# []],
-
-# [['src/test/test-engine.c'],
+#
+# [['src/test/test-engine.c',
+# 'src/test/test-helper.c'],
# [libcore,
# libudev,
# libelogind_internal],
# libselinux,
# libmount,
# libblkid]],
-
+#
# [['src/test/test-job-type.c'],
# [libcore,
# libshared],
# libselinux,
# libmount,
# libblkid]],
-
+#
# [['src/test/test-ns.c'],
# [libcore,
# libshared],
# libmount,
# libblkid],
# '', 'manual'],
-
+#
# [['src/test/test-loopback.c'],
# [libcore,
# libshared],
# libselinux,
# libmount,
# libblkid]],
-
+#
# [['src/test/test-hostname.c'],
# [libcore,
# libshared],
# libmount,
# libblkid],
# '', 'unsafe'],
-
+#
# [['src/test/test-dns-domain.c'],
# [libcore,
# libelogind_network],
# []],
-
+#
# [['src/test/test-boot-timestamps.c'],
# [],
# [],
# 'ENABLE_EFI'],
-
-# [['src/test/test-unit-name.c'],
+#
+# [['src/test/test-unit-name.c',
+# 'src/test/test-helper.c'],
# [libcore,
# libshared],
# [threads,
# libselinux,
# libmount,
# libblkid]],
-
-# [['src/test/test-unit-file.c'],
+#
+# [['src/test/test-unit-file.c',
+# 'src/test/test-helper.c'],
# [libcore,
# libshared],
# [threads,
# [['src/test/test-terminal-util.c'],
# [],
# []],
-
+#
# [['src/test/test-path-lookup.c'],
# [],
# []],
-
+#
# [['src/test/test-uid-range.c'],
# [],
# []],
-
+#
# [['src/test/test-cap-list.c',
# generated_gperf_headers],
# [],
# [libcap]],
-
+#
# [['src/test/test-socket-util.c'],
# [],
# []],
-
+#
# [['src/test/test-barrier.c'],
# [],
# []],
-
+#
# [['src/test/test-tmpfiles.c'],
# [],
# []],
-
+#
# [['src/test/test-namespace.c'],
# [libcore,
# libshared],
# [['src/test/test-install-root.c'],
# [],
# []],
-
+#
# [['src/test/test-acl-util.c'],
# [],
# [],
# 'HAVE_ACL'],
-
+#
# [['src/test/test-seccomp.c'],
# [],
# [libseccomp],
# 'HAVE_SECCOMP'],
-
+#
# [['src/test/test-rlimit-util.c'],
# [],
# []],
-
+#
# [['src/test/test-ask-password-api.c'],
# [],
# [],
# '', 'manual'],
-
+#
# [['src/test/test-dissect-image.c'],
# [],
# [libblkid],
# [['src/test/test-bitmap.c'],
# [],
# []],
-
+#
# [['src/test/test-xml.c'],
# [],
# []],
# [['src/test/test-fileio.c'],
# [],
# []],
-
+#
# [['src/test/test-time.c'],
# [],
# []],
-
+#
# [['src/test/test-clock.c'],
# [],
# []],
-
+#
# [['src/test/test-architecture.c'],
# [],
# []],
# [],
# [],
# '', 'manual'],
-
-
+#
+#
# [['src/test/test-firewall-util.c'],
# [libshared],
# [],
# 'HAVE_LIBIPTC'],
-
+#
# [['src/test/test-netlink-manual.c'],
# [],
# [libkmod],
# [['src/test/test-date.c'],
# [],
# []],
-
+#
# [['src/test/test-sleep.c'],
# [],
# []],
-
+#
# [['src/test/test-replace-var.c'],
# [],
# []],
-
+#
# [['src/test/test-calendarspec.c'],
# [],
# []],
# libselinux,
# libmount,
# libblkid]],
-
+#
# [['src/test/test-cgroup-util.c'],
# [],
# []],
-
+#
# [['src/test/test-env-util.c'],
# [],
# []],
-
+#
# [['src/test/test-strbuf.c'],
# [],
# []],
-
+#
# [['src/test/test-strv.c'],
# [],
# []],
# libselinux,
# libmount,
# libblkid]],
-
-# [['src/test/test-execute.c'],
+#
+# [['src/test/test-execute.c',
+# 'src/test/test-helper.c'],
# [libcore,
# libshared],
# [threads,
# [['src/test/test-strxcpyx.c'],
# [],
# []],
-
+#
# [['src/test/test-install.c'],
# [libcore,
# libshared],
# [],
# '', 'manual'],
-
+#
# [['src/test/test-watchdog.c'],
# [],
# []],
-
-# [['src/test/test-sched-prio.c'],
+#
+# [['src/test/test-sched-prio.c',
+# 'src/test/test-helper.c'],
# [libcore,
# libshared],
# [threads,
# generated_gperf_headers],
# [],
# []],
-
+#
# [['src/test/test-arphrd-list.c',
# generated_gperf_headers],
# [],
# []],
-
+#
# [['src/test/test-journal-importer.c'],
# [],
# []],
-
+#
# [['src/test/test-libudev.c'],
# [libshared],
# []],
-
+#
# [['src/test/test-udev.c'],
# [libudev_core,
# libudev_internal,
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-send.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-syslog.c'],
# [libjournal_core,
# libshared],
# libxz,
# liblz4,
# libselinux]],
-
+#
# [['src/journal/test-journal-match.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-enum.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-stream.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-flush.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-init.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-verify.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-journal-interleaving.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-mmap-cache.c'],
# [libjournal_core,
# libshared],
# [threads,
# libxz,
# liblz4]],
-
+#
# [['src/journal/test-catalog.c'],
# [libjournal_core,
# libshared],
# libxz,
# liblz4],
# '', '', '-DCATALOG_DIR="@0@"'.format(build_catalog_dir)],
-
+#
# [['src/journal/test-compress.c'],
# [libjournal_core,
# libshared],
# [liblz4,
# libxz]],
-
+#
# [['src/journal/test-compress-benchmark.c'],
# [libjournal_core,
# libshared],
# [liblz4,
# libxz],
# '', 'timeout=90'],
-
+#
# [['src/journal/test-audit-type.c'],
# [libjournal_core,
# libshared],
# [['src/libelogind/sd-bus/test-bus-chat.c'],
# [],
# [threads]],
-
+#
# [['src/libelogind/sd-bus/test-bus-cleanup.c'],
# [],
# [threads,
# [libglib,
# libgobject,
# libgio]],
-
+#
# [['src/libelogind/sd-bus/test-bus-creds.c'],
# [],
# []],
# [['src/libelogind/sd-bus/test-bus-kernel.c'],
# [],
# []],
-
+#
# [['src/libelogind/sd-bus/test-bus-kernel-bloom.c'],
# [],
# []],
-
+#
# [['src/libelogind/sd-bus/test-bus-benchmark.c'],
# [],
# [threads]],
-
+#
# [['src/libelogind/sd-bus/test-bus-zero-copy.c'],
# [],
# []],
# [['src/libelogind/sd-netlink/test-netlink.c'],
# [],
# []],
-
+#
# [['src/libelogind/sd-netlink/test-local-addresses.c'],
# [],
# []],
-
+#
# [['src/libelogind/sd-resolve/test-resolve.c'],
# [],
# [threads]],
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-sd-dhcp-lease.c',
# 'src/libelogind-network/dhcp-lease-internal.h'],
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-dhcp-client.c',
# 'src/libelogind-network/dhcp-protocol.h',
# 'src/libelogind-network/dhcp-internal.h',
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-dhcp-server.c'],
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-ipv4ll.c',
# 'src/libelogind-network/arp-util.h',
# 'src/systemd/sd-ipv4ll.h'],
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-ipv4ll-manual.c',
# 'src/systemd/sd-ipv4ll.h'],
# [libshared,
# libelogind_network],
# [],
# '', 'manual'],
-
+#
# [['src/libelogind-network/test-acd.c',
# 'src/systemd/sd-ipv4acd.h'],
# [libshared,
# libelogind_network],
# [],
# '', 'manual'],
-
+#
# [['src/libelogind-network/test-ndisc-rs.c',
# 'src/libelogind-network/dhcp-identifier.h',
# 'src/libelogind-network/dhcp-identifier.c',
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-ndisc-ra.c',
# 'src/libelogind-network/icmp6-util.h',
# 'src/systemd/sd-ndisc.h'],
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-dhcp6-client.c',
# 'src/libelogind-network/dhcp-identifier.h',
# 'src/libelogind-network/dhcp-identifier.c',
# [libshared,
# libelogind_network],
# []],
-
+#
# [['src/libelogind-network/test-lldp.c'],
# [libshared,
# libelogind_network],
[['src/login/test-login-tables.c'],
[liblogind_core,
libshared],
- [threads,
- libaudit,
- libudev]],
+ [threads]],
]
waitpid(pid, &status, 0);
assert_se(!pid_is_unwaited(pid));
}
- assert_se(pid_is_unwaited(getpid()));
+ assert_se(pid_is_unwaited(getpid_cached()));
assert_se(!pid_is_unwaited(-1));
}
waitpid(pid, &status, 0);
assert_se(!pid_is_alive(pid));
}
- assert_se(pid_is_alive(getpid()));
+ assert_se(pid_is_alive(getpid_cached()));
assert_se(!pid_is_alive(-1));
}
assert_se(prctl(PR_SET_NAME, "testa") >= 0);
- assert_se(get_process_cmdline(getpid(), 0, false, &line) == -ENOENT);
+ assert_se(get_process_cmdline(getpid_cached(), 0, false, &line) == -ENOENT);
- assert_se(get_process_cmdline(getpid(), 0, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 0, true, &line) >= 0);
assert_se(streq(line, "[testa]"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 1, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 1, true, &line) >= 0);
assert_se(streq(line, ""));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 2, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 2, true, &line) >= 0);
assert_se(streq(line, "["));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 3, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 3, true, &line) >= 0);
assert_se(streq(line, "[."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 4, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 4, true, &line) >= 0);
assert_se(streq(line, "[.."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 5, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 5, true, &line) >= 0);
assert_se(streq(line, "[..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 6, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 6, true, &line) >= 0);
assert_se(streq(line, "[...]"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 7, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 7, true, &line) >= 0);
assert_se(streq(line, "[t...]"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 8, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 8, true, &line) >= 0);
assert_se(streq(line, "[testa]"));
line = mfree(line);
assert_se(write(fd, "\0\0\0\0\0\0\0\0\0", 10) == 10);
- assert_se(get_process_cmdline(getpid(), 0, false, &line) == -ENOENT);
+ assert_se(get_process_cmdline(getpid_cached(), 0, false, &line) == -ENOENT);
- assert_se(get_process_cmdline(getpid(), 0, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 0, true, &line) >= 0);
assert_se(streq(line, "[testa]"));
line = mfree(line);
assert_se(write(fd, "foo\0bar\0\0\0\0\0", 10) == 10);
- assert_se(get_process_cmdline(getpid(), 0, false, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 0, false, &line) >= 0);
assert_se(streq(line, "foo bar"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 0, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 0, true, &line) >= 0);
assert_se(streq(line, "foo bar"));
line = mfree(line);
assert_se(write(fd, "quux", 4) == 4);
- assert_se(get_process_cmdline(getpid(), 0, false, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 0, false, &line) >= 0);
assert_se(streq(line, "foo bar quux"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 0, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 0, true, &line) >= 0);
assert_se(streq(line, "foo bar quux"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 1, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 1, true, &line) >= 0);
assert_se(streq(line, ""));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 2, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 2, true, &line) >= 0);
assert_se(streq(line, "."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 3, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 3, true, &line) >= 0);
assert_se(streq(line, ".."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 4, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 4, true, &line) >= 0);
assert_se(streq(line, "..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 5, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 5, true, &line) >= 0);
assert_se(streq(line, "f..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 6, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 6, true, &line) >= 0);
assert_se(streq(line, "fo..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 7, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 7, true, &line) >= 0);
assert_se(streq(line, "foo..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 8, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 8, true, &line) >= 0);
assert_se(streq(line, "foo..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 9, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 9, true, &line) >= 0);
assert_se(streq(line, "foo b..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 10, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 10, true, &line) >= 0);
assert_se(streq(line, "foo ba..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 11, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 11, true, &line) >= 0);
assert_se(streq(line, "foo bar..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 12, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 12, true, &line) >= 0);
assert_se(streq(line, "foo bar..."));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 13, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 13, true, &line) >= 0);
assert_se(streq(line, "foo bar quux"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 14, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 14, true, &line) >= 0);
assert_se(streq(line, "foo bar quux"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 1000, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 1000, true, &line) >= 0);
assert_se(streq(line, "foo bar quux"));
line = mfree(line);
assert_se(ftruncate(fd, 0) >= 0);
assert_se(prctl(PR_SET_NAME, "aaaa bbbb cccc") >= 0);
- assert_se(get_process_cmdline(getpid(), 0, false, &line) == -ENOENT);
+ assert_se(get_process_cmdline(getpid_cached(), 0, false, &line) == -ENOENT);
- assert_se(get_process_cmdline(getpid(), 0, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 0, true, &line) >= 0);
assert_se(streq(line, "[aaaa bbbb cccc]"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 10, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 10, true, &line) >= 0);
assert_se(streq(line, "[aaaa...]"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 11, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 11, true, &line) >= 0);
assert_se(streq(line, "[aaaa...]"));
line = mfree(line);
- assert_se(get_process_cmdline(getpid(), 12, true, &line) >= 0);
+ assert_se(get_process_cmdline(getpid_cached(), 12, true, &line) >= 0);
assert_se(streq(line, "[aaaa b...]"));
line = mfree(line);
}
#if 0 /// UNNEEDED by elogind
-static void test_rename_process_one(const char *p, int ret) {
+static void test_rename_process_now(const char *p, int ret) {
_cleanup_free_ char *comm = NULL, *cmdline = NULL;
- pid_t pid;
int r;
- pid = fork();
- assert_se(pid >= 0);
-
- if (pid > 0) {
- siginfo_t si;
-
- assert_se(wait_for_terminate(pid, &si) >= 0);
- assert_se(si.si_code == CLD_EXITED);
- assert_se(si.si_status == EXIT_SUCCESS);
-
- return;
- }
-
- /* child */
r = rename_process(p);
-
assert_se(r == ret ||
(ret == 0 && r >= 0) ||
(ret > 0 && r > 0));
if (r < 0)
- goto finish;
+ return;
#ifdef HAVE_VALGRIND_VALGRIND_H
/* see above, valgrind is weird, we can't verify what we are doing here */
if (RUNNING_ON_VALGRIND)
- goto finish;
+ return;
#endif
assert_se(get_process_comm(0, &comm) >= 0);
assert_se(strneq(comm, p, 15));
assert_se(get_process_cmdline(0, 0, false, &cmdline) >= 0);
- log_info("cmdline = <%s>", cmdline);
- assert_se(strneq(p, cmdline, strlen("test-process-util")));
- assert_se(startswith(p, cmdline));
+ /* we cannot expect cmdline to be renamed properly without privileges */
+ if (geteuid() == 0) {
+ log_info("cmdline = <%s>", cmdline);
+ assert_se(strneq(p, cmdline, strlen("test-process-util")));
+ assert_se(startswith(p, cmdline));
+ } else
+ log_info("cmdline = <%s> (not verified)", cmdline);
+}
+
+static void test_rename_process_one(const char *p, int ret) {
+ siginfo_t si;
+ pid_t pid;
+
+ pid = fork();
+ assert_se(pid >= 0);
+
+ if (pid == 0) {
+ /* child */
+ test_rename_process_now(p, ret);
+ _exit(EXIT_SUCCESS);
+ }
+
+ assert_se(wait_for_terminate(pid, &si) >= 0);
+ assert_se(si.si_code == CLD_EXITED);
+ assert_se(si.si_status == EXIT_SUCCESS);
+}
+
+static void test_rename_process_multi(void) {
+ pid_t pid;
-finish:
+ pid = fork();
+ assert_se(pid >= 0);
+
+ if (pid > 0) {
+ siginfo_t si;
+
+ assert_se(wait_for_terminate(pid, &si) >= 0);
+ assert_se(si.si_code == CLD_EXITED);
+ assert_se(si.si_status == EXIT_SUCCESS);
+
+ return;
+ }
+
+ /* child */
+ test_rename_process_now("one", 1);
+ test_rename_process_now("more", 0); /* longer than "one", hence truncated */
+ setresuid(99, 99, 99);
+ test_rename_process_now("time!", 0);
+ test_rename_process_now("0", 1); /* shorter than "one", should fit */
+ test_rename_process_one("", -EINVAL);
+ test_rename_process_one(NULL, -EINVAL);
_exit(EXIT_SUCCESS);
}
test_rename_process_one("foo", 1); /* should always fit */
test_rename_process_one("this is a really really long process name, followed by some more words", 0); /* unlikely to fit */
test_rename_process_one("1234567", 1); /* should always fit */
+ test_rename_process_multi(); /* multiple invocations and dropped privileges */
+}
+
+static void test_getpid_cached(void) {
+ siginfo_t si;
+ pid_t a, b, c, d, e, f, child;
+
+ a = raw_getpid();
+ b = getpid_cached();
+ c = getpid();
+
+ assert_se(a == b && a == c);
+
+ child = fork();
+ assert_se(child >= 0);
+
+ if (child == 0) {
+ /* In child */
+ a = raw_getpid();
+ b = getpid_cached();
+ c = getpid();
+
+ assert_se(a == b && a == c);
+ _exit(0);
+ }
+
+ d = raw_getpid();
+ e = getpid_cached();
+ f = getpid();
+
+ assert_se(a == d && a == e && a == f);
+
+ assert_se(wait_for_terminate(child, &si) >= 0);
+ assert_se(si.si_status == 0);
+ assert_se(si.si_code == CLD_EXITED);
+}
+
+#define MEASURE_ITERATIONS (10000000LLU)
+
+static void test_getpid_measure(void) {
+ unsigned long long i;
+ usec_t t, q;
+
+ t = now(CLOCK_MONOTONIC);
+ for (i = 0; i < MEASURE_ITERATIONS; i++)
+ (void) getpid();
+ q = now(CLOCK_MONOTONIC) - t;
+
+ log_info(" glibc getpid(): %llu/s\n", (unsigned long long) (MEASURE_ITERATIONS*USEC_PER_SEC/q));
+
+ t = now(CLOCK_MONOTONIC);
+ for (i = 0; i < MEASURE_ITERATIONS; i++)
+ (void) getpid_cached();
+ q = now(CLOCK_MONOTONIC) - t;
+
+ log_info("getpid_cached(): %llu/s\n", (unsigned long long) (MEASURE_ITERATIONS*USEC_PER_SEC/q));
}
#endif // 0
#if 0 /// UNNEEDED by elogind
test_rename_process();
#endif // 0
+ test_getpid_cached();
+ test_getpid_measure();
return 0;
}