]> Pileus Git - ~andy/linux/blobdiff - include/linux/kernfs.h
kernfs, sysfs, driver-core: implement kernfs_remove_self() and its wrappers
[~andy/linux] / include / linux / kernfs.h
index ac8693027058b36a0cbbcef9fe0641f2da0bad28..0b7b7cc352eb0898401363655416b12ac5cc7d65 100644 (file)
@@ -43,6 +43,8 @@ enum kernfs_node_flag {
        KERNFS_HAS_MMAP         = 0x0080,
        KERNFS_LOCKDEP          = 0x0100,
        KERNFS_STATIC_NAME      = 0x0200,
+       KERNFS_SUICIDAL         = 0x0400,
+       KERNFS_SUICIDED         = 0x0800,
 };
 
 /* type-specific structures for kernfs_node union members */
@@ -239,6 +241,7 @@ void kernfs_reactivate(struct kernfs_node *kn);
 void kernfs_deactivate_self(struct kernfs_node *kn);
 void kernfs_reactivate_self(struct kernfs_node *kn);
 void kernfs_remove(struct kernfs_node *kn);
+bool kernfs_remove_self(struct kernfs_node *kn);
 int kernfs_remove_by_name_ns(struct kernfs_node *parent, const char *name,
                             const void *ns);
 int kernfs_rename_ns(struct kernfs_node *kn, struct kernfs_node *new_parent,
@@ -296,6 +299,9 @@ kernfs_create_link(struct kernfs_node *parent, const char *name,
 
 static inline void kernfs_remove(struct kernfs_node *kn) { }
 
+static inline bool kernfs_remove_self(struct kernfs_node *kn)
+{ return false; }
+
 static inline int kernfs_remove_by_name_ns(struct kernfs_node *kn,
                                           const char *name, const void *ns)
 { return -ENOSYS; }