@ -243,6 +243,54 @@ struct dentry *debugfs_create_u64(const char *name, umode_t mode,
}
EXPORT_SYMBOL_GPL ( debugfs_create_u64 ) ;
static int debugfs_ulong_set ( void * data , u64 val )
{
* ( unsigned long * ) data = val ;
return 0 ;
}
static int debugfs_ulong_get ( void * data , u64 * val )
{
* val = * ( unsigned long * ) data ;
return 0 ;
}
DEFINE_SIMPLE_ATTRIBUTE ( fops_ulong , debugfs_ulong_get , debugfs_ulong_set , " %llu \n " ) ;
DEFINE_SIMPLE_ATTRIBUTE ( fops_ulong_ro , debugfs_ulong_get , NULL , " %llu \n " ) ;
DEFINE_SIMPLE_ATTRIBUTE ( fops_ulong_wo , NULL , debugfs_ulong_set , " %llu \n " ) ;
/**
* debugfs_create_ulong - create a debugfs file that is used to read and write
* an unsigned long 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 parameter 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_ulong ( const char * name , umode_t mode ,
struct dentry * parent , unsigned long * value )
{
return debugfs_create_mode ( name , mode , parent , value , & fops_ulong ,
& fops_ulong_ro , & fops_ulong_wo ) ;
}
EXPORT_SYMBOL_GPL ( debugfs_create_ulong ) ;
DEFINE_SIMPLE_ATTRIBUTE ( fops_x8 , debugfs_u8_get , debugfs_u8_set , " 0x%02llx \n " ) ;
DEFINE_SIMPLE_ATTRIBUTE ( fops_x8_ro , debugfs_u8_get , NULL , " 0x%02llx \n " ) ;
DEFINE_SIMPLE_ATTRIBUTE ( fops_x8_wo , NULL , debugfs_u8_set , " 0x%02llx \n " ) ;