blob: 11670388e39bb46dd596d7597515fdbca597a988 [file] [log] [blame]
#ifndef __BACKPORT_DEBUGFS_H_
#define __BACKPORT_DEBUGFS_H_
#include_next <linux/debugfs.h>
#include <linux/version.h>
#include <linux/device.h>
#include <generated/utsrelease.h>
#if LINUX_VERSION_IS_LESS(3,19,0)
#define debugfs_create_devm_seqfile LINUX_BACKPORT(debugfs_create_devm_seqfile)
#if defined(CONFIG_DEBUG_FS)
struct dentry *debugfs_create_devm_seqfile(struct device *dev, const char *name,
struct dentry *parent,
int (*read_fn)(struct seq_file *s,
void *data));
#else
static inline struct dentry *debugfs_create_devm_seqfile(struct device *dev,
const char *name,
struct dentry *parent,
int (*read_fn)(struct seq_file *s,
void *data))
{
return ERR_PTR(-ENODEV);
}
#endif /* CONFIG_DEBUG_FS */
#endif /* LINUX_VERSION_IS_LESS(3,19,0) */
#if LINUX_VERSION_IS_LESS(4,4,0)
#define debugfs_create_bool LINUX_BACKPORT(debugfs_create_bool)
#ifdef CONFIG_DEBUG_FS
struct dentry *debugfs_create_bool(const char *name, umode_t mode,
struct dentry *parent, bool *value);
#else
static inline struct dentry *
debugfs_create_bool(const char *name, umode_t mode,
struct dentry *parent, bool *value)
{
return ERR_PTR(-ENODEV);
}
#endif
#endif /* LINUX_VERSION_IS_LESS(4,4,0) */
#if LINUX_VERSION_IS_LESS(4,9,0) && \
!LINUX_VERSION_IN_RANGE(4,8,4, 4,9,0) && \
!LINUX_VERSION_IN_RANGE(4,7,10, 4,8,0)
static inline const struct file_operations *
debugfs_real_fops(const struct file *filp)
{
/*
* Neither the pointer to the struct file_operations, nor its
* contents ever change -- srcu_dereference() is not needed here.
*/
return filp->f_path.dentry->d_fsdata;
}
#endif /* <4.9.0 but not >= 4.8.4, 4.7.10 */
#endif /* __BACKPORT_DEBUGFS_H_ */