linux/kernel/locking/lockdep_proc.c

// SPDX-License-Identifier: GPL-2.0
/*
 * kernel/lockdep_proc.c
 *
 * Runtime locking correctness validator
 *
 * Started by Ingo Molnar:
 *
 *  Copyright (C) 2006,2007 Red Hat, Inc., Ingo Molnar <[email protected]>
 *  Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
 *
 * Code for /proc/lockdep and /proc/lockdep_stats:
 *
 */
#include <linux/export.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/kallsyms.h>
#include <linux/debug_locks.h>
#include <linux/vmalloc.h>
#include <linux/sort.h>
#include <linux/uaccess.h>
#include <asm/div64.h>

#include "lockdep_internals.h"

/*
 * Since iteration of lock_classes is done without holding the lockdep lock,
 * it is not safe to iterate all_lock_classes list directly as the iteration
 * may branch off to free_lock_classes or the zapped list. Iteration is done
 * directly on the lock_classes array by checking the lock_classes_in_use
 * bitmap and max_lock_class_idx.
 */
#define iterate_lock_classes(idx, class)

static void *l_next(struct seq_file *m, void *v, loff_t *pos)
{}

static void *l_start(struct seq_file *m, loff_t *pos)
{}

static void l_stop(struct seq_file *m, void *v)
{}

static void print_name(struct seq_file *m, struct lock_class *class)
{}

static int l_show(struct seq_file *m, void *v)
{}

static const struct seq_operations lockdep_ops =;

#ifdef CONFIG_PROVE_LOCKING
static void *lc_start(struct seq_file *m, loff_t *pos)
{}

static void *lc_next(struct seq_file *m, void *v, loff_t *pos)
{}

static void lc_stop(struct seq_file *m, void *v)
{}

static int lc_show(struct seq_file *m, void *v)
{}

static const struct seq_operations lockdep_chains_ops =;
#endif /* CONFIG_PROVE_LOCKING */

static void lockdep_stats_debug_show(struct seq_file *m)
{}

static int lockdep_stats_show(struct seq_file *m, void *v)
{}

#ifdef CONFIG_LOCK_STAT

struct lock_stat_data {};

struct lock_stat_seq {};

/*
 * sort on absolute number of contentions
 */
static int lock_stat_cmp(const void *l, const void *r)
{}

static void seq_line(struct seq_file *m, char c, int offset, int length)
{}

static void snprint_time(char *buf, size_t bufsiz, s64 nr)
{}

static void seq_time(struct seq_file *m, s64 time)
{}

static void seq_lock_time(struct seq_file *m, struct lock_time *lt)
{}

static void seq_stats(struct seq_file *m, struct lock_stat_data *data)
{}

static void seq_header(struct seq_file *m)
{}

static void *ls_start(struct seq_file *m, loff_t *pos)
{}

static void *ls_next(struct seq_file *m, void *v, loff_t *pos)
{}

static void ls_stop(struct seq_file *m, void *v)
{}

static int ls_show(struct seq_file *m, void *v)
{}

static const struct seq_operations lockstat_ops =;

static int lock_stat_open(struct inode *inode, struct file *file)
{}

static ssize_t lock_stat_write(struct file *file, const char __user *buf,
			       size_t count, loff_t *ppos)
{}

static int lock_stat_release(struct inode *inode, struct file *file)
{}

static const struct proc_ops lock_stat_proc_ops =;
#endif /* CONFIG_LOCK_STAT */

static int __init lockdep_proc_init(void)
{}

__initcall(lockdep_proc_init);