#include <linux/module.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/completion.h>
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/file.h>
#include <linux/namei.h>
#include <linux/poll.h>
#include <linux/mount.h>
#include <linux/statfs.h>
#include <linux/ctype.h>
#include <linux/string.h>
#include <linux/fs_struct.h>
#include "internal.h"
static int cachefiles_daemon_open(struct inode *, struct file *);
static int cachefiles_daemon_release(struct inode *, struct file *);
static ssize_t cachefiles_daemon_read(struct file *, char __user *, size_t,
loff_t *);
static ssize_t cachefiles_daemon_write(struct file *, const char __user *,
size_t, loff_t *);
static __poll_t cachefiles_daemon_poll(struct file *,
struct poll_table_struct *);
static int cachefiles_daemon_frun(struct cachefiles_cache *, char *);
static int cachefiles_daemon_fcull(struct cachefiles_cache *, char *);
static int cachefiles_daemon_fstop(struct cachefiles_cache *, char *);
static int cachefiles_daemon_brun(struct cachefiles_cache *, char *);
static int cachefiles_daemon_bcull(struct cachefiles_cache *, char *);
static int cachefiles_daemon_bstop(struct cachefiles_cache *, char *);
static int cachefiles_daemon_cull(struct cachefiles_cache *, char *);
static int cachefiles_daemon_debug(struct cachefiles_cache *, char *);
static int cachefiles_daemon_dir(struct cachefiles_cache *, char *);
static int cachefiles_daemon_inuse(struct cachefiles_cache *, char *);
static int cachefiles_daemon_secctx(struct cachefiles_cache *, char *);
static int cachefiles_daemon_tag(struct cachefiles_cache *, char *);
static int cachefiles_daemon_bind(struct cachefiles_cache *, char *);
static void cachefiles_daemon_unbind(struct cachefiles_cache *);
static unsigned long cachefiles_open;
const struct file_operations cachefiles_daemon_fops = …;
struct cachefiles_daemon_cmd { … };
static const struct cachefiles_daemon_cmd cachefiles_daemon_cmds[] = …;
static int cachefiles_daemon_open(struct inode *inode, struct file *file)
{ … }
void cachefiles_flush_reqs(struct cachefiles_cache *cache)
{ … }
void cachefiles_put_unbind_pincount(struct cachefiles_cache *cache)
{ … }
void cachefiles_get_unbind_pincount(struct cachefiles_cache *cache)
{ … }
static int cachefiles_daemon_release(struct inode *inode, struct file *file)
{ … }
static ssize_t cachefiles_do_daemon_read(struct cachefiles_cache *cache,
char __user *_buffer, size_t buflen)
{ … }
static ssize_t cachefiles_daemon_read(struct file *file, char __user *_buffer,
size_t buflen, loff_t *pos)
{ … }
static ssize_t cachefiles_daemon_write(struct file *file,
const char __user *_data,
size_t datalen,
loff_t *pos)
{ … }
static __poll_t cachefiles_daemon_poll(struct file *file,
struct poll_table_struct *poll)
{ … }
static int cachefiles_daemon_range_error(struct cachefiles_cache *cache,
char *args)
{ … }
static int cachefiles_daemon_frun(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_fcull(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_brun(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_bcull(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_dir(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_secctx(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_tag(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_cull(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_debug(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_inuse(struct cachefiles_cache *cache, char *args)
{ … }
static int cachefiles_daemon_bind(struct cachefiles_cache *cache, char *args)
{ … }
static void cachefiles_daemon_unbind(struct cachefiles_cache *cache)
{ … }