diff -r 7693635f3e97 drivers/xen/sfc_netback/accel_debugfs.c --- a/drivers/xen/sfc_netback/accel_debugfs.c +++ b/drivers/xen/sfc_netback/accel_debugfs.c @@ -37,28 +37,6 @@ static struct netback_accel_global_dbfs static struct netback_accel_global_dbfs global_dbfs; #endif #endif - -/* - * Extend debugfs helper functions to have a u64 version - */ -static void debugfs_u64_set(void *data, u64 val) -{ - *(u64 *)data = val; -} - -static u64 debugfs_u64_get(void *data) -{ - return *(u64 *)data; -} - -DEFINE_SIMPLE_ATTRIBUTE(fops_u64, debugfs_u64_get, debugfs_u64_set, "%llu\n"); - -struct dentry *debugfs_create_u64(const char *name, mode_t mode, - struct dentry *parent, u64 *value) -{ - return debugfs_create_file(name, mode, parent, value, &fops_u64); -} - void netback_accel_debugfs_init(void) { diff -r 7693635f3e97 drivers/xen/sfc_netfront/accel_debugfs.c --- a/drivers/xen/sfc_netfront/accel_debugfs.c +++ b/drivers/xen/sfc_netfront/accel_debugfs.c @@ -30,29 +30,6 @@ #if defined(CONFIG_DEBUG_FS) static struct dentry *sfc_debugfs_root = NULL; #endif - - -/* - * Extend debugfs helper functions to have a u64 version - */ -static void debugfs_u64_set(void *data, u64 val) -{ - *(u64 *)data = val; -} - -static u64 debugfs_u64_get(void *data) -{ - return *(u64 *)data; -} - -DEFINE_SIMPLE_ATTRIBUTE(fops_u64, debugfs_u64_get, debugfs_u64_set, "%llu\n"); - -struct dentry *debugfs_create_u64(const char *name, mode_t mode, - struct dentry *parent, u64 *value) -{ - return debugfs_create_file(name, mode, parent, value, &fops_u64); -} - void netfront_accel_debugfs_init(void) { diff -r 7693635f3e97 fs/debugfs/file.c --- a/fs/debugfs/file.c +++ b/fs/debugfs/file.c @@ -170,6 +170,51 @@ struct dentry *debugfs_create_u32(const } EXPORT_SYMBOL_GPL(debugfs_create_u32); + +static void debugfs_u64_set(void *data, u64 val) +{ + *(u64 *)data = val; +} + +static u64 debugfs_u64_get(void *data) +{ + return *(u64 *)data; +} +DEFINE_SIMPLE_ATTRIBUTE(fops_u64, debugfs_u64_get, debugfs_u64_set, "%llu\n"); + +/** + * debugfs_create_u64 - create a file in the debugfs filesystem that is used to read and write an unsigned 64 bit value. + * + * @name: a pointer to a string containing the name of the file to create. + * @mode: the permission that the file should have + * @parent: a pointer to the parent dentry for this file. This should be a + * directory dentry if set. If this paramater is NULL, then the + * file will be created in the root of the debugfs filesystem. + * @value: a pointer to the variable that the file should read to and write + * from. + * + * This function creates a file in debugfs with the given name that + * contains the value of the variable @value. If the @mode variable is so + * set, it can be read from, and written to. + * + * This function will return a pointer to a dentry if it succeeds. This + * pointer must be passed to the debugfs_remove() function when the file is + * to be removed (no automatic cleanup happens if your module is unloaded, + * you are responsible here.) If an error occurs, NULL will be returned. + * + * If debugfs is not enabled in the kernel, the value -ENODEV will be + * returned. It is not wise to check for this value, but rather, check for + * NULL or !NULL instead as to eliminate the need for #ifdef in the calling + * code. + */ +struct dentry *debugfs_create_u64(const char *name, mode_t mode, + struct dentry *parent, u64 *value) +{ + return debugfs_create_file(name, mode, parent, value, &fops_u64); +} +EXPORT_SYMBOL_GPL(debugfs_create_u64); + + static ssize_t read_file_bool(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { diff -r 7693635f3e97 include/linux/debugfs.h --- a/include/linux/debugfs.h +++ b/include/linux/debugfs.h @@ -41,6 +41,8 @@ struct dentry *debugfs_create_u16(const struct dentry *parent, u16 *value); struct dentry *debugfs_create_u32(const char *name, mode_t mode, struct dentry *parent, u32 *value); +struct dentry *debugfs_create_u64(const char *name, mode_t mode, + struct dentry *parent, u64 *value); struct dentry *debugfs_create_bool(const char *name, mode_t mode, struct dentry *parent, u32 *value); @@ -94,6 +96,13 @@ static inline struct dentry *debugfs_cre return ERR_PTR(-ENODEV); } +static inline struct dentry *debugfs_create_u64(const char *name, mode_t mode, + struct dentry *parent, + u64 *value) +{ + return ERR_PTR(-ENODEV); +} + static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode, struct dentry *parent, u32 *value)