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

1 // SPDX-License-Identifier: GPL-2.0-only
33 const char *perf_ns__name(unsigned int id)
35 if (id >= ARRAY_SIZE(perf_ns__names))
37 return perf_ns__names[id];
43 u64 link_info_size = ((event ? event->nr_namespaces : NR_NAMESPACES) *
50 namespaces->end_time = -1;
53 memcpy(namespaces->link_info, event->link_info, link_info_size);
72 return -1;
74 while (getline(&statln, &linesz, f) != -1) {
88 *in_pidns = (statln + sizeof("NStgid:") - 1) != nspid;
105 int rv = -1;
107 if (snprintf(oldns, PATH_MAX, "/proc/self/ns/mnt") >= PATH_MAX)
110 if (asprintf(&newns, "/proc/%d/ns/mnt", nsinfo__pid(nsi)) == -1)
123 RC_CHK_ACCESS(nsi)->need_setns = true;
124 RC_CHK_ACCESS(nsi)->mntns_path = newns;
131 if (snprintf(spath, PATH_MAX, "/proc/%d/status", nsinfo__pid(nsi)) >= PATH_MAX)
134 rv = nsinfo__get_nspid(&RC_CHK_ACCESS(nsi)->tgid, &RC_CHK_ACCESS(nsi)->nstgid,
135 &RC_CHK_ACCESS(nsi)->in_pidns, spath);
149 refcount_set(&nsi->refcnt, 1);
165 RC_CHK_ACCESS(nsi)->pid = pid;
166 RC_CHK_ACCESS(nsi)->tgid = pid;
167 RC_CHK_ACCESS(nsi)->nstgid = pid;
169 RC_CHK_ACCESS(nsi)->in_pidns = false;
171 * proc information. In that case, save the pid but don't try to enter
174 if (nsinfo__init(nsi) == -1)
182 return RC_CHK_ACCESS(nsi)->mntns_path;
196 RC_CHK_ACCESS(nnsi)->pid = nsinfo__pid(nsi);
197 RC_CHK_ACCESS(nnsi)->tgid = nsinfo__tgid(nsi);
198 RC_CHK_ACCESS(nnsi)->nstgid = nsinfo__nstgid(nsi);
199 RC_CHK_ACCESS(nnsi)->need_setns = nsinfo__need_setns(nsi);
200 RC_CHK_ACCESS(nnsi)->in_pidns = nsinfo__in_pidns(nsi);
202 RC_CHK_ACCESS(nnsi)->mntns_path = strdup(nsinfo__mntns_path(nsi));
203 if (!RC_CHK_ACCESS(nnsi)->mntns_path) {
214 return &RC_CHK_ACCESS(nsi)->refcnt;
221 zfree(&RC_CHK_ACCESS(nsi)->mntns_path);
246 return RC_CHK_ACCESS(nsi)->need_setns;
251 RC_CHK_ACCESS(nsi)->need_setns = false;
256 return RC_CHK_ACCESS(nsi)->tgid;
261 return RC_CHK_ACCESS(nsi)->nstgid;
266 return RC_CHK_ACCESS(nsi)->pid;
271 return RC_CHK_ACCESS(nsi)->in_pidns;
276 RC_CHK_ACCESS(nsi)->in_pidns = true;
283 int oldns = -1;
284 int newns = -1;
290 nc->oldns = -1;
291 nc->newns = -1;
296 if (snprintf(curpath, PATH_MAX, "/proc/self/ns/mnt") >= PATH_MAX)
314 nc->oldcwd = oldcwd;
315 nc->oldns = oldns;
316 nc->newns = newns;
321 if (oldns > -1)
323 if (newns > -1)
329 if (nc == NULL || nc->oldns == -1 || nc->newns == -1 || !nc->oldcwd)
332 setns(nc->oldns, CLONE_NEWNS);
334 if (nc->oldcwd) {
335 WARN_ON_ONCE(chdir(nc->oldcwd));
336 zfree(&nc->oldcwd);
339 if (nc->oldns > -1) {
340 close(nc->oldns);
341 nc->oldns = -1;
344 if (nc->newns > -1) {
345 close(nc->newns);
346 nc->newns = -1;
379 nsinfo__get_nspid(&tgid, &nstgid, &in_pidns, "/proc/self/status");