cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

debugfs.c (1174B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2#include <linux/debugfs.h>
      3#include <linux/ras.h>
      4#include "debugfs.h"
      5
      6struct dentry *ras_debugfs_dir;
      7
      8static atomic_t trace_count = ATOMIC_INIT(0);
      9
     10int ras_userspace_consumers(void)
     11{
     12	return atomic_read(&trace_count);
     13}
     14EXPORT_SYMBOL_GPL(ras_userspace_consumers);
     15
     16static int trace_show(struct seq_file *m, void *v)
     17{
     18	return atomic_read(&trace_count);
     19}
     20
     21static int trace_open(struct inode *inode, struct file *file)
     22{
     23	atomic_inc(&trace_count);
     24	return single_open(file, trace_show, NULL);
     25}
     26
     27static int trace_release(struct inode *inode, struct file *file)
     28{
     29	atomic_dec(&trace_count);
     30	return single_release(inode, file);
     31}
     32
     33static const struct file_operations trace_fops = {
     34	.open    = trace_open,
     35	.read    = seq_read,
     36	.llseek  = seq_lseek,
     37	.release = trace_release,
     38};
     39
     40int __init ras_add_daemon_trace(void)
     41{
     42	struct dentry *fentry;
     43
     44	if (!ras_debugfs_dir)
     45		return -ENOENT;
     46
     47	fentry = debugfs_create_file("daemon_active", S_IRUSR, ras_debugfs_dir,
     48				     NULL, &trace_fops);
     49	if (!fentry)
     50		return -ENODEV;
     51
     52	return 0;
     53
     54}
     55
     56void __init ras_debugfs_init(void)
     57{
     58	ras_debugfs_dir = debugfs_create_dir("ras", NULL);
     59}