File: /Users/paulross/dev/linux/linux-3.13/include/linux/kobject_ns.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /* Kernel object name space definitions
       2:  *
       3:  * Copyright (c) 2002-2003 Patrick Mochel
       4:  * Copyright (c) 2002-2003 Open Source Development Labs
       5:  * Copyright (c) 2006-2008 Greg Kroah-Hartman <greg@kroah.com>
       6:  * Copyright (c) 2006-2008 Novell Inc.
       7:  *
       8:  * Split from kobject.h by David Howells (dhowells@redhat.com)
       9:  *
      10:  * This file is released under the GPLv2.
      11:  *
      12:  * Please read Documentation/kobject.txt before using the kobject
      13:  * interface, ESPECIALLY the parts about reference counts and object
      14:  * destructors.
      15:  */
      16: 
      17: #ifndef _LINUX_KOBJECT_NS_H
      18: #define _LINUX_KOBJECT_NS_H
      19: 
      20: struct sock;
      21: struct kobject;
      22: 
      23: /*
      24:  * Namespace types which are used to tag kobjects and sysfs entries.
      25:  * Network namespace will likely be the first.
      26:  */
      27: enum kobj_ns_type {
      28:     KOBJ_NS_TYPE_NONE = 0,
      29:     KOBJ_NS_TYPE_NET,
      30:     KOBJ_NS_TYPES
      31: };
      32: 
      33: /*
      34:  * Callbacks so sysfs can determine namespaces
      35:  *   @grab_current_ns: return a new reference to calling task's namespace
      36:  *   @netlink_ns: return namespace to which a sock belongs (right?)
      37:  *   @initial_ns: return the initial namespace (i.e. init_net_ns)
      38:  *   @drop_ns: drops a reference to namespace
      39:  */
      40: struct kobj_ns_type_operations {
      41:     enum kobj_ns_type type;
      42:     bool (*current_may_mount)(void);
      43:     void *(*grab_current_ns)(void);
      44:     const void *(*netlink_ns)(struct sock *sk);
      45:     const void *(*initial_ns)(void);
      46:     void (*drop_ns)(void *);
      47: };
      48: 
      49: int kobj_ns_type_register(const struct kobj_ns_type_operations *ops);
      50: int kobj_ns_type_registered(enum kobj_ns_type type);
      51: const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent);
      52: const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj);
      53: 
      54: bool kobj_ns_current_may_mount(enum kobj_ns_type type);
      55: void *kobj_ns_grab_current(enum kobj_ns_type type);
      56: const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk);
      57: const void *kobj_ns_initial(enum kobj_ns_type type);
      58: void kobj_ns_drop(enum kobj_ns_type type, void *ns);
      59: 
      60: #endif /* _LINUX_KOBJECT_NS_H */
      61: