linux/include/linux/debugfs.h
<<
>>
Prefs
   1/*
   2 *  debugfs.h - a tiny little debug file system
   3 *
   4 *  Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
   5 *  Copyright (C) 2004 IBM Inc.
   6 *
   7 *      This program is free software; you can redistribute it and/or
   8 *      modify it under the terms of the GNU General Public License version
   9 *      2 as published by the Free Software Foundation.
  10 *
  11 *  debugfs is for people to use instead of /proc or /sys.
  12 *  See Documentation/DocBook/filesystems for more details.
  13 */
  14
  15#ifndef _DEBUGFS_H_
  16#define _DEBUGFS_H_
  17
  18#include <linux/fs.h>
  19#include <linux/seq_file.h>
  20
  21#include <linux/types.h>
  22
  23struct file_operations;
  24
  25struct debugfs_blob_wrapper {
  26        void *data;
  27        unsigned long size;
  28};
  29
  30struct debugfs_reg32 {
  31        char *name;
  32        unsigned long offset;
  33};
  34
  35struct debugfs_regset32 {
  36        const struct debugfs_reg32 *regs;
  37        int nregs;
  38        void __iomem *base;
  39};
  40
  41extern struct dentry *arch_debugfs_dir;
  42
  43#if defined(CONFIG_DEBUG_FS)
  44
  45/* declared over in file.c */
  46extern const struct file_operations debugfs_file_operations;
  47extern const struct inode_operations debugfs_link_operations;
  48
  49struct dentry *debugfs_create_file(const char *name, umode_t mode,
  50                                   struct dentry *parent, void *data,
  51                                   const struct file_operations *fops);
  52
  53struct dentry *debugfs_create_dir(const char *name, struct dentry *parent);
  54
  55struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent,
  56                                      const char *dest);
  57
  58void debugfs_remove(struct dentry *dentry);
  59void debugfs_remove_recursive(struct dentry *dentry);
  60
  61struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry,
  62                struct dentry *new_dir, const char *new_name);
  63
  64struct dentry *debugfs_create_u8(const char *name, umode_t mode,
  65                                 struct dentry *parent, u8 *value);
  66struct dentry *debugfs_create_u16(const char *name, umode_t mode,
  67                                  struct dentry *parent, u16 *value);
  68struct dentry *debugfs_create_u32(const char *name, umode_t mode,
  69                                  struct dentry *parent, u32 *value);
  70struct dentry *debugfs_create_u64(const char *name, umode_t mode,
  71                                  struct dentry *parent, u64 *value);
  72struct dentry *debugfs_create_x8(const char *name, umode_t mode,
  73                                 struct dentry *parent, u8 *value);
  74struct dentry *debugfs_create_x16(const char *name, umode_t mode,
  75                                  struct dentry *parent, u16 *value);
  76struct dentry *debugfs_create_x32(const char *name, umode_t mode,
  77                                  struct dentry *parent, u32 *value);
  78struct dentry *debugfs_create_x64(const char *name, umode_t mode,
  79                                  struct dentry *parent, u64 *value);
  80struct dentry *debugfs_create_size_t(const char *name, umode_t mode,
  81                                     struct dentry *parent, size_t *value);
  82struct dentry *debugfs_create_atomic_t(const char *name, umode_t mode,
  83                                     struct dentry *parent, atomic_t *value);
  84struct dentry *debugfs_create_bool(const char *name, umode_t mode,
  85                                  struct dentry *parent, u32 *value);
  86
  87struct dentry *debugfs_create_blob(const char *name, umode_t mode,
  88                                  struct dentry *parent,
  89                                  struct debugfs_blob_wrapper *blob);
  90
  91struct dentry *debugfs_create_regset32(const char *name, umode_t mode,
  92                                     struct dentry *parent,
  93                                     struct debugfs_regset32 *regset);
  94
  95int debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs,
  96                         int nregs, void __iomem *base, char *prefix);
  97
  98struct dentry *debugfs_create_u32_array(const char *name, umode_t mode,
  99                                        struct dentry *parent,
 100                                        u32 *array, u32 elements);
 101
 102bool debugfs_initialized(void);
 103
 104#else
 105
 106#include <linux/err.h>
 107
 108/* 
 109 * We do not return NULL from these functions if CONFIG_DEBUG_FS is not enabled
 110 * so users have a chance to detect if there was a real error or not.  We don't
 111 * want to duplicate the design decision mistakes of procfs and devfs again.
 112 */
 113
 114static inline struct dentry *debugfs_create_file(const char *name, umode_t mode,
 115                                        struct dentry *parent, void *data,
 116                                        const struct file_operations *fops)
 117{
 118        return ERR_PTR(-ENODEV);
 119}
 120
 121static inline struct dentry *debugfs_create_dir(const char *name,
 122                                                struct dentry *parent)
 123{
 124        return ERR_PTR(-ENODEV);
 125}
 126
 127static inline struct dentry *debugfs_create_symlink(const char *name,
 128                                                    struct dentry *parent,
 129                                                    const char *dest)
 130{
 131        return ERR_PTR(-ENODEV);
 132}
 133
 134static inline void debugfs_remove(struct dentry *dentry)
 135{ }
 136
 137static inline void debugfs_remove_recursive(struct dentry *dentry)
 138{ }
 139
 140static inline struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry,
 141                struct dentry *new_dir, char *new_name)
 142{
 143        return ERR_PTR(-ENODEV);
 144}
 145
 146static inline struct dentry *debugfs_create_u8(const char *name, umode_t mode,
 147                                               struct dentry *parent,
 148                                               u8 *value)
 149{
 150        return ERR_PTR(-ENODEV);
 151}
 152
 153static inline struct dentry *debugfs_create_u16(const char *name, umode_t mode,
 154                                                struct dentry *parent,
 155                                                u16 *value)
 156{
 157        return ERR_PTR(-ENODEV);
 158}
 159
 160static inline struct dentry *debugfs_create_u32(const char *name, umode_t mode,
 161                                                struct dentry *parent,
 162                                                u32 *value)
 163{
 164        return ERR_PTR(-ENODEV);
 165}
 166
 167static inline struct dentry *debugfs_create_u64(const char *name, umode_t mode,
 168                                                struct dentry *parent,
 169                                                u64 *value)
 170{
 171        return ERR_PTR(-ENODEV);
 172}
 173
 174static inline struct dentry *debugfs_create_x8(const char *name, umode_t mode,
 175                                               struct dentry *parent,
 176                                               u8 *value)
 177{
 178        return ERR_PTR(-ENODEV);
 179}
 180
 181static inline struct dentry *debugfs_create_x16(const char *name, umode_t mode,
 182                                                struct dentry *parent,
 183                                                u16 *value)
 184{
 185        return ERR_PTR(-ENODEV);
 186}
 187
 188static inline struct dentry *debugfs_create_x32(const char *name, umode_t mode,
 189                                                struct dentry *parent,
 190                                                u32 *value)
 191{
 192        return ERR_PTR(-ENODEV);
 193}
 194
 195static inline struct dentry *debugfs_create_size_t(const char *name, umode_t mode,
 196                                     struct dentry *parent,
 197                                     size_t *value)
 198{
 199        return ERR_PTR(-ENODEV);
 200}
 201
 202static inline struct dentry *debugfs_create_bool(const char *name, umode_t mode,
 203                                                 struct dentry *parent,
 204                                                 u32 *value)
 205{
 206        return ERR_PTR(-ENODEV);
 207}
 208
 209static inline struct dentry *debugfs_create_blob(const char *name, umode_t mode,
 210                                  struct dentry *parent,
 211                                  struct debugfs_blob_wrapper *blob)
 212{
 213        return ERR_PTR(-ENODEV);
 214}
 215
 216static inline struct dentry *debugfs_create_regset32(const char *name,
 217                                   umode_t mode, struct dentry *parent,
 218                                   struct debugfs_regset32 *regset)
 219{
 220        return ERR_PTR(-ENODEV);
 221}
 222
 223static inline bool debugfs_initialized(void)
 224{
 225        return false;
 226}
 227
 228static inline struct dentry *debugfs_create_u32_array(const char *name, umode_t mode,
 229                                        struct dentry *parent,
 230                                        u32 *array, u32 elements)
 231{
 232        return ERR_PTR(-ENODEV);
 233}
 234
 235#endif
 236
 237#endif
 238