123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #include <linux/debugfs.h>
- static struct dentry *ras_debugfs_dir;
- static atomic_t trace_count = ATOMIC_INIT(0);
- int ras_userspace_consumers(void)
- {
- return atomic_read(&trace_count);
- }
- EXPORT_SYMBOL_GPL(ras_userspace_consumers);
- static int trace_show(struct seq_file *m, void *v)
- {
- return atomic_read(&trace_count);
- }
- static int trace_open(struct inode *inode, struct file *file)
- {
- atomic_inc(&trace_count);
- return single_open(file, trace_show, NULL);
- }
- static int trace_release(struct inode *inode, struct file *file)
- {
- atomic_dec(&trace_count);
- return single_release(inode, file);
- }
- static const struct file_operations trace_fops = {
- .open = trace_open,
- .read = seq_read,
- .llseek = seq_lseek,
- .release = trace_release,
- };
- int __init ras_add_daemon_trace(void)
- {
- struct dentry *fentry;
- if (!ras_debugfs_dir)
- return -ENOENT;
- fentry = debugfs_create_file("daemon_active", S_IRUSR, ras_debugfs_dir,
- NULL, &trace_fops);
- if (!fentry)
- return -ENODEV;
- return 0;
- }
- void __init ras_debugfs_init(void)
- {
- ras_debugfs_dir = debugfs_create_dir("ras", NULL);
- }
|