linux/fs/xfs/xfs_sysfs.h
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * Copyright (c) 2014 Red Hat, Inc.
   4 * All Rights Reserved.
   5 */
   6
   7#ifndef __XFS_SYSFS_H__
   8#define __XFS_SYSFS_H__
   9
  10extern struct kobj_type xfs_mp_ktype;   /* xfs_mount */
  11extern struct kobj_type xfs_dbg_ktype;  /* debug */
  12extern struct kobj_type xfs_log_ktype;  /* xlog */
  13extern struct kobj_type xfs_stats_ktype;        /* stats */
  14
  15static inline struct xfs_kobj *
  16to_kobj(struct kobject *kobject)
  17{
  18        return container_of(kobject, struct xfs_kobj, kobject);
  19}
  20
  21static inline void
  22xfs_sysfs_release(struct kobject *kobject)
  23{
  24        struct xfs_kobj *kobj = to_kobj(kobject);
  25        complete(&kobj->complete);
  26}
  27
  28static inline int
  29xfs_sysfs_init(
  30        struct xfs_kobj         *kobj,
  31        struct kobj_type        *ktype,
  32        struct xfs_kobj         *parent_kobj,
  33        const char              *name)
  34{
  35        struct kobject          *parent;
  36
  37        parent = parent_kobj ? &parent_kobj->kobject : NULL;
  38        init_completion(&kobj->complete);
  39        return kobject_init_and_add(&kobj->kobject, ktype, parent, "%s", name);
  40}
  41
  42static inline void
  43xfs_sysfs_del(
  44        struct xfs_kobj *kobj)
  45{
  46        kobject_del(&kobj->kobject);
  47        kobject_put(&kobj->kobject);
  48        wait_for_completion(&kobj->complete);
  49}
  50
  51int     xfs_error_sysfs_init(struct xfs_mount *mp);
  52void    xfs_error_sysfs_del(struct xfs_mount *mp);
  53
  54#endif  /* __XFS_SYSFS_H__ */
  55