forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.1 KiB
59 lines
1.1 KiB
// SPDX-License-Identifier: GPL-2.0-only |
|
#include <linux/debugfs.h> |
|
#include <linux/ras.h> |
|
#include "debugfs.h" |
|
|
|
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); |
|
}
|
|
|