compat-3.19: add debugfs_create_file_size() function
[~tnikolova/compat/.git] / compat / compat-4.0.c
1 #include <linux/debugfs.h>
2 #include <linux/fs.h>
3 #include <linux/export.h>
4 #include <linux/kernel.h>
5 #include <linux/dcache.h>
6 #include <linux/compat.h>
7
8 /**
9  * debugfs_create_file_size - create a file in the debugfs filesystem
10  * @name: a pointer to a string containing the name of the file to create.
11  * @mode: the permission that the file should have.
12  * @parent: a pointer to the parent dentry for this file.  This should be a
13  *          directory dentry if set.  If this parameter is NULL, then the
14  *          file will be created in the root of the debugfs filesystem.
15  * @data: a pointer to something that the caller will want to get to later
16  *        on.  The inode.i_private pointer will point to this value on
17  *        the open() call.
18  * @fops: a pointer to a struct file_operations that should be used for
19  *        this file.
20  * @file_size: initial file size
21  *
22  * This is the basic "create a file" function for debugfs.  It allows for a
23  * wide range of flexibility in creating a file, or a directory (if you want
24  * to create a directory, the debugfs_create_dir() function is
25  * recommended to be used instead.)
26  *
27  * This function will return a pointer to a dentry if it succeeds.  This
28  * pointer must be passed to the debugfs_remove() function when the file is
29  * to be removed (no automatic cleanup happens if your module is unloaded,
30  * you are responsible here.)  If an error occurs, %NULL will be returned.
31  *
32  * If debugfs is not enabled in the kernel, the value -%ENODEV will be
33  * returned.
34  */
35 struct dentry *debugfs_create_file_size(const char *name, umode_t mode,
36                                         struct dentry *parent, void *data,
37                                         const struct file_operations *fops,
38                                         loff_t file_size)
39 {
40         struct dentry *de = debugfs_create_file(name, mode, parent, data, fops);
41
42         if (de)
43                 d_inode(de)->i_size = file_size;
44         return de;
45 }
46 EXPORT_SYMBOL_GPL(debugfs_create_file_size);