linux/fs/proc/inode.c

// SPDX-License-Identifier: GPL-2.0
/*
 *  linux/fs/proc/inode.c
 *
 *  Copyright (C) 1991, 1992  Linus Torvalds
 */

#include <linux/cache.h>
#include <linux/time.h>
#include <linux/proc_fs.h>
#include <linux/kernel.h>
#include <linux/pid_namespace.h>
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/stat.h>
#include <linux/completion.h>
#include <linux/poll.h>
#include <linux/printk.h>
#include <linux/file.h>
#include <linux/limits.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/sysctl.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#include <linux/mount.h>
#include <linux/bug.h>

#include "internal.h"

static void proc_evict_inode(struct inode *inode)
{}

static struct kmem_cache *proc_inode_cachep __ro_after_init;
static struct kmem_cache *pde_opener_cache __ro_after_init;

static struct inode *proc_alloc_inode(struct super_block *sb)
{}

static void proc_free_inode(struct inode *inode)
{}

static void init_once(void *foo)
{}

void __init proc_init_kmemcache(void)
{}

void proc_invalidate_siblings_dcache(struct hlist_head *inodes, spinlock_t *lock)
{}

static inline const char *hidepid2str(enum proc_hidepid v)
{}

static int proc_show_options(struct seq_file *seq, struct dentry *root)
{}

const struct super_operations proc_sops =;

enum {};

static inline int use_pde(struct proc_dir_entry *pde)
{}

static void unuse_pde(struct proc_dir_entry *pde)
{}

/*
 * At most 2 contexts can enter this function: the one doing the last
 * close on the descriptor and whoever is deleting PDE itself.
 *
 * First to enter calls ->proc_release hook and signals its completion
 * to the second one which waits and then does nothing.
 *
 * PDE is locked on entry, unlocked on exit.
 */
static void close_pdeo(struct proc_dir_entry *pde, struct pde_opener *pdeo)
	__releases(&pde->pde_unload_lock)
{}

void proc_entry_rundown(struct proc_dir_entry *de)
{}

static loff_t proc_reg_llseek(struct file *file, loff_t offset, int whence)
{}

static ssize_t proc_reg_read_iter(struct kiocb *iocb, struct iov_iter *iter)
{}

static ssize_t pde_read(struct proc_dir_entry *pde, struct file *file, char __user *buf, size_t count, loff_t *ppos)
{}

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

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

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

static __poll_t pde_poll(struct proc_dir_entry *pde, struct file *file, struct poll_table_struct *pts)
{}

static __poll_t proc_reg_poll(struct file *file, struct poll_table_struct *pts)
{}

static long pde_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
{}

static long proc_reg_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{}

#ifdef CONFIG_COMPAT
static long pde_compat_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
{}

static long proc_reg_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{}
#endif

static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct vm_area_struct *vma)
{}

static int proc_reg_mmap(struct file *file, struct vm_area_struct *vma)
{}

static unsigned long
pde_get_unmapped_area(struct proc_dir_entry *pde, struct file *file, unsigned long orig_addr,
			   unsigned long len, unsigned long pgoff,
			   unsigned long flags)
{}

static unsigned long
proc_reg_get_unmapped_area(struct file *file, unsigned long orig_addr,
			   unsigned long len, unsigned long pgoff,
			   unsigned long flags)
{}

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

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

static const struct file_operations proc_reg_file_ops =;

static const struct file_operations proc_iter_file_ops =;

#ifdef CONFIG_COMPAT
static const struct file_operations proc_reg_file_ops_compat =;

static const struct file_operations proc_iter_file_ops_compat =;
#endif

static void proc_put_link(void *p)
{}

static const char *proc_get_link(struct dentry *dentry,
				 struct inode *inode,
				 struct delayed_call *done)
{}

const struct inode_operations proc_link_inode_operations =;

struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)
{}