12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2, as
- * published by the Free Software Foundation.
- *
- * Copyright (C) 2017 Hari Bathini, IBM Corporation
- */
- #ifndef __PERF_NAMESPACES_H
- #define __PERF_NAMESPACES_H
- #include <sys/types.h>
- #include <linux/stddef.h>
- #include <linux/perf_event.h>
- #include <linux/refcount.h>
- #include <linux/types.h>
- struct namespaces_event;
- struct namespaces {
- struct list_head list;
- u64 end_time;
- struct perf_ns_link_info link_info[];
- };
- struct namespaces *namespaces__new(struct namespaces_event *event);
- void namespaces__free(struct namespaces *namespaces);
- struct nsinfo {
- pid_t pid;
- pid_t tgid;
- pid_t nstgid;
- bool need_setns;
- char *mntns_path;
- refcount_t refcnt;
- };
- struct nscookie {
- int oldns;
- int newns;
- char *oldcwd;
- };
- int nsinfo__init(struct nsinfo *nsi);
- struct nsinfo *nsinfo__new(pid_t pid);
- struct nsinfo *nsinfo__copy(struct nsinfo *nsi);
- void nsinfo__delete(struct nsinfo *nsi);
- struct nsinfo *nsinfo__get(struct nsinfo *nsi);
- void nsinfo__put(struct nsinfo *nsi);
- void nsinfo__mountns_enter(struct nsinfo *nsi, struct nscookie *nc);
- void nsinfo__mountns_exit(struct nscookie *nc);
- char *nsinfo__realpath(const char *path, struct nsinfo *nsi);
- static inline void __nsinfo__zput(struct nsinfo **nsip)
- {
- if (nsip) {
- nsinfo__put(*nsip);
- *nsip = NULL;
- }
- }
- #define nsinfo__zput(nsi) __nsinfo__zput(&nsi)
- #endif /* __PERF_NAMESPACES_H */
|