linux/tools/perf/util/namespaces.h
<<
>>
Prefs
   1/*
   2 * This program is free software; you can redistribute it and/or modify
   3 * it under the terms of the GNU General Public License, version 2, as
   4 * published by the Free Software Foundation.
   5 *
   6 * Copyright (C) 2017 Hari Bathini, IBM Corporation
   7 */
   8
   9#ifndef __PERF_NAMESPACES_H
  10#define __PERF_NAMESPACES_H
  11
  12#include <sys/types.h>
  13#include <linux/stddef.h>
  14#include <linux/perf_event.h>
  15#include <linux/refcount.h>
  16#include <linux/types.h>
  17
  18struct namespaces_event;
  19
  20struct namespaces {
  21        struct list_head list;
  22        u64 end_time;
  23        struct perf_ns_link_info link_info[];
  24};
  25
  26struct namespaces *namespaces__new(struct namespaces_event *event);
  27void namespaces__free(struct namespaces *namespaces);
  28
  29struct nsinfo {
  30        pid_t                   pid;
  31        pid_t                   tgid;
  32        pid_t                   nstgid;
  33        bool                    need_setns;
  34        char                    *mntns_path;
  35        refcount_t              refcnt;
  36};
  37
  38struct nscookie {
  39        int                     oldns;
  40        int                     newns;
  41};
  42
  43int nsinfo__init(struct nsinfo *nsi);
  44struct nsinfo *nsinfo__new(pid_t pid);
  45struct nsinfo *nsinfo__copy(struct nsinfo *nsi);
  46void nsinfo__delete(struct nsinfo *nsi);
  47
  48struct nsinfo *nsinfo__get(struct nsinfo *nsi);
  49void nsinfo__put(struct nsinfo *nsi);
  50
  51void nsinfo__mountns_enter(struct nsinfo *nsi, struct nscookie *nc);
  52void nsinfo__mountns_exit(struct nscookie *nc);
  53
  54char *nsinfo__realpath(const char *path, struct nsinfo *nsi);
  55
  56static inline void __nsinfo__zput(struct nsinfo **nsip)
  57{
  58        if (nsip) {
  59                nsinfo__put(*nsip);
  60                *nsip = NULL;
  61        }
  62}
  63
  64#define nsinfo__zput(nsi) __nsinfo__zput(&nsi)
  65
  66#endif  /* __PERF_NAMESPACES_H */
  67