/*
* Copyright (C) 2019 Michael Jeanson <mjeanson@efficios.com>
*
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation; version 2.1 of the License.
+ * SPDX-License-Identifier: LGPL-2.1-only
*
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _GNU_SOURCE
#ifndef CLONE_NEWNET
#define CLONE_NEWNET 0x40000000
#endif
+#ifndef CLONE_NEWTIME
+#define CLONE_NEWTIME 0x00000080
+#endif
static int nr_iter = 100;
static int debug = 0;
static int get_ns_inum(const char *ns, ino_t *ns_inum)
{
- int ret = 0;
+ int ret = -1;
struct stat sb;
char proc_ns_path[LTTNG_PROC_NS_PATH_MAX];
"/proc/thread-self/ns/%s", ns) >= 0) {
if (stat(proc_ns_path, &sb) == 0) {
*ns_inum = sb.st_ino;
- } else {
- ret = -1;
+ ret = 0;
}
goto end;
}
"/proc/self/task/%d/%s/net", lttng_gettid(), ns) >= 0) {
if (stat(proc_ns_path, &sb) == 0) {
*ns_inum = sb.st_ino;
- } else {
- ret = -1;
+ ret = 0;
}
goto end;
}
goto end;
}
- if (strncmp(ns_opt, "cgroup", 3) == 0) {
+ if (strncmp(ns_opt, "cgroup", 6) == 0) {
ret = do_the_needful(CLONE_NEWCGROUP, "cgroup");
} else if (strncmp(ns_opt, "ipc", 3) == 0) {
ret = do_the_needful(CLONE_NEWIPC, "ipc");
ret = do_the_needful(CLONE_NEWNET, "net");
} else if (strncmp(ns_opt, "pid", 3) == 0) {
ret = do_the_needful(CLONE_NEWPID, "pid");
- } else if (strncmp(ns_opt, "user", 3) == 0) {
+ } else if (strncmp(ns_opt, "time", 4) == 0) {
+ ret = do_the_needful(CLONE_NEWTIME, "time");
+ } else if (strncmp(ns_opt, "user", 4) == 0) {
/*
* Will always fail, requires a single threaded application,
* which can't happen with UST.