xref: /linux-6.15/include/linux/debugfs.h (revision dd308bc3)
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 
24*dd308bc3SMichael Ellerman struct debugfs_blob_wrapper {
25*dd308bc3SMichael Ellerman 	void *data;
26*dd308bc3SMichael Ellerman 	unsigned long size;
27*dd308bc3SMichael Ellerman };
28*dd308bc3SMichael 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,
321da177e4SLinus Torvalds 				   struct file_operations *fops);
331da177e4SLinus Torvalds 
341da177e4SLinus Torvalds struct dentry *debugfs_create_dir(const char *name, struct dentry *parent);
351da177e4SLinus Torvalds 
361da177e4SLinus Torvalds void debugfs_remove(struct dentry *dentry);
371da177e4SLinus Torvalds 
381da177e4SLinus Torvalds struct dentry *debugfs_create_u8(const char *name, mode_t mode,
391da177e4SLinus Torvalds 				 struct dentry *parent, u8 *value);
401da177e4SLinus Torvalds struct dentry *debugfs_create_u16(const char *name, mode_t mode,
411da177e4SLinus Torvalds 				  struct dentry *parent, u16 *value);
421da177e4SLinus Torvalds struct dentry *debugfs_create_u32(const char *name, mode_t mode,
431da177e4SLinus Torvalds 				  struct dentry *parent, u32 *value);
441da177e4SLinus Torvalds struct dentry *debugfs_create_bool(const char *name, mode_t mode,
451da177e4SLinus Torvalds 				  struct dentry *parent, u32 *value);
461da177e4SLinus Torvalds 
47*dd308bc3SMichael Ellerman struct dentry *debugfs_create_blob(const char *name, mode_t mode,
48*dd308bc3SMichael Ellerman 				  struct dentry *parent,
49*dd308bc3SMichael Ellerman 				  struct debugfs_blob_wrapper *blob);
501da177e4SLinus Torvalds #else
51a7a76cefSRoland Dreier 
52a7a76cefSRoland Dreier #include <linux/err.h>
53a7a76cefSRoland Dreier 
541da177e4SLinus Torvalds /*
551da177e4SLinus Torvalds  * We do not return NULL from these functions if CONFIG_DEBUG_FS is not enabled
561da177e4SLinus Torvalds  * so users have a chance to detect if there was a real error or not.  We don't
571da177e4SLinus Torvalds  * want to duplicate the design decision mistakes of procfs and devfs again.
581da177e4SLinus Torvalds  */
591da177e4SLinus Torvalds 
601da177e4SLinus Torvalds static inline struct dentry *debugfs_create_file(const char *name, mode_t mode,
611da177e4SLinus Torvalds 						 struct dentry *parent,
621da177e4SLinus Torvalds 						 void *data,
631da177e4SLinus Torvalds 						 struct file_operations *fops)
641da177e4SLinus Torvalds {
651da177e4SLinus Torvalds 	return ERR_PTR(-ENODEV);
661da177e4SLinus Torvalds }
671da177e4SLinus Torvalds 
681da177e4SLinus Torvalds static inline struct dentry *debugfs_create_dir(const char *name,
691da177e4SLinus Torvalds 						struct dentry *parent)
701da177e4SLinus Torvalds {
711da177e4SLinus Torvalds 	return ERR_PTR(-ENODEV);
721da177e4SLinus Torvalds }
731da177e4SLinus Torvalds 
741da177e4SLinus Torvalds static inline void debugfs_remove(struct dentry *dentry)
751da177e4SLinus Torvalds { }
761da177e4SLinus Torvalds 
771da177e4SLinus Torvalds static inline struct dentry *debugfs_create_u8(const char *name, mode_t mode,
781da177e4SLinus Torvalds 					       struct dentry *parent,
791da177e4SLinus Torvalds 					       u8 *value)
801da177e4SLinus Torvalds {
811da177e4SLinus Torvalds 	return ERR_PTR(-ENODEV);
821da177e4SLinus Torvalds }
831da177e4SLinus Torvalds 
841da177e4SLinus Torvalds static inline struct dentry *debugfs_create_u16(const char *name, mode_t mode,
851da177e4SLinus Torvalds 						struct dentry *parent,
867b558637SMichal Ostrowski 						u16 *value)
871da177e4SLinus Torvalds {
881da177e4SLinus Torvalds 	return ERR_PTR(-ENODEV);
891da177e4SLinus Torvalds }
901da177e4SLinus Torvalds 
911da177e4SLinus Torvalds static inline struct dentry *debugfs_create_u32(const char *name, mode_t mode,
921da177e4SLinus Torvalds 						struct dentry *parent,
937b558637SMichal Ostrowski 						u32 *value)
941da177e4SLinus Torvalds {
951da177e4SLinus Torvalds 	return ERR_PTR(-ENODEV);
961da177e4SLinus Torvalds }
971da177e4SLinus Torvalds 
981da177e4SLinus Torvalds static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode,
991da177e4SLinus Torvalds 						 struct dentry *parent,
1007b558637SMichal Ostrowski 						 u32 *value)
1011da177e4SLinus Torvalds {
1021da177e4SLinus Torvalds 	return ERR_PTR(-ENODEV);
1031da177e4SLinus Torvalds }
1041da177e4SLinus Torvalds 
105*dd308bc3SMichael Ellerman static inline struct dentry *debugfs_create_blob(const char *name, mode_t mode,
106*dd308bc3SMichael Ellerman 				  struct dentry *parent,
107*dd308bc3SMichael Ellerman 				  struct debugfs_blob_wrapper *blob)
108*dd308bc3SMichael Ellerman {
109*dd308bc3SMichael Ellerman 	return ERR_PTR(-ENODEV);
110*dd308bc3SMichael Ellerman }
111*dd308bc3SMichael Ellerman 
1121da177e4SLinus Torvalds #endif
1131da177e4SLinus Torvalds 
1141da177e4SLinus Torvalds #endif
115