11da177e4SLinus Torvalds /* 21da177e4SLinus Torvalds * debugfs.h - a tiny little debug file system 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Copyright (C) 2004 Greg Kroah-Hartman <[email protected]> 51da177e4SLinus Torvalds * Copyright (C) 2004 IBM Inc. 61da177e4SLinus Torvalds * 71da177e4SLinus Torvalds * This program is free software; you can redistribute it and/or 81da177e4SLinus Torvalds * modify it under the terms of the GNU General Public License version 91da177e4SLinus Torvalds * 2 as published by the Free Software Foundation. 101da177e4SLinus Torvalds * 111da177e4SLinus Torvalds * debugfs is for people to use instead of /proc or /sys. 121da177e4SLinus Torvalds * See Documentation/DocBook/kernel-api for more details. 131da177e4SLinus Torvalds */ 141da177e4SLinus Torvalds 151da177e4SLinus Torvalds #ifndef _DEBUGFS_H_ 161da177e4SLinus Torvalds #define _DEBUGFS_H_ 171da177e4SLinus Torvalds 181da177e4SLinus Torvalds #include <linux/fs.h> 191da177e4SLinus Torvalds 20a7a76cefSRoland Dreier #include <linux/types.h> 21a7a76cefSRoland Dreier 22a7a76cefSRoland Dreier struct file_operations; 23a7a76cefSRoland Dreier 24dd308bc3SMichael Ellerman struct debugfs_blob_wrapper { 25dd308bc3SMichael Ellerman void *data; 26dd308bc3SMichael Ellerman unsigned long size; 27dd308bc3SMichael Ellerman }; 28dd308bc3SMichael Ellerman 291da177e4SLinus Torvalds #if defined(CONFIG_DEBUG_FS) 301da177e4SLinus Torvalds struct dentry *debugfs_create_file(const char *name, mode_t mode, 311da177e4SLinus Torvalds struct dentry *parent, void *data, 3299ac48f5SArjan van de Ven const struct file_operations *fops); 331da177e4SLinus Torvalds 341da177e4SLinus Torvalds struct dentry *debugfs_create_dir(const char *name, struct dentry *parent); 351da177e4SLinus Torvalds 3666f54963SPeter Oberparleiter struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, 3766f54963SPeter Oberparleiter const char *dest); 3866f54963SPeter Oberparleiter 391da177e4SLinus Torvalds void debugfs_remove(struct dentry *dentry); 401da177e4SLinus Torvalds 41cfc94cdfSJan Kara struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, 42cfc94cdfSJan Kara struct dentry *new_dir, const char *new_name); 43cfc94cdfSJan Kara 441da177e4SLinus Torvalds struct dentry *debugfs_create_u8(const char *name, mode_t mode, 451da177e4SLinus Torvalds struct dentry *parent, u8 *value); 461da177e4SLinus Torvalds struct dentry *debugfs_create_u16(const char *name, mode_t mode, 471da177e4SLinus Torvalds struct dentry *parent, u16 *value); 481da177e4SLinus Torvalds struct dentry *debugfs_create_u32(const char *name, mode_t mode, 491da177e4SLinus Torvalds struct dentry *parent, u32 *value); 508447891fSMichael Ellerman struct dentry *debugfs_create_u64(const char *name, mode_t mode, 518447891fSMichael Ellerman struct dentry *parent, u64 *value); 52*2ebefc50SRobin Getz struct dentry *debugfs_create_x8(const char *name, mode_t mode, 53*2ebefc50SRobin Getz struct dentry *parent, u8 *value); 54*2ebefc50SRobin Getz struct dentry *debugfs_create_x16(const char *name, mode_t mode, 55*2ebefc50SRobin Getz struct dentry *parent, u16 *value); 56*2ebefc50SRobin Getz struct dentry *debugfs_create_x32(const char *name, mode_t mode, 57*2ebefc50SRobin Getz struct dentry *parent, u32 *value); 581da177e4SLinus Torvalds struct dentry *debugfs_create_bool(const char *name, mode_t mode, 591da177e4SLinus Torvalds struct dentry *parent, u32 *value); 601da177e4SLinus Torvalds 61dd308bc3SMichael Ellerman struct dentry *debugfs_create_blob(const char *name, mode_t mode, 62dd308bc3SMichael Ellerman struct dentry *parent, 63dd308bc3SMichael Ellerman struct debugfs_blob_wrapper *blob); 641da177e4SLinus Torvalds #else 65a7a76cefSRoland Dreier 66a7a76cefSRoland Dreier #include <linux/err.h> 67a7a76cefSRoland Dreier 681da177e4SLinus Torvalds /* 691da177e4SLinus Torvalds * We do not return NULL from these functions if CONFIG_DEBUG_FS is not enabled 701da177e4SLinus Torvalds * so users have a chance to detect if there was a real error or not. We don't 711da177e4SLinus Torvalds * want to duplicate the design decision mistakes of procfs and devfs again. 721da177e4SLinus Torvalds */ 731da177e4SLinus Torvalds 741da177e4SLinus Torvalds static inline struct dentry *debugfs_create_file(const char *name, mode_t mode, 75bde11d79SJean Delvare struct dentry *parent, void *data, 76bde11d79SJean Delvare const struct file_operations *fops) 771da177e4SLinus Torvalds { 781da177e4SLinus Torvalds return ERR_PTR(-ENODEV); 791da177e4SLinus Torvalds } 801da177e4SLinus Torvalds 811da177e4SLinus Torvalds static inline struct dentry *debugfs_create_dir(const char *name, 821da177e4SLinus Torvalds struct dentry *parent) 831da177e4SLinus Torvalds { 841da177e4SLinus Torvalds return ERR_PTR(-ENODEV); 851da177e4SLinus Torvalds } 861da177e4SLinus Torvalds 8766f54963SPeter Oberparleiter static inline struct dentry *debugfs_create_symlink(const char *name, 8866f54963SPeter Oberparleiter struct dentry *parent, 8966f54963SPeter Oberparleiter const char *dest) 9066f54963SPeter Oberparleiter { 9166f54963SPeter Oberparleiter return ERR_PTR(-ENODEV); 9266f54963SPeter Oberparleiter } 9366f54963SPeter Oberparleiter 941da177e4SLinus Torvalds static inline void debugfs_remove(struct dentry *dentry) 951da177e4SLinus Torvalds { } 961da177e4SLinus Torvalds 97cfc94cdfSJan Kara static inline struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, 98cfc94cdfSJan Kara struct dentry *new_dir, char *new_name) 99cfc94cdfSJan Kara { 100cfc94cdfSJan Kara return ERR_PTR(-ENODEV); 101cfc94cdfSJan Kara } 102cfc94cdfSJan Kara 1031da177e4SLinus Torvalds static inline struct dentry *debugfs_create_u8(const char *name, mode_t mode, 1041da177e4SLinus Torvalds struct dentry *parent, 1051da177e4SLinus Torvalds u8 *value) 1061da177e4SLinus Torvalds { 1071da177e4SLinus Torvalds return ERR_PTR(-ENODEV); 1081da177e4SLinus Torvalds } 1091da177e4SLinus Torvalds 1101da177e4SLinus Torvalds static inline struct dentry *debugfs_create_u16(const char *name, mode_t mode, 1111da177e4SLinus Torvalds struct dentry *parent, 1127b558637SMichal Ostrowski u16 *value) 1131da177e4SLinus Torvalds { 1141da177e4SLinus Torvalds return ERR_PTR(-ENODEV); 1151da177e4SLinus Torvalds } 1161da177e4SLinus Torvalds 1171da177e4SLinus Torvalds static inline struct dentry *debugfs_create_u32(const char *name, mode_t mode, 1181da177e4SLinus Torvalds struct dentry *parent, 1197b558637SMichal Ostrowski u32 *value) 1201da177e4SLinus Torvalds { 1211da177e4SLinus Torvalds return ERR_PTR(-ENODEV); 1221da177e4SLinus Torvalds } 1231da177e4SLinus Torvalds 1248447891fSMichael Ellerman static inline struct dentry *debugfs_create_u64(const char *name, mode_t mode, 1258447891fSMichael Ellerman struct dentry *parent, 1268447891fSMichael Ellerman u64 *value) 1278447891fSMichael Ellerman { 1288447891fSMichael Ellerman return ERR_PTR(-ENODEV); 1298447891fSMichael Ellerman } 1308447891fSMichael Ellerman 131*2ebefc50SRobin Getz static inline struct dentry *debugfs_create_x8(const char *name, mode_t mode, 132*2ebefc50SRobin Getz struct dentry *parent, 133*2ebefc50SRobin Getz u8 *value) 134*2ebefc50SRobin Getz { 135*2ebefc50SRobin Getz return ERR_PTR(-ENODEV); 136*2ebefc50SRobin Getz } 137*2ebefc50SRobin Getz 138*2ebefc50SRobin Getz static inline struct dentry *debugfs_create_x16(const char *name, mode_t mode, 139*2ebefc50SRobin Getz struct dentry *parent, 140*2ebefc50SRobin Getz u16 *value) 141*2ebefc50SRobin Getz { 142*2ebefc50SRobin Getz return ERR_PTR(-ENODEV); 143*2ebefc50SRobin Getz } 144*2ebefc50SRobin Getz 145*2ebefc50SRobin Getz static inline struct dentry *debugfs_create_x32(const char *name, mode_t mode, 146*2ebefc50SRobin Getz struct dentry *parent, 147*2ebefc50SRobin Getz u32 *value) 148*2ebefc50SRobin Getz { 149*2ebefc50SRobin Getz return ERR_PTR(-ENODEV); 150*2ebefc50SRobin Getz } 151*2ebefc50SRobin Getz 1521da177e4SLinus Torvalds static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode, 1531da177e4SLinus Torvalds struct dentry *parent, 1547b558637SMichal Ostrowski u32 *value) 1551da177e4SLinus Torvalds { 1561da177e4SLinus Torvalds return ERR_PTR(-ENODEV); 1571da177e4SLinus Torvalds } 1581da177e4SLinus Torvalds 159dd308bc3SMichael Ellerman static inline struct dentry *debugfs_create_blob(const char *name, mode_t mode, 160dd308bc3SMichael Ellerman struct dentry *parent, 161dd308bc3SMichael Ellerman struct debugfs_blob_wrapper *blob) 162dd308bc3SMichael Ellerman { 163dd308bc3SMichael Ellerman return ERR_PTR(-ENODEV); 164dd308bc3SMichael Ellerman } 165dd308bc3SMichael Ellerman 1661da177e4SLinus Torvalds #endif 1671da177e4SLinus Torvalds 1681da177e4SLinus Torvalds #endif 169