linux/tools/perf/util/namespaces.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 *
   4 * Copyright (C) 2017 Hari Bathini, IBM Corporation
   5 */
   6
   7#ifndef __PERF_NAMESPACES_H
   8#define __PERF_NAMESPACES_H
   9
  10#include <sys/types.h>
  11#include <sys/stat.h>
  12#include <linux/stddef.h>
  13#include <linux/perf_event.h>
  14#include <linux/refcount.h>
  15#include <linux/types.h>
  16
  17#ifndef HAVE_SETNS_SUPPORT
  18int setns(int fd, int nstype);
  19#endif
  20
  21struct perf_record_namespaces;
  22
  23struct namespaces {
  24        struct list_head list;
  25        u64 end_time;
  26        struct perf_ns_link_info link_info[];
  27};
  28
  29struct namespaces *namespaces__new(struct perf_record_namespaces *event);
  30void namespaces__free(struct namespaces *namespaces);
  31
  32struct nsinfo {
  33        pid_t                   pid;
  34        pid_t                   tgid;
  35        pid_t                   nstgid;
  36        bool                    need_setns;
  37        bool                    in_pidns;
  38        char                    *mntns_path;
  39        refcount_t              refcnt;
  40};
  41
  42struct nscookie {
  43        int                     oldns;
  44        int                     newns;
  45        char                    *oldcwd;
  46};
  47
  48int nsinfo__init(struct nsinfo *nsi);
  49struct nsinfo *nsinfo__new(pid_t pid);
  50struct nsinfo *nsinfo__copy(struct nsinfo *nsi);
  51void nsinfo__delete(struct nsinfo *nsi);
  52
  53struct nsinfo *nsinfo__get(struct nsinfo *nsi);
  54void nsinfo__put(struct nsinfo *nsi);
  55
  56void nsinfo__mountns_enter(struct nsinfo *nsi, struct nscookie *nc);
  57void nsinfo__mountns_exit(struct nscookie *nc);
  58
  59char *nsinfo__realpath(const char *path, struct nsinfo *nsi);
  60int nsinfo__stat(const char *filename, struct stat *st, struct nsinfo *nsi);
  61
  62static inline void __nsinfo__zput(struct nsinfo **nsip)
  63{
  64        if (nsip) {
  65                nsinfo__put(*nsip);
  66                *nsip = NULL;
  67        }
  68}
  69
  70#define nsinfo__zput(nsi) __nsinfo__zput(&nsi)
  71
  72const char *perf_ns__name(unsigned int id);
  73
  74#endif  /* __PERF_NAMESPACES_H */
  75