summaryrefslogtreecommitdiff
path: root/include/linux/ns_common.h
blob: bc2e0758e1c939cf2ff852c502c69398bd0ce6d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NS_COMMON_H
#define _LINUX_NS_COMMON_H

#include <linux/refcount.h>

struct proc_ns_operations;

struct cgroup_namespace;
struct ipc_namespace;
struct mnt_namespace;
struct net;
struct pid_namespace;
struct time_namespace;
struct user_namespace;
struct uts_namespace;

struct ns_common {
	struct dentry *stashed;
	const struct proc_ns_operations *ops;
	unsigned int inum;
	refcount_t count;
};

#define to_ns_common(__ns)                              \
	_Generic((__ns),                                \
		struct cgroup_namespace *: &(__ns)->ns, \
		struct ipc_namespace *:    &(__ns)->ns, \
		struct mnt_namespace *:    &(__ns)->ns, \
		struct net *:              &(__ns)->ns, \
		struct pid_namespace *:    &(__ns)->ns, \
		struct time_namespace *:   &(__ns)->ns, \
		struct user_namespace *:   &(__ns)->ns, \
		struct uts_namespace *:    &(__ns)->ns)

#endif