whiterose

linux unikernel
Log | Files | Refs | README | LICENSE | git clone https://git.ne02ptzero.me/git/whiterose

namespaces.h (1521B)


      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 
     18 struct namespaces_event;
     19 
     20 struct namespaces {
     21 	struct list_head list;
     22 	u64 end_time;
     23 	struct perf_ns_link_info link_info[];
     24 };
     25 
     26 struct namespaces *namespaces__new(struct namespaces_event *event);
     27 void namespaces__free(struct namespaces *namespaces);
     28 
     29 struct 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 
     38 struct nscookie {
     39 	int			oldns;
     40 	int			newns;
     41 	char			*oldcwd;
     42 };
     43 
     44 int nsinfo__init(struct nsinfo *nsi);
     45 struct nsinfo *nsinfo__new(pid_t pid);
     46 struct nsinfo *nsinfo__copy(struct nsinfo *nsi);
     47 void nsinfo__delete(struct nsinfo *nsi);
     48 
     49 struct nsinfo *nsinfo__get(struct nsinfo *nsi);
     50 void nsinfo__put(struct nsinfo *nsi);
     51 
     52 void nsinfo__mountns_enter(struct nsinfo *nsi, struct nscookie *nc);
     53 void nsinfo__mountns_exit(struct nscookie *nc);
     54 
     55 char *nsinfo__realpath(const char *path, struct nsinfo *nsi);
     56 
     57 static inline void __nsinfo__zput(struct nsinfo **nsip)
     58 {
     59 	if (nsip) {
     60 		nsinfo__put(*nsip);
     61 		*nsip = NULL;
     62 	}
     63 }
     64 
     65 #define nsinfo__zput(nsi) __nsinfo__zput(&nsi)
     66 
     67 #endif  /* __PERF_NAMESPACES_H */