Blame view

kernel/linux-imx6_3.14.28/include/linux/kobject_ns.h 1.9 KB
6b13f685e   김민수   BSP 최초 추가
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  /* Kernel object name space definitions
   *
   * Copyright (c) 2002-2003 Patrick Mochel
   * Copyright (c) 2002-2003 Open Source Development Labs
   * Copyright (c) 2006-2008 Greg Kroah-Hartman <greg@kroah.com>
   * Copyright (c) 2006-2008 Novell Inc.
   *
   * Split from kobject.h by David Howells (dhowells@redhat.com)
   *
   * This file is released under the GPLv2.
   *
   * Please read Documentation/kobject.txt before using the kobject
   * interface, ESPECIALLY the parts about reference counts and object
   * destructors.
   */
  
  #ifndef _LINUX_KOBJECT_NS_H
  #define _LINUX_KOBJECT_NS_H
  
  struct sock;
  struct kobject;
  
  /*
   * Namespace types which are used to tag kobjects and sysfs entries.
   * Network namespace will likely be the first.
   */
  enum kobj_ns_type {
  	KOBJ_NS_TYPE_NONE = 0,
  	KOBJ_NS_TYPE_NET,
  	KOBJ_NS_TYPES
  };
  
  /*
   * Callbacks so sysfs can determine namespaces
   *   @grab_current_ns: return a new reference to calling task's namespace
   *   @netlink_ns: return namespace to which a sock belongs (right?)
   *   @initial_ns: return the initial namespace (i.e. init_net_ns)
   *   @drop_ns: drops a reference to namespace
   */
  struct kobj_ns_type_operations {
  	enum kobj_ns_type type;
  	bool (*current_may_mount)(void);
  	void *(*grab_current_ns)(void);
  	const void *(*netlink_ns)(struct sock *sk);
  	const void *(*initial_ns)(void);
  	void (*drop_ns)(void *);
  };
  
  int kobj_ns_type_register(const struct kobj_ns_type_operations *ops);
  int kobj_ns_type_registered(enum kobj_ns_type type);
  const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent);
  const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj);
  
  bool kobj_ns_current_may_mount(enum kobj_ns_type type);
  void *kobj_ns_grab_current(enum kobj_ns_type type);
  const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk);
  const void *kobj_ns_initial(enum kobj_ns_type type);
  void kobj_ns_drop(enum kobj_ns_type type, void *ns);
  
  #endif /* _LINUX_KOBJECT_NS_H */