Lines Matching +full:proc +full:- +full:id

1 // SPDX-License-Identifier: GPL-2.0-only
33 const char *perf_ns__name(unsigned int id) in perf_ns__name() argument
35 if (id >= ARRAY_SIZE(perf_ns__names)) in perf_ns__name()
37 return perf_ns__names[id]; in perf_ns__name()
43 u64 link_info_size = ((event ? event->nr_namespaces : NR_NAMESPACES) * in namespaces__new()
50 namespaces->end_time = -1; in namespaces__new()
53 memcpy(namespaces->link_info, event->link_info, link_info_size); in namespaces__new()
74 int rv = -1; in nsinfo__init()
76 if (snprintf(oldns, PATH_MAX, "/proc/self/ns/mnt") >= PATH_MAX) in nsinfo__init()
79 if (asprintf(&newns, "/proc/%d/ns/mnt", nsi->pid) == -1) in nsinfo__init()
92 nsi->need_setns = true; in nsinfo__init()
93 nsi->mntns_path = newns; in nsinfo__init()
100 if (snprintf(spath, PATH_MAX, "/proc/%d/status", nsi->pid) >= PATH_MAX) in nsinfo__init()
107 while (getline(&statln, &linesz, f) != -1) { in nsinfo__init()
110 nsi->tgid = (pid_t)strtol(strrchr(statln, '\t'), in nsinfo__init()
112 nsi->nstgid = nsi->tgid; in nsinfo__init()
117 nsi->nstgid = (pid_t)strtol(nspid, NULL, 10); in nsinfo__init()
121 nsi->in_pidns = (statln + sizeof("NStgid:") - 1) != nspid; in nsinfo__init()
144 nsi->pid = pid; in nsinfo__new()
145 nsi->tgid = pid; in nsinfo__new()
146 nsi->nstgid = pid; in nsinfo__new()
147 nsi->need_setns = false; in nsinfo__new()
148 nsi->in_pidns = false; in nsinfo__new()
150 * at its proc information. In that case, save the pid but in nsinfo__new()
153 if (nsinfo__init(nsi) == -1) in nsinfo__new()
154 nsi->need_setns = false; in nsinfo__new()
156 refcount_set(&nsi->refcnt, 1); in nsinfo__new()
171 nnsi->pid = nsi->pid; in nsinfo__copy()
172 nnsi->tgid = nsi->tgid; in nsinfo__copy()
173 nnsi->nstgid = nsi->nstgid; in nsinfo__copy()
174 nnsi->need_setns = nsi->need_setns; in nsinfo__copy()
175 nnsi->in_pidns = nsi->in_pidns; in nsinfo__copy()
176 if (nsi->mntns_path) { in nsinfo__copy()
177 nnsi->mntns_path = strdup(nsi->mntns_path); in nsinfo__copy()
178 if (!nnsi->mntns_path) { in nsinfo__copy()
183 refcount_set(&nnsi->refcnt, 1); in nsinfo__copy()
191 zfree(&nsi->mntns_path); in nsinfo__delete()
198 refcount_inc(&nsi->refcnt); in nsinfo__get()
204 if (nsi && refcount_dec_and_test(&nsi->refcnt)) in nsinfo__put()
212 int oldns = -1; in nsinfo__mountns_enter()
213 int newns = -1; in nsinfo__mountns_enter()
219 nc->oldns = -1; in nsinfo__mountns_enter()
220 nc->newns = -1; in nsinfo__mountns_enter()
222 if (!nsi || !nsi->need_setns) in nsinfo__mountns_enter()
225 if (snprintf(curpath, PATH_MAX, "/proc/self/ns/mnt") >= PATH_MAX) in nsinfo__mountns_enter()
236 newns = open(nsi->mntns_path, O_RDONLY); in nsinfo__mountns_enter()
243 nc->oldcwd = oldcwd; in nsinfo__mountns_enter()
244 nc->oldns = oldns; in nsinfo__mountns_enter()
245 nc->newns = newns; in nsinfo__mountns_enter()
250 if (oldns > -1) in nsinfo__mountns_enter()
252 if (newns > -1) in nsinfo__mountns_enter()
258 if (nc == NULL || nc->oldns == -1 || nc->newns == -1 || !nc->oldcwd) in nsinfo__mountns_exit()
261 setns(nc->oldns, CLONE_NEWNS); in nsinfo__mountns_exit()
263 if (nc->oldcwd) { in nsinfo__mountns_exit()
264 WARN_ON_ONCE(chdir(nc->oldcwd)); in nsinfo__mountns_exit()
265 zfree(&nc->oldcwd); in nsinfo__mountns_exit()
268 if (nc->oldns > -1) { in nsinfo__mountns_exit()
269 close(nc->oldns); in nsinfo__mountns_exit()
270 nc->oldns = -1; in nsinfo__mountns_exit()
273 if (nc->newns > -1) { in nsinfo__mountns_exit()
274 close(nc->newns); in nsinfo__mountns_exit()
275 nc->newns = -1; in nsinfo__mountns_exit()