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()
72 return -1; in nsinfo__get_nspid()
74 while (getline(&statln, &linesz, f) != -1) { in nsinfo__get_nspid()
88 *in_pidns = (statln + sizeof("NStgid:") - 1) != nspid; in nsinfo__get_nspid()
105 int rv = -1; in nsinfo__init()
107 if (snprintf(oldns, PATH_MAX, "/proc/self/ns/mnt") >= PATH_MAX) in nsinfo__init()
110 if (asprintf(&newns, "/proc/%d/ns/mnt", nsinfo__pid(nsi)) == -1) in nsinfo__init()
123 RC_CHK_ACCESS(nsi)->need_setns = true; in nsinfo__init()
124 RC_CHK_ACCESS(nsi)->mntns_path = newns; in nsinfo__init()
131 if (snprintf(spath, PATH_MAX, "/proc/%d/status", nsinfo__pid(nsi)) >= PATH_MAX) in nsinfo__init()
134 rv = nsinfo__get_nspid(&RC_CHK_ACCESS(nsi)->tgid, &RC_CHK_ACCESS(nsi)->nstgid, in nsinfo__init()
135 &RC_CHK_ACCESS(nsi)->in_pidns, spath); in nsinfo__init()
149 refcount_set(&nsi->refcnt, 1); in nsinfo__alloc()
165 RC_CHK_ACCESS(nsi)->pid = pid; in nsinfo__new()
166 RC_CHK_ACCESS(nsi)->tgid = pid; in nsinfo__new()
167 RC_CHK_ACCESS(nsi)->nstgid = pid; in nsinfo__new()
169 RC_CHK_ACCESS(nsi)->in_pidns = false; in nsinfo__new()
171 * proc information. In that case, save the pid but don't try to enter in nsinfo__new()
174 if (nsinfo__init(nsi) == -1) in nsinfo__new()
182 return RC_CHK_ACCESS(nsi)->mntns_path; in nsinfo__mntns_path()
196 RC_CHK_ACCESS(nnsi)->pid = nsinfo__pid(nsi); in nsinfo__copy()
197 RC_CHK_ACCESS(nnsi)->tgid = nsinfo__tgid(nsi); in nsinfo__copy()
198 RC_CHK_ACCESS(nnsi)->nstgid = nsinfo__nstgid(nsi); in nsinfo__copy()
199 RC_CHK_ACCESS(nnsi)->need_setns = nsinfo__need_setns(nsi); in nsinfo__copy()
200 RC_CHK_ACCESS(nnsi)->in_pidns = nsinfo__in_pidns(nsi); in nsinfo__copy()
202 RC_CHK_ACCESS(nnsi)->mntns_path = strdup(nsinfo__mntns_path(nsi)); in nsinfo__copy()
203 if (!RC_CHK_ACCESS(nnsi)->mntns_path) { in nsinfo__copy()
214 return &RC_CHK_ACCESS(nsi)->refcnt; in nsinfo__refcnt()
221 zfree(&RC_CHK_ACCESS(nsi)->mntns_path); in nsinfo__delete()
246 return RC_CHK_ACCESS(nsi)->need_setns; in nsinfo__need_setns()
251 RC_CHK_ACCESS(nsi)->need_setns = false; in nsinfo__clear_need_setns()
256 return RC_CHK_ACCESS(nsi)->tgid; in nsinfo__tgid()
261 return RC_CHK_ACCESS(nsi)->nstgid; in nsinfo__nstgid()
266 return RC_CHK_ACCESS(nsi)->pid; in nsinfo__pid()
271 return RC_CHK_ACCESS(nsi)->in_pidns; in nsinfo__in_pidns()
278 int oldns = -1; in nsinfo__mountns_enter()
279 int newns = -1; in nsinfo__mountns_enter()
285 nc->oldns = -1; in nsinfo__mountns_enter()
286 nc->newns = -1; in nsinfo__mountns_enter()
291 if (snprintf(curpath, PATH_MAX, "/proc/self/ns/mnt") >= PATH_MAX) in nsinfo__mountns_enter()
309 nc->oldcwd = oldcwd; in nsinfo__mountns_enter()
310 nc->oldns = oldns; in nsinfo__mountns_enter()
311 nc->newns = newns; in nsinfo__mountns_enter()
316 if (oldns > -1) in nsinfo__mountns_enter()
318 if (newns > -1) in nsinfo__mountns_enter()
324 if (nc == NULL || nc->oldns == -1 || nc->newns == -1 || !nc->oldcwd) in nsinfo__mountns_exit()
327 setns(nc->oldns, CLONE_NEWNS); in nsinfo__mountns_exit()
329 if (nc->oldcwd) { in nsinfo__mountns_exit()
330 WARN_ON_ONCE(chdir(nc->oldcwd)); in nsinfo__mountns_exit()
331 zfree(&nc->oldcwd); in nsinfo__mountns_exit()
334 if (nc->oldns > -1) { in nsinfo__mountns_exit()
335 close(nc->oldns); in nsinfo__mountns_exit()
336 nc->oldns = -1; in nsinfo__mountns_exit()
339 if (nc->newns > -1) { in nsinfo__mountns_exit()
340 close(nc->newns); in nsinfo__mountns_exit()
341 nc->newns = -1; in nsinfo__mountns_exit()
374 nsinfo__get_nspid(&tgid, &nstgid, &in_pidns, "/proc/self/status"); in nsinfo__is_in_root_namespace()