p!ranha?
Server IP : 103.169.32.36  /  Your IP : 216.73.216.202
Web Server : Apache
System : Linux web.dpmptsp 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User : apache ( 48)
PHP Version : 5.6.40
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/modules/3.10.0-1160.119.1.el7.x86_64/source/include/linux/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /lib/modules/3.10.0-1160.119.1.el7.x86_64/source/include/linux/fs.h
#ifndef _LINUX_FS_H
#define _LINUX_FS_H


#include <linux/linkage.h>
#include <linux/wait.h>
#include <linux/kdev_t.h>
#include <linux/dcache.h>
#include <linux/path.h>
#include <linux/stat.h>
#include <linux/cache.h>
#include <linux/list.h>
#include <linux/radix-tree.h>
#include <linux/rbtree.h>
#include <linux/init.h>
#include <linux/pid.h>
#include <linux/bug.h>
#include <linux/mutex.h>
#include <linux/capability.h>
#include <linux/semaphore.h>
#include <linux/fiemap.h>
#include <linux/rculist_bl.h>
#include <linux/atomic.h>
#include <linux/shrinker.h>
#include <linux/migrate_mode.h>
#include <linux/uidgid.h>
#include <linux/lockdep.h>
#include <linux/percpu-rwsem.h>
#include <linux/blk_types.h>

#include <asm/byteorder.h>
#include <uapi/linux/fs.h>
#include <linux/rh_kabi.h>

#ifndef __GENKSYMS__
#include <linux/mm_types.h>
#endif

struct export_operations;
struct hd_geometry;
struct iovec;
struct nameidata;
struct kiocb;
struct kobject;
struct pipe_inode_info;
struct poll_table_struct;
struct kstatfs;
struct vm_area_struct;
struct vfsmount;
struct cred;
struct swap_info_struct;
struct seq_file;
struct workqueue_struct;

extern void __init inode_init(void);
extern void __init inode_init_early(void);
extern void __init files_init(void);
extern void __init files_maxfiles_init(void);

extern struct files_stat_struct files_stat;
extern unsigned long get_max_files(void);
extern int sysctl_nr_open;
extern struct inodes_stat_t inodes_stat;
extern int leases_enable, lease_break_time;
extern int sysctl_protected_symlinks;
extern int sysctl_protected_hardlinks;

struct buffer_head;
typedef int (get_block_t)(struct inode *inode, sector_t iblock,
			struct buffer_head *bh_result, int create);
typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
			ssize_t bytes, void *private, int ret,
			bool is_async);

#define MAY_EXEC		0x00000001
#define MAY_WRITE		0x00000002
#define MAY_READ		0x00000004
#define MAY_APPEND		0x00000008
#define MAY_ACCESS		0x00000010
#define MAY_OPEN		0x00000020
#define MAY_CHDIR		0x00000040
/* called from RCU mode, don't block */
#define MAY_NOT_BLOCK		0x00000080

/*
 * flags in file.f_mode.  Note that FMODE_READ and FMODE_WRITE must correspond
 * to O_WRONLY and O_RDWR via the strange trick in __dentry_open()
 */

/* file is open for reading */
#define FMODE_READ		((__force fmode_t)0x1)
/* file is open for writing */
#define FMODE_WRITE		((__force fmode_t)0x2)
/* file is seekable */
#define FMODE_LSEEK		((__force fmode_t)0x4)
/* file can be accessed using pread */
#define FMODE_PREAD		((__force fmode_t)0x8)
/* file can be accessed using pwrite */
#define FMODE_PWRITE		((__force fmode_t)0x10)
/* File is opened for execution with sys_execve / sys_uselib */
#define FMODE_EXEC		((__force fmode_t)0x20)
/* File is opened with O_NDELAY (only set for block devices) */
#define FMODE_NDELAY		((__force fmode_t)0x40)
/* File is opened with O_EXCL (only set for block devices) */
#define FMODE_EXCL		((__force fmode_t)0x80)
/* File is opened using open(.., 3, ..) and is writeable only for ioctls
   (specialy hack for floppy.c) */
#define FMODE_WRITE_IOCTL	((__force fmode_t)0x100)
/* 32bit hashes as llseek() offset (for directories) */
#define FMODE_32BITHASH         ((__force fmode_t)0x200)
/* 64bit hashes as llseek() offset (for directories) */
#define FMODE_64BITHASH         ((__force fmode_t)0x400)

/*
 * Don't update ctime and mtime.
 *
 * Currently a special hack for the XFS open_by_handle ioctl, but we'll
 * hopefully graduate it to a proper O_CMTIME flag supported by open(2) soon.
 */
#define FMODE_NOCMTIME		((__force fmode_t)0x800)

/* Expect random access pattern */
#define FMODE_RANDOM		((__force fmode_t)0x1000)

/* File is huge (eg. /dev/kmem): treat loff_t as unsigned */
#define FMODE_UNSIGNED_OFFSET	((__force fmode_t)0x2000)

/* File is opened with O_PATH; almost nothing can be done with it */
#define FMODE_PATH		((__force fmode_t)0x4000)

/* File needs atomic accesses to f_pos */
#define FMODE_ATOMIC_POS	((__force fmode_t)0x8000)
/* Write access to underlying fs */
#define FMODE_WRITER		((__force fmode_t)0x10000)

/* File was opened by fanotify and shouldn't generate fanotify events */
#define FMODE_NONOTIFY		((__force fmode_t)0x1000000)

/* The extended KABI iterate method in struct file_operations is present */
#define FMODE_KABI_ITERATE	((__force fmode_t)0x80000000)

/*
 * Flag for rw_copy_check_uvector and compat_rw_copy_check_uvector
 * that indicates that they should check the contents of the iovec are
 * valid, but not check the memory that the iovec elements
 * points too.
 */
#define CHECK_IOVEC_ONLY -1

/*
 * The below are the various read and write types that we support. Some of
 * them include behavioral modifiers that send information down to the
 * block layer and IO scheduler. Terminology:
 *
 *	The block layer uses device plugging to defer IO a little bit, in
 *	the hope that we will see more IO very shortly. This increases
 *	coalescing of adjacent IO and thus reduces the number of IOs we
 *	have to send to the device. It also allows for better queuing,
 *	if the IO isn't mergeable. If the caller is going to be waiting
 *	for the IO, then he must ensure that the device is unplugged so
 *	that the IO is dispatched to the driver.
 *
 *	All IO is handled async in Linux. This is fine for background
 *	writes, but for reads or writes that someone waits for completion
 *	on, we want to notify the block layer and IO scheduler so that they
 *	know about it. That allows them to make better scheduling
 *	decisions. So when the below references 'sync' and 'async', it
 *	is referencing this priority hint.
 *
 * With that in mind, the available types are:
 *
 * READ			A normal read operation. Device will be plugged.
 * READ_SYNC		A synchronous read. Device is not plugged, caller can
 *			immediately wait on this read without caring about
 *			unplugging.
 * READA		Used for read-ahead operations. Lower priority, and the
 *			block layer could (in theory) choose to ignore this
 *			request if it runs into resource problems.
 * WRITE		A normal async write. Device will be plugged.
 * WRITE_SYNC		Synchronous write. Identical to WRITE, but passes down
 *			the hint that someone will be waiting on this IO
 *			shortly. The write equivalent of READ_SYNC.
 * WRITE_ODIRECT	Special case write for O_DIRECT only.
 * WRITE_FLUSH		Like WRITE_SYNC but with preceding cache flush.
 * WRITE_FUA		Like WRITE_SYNC but data is guaranteed to be on
 *			non-volatile media on completion.
 * WRITE_FLUSH_FUA	Combination of WRITE_FLUSH and FUA. The IO is preceded
 *			by a cache flush and data is guaranteed to be on
 *			non-volatile media on completion.
 *
 */
#define RW_MASK			REQ_WRITE
#define RWA_MASK		REQ_RAHEAD

#define READ			0
#define WRITE			RW_MASK
#define READA			RWA_MASK
#define KERNEL_READ		(READ|REQ_KERNEL)
#define KERNEL_WRITE		(WRITE|REQ_KERNEL)

#define READ_SYNC		(READ | REQ_SYNC)
#define WRITE_SYNC		(WRITE | REQ_SYNC | REQ_NOIDLE)
#define WRITE_ODIRECT		(WRITE | REQ_SYNC)
#define WRITE_FLUSH		(WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH)
#define WRITE_FUA		(WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FUA)
#define WRITE_FLUSH_FUA		(WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH | REQ_FUA)

/*
 * Attribute flags.  These should be or-ed together to figure out what
 * has been changed!
 */
#define ATTR_MODE	(1 << 0)
#define ATTR_UID	(1 << 1)
#define ATTR_GID	(1 << 2)
#define ATTR_SIZE	(1 << 3)
#define ATTR_ATIME	(1 << 4)
#define ATTR_MTIME	(1 << 5)
#define ATTR_CTIME	(1 << 6)
#define ATTR_ATIME_SET	(1 << 7)
#define ATTR_MTIME_SET	(1 << 8)
#define ATTR_FORCE	(1 << 9) /* Not a change, but a change it */
#define ATTR_ATTR_FLAG	(1 << 10)
#define ATTR_KILL_SUID	(1 << 11)
#define ATTR_KILL_SGID	(1 << 12)
#define ATTR_FILE	(1 << 13)
#define ATTR_KILL_PRIV	(1 << 14)
#define ATTR_OPEN	(1 << 15) /* Truncating from open(O_TRUNC) */
#define ATTR_TIMES_SET	(1 << 16)
#define ATTR_TOUCH	(1 << 17)

/*
 * Whiteout is represented by a char device.  The following constants define the
 * mode and device number to use.
 */
#define WHITEOUT_MODE 0
#define WHITEOUT_DEV 0

/*
 * This is the Inode Attributes structure, used for notify_change().  It
 * uses the above definitions as flags, to know which values have changed.
 * Also, in this manner, a Filesystem can look at only the values it cares
 * about.  Basically, these are the attributes that the VFS layer can
 * request to change from the FS layer.
 *
 * Derek Atkins <warlord@MIT.EDU> 94-10-20
 */
struct iattr {
	unsigned int	ia_valid;
	umode_t		ia_mode;
	kuid_t		ia_uid;
	kgid_t		ia_gid;
	loff_t		ia_size;
	struct timespec	ia_atime;
	struct timespec	ia_mtime;
	struct timespec	ia_ctime;

	/*
	 * Not an attribute, but an auxiliary info for filesystems wanting to
	 * implement an ftruncate() like method.  NOTE: filesystem should
	 * check for (ia_valid & ATTR_FILE), and not for (ia_file != NULL).
	 */
	struct file	*ia_file;
};

/*
 * Includes for diskquotas.
 */
#include <linux/quota.h>

/*
 * Maximum number of layers of fs stack.  Needs to be limited to
 * prevent kernel stack overflow
 */
#define FILESYSTEM_MAX_STACK_DEPTH 2

/** 
 * enum positive_aop_returns - aop return codes with specific semantics
 *
 * @AOP_WRITEPAGE_ACTIVATE: Informs the caller that page writeback has
 * 			    completed, that the page is still locked, and
 * 			    should be considered active.  The VM uses this hint
 * 			    to return the page to the active list -- it won't
 * 			    be a candidate for writeback again in the near
 * 			    future.  Other callers must be careful to unlock
 * 			    the page if they get this return.  Returned by
 * 			    writepage(); 
 *
 * @AOP_TRUNCATED_PAGE: The AOP method that was handed a locked page has
 *  			unlocked it and the page might have been truncated.
 *  			The caller should back up to acquiring a new page and
 *  			trying again.  The aop will be taking reasonable
 *  			precautions not to livelock.  If the caller held a page
 *  			reference, it should drop it before retrying.  Returned
 *  			by readpage().
 *
 * address_space_operation functions return these large constants to indicate
 * special semantics to the caller.  These are much larger than the bytes in a
 * page to allow for functions that return the number of bytes operated on in a
 * given page.
 */

enum positive_aop_returns {
	AOP_WRITEPAGE_ACTIVATE	= 0x80000,
	AOP_TRUNCATED_PAGE	= 0x80001,
};

#define AOP_FLAG_UNINTERRUPTIBLE	0x0001 /* will not do a short write */
#define AOP_FLAG_CONT_EXPAND		0x0002 /* called from cont_expand */
#define AOP_FLAG_NOFS			0x0004 /* used by filesystem to direct
						* helper code (eg buffer layer)
						* to clear GFP_FS from alloc */

/*
 * oh the beauties of C type declarations.
 */
struct page;
struct address_space;
struct writeback_control;

struct iov_iter {
	const struct iovec *iov;
	unsigned long nr_segs;
	size_t iov_offset;
	size_t count;
};

size_t iov_iter_copy_from_user_atomic(struct page *page,
		struct iov_iter *i, unsigned long offset, size_t bytes);
size_t iov_iter_copy_from_user(struct page *page,
		struct iov_iter *i, unsigned long offset, size_t bytes);
void iov_iter_advance(struct iov_iter *i, size_t bytes);
int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes);
size_t iov_iter_single_seg_count(const struct iov_iter *i);
size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes,
			 struct iov_iter *i);
size_t copy_page_from_iter(struct page *page, size_t offset, size_t bytes,
			struct iov_iter *i);

static inline void iov_iter_init(struct iov_iter *i,
			const struct iovec *iov, unsigned long nr_segs,
			size_t count, size_t written)
{
	i->iov = iov;
	i->nr_segs = nr_segs;
	i->iov_offset = 0;
	i->count = count + written;

	iov_iter_advance(i, written);
}

static inline size_t iov_iter_count(struct iov_iter *i)
{
	return i->count;
}

static inline void iov_iter_truncate(struct iov_iter *i, size_t count)
{
	if (i->count > count)
		i->count = count;
}

/*
 * "descriptor" for what we're up to with a read.
 * This allows us to use the same read code yet
 * have multiple different users of the data that
 * we read from a file.
 *
 * The simplest case just copies the data to user
 * mode.
 */
typedef struct {
	size_t written;
	size_t count;
	union {
		char __user *buf;
		void *data;
	} arg;
	int error;
} read_descriptor_t;

typedef int (*read_actor_t)(read_descriptor_t *, struct page *,
		unsigned long, unsigned long);

struct address_space_operations {
	int (*writepage)(struct page *page, struct writeback_control *wbc);
	int (*readpage)(struct file *, struct page *);

	/* Write back some dirty pages from this mapping. */
	int (*writepages)(struct address_space *, struct writeback_control *);

	/* Set a page dirty.  Return true if this dirtied it */
	int (*set_page_dirty)(struct page *page);

	int (*readpages)(struct file *filp, struct address_space *mapping,
			struct list_head *pages, unsigned nr_pages);

	int (*write_begin)(struct file *, struct address_space *mapping,
				loff_t pos, unsigned len, unsigned flags,
				struct page **pagep, void **fsdata);
	int (*write_end)(struct file *, struct address_space *mapping,
				loff_t pos, unsigned len, unsigned copied,
				struct page *page, void *fsdata);

	/* Unfortunately this kludge is needed for FIBMAP. Don't use it */
	sector_t (*bmap)(struct address_space *, sector_t);
	void (*invalidatepage) (struct page *, unsigned long);
	int (*releasepage) (struct page *, gfp_t);
	void (*freepage)(struct page *);
	ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
			loff_t offset, unsigned long nr_segs);
	RH_KABI_DEPRECATE_FN(int, get_xip_mem, struct address_space *, pgoff_t,
			int, void **, unsigned long *)
	/*
	 * migrate the contents of a page to the specified target. If sync
	 * is false, it must not block.
	 */
	int (*migratepage) (struct address_space *,
			struct page *, struct page *, enum migrate_mode);
	int (*launder_page) (struct page *);
	int (*is_partially_uptodate) (struct page *, read_descriptor_t *,
					unsigned long);
	void (*is_dirty_writeback) (struct page *, bool *, bool *);
	int (*error_remove_page)(struct address_space *, struct page *);

	/* swapfile support */
	int (*swap_activate)(struct swap_info_struct *sis, struct file *file,
				sector_t *span);
	void (*swap_deactivate)(struct file *file);
#ifndef __GENKSYMS__
	void (*invalidatepage_range) (struct page *, unsigned int, unsigned int);
#endif
};

extern const struct address_space_operations empty_aops;

/*
 * pagecache_write_begin/pagecache_write_end must be used by general code
 * to write into the pagecache.
 */
int pagecache_write_begin(struct file *, struct address_space *mapping,
				loff_t pos, unsigned len, unsigned flags,
				struct page **pagep, void **fsdata);

int pagecache_write_end(struct file *, struct address_space *mapping,
				loff_t pos, unsigned len, unsigned copied,
				struct page *page, void *fsdata);

struct backing_dev_info;
struct address_space {
	struct inode		*host;		/* owner: inode, block_device */
	struct radix_tree_root	page_tree;	/* radix tree of all pages */
	spinlock_t		tree_lock;	/* and lock protecting it */
	RH_KABI_REPLACE(unsigned int i_mmap_writable,
			 atomic_t i_mmap_writable) /* count VM_SHARED mappings */
	struct rb_root		i_mmap;		/* tree of private and shared mappings */
	struct list_head	i_mmap_nonlinear;/*list VM_NONLINEAR mappings */
	struct mutex		i_mmap_mutex;	/* protect tree, count, list */
	/* Protected by tree_lock together with the radix tree */
	unsigned long		nrpages;	/* number of total pages */
	/* number of shadow or DAX exceptional entries */
	RH_KABI_RENAME(unsigned long nrshadows,
		       unsigned long nrexceptional);
	pgoff_t			writeback_index;/* writeback starts here */
	const struct address_space_operations *a_ops;	/* methods */
	unsigned long		flags;		/* error bits/gfp mask */
	struct backing_dev_info *backing_dev_info; /* device readahead, etc */
	spinlock_t		private_lock;	/* for use by the address_space */
	struct list_head	private_list;	/* ditto */
	void			*private_data;	/* ditto */
} __attribute__((aligned(sizeof(long))));
	/*
	 * On most architectures that alignment is already the case; but
	 * must be enforced here for CRIS, to let the least significant bit
	 * of struct page's "mapping" pointer be used for PAGE_MAPPING_ANON.
	 */
struct request_queue;

struct block_device {
	dev_t			bd_dev;  /* not a kdev_t - it's a search key */
	int			bd_openers;
	struct inode *		bd_inode;	/* will die */
	struct super_block *	bd_super;
	struct mutex		bd_mutex;	/* open/close mutex */
	struct list_head	bd_inodes;
	void *			bd_claiming;
	void *			bd_holder;
	int			bd_holders;
	bool			bd_write_holder;
#ifdef CONFIG_SYSFS
	struct list_head	bd_holder_disks;
#endif
	struct block_device *	bd_contains;
	unsigned		bd_block_size;
	struct hd_struct *	bd_part;
	/* number of times partitions within this device have been opened. */
	unsigned		bd_part_count;
	int			bd_invalidated;
	struct gendisk *	bd_disk;
	struct request_queue *  bd_queue;
	struct list_head	bd_list;
	/*
	 * Private data.  You must have bd_claim'ed the block_device
	 * to use this.  NOTE:  bd_claim allows an owner to claim
	 * the same device multiple times, the owner must take special
	 * care to not mess up bd_private for that case.
	 */
	unsigned long		bd_private;

	/* The counter of freeze processes */
	int			bd_fsfreeze_count;
	/* Mutex for freeze */
	struct mutex		bd_fsfreeze_mutex;
};

/*
 * Radix-tree tags, for tagging dirty and writeback pages within the pagecache
 * radix trees
 */
#define PAGECACHE_TAG_DIRTY	0
#define PAGECACHE_TAG_WRITEBACK	1
#define PAGECACHE_TAG_TOWRITE	2

int mapping_tagged(struct address_space *mapping, int tag);

/*
 * Might pages of this file be mapped into userspace?
 */
static inline int mapping_mapped(struct address_space *mapping)
{
	return	!RB_EMPTY_ROOT(&mapping->i_mmap) ||
		!list_empty(&mapping->i_mmap_nonlinear);
}

/*
 * Might pages of this file have been modified in userspace?
 * Note that i_mmap_writable counts all VM_SHARED vmas: do_mmap_pgoff
 * marks vma as VM_SHARED if it is shared, and the file was opened for
 * writing i.e. vma may be mprotected writable even if now readonly.
 *
 * If i_mmap_writable is negative, no new writable mappings are allowed. You
 * can only deny writable mappings, if none exists right now.
 */
static inline int mapping_writably_mapped(struct address_space *mapping)
{
	return atomic_read(&mapping->i_mmap_writable) > 0;
}

static inline int mapping_map_writable(struct address_space *mapping)
{
	return atomic_inc_unless_negative(&mapping->i_mmap_writable) ?
		0 : -EPERM;
}

static inline void mapping_unmap_writable(struct address_space *mapping)
{
	atomic_dec(&mapping->i_mmap_writable);
}

static inline int mapping_deny_writable(struct address_space *mapping)
{
	return atomic_dec_unless_positive(&mapping->i_mmap_writable) ?
		0 : -EBUSY;
}

static inline void mapping_allow_writable(struct address_space *mapping)
{
	atomic_inc(&mapping->i_mmap_writable);
}

/*
 * Use sequence counter to get consistent i_size on 32-bit processors.
 */
#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
#include <linux/seqlock.h>
#define __NEED_I_SIZE_ORDERED
#define i_size_ordered_init(inode) seqcount_init(&inode->i_size_seqcount)
#else
#define i_size_ordered_init(inode) do { } while (0)
#endif

struct posix_acl;
#define ACL_NOT_CACHED ((void *)(-1))

#define IOP_FASTPERM	0x0001
#define IOP_LOOKUP	0x0002
#define IOP_NOFOLLOW	0x0004

struct fsnotify_mark_connector;

/*
 * Keep mostly read-only and often accessed (especially for
 * the RCU path lookup and 'stat' data) fields at the beginning
 * of the 'struct inode'
 */
struct inode {
	umode_t			i_mode;
	unsigned short		i_opflags;
	kuid_t			i_uid;
	kgid_t			i_gid;
	unsigned int		i_flags;

#ifdef CONFIG_FS_POSIX_ACL
	struct posix_acl	*i_acl;
	struct posix_acl	*i_default_acl;
#endif

	const struct inode_operations	*i_op;
	struct super_block	*i_sb;
	struct address_space	*i_mapping;

#ifdef CONFIG_SECURITY
	void			*i_security;
#endif

	/* Stat data, not accessed from path walking */
	unsigned long		i_ino;
	/*
	 * Filesystems may only read i_nlink directly.  They shall use the
	 * following functions for modification:
	 *
	 *    (set|clear|inc|drop)_nlink
	 *    inode_(inc|dec)_link_count
	 */
	union {
		const unsigned int i_nlink;
		unsigned int __i_nlink;
	};
	dev_t			i_rdev;
	loff_t			i_size;
	struct timespec		i_atime;
	struct timespec		i_mtime;
	struct timespec		i_ctime;
	spinlock_t		i_lock;	/* i_blocks, i_bytes, maybe i_size */
	unsigned short          i_bytes;
	unsigned int		i_blkbits;
#if defined(CONFIG_IMA) && (defined(CONFIG_PPC64) || defined(CONFIG_S390))
	/* 4 bytes hole available on both required architectures */
	RH_KABI_FILL_HOLE(atomic_t		i_readcount)
#endif
	blkcnt_t		i_blocks;

#ifdef __NEED_I_SIZE_ORDERED
	seqcount_t		i_size_seqcount;
#endif

	/* Misc */
	unsigned long		i_state;
	struct mutex		i_mutex;

	unsigned long		dirtied_when;	/* jiffies of first dirtying */

	struct hlist_node	i_hash;
	RH_KABI_RENAME(struct list_head i_wb_list,
		       struct list_head	i_io_list); /* backing dev IO list */
	struct list_head	i_lru;		/* inode LRU list */
	struct list_head	i_sb_list;
	union {
		struct hlist_head	i_dentry;
		struct rcu_head		i_rcu;
	};
	u64			i_version;
	atomic_t		i_count;
	atomic_t		i_dio_count;
	atomic_t		i_writecount;
	const struct file_operations	*i_fop;	/* former ->i_op->default_file_ops */
	struct file_lock	*i_flock;
	struct address_space	i_data;
#ifdef CONFIG_QUOTA
	struct dquot		*i_dquot[MAXQUOTAS];
#endif
	struct list_head	i_devices;
	union {
		struct pipe_inode_info	*i_pipe;
		struct block_device	*i_bdev;
		struct cdev		*i_cdev;
	};

	__u32			i_generation;

#ifdef CONFIG_FSNOTIFY
	__u32			i_fsnotify_mask; /* all events this inode cares about */
	RH_KABI_REPLACE(struct hlist_head i_fsnotify_marks,
			struct fsnotify_mark_connector __rcu *i_fsnotify_marks)
#endif

#if defined(CONFIG_IMA) && defined(CONFIG_X86_64)
	atomic_t		i_readcount; /* struct files open RO */
#endif
	void			*i_private; /* fs or device private pointer */
};

static inline int inode_unhashed(struct inode *inode)
{
	return hlist_unhashed(&inode->i_hash);
}

/*
 * inode->i_mutex nesting subclasses for the lock validator:
 *
 * 0: the object of the current VFS operation
 * 1: parent
 * 2: child/target
 * 3: xattr
 * 4: second non-directory
 * 5: second parent (when locking independent directories in rename)
 *
 * I_MUTEX_NONDIR2 is for certain operations (such as rename) which lock two
 * non-directories at once.
 *
 * The locking order between these classes is
 * parent[2] -> child -> grandchild -> normal -> xattr -> second non-directory
 */
enum inode_i_mutex_lock_class
{
	I_MUTEX_NORMAL,
	I_MUTEX_PARENT,
	I_MUTEX_CHILD,
	I_MUTEX_XATTR,
	I_MUTEX_NONDIR2,
	I_MUTEX_PARENT2,
};

static inline void inode_lock(struct inode *inode)
{
	mutex_lock(&inode->i_mutex);
}

static inline void inode_unlock(struct inode *inode)
{
	mutex_unlock(&inode->i_mutex);
}

static inline int inode_trylock(struct inode *inode)
{
	return mutex_trylock(&inode->i_mutex);
}

static inline int inode_is_locked(struct inode *inode)
{
	return mutex_is_locked(&inode->i_mutex);
}

static inline void inode_lock_nested(struct inode *inode, unsigned subclass)
{
	mutex_lock_nested(&inode->i_mutex, subclass);
}

void lock_two_nondirectories(struct inode *, struct inode*);
void unlock_two_nondirectories(struct inode *, struct inode*);

/*
 * NOTE: in a 32bit arch with a preemptable kernel and
 * an UP compile the i_size_read/write must be atomic
 * with respect to the local cpu (unlike with preempt disabled),
 * but they don't need to be atomic with respect to other cpus like in
 * true SMP (so they need either to either locally disable irq around
 * the read or for example on x86 they can be still implemented as a
 * cmpxchg8b without the need of the lock prefix). For SMP compiles
 * and 64bit archs it makes no difference if preempt is enabled or not.
 */
static inline loff_t i_size_read(const struct inode *inode)
{
#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
	loff_t i_size;
	unsigned int seq;

	do {
		seq = read_seqcount_begin(&inode->i_size_seqcount);
		i_size = inode->i_size;
	} while (read_seqcount_retry(&inode->i_size_seqcount, seq));
	return i_size;
#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPT)
	loff_t i_size;

	preempt_disable();
	i_size = inode->i_size;
	preempt_enable();
	return i_size;
#else
	return inode->i_size;
#endif
}

/*
 * NOTE: unlike i_size_read(), i_size_write() does need locking around it
 * (normally i_mutex), otherwise on 32bit/SMP an update of i_size_seqcount
 * can be lost, resulting in subsequent i_size_read() calls spinning forever.
 */
static inline void i_size_write(struct inode *inode, loff_t i_size)
{
#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
	preempt_disable();
	write_seqcount_begin(&inode->i_size_seqcount);
	inode->i_size = i_size;
	write_seqcount_end(&inode->i_size_seqcount);
	preempt_enable();
#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPT)
	preempt_disable();
	inode->i_size = i_size;
	preempt_enable();
#else
	inode->i_size = i_size;
#endif
}

static inline unsigned iminor(const struct inode *inode)
{
	return MINOR(inode->i_rdev);
}

static inline unsigned imajor(const struct inode *inode)
{
	return MAJOR(inode->i_rdev);
}

extern struct block_device *I_BDEV(struct inode *inode);

struct fown_struct {
	rwlock_t lock;          /* protects pid, uid, euid fields */
	struct pid *pid;	/* pid or -pgrp where SIGIO should be sent */
	enum pid_type pid_type;	/* Kind of process group SIGIO should be sent to */
	kuid_t uid, euid;	/* uid/euid of process setting the owner */
	int signum;		/* posix.1b rt signal to be delivered on IO */
};

/*
 * Track a single file's readahead state
 */
struct file_ra_state {
	pgoff_t start;			/* where readahead started */
	unsigned int size;		/* # of readahead pages */
	unsigned int async_size;	/* do asynchronous readahead when
					   there are only # of pages ahead */

	unsigned int ra_pages;		/* Maximum readahead window */
	unsigned int mmap_miss;		/* Cache miss stat for mmap accesses */
	loff_t prev_pos;		/* Cache last read() position */
};

/*
 * Check if @index falls in the readahead windows.
 */
static inline int ra_has_index(struct file_ra_state *ra, pgoff_t index)
{
	return (index >= ra->start &&
		index <  ra->start + ra->size);
}

struct file {
	/*
	 * fu_list becomes invalid after file_free is called and queued via
	 * fu_rcuhead for RCU freeing
	 */
	union {
		struct list_head	fu_list;
		struct rcu_head 	fu_rcuhead;
	} f_u;
	struct path		f_path;
#define f_dentry	f_path.dentry
	struct inode		*f_inode;	/* cached value */
	const struct file_operations	*f_op;

	/*
	 * Protects f_ep_links, f_flags.
	 * Must not be taken from IRQ context.
	 */
	spinlock_t		f_lock;
#ifdef __GENKSYMS__
#ifdef CONFIG_SMP
	int			f_sb_list_cpu;
#endif
#else
#ifdef CONFIG_SMP
	int			f_sb_list_cpu_deprecated;
#endif
#endif
	atomic_long_t		f_count;
	unsigned int 		f_flags;
	fmode_t			f_mode;
	loff_t			f_pos;
	struct fown_struct	f_owner;
	const struct cred	*f_cred;
	struct file_ra_state	f_ra;

	u64			f_version;
#ifdef CONFIG_SECURITY
	void			*f_security;
#endif
	/* needed for tty driver, and maybe others */
	void			*private_data;

#ifdef CONFIG_EPOLL
	/* Used by fs/eventpoll.c to link all the hooks to this file */
	struct list_head	f_ep_links;
	struct list_head	f_tfile_llink;
#endif /* #ifdef CONFIG_EPOLL */
	struct address_space	*f_mapping;
#ifndef __GENKSYMS__
	struct mutex		f_pos_lock;
#endif
} __attribute__((aligned(4)));	/* lest something weird decides that 2 is OK */

struct file_handle {
	__u32 handle_bytes;
	int handle_type;
	/* file identifier */
	unsigned char f_handle[0];
};

static inline struct file *get_file(struct file *f)
{
	atomic_long_inc(&f->f_count);
	return f;
}
#define get_file_rcu_many(x, cnt)	\
	atomic_long_add_unless(&(x)->f_count, (cnt), 0)
#define get_file_rcu(x) get_file_rcu_many((x), 1)
#define fput_atomic(x)	atomic_long_add_unless(&(x)->f_count, -1, 1)
#define file_count(x)	atomic_long_read(&(x)->f_count)

#define	MAX_NON_LFS	((1UL<<31) - 1)

/* Page cache limit. The filesystems should put that into their s_maxbytes 
   limits, otherwise bad things can happen in VM. */ 
#if BITS_PER_LONG==32
#define MAX_LFS_FILESIZE	(((loff_t)PAGE_CACHE_SIZE << (BITS_PER_LONG-1))-1) 
#elif BITS_PER_LONG==64
#define MAX_LFS_FILESIZE 	((loff_t)0x7fffffffffffffffLL)
#endif

#define FL_POSIX	1
#define FL_FLOCK	2
#define FL_DELEG	4	/* NFSv4 delegation */
#define FL_ACCESS	8	/* not trying to lock, just looking */
#define FL_EXISTS	16	/* when unlocking, test for existence */
#define FL_LEASE	32	/* lease held on this file */
#define FL_CLOSE	64	/* unlock on close */
#define FL_SLEEP	128	/* A blocking lock */
#define FL_DOWNGRADE_PENDING	256 /* Lease is being downgraded */
#define FL_UNLOCK_PENDING	512 /* Lease is being broken */
#define FL_OFDLCK	1024	/* lock is "owned" by struct file */
#define FL_LAYOUT	2048	/* outstanding pNFS layout */
#define FL_LM_OPS_EXTEND	65536 /* safe to use lock_manager_operations_extend */

#define FL_CLOSE_POSIX (FL_POSIX | FL_CLOSE)

/*
 * Special return value from posix_lock_file() and vfs_lock_file() for
 * asynchronous locking.
 */
#define FILE_LOCK_DEFERRED 1

/*
 * The POSIX file lock owner is determined by
 * the "struct files_struct" in the thread group
 * (or NULL for no owner - BSD locks).
 *
 * Lockd stuffs a "host" pointer into this.
 */
typedef struct files_struct *fl_owner_t;

struct file_lock_operations {
	void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
	void (*fl_release_private)(struct file_lock *);
};

struct lock_manager_operations {
	int (*lm_compare_owner)(struct file_lock *, struct file_lock *);
	unsigned long (*lm_owner_key)(struct file_lock *);
	void (*lm_notify)(struct file_lock *);	/* unblock callback */
	int (*lm_grant)(struct file_lock *, struct file_lock *, int);
	void (*lm_break)(struct file_lock *);
	int (*lm_change)(struct file_lock **, int);
};

/* Can't use these without setting FL_LM_OPS_EXTEND */
struct lock_manager_operations_extend {
	struct lock_manager_operations kabi_lmops;
	void (*lm_get_owner)(struct file_lock *, struct file_lock *);
	void (*lm_put_owner)(struct file_lock *);
};

#define to_lm_ops_extend(fl_lmops)	\
	container_of((fl_lmops), struct lock_manager_operations_extend, kabi_lmops)

struct lock_manager {
	struct list_head list;
	/*
	 * NFSv4 and up also want opens blocked during the grace period;
	 * NLM doesn't care:
	 */
	bool block_opens;
};

struct net;
void locks_start_grace(struct net *, struct lock_manager *);
void locks_end_grace(struct lock_manager *);
int locks_in_grace(struct net *);
int opens_in_grace(struct net *);

/* that will die - we need it for nfs_lock_info */
#include <linux/nfs_fs_i.h>

/*
 * struct file_lock represents a generic "file lock". It's used to represent
 * POSIX byte range locks, BSD (flock) locks, and leases. It's important to
 * note that the same struct is used to represent both a request for a lock and
 * the lock itself, but the same object is never used for both.
 *
 * FIXME: should we create a separate "struct lock_request" to help distinguish
 * these two uses?
 *
 * The i_flock list is ordered by:
 *
 * 1) lock type -- FL_LEASEs first, then FL_FLOCK, and finally FL_POSIX
 * 2) lock owner
 * 3) lock range start
 * 4) lock range end
 *
 * Obviously, the last two criteria only matter for POSIX locks.
 */
struct file_lock {
	struct file_lock *fl_next;	/* singly linked list for this inode  */
	struct hlist_node fl_link;	/* node in global lists */
	struct list_head fl_block;	/* circular list of blocked processes */
	fl_owner_t fl_owner;
	unsigned int fl_flags;
	unsigned char fl_type;
	unsigned int fl_pid;
	int fl_link_cpu;		/* what cpu's list is this on? */
	struct pid *fl_nspid;
	wait_queue_head_t fl_wait;
	struct file *fl_file;
	loff_t fl_start;
	loff_t fl_end;

	struct fasync_struct *	fl_fasync; /* for lease break notifications */
	/* for lease breaks: */
	unsigned long fl_break_time;
	unsigned long fl_downgrade_time;

	const struct file_lock_operations *fl_ops;	/* Callbacks for filesystems */
	const struct lock_manager_operations *fl_lmops;	/* Callbacks for lockmanagers */
	union {
		struct nfs_lock_info	nfs_fl;
		struct nfs4_lock_info	nfs4_fl;
		struct {
			struct list_head link;	/* link in AFS vnode's pending_locks list */
			int state;		/* state of grant or error if -ve */
		} afs;
	} fl_u;
};

static inline struct lock_manager_operations_extend *
get_lm_ops_extend(struct file_lock *fl)
{
	if (fl->fl_flags & FL_LM_OPS_EXTEND)
		return to_lm_ops_extend(fl->fl_lmops);
	return NULL;
}

/* The following constant reflects the upper bound of the file/locking space */
#ifndef OFFSET_MAX
#define INT_LIMIT(x)	(~((x)1 << (sizeof(x)*8 - 1)))
#define OFFSET_MAX	INT_LIMIT(loff_t)
#define OFFT_OFFSET_MAX	INT_LIMIT(off_t)
#endif

#include <linux/fcntl.h>

extern void send_sigio(struct fown_struct *fown, int fd, int band);

/*
 * Return the inode to use for locking
 *
 * For overlayfs this should be the overlay inode, not the real inode returned
 * by file_inode().  For any other fs file_inode(filp) and locks_inode(filp) are
 * equal.
 */
static inline struct inode *locks_inode(const struct file *f)
{
	return f->f_path.dentry->d_inode;
}

#ifdef CONFIG_FILE_LOCKING
extern int fcntl_getlk(struct file *, unsigned int, struct flock *);
extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
			struct flock *);

#if BITS_PER_LONG == 32
extern int fcntl_getlk64(struct file *, unsigned int, struct flock64 *);
extern int fcntl_setlk64(unsigned int, struct file *, unsigned int,
			struct flock64 *);
#endif

extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg);
extern int fcntl_getlease(struct file *filp);

/* fs/locks.c */
void locks_free_lock(struct file_lock *fl);
extern void locks_init_lock(struct file_lock *);
extern struct file_lock * locks_alloc_lock(void);
extern void locks_copy_lock(struct file_lock *, struct file_lock *);
extern void locks_copy_conflock(struct file_lock *, struct file_lock *);
extern void __locks_copy_lock(struct file_lock *, const struct file_lock *);
extern void locks_remove_posix(struct file *, fl_owner_t);
extern void locks_remove_file(struct file *);
extern void locks_release_private(struct file_lock *);
extern void posix_test_lock(struct file *, struct file_lock *);
extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
extern int posix_lock_inode_wait(struct inode *, struct file_lock *);
extern int posix_unblock_lock(struct file_lock *);
extern int vfs_test_lock(struct file *, struct file_lock *);
extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
extern int flock_lock_inode_wait(struct inode *inode, struct file_lock *fl);
extern int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl);
extern int __break_lease(struct inode *inode, unsigned int flags, unsigned int type);
extern void lease_get_mtime(struct inode *, struct timespec *time);
extern int generic_setlease(struct file *, long, struct file_lock **, void **priv);
extern int vfs_setlease(struct file *, long, struct file_lock **, void **);
extern int lease_modify(struct file_lock **, int);
extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
struct files_struct;
extern void show_fd_locks(struct seq_file *f,
			 struct file *filp, struct files_struct *files);
#else /* !CONFIG_FILE_LOCKING */
static inline int fcntl_getlk(struct file *file, unsigned int cmd,
			      struct flock __user *user)
{
	return -EINVAL;
}

static inline int fcntl_setlk(unsigned int fd, struct file *file,
			      unsigned int cmd, struct flock __user *user)
{
	return -EACCES;
}

#if BITS_PER_LONG == 32
static inline int fcntl_getlk64(struct file *file, unsigned int cmd,
				struct flock64 __user *user)
{
	return -EINVAL;
}

static inline int fcntl_setlk64(unsigned int fd, struct file *file,
				unsigned int cmd, struct flock64 __user *user)
{
	return -EACCES;
}
#endif
static inline int fcntl_setlease(unsigned int fd, struct file *filp, long arg)
{
	return 0;
}

static inline int fcntl_getlease(struct file *filp)
{
	return 0;
}

static inline void locks_init_lock(struct file_lock *fl)
{
	return;
}

static inline void locks_copy_conflock(struct file_lock *new, struct file_lock *fl)
{
	return;
}
static inline void __locks_copy_lock(struct file_lock *new, struct file_lock *fl)
{
	return;
}

static inline void locks_copy_lock(struct file_lock *new, struct file_lock *fl)
{
	return;
}

static inline void locks_remove_posix(struct file *filp, fl_owner_t owner)
{
	return;
}

static inline void locks_remove_file(struct file *filp)
{
	return;
}

static inline void posix_test_lock(struct file *filp, struct file_lock *fl)
{
	return;
}

static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
				  struct file_lock *conflock)
{
	return -ENOLCK;
}

static inline int posix_lock_inode_wait(struct inode *inode,
					struct file_lock *fl)
{
	return -ENOLCK;
}

static inline int posix_unblock_lock(struct file_lock *waiter)
{
	return -ENOENT;
}

static inline int vfs_test_lock(struct file *filp, struct file_lock *fl)
{
	return 0;
}

static inline int vfs_lock_file(struct file *filp, unsigned int cmd,
				struct file_lock *fl, struct file_lock *conf)
{
	return -ENOLCK;
}

static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
{
	return 0;
}

static inline int flock_lock_inode_wait(struct inode *inode,
					struct file_lock *request)
{
	return -ENOLCK;
}

static inline int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl)
{
	return -ENOLCK;
}

static inline int __break_lease(struct inode *inode, unsigned int mode, unsigned int type)
{
	return 0;
}

static inline void lease_get_mtime(struct inode *inode, struct timespec *time)
{
	return;
}

static inline int generic_setlease(struct file *filp, long arg,
				    struct file_lock **flp, void **priv)
{
	return -EINVAL;
}

static inline int vfs_setlease(struct file *filp, long arg,
			       struct file_lock **lease, void **priv)
{
	return -EINVAL;
}

static inline int lease_modify(struct file_lock **before, int arg)
{
	return -EINVAL;
}

static inline int lock_may_read(struct inode *inode, loff_t start,
				unsigned long len)
{
	return 1;
}

static inline int lock_may_write(struct inode *inode, loff_t start,
				 unsigned long len)
{
	return 1;
}

struct files_struct;
static inline void show_fd_locks(struct seq_file *f,
			struct file *filp, struct files_struct *files) {}
#endif /* !CONFIG_FILE_LOCKING */

static inline struct inode *file_inode(const struct file *f)
{
	return f->f_inode;
}

static inline int posix_lock_file_wait(struct file *filp, struct file_lock *fl)
{
	return posix_lock_inode_wait(locks_inode(filp), fl);
}

static inline int flock_lock_file_wait(struct file *filp, struct file_lock *fl)
{
	return flock_lock_inode_wait(locks_inode(filp), fl);
}

static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
{
	return locks_lock_inode_wait(locks_inode(filp), fl);
}

struct fasync_struct {
	spinlock_t		fa_lock;
	int			magic;
	int			fa_fd;
	struct fasync_struct	*fa_next; /* singly linked list */
	struct file		*fa_file;
	struct rcu_head		fa_rcu;
};

#define FASYNC_MAGIC 0x4601

/* SMP safe fasync helpers: */
extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
extern struct fasync_struct *fasync_insert_entry(int, struct file *, struct fasync_struct **, struct fasync_struct *);
extern int fasync_remove_entry(struct file *, struct fasync_struct **);
extern struct fasync_struct *fasync_alloc(void);
extern void fasync_free(struct fasync_struct *);

/* can be called from interrupts */
extern void kill_fasync(struct fasync_struct **, int, int);

extern int __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
extern int f_setown(struct file *filp, unsigned long arg, int force);
extern void f_delown(struct file *filp);
extern pid_t f_getown(struct file *filp);
extern int send_sigurg(struct fown_struct *fown);

struct mm_struct;

/*
 *	Umount options
 */

#define MNT_FORCE	0x00000001	/* Attempt to forcibily umount */
#define MNT_DETACH	0x00000002	/* Just detach from the tree */
#define MNT_EXPIRE	0x00000004	/* Mark for expiry */
#define UMOUNT_NOFOLLOW	0x00000008	/* Don't follow symlink on umount */
#define UMOUNT_UNUSED	0x80000000	/* Flag guaranteed to be unused */

extern struct list_head super_blocks;
extern spinlock_t sb_lock;

/* sb->s_iflags */
#define SB_I_NOEXEC	0x00000002	/* Ignore executables on this fs */
#define SB_I_NODEV	0x00000004	/* Ignore devices on this fs */
#define SB_I_MULTIROOT	0x00000008	/* Multiple roots to the dentry tree */

/* sb->s_iflags to limit user namespace mounts */
#define SB_I_USERNS_VISIBLE		0x00000010 /* fstype already mounted */

/* Possible states of 'frozen' field */
enum {
	SB_UNFROZEN = 0,		/* FS is unfrozen */
	SB_FREEZE_WRITE	= 1,		/* Writes, dir ops, ioctls frozen */
	SB_FREEZE_PAGEFAULT = 2,	/* Page faults stopped as well */
	SB_FREEZE_FS = 3,		/* For internal FS use (e.g. to stop
					 * internal threads if needed) */
	SB_FREEZE_COMPLETE = 4,		/* ->freeze_fs finished successfully */
};

#define SB_FREEZE_LEVELS (SB_FREEZE_COMPLETE - 1)

struct sb_writers {
	/* Counters for counting writers at each level */
	struct percpu_counter	counter[SB_FREEZE_LEVELS];
	wait_queue_head_t	wait;		/* queue for waiting for
						   writers / faults to finish */
	int			frozen;		/* Is sb frozen? */
	wait_queue_head_t	wait_unfrozen;	/* queue for waiting for
						   sb to be thawed */
#ifdef CONFIG_DEBUG_LOCK_ALLOC
	struct lockdep_map	lock_map[SB_FREEZE_LEVELS];
#endif
};

struct super_block {
	struct list_head	s_list;		/* Keep this first */
	dev_t			s_dev;		/* search index; _not_ kdev_t */
	unsigned char		s_blocksize_bits;
	unsigned long		s_blocksize;
	loff_t			s_maxbytes;	/* Max file size */
	struct file_system_type	*s_type;
	const struct super_operations	*s_op;
	const struct dquot_operations	*dq_op;
	const struct quotactl_ops	*s_qcop;
	const struct export_operations *s_export_op;
	unsigned long		s_flags;
	unsigned long		s_magic;
	struct dentry		*s_root;
	struct rw_semaphore	s_umount;
	int			s_count;
	atomic_t		s_active;
#ifdef CONFIG_SECURITY
	void                    *s_security;
#endif
	const struct xattr_handler **s_xattr;

	struct list_head	s_inodes;	/* all inodes */
	struct hlist_bl_head	s_anon;		/* anonymous dentries for (nfs) exporting */
#ifdef __GENKSYMS__
#ifdef CONFIG_SMP
	struct list_head __percpu *s_files;
#else
	struct list_head	s_files;
#endif
#else
#ifdef CONFIG_SMP
	struct list_head __percpu *s_files_deprecated;
#else
	struct list_head	s_files_deprecated;
#endif
#endif
	struct list_head	s_mounts;	/* list of mounts; _not_ for fs use */
	/* s_dentry_lru, s_nr_dentry_unused protected by dcache.c lru locks */
	struct list_head	s_dentry_lru;	/* unused dentry lru */
	RH_KABI_REPLACE_UNSAFE(
			int	s_nr_dentry_unused,
			long	s_nr_dentry_unused)	/* # of dentry on lru */

	/* s_inode_lru_lock protects s_inode_lru and s_nr_inodes_unused */
	spinlock_t		s_inode_lru_lock ____cacheline_aligned_in_smp;
	struct list_head	s_inode_lru;		/* unused inode lru */
	RH_KABI_REPLACE_UNSAFE(
			int	s_nr_inodes_unused,
			long	s_nr_inodes_unused)	/* # of inodes on lru */

	struct block_device	*s_bdev;
	struct backing_dev_info *s_bdi;
	struct mtd_info		*s_mtd;
	struct hlist_node	s_instances;
	struct quota_info	s_dquot;	/* Diskquota specific options */

	struct sb_writers	s_writers;

	char s_id[32];				/* Informational name */
	u8 s_uuid[16];				/* UUID */

	void 			*s_fs_info;	/* Filesystem private info */
	unsigned int		s_max_links;
	fmode_t			s_mode;

	/* Granularity of c/m/atime in ns.
	   Cannot be worse than a second */
	u32		   s_time_gran;

	/*
	 * The next field is for VFS *only*. No filesystems have any business
	 * even looking at it. You had been warned.
	 */
	struct mutex s_vfs_rename_mutex;	/* Kludge */

	/*
	 * Filesystem subtype.  If non-empty the filesystem type field
	 * in /proc/mounts will be "type.subtype"
	 */
	char *s_subtype;

	/*
	 * Saved mount options for lazy filesystems using
	 * generic_show_options()
	 */
	char __rcu *s_options;
	const struct dentry_operations *s_d_op; /* default d_op for dentries */

	/*
	 * Saved pool identifier for cleancache (-1 means none)
	 */
	int cleancache_poolid;

	struct shrinker s_shrink;	/* per-sb shrinker handle */

	/* Number of inodes with nlink == 0 but still referenced */
	atomic_long_t s_remove_count;

	/* Being remounted read-only */
	int s_readonly_remount;

	/* AIO completions deferred from interrupt context */
	RH_KABI_EXTEND(struct workqueue_struct *s_dio_done_wq)
	RH_KABI_EXTEND(struct rcu_head rcu)
	RH_KABI_EXTEND(struct hlist_head s_pins)

	/* s_inode_list_lock protects s_inodes */
	RH_KABI_EXTEND(spinlock_t s_inode_list_lock)

	RH_KABI_EXTEND(struct mutex s_sync_lock) /* sync serialisation lock */

	RH_KABI_EXTEND(spinlock_t s_inode_wblist_lock)
	RH_KABI_EXTEND(struct list_head s_inodes_wb)	/* writeback inodes */

	RH_KABI_EXTEND(unsigned long	s_iflags)
	RH_KABI_EXTEND(struct user_namespace *s_user_ns)

	/* Pending fsnotify inode refs */
	RH_KABI_EXTEND(atomic_long_t s_fsnotify_inode_refs)
};

extern const unsigned super_block_wrapper_version;
struct super_block_wrapper {
	struct super_block sb;

	/* -- Wrapper version 0 -- */
	/*
	 * Indicates how deep in a filesystem stack this SB is
	 */
	int s_stack_depth;

	/* -- Wrapper version 1 -- */
};

static inline struct super_block_wrapper *get_sb_wrapper(struct super_block *sb,
							 unsigned version)
{
	/* Make sure we get a link failure if this function is used against an
	 * older kernel that doesn't have the superblock wrapper.
	 */
	if (super_block_wrapper_version < version)
		return NULL;
	return container_of(sb, struct super_block_wrapper, sb);
}

static inline int *get_s_stack_depth(struct super_block *sb)
{
	struct super_block_wrapper *wrapper = get_sb_wrapper(sb, 0);
	return wrapper ? &wrapper->s_stack_depth : NULL;
}

/* superblock cache pruning functions */
extern void prune_icache_sb(struct super_block *sb, int nr_to_scan);
extern void prune_dcache_sb(struct super_block *sb, int nr_to_scan);

/* Helper functions so that in most cases filesystems will
 * not need to deal directly with kuid_t and kgid_t and can
 * instead deal with the raw numeric values that are stored
 * in the filesystem.
 */
static inline uid_t i_uid_read(const struct inode *inode)
{
	return from_kuid(inode->i_sb->s_user_ns, inode->i_uid);
}

static inline gid_t i_gid_read(const struct inode *inode)
{
	return from_kgid(inode->i_sb->s_user_ns, inode->i_gid);
}

static inline void i_uid_write(struct inode *inode, uid_t uid)
{
	inode->i_uid = make_kuid(inode->i_sb->s_user_ns, uid);
}

static inline void i_gid_write(struct inode *inode, gid_t gid)
{
	inode->i_gid = make_kgid(inode->i_sb->s_user_ns, gid);
}

extern struct timespec current_fs_time(struct super_block *sb);

/*
 * Snapshotting support.
 */

void __sb_end_write(struct super_block *sb, int level);
int __sb_start_write(struct super_block *sb, int level, bool wait);

/**
 * sb_end_write - drop write access to a superblock
 * @sb: the super we wrote to
 *
 * Decrement number of writers to the filesystem. Wake up possible waiters
 * wanting to freeze the filesystem.
 */
static inline void sb_end_write(struct super_block *sb)
{
	__sb_end_write(sb, SB_FREEZE_WRITE);
}

/**
 * sb_end_pagefault - drop write access to a superblock from a page fault
 * @sb: the super we wrote to
 *
 * Decrement number of processes handling write page fault to the filesystem.
 * Wake up possible waiters wanting to freeze the filesystem.
 */
static inline void sb_end_pagefault(struct super_block *sb)
{
	__sb_end_write(sb, SB_FREEZE_PAGEFAULT);
}

/**
 * sb_end_intwrite - drop write access to a superblock for internal fs purposes
 * @sb: the super we wrote to
 *
 * Decrement fs-internal number of writers to the filesystem.  Wake up possible
 * waiters wanting to freeze the filesystem.
 */
static inline void sb_end_intwrite(struct super_block *sb)
{
	__sb_end_write(sb, SB_FREEZE_FS);
}

/**
 * sb_start_write - get write access to a superblock
 * @sb: the super we write to
 *
 * When a process wants to write data or metadata to a file system (i.e. dirty
 * a page or an inode), it should embed the operation in a sb_start_write() -
 * sb_end_write() pair to get exclusion against file system freezing. This
 * function increments number of writers preventing freezing. If the file
 * system is already frozen, the function waits until the file system is
 * thawed.
 *
 * Since freeze protection behaves as a lock, users have to preserve
 * ordering of freeze protection and other filesystem locks. Generally,
 * freeze protection should be the outermost lock. In particular, we have:
 *
 * sb_start_write
 *   -> i_mutex			(write path, truncate, directory ops, ...)
 *   -> s_umount		(freeze_super, thaw_super)
 */
static inline void sb_start_write(struct super_block *sb)
{
	__sb_start_write(sb, SB_FREEZE_WRITE, true);
}

static inline int sb_start_write_trylock(struct super_block *sb)
{
	return __sb_start_write(sb, SB_FREEZE_WRITE, false);
}

/**
 * sb_start_pagefault - get write access to a superblock from a page fault
 * @sb: the super we write to
 *
 * When a process starts handling write page fault, it should embed the
 * operation into sb_start_pagefault() - sb_end_pagefault() pair to get
 * exclusion against file system freezing. This is needed since the page fault
 * is going to dirty a page. This function increments number of running page
 * faults preventing freezing. If the file system is already frozen, the
 * function waits until the file system is thawed.
 *
 * Since page fault freeze protection behaves as a lock, users have to preserve
 * ordering of freeze protection and other filesystem locks. It is advised to
 * put sb_start_pagefault() close to mmap_sem in lock ordering. Page fault
 * handling code implies lock dependency:
 *
 * mmap_sem
 *   -> sb_start_pagefault
 */
static inline void sb_start_pagefault(struct super_block *sb)
{
	__sb_start_write(sb, SB_FREEZE_PAGEFAULT, true);
}

/*
 * sb_start_intwrite - get write access to a superblock for internal fs purposes
 * @sb: the super we write to
 *
 * This is the third level of protection against filesystem freezing. It is
 * free for use by a filesystem. The only requirement is that it must rank
 * below sb_start_pagefault.
 *
 * For example filesystem can call sb_start_intwrite() when starting a
 * transaction which somewhat eases handling of freezing for internal sources
 * of filesystem changes (internal fs threads, discarding preallocation on file
 * close, etc.).
 */
static inline void sb_start_intwrite(struct super_block *sb)
{
	__sb_start_write(sb, SB_FREEZE_FS, true);
}

static inline int sb_start_intwrite_trylock(struct super_block *sb)
{
	return __sb_start_write(sb, SB_FREEZE_FS, false);
}


extern bool inode_owner_or_capable(const struct inode *inode);

/*
 * VFS helper functions..
 */
extern int vfs_create(struct inode *, struct dentry *, umode_t, bool);
extern int vfs_mkdir(struct inode *, struct dentry *, umode_t);
extern int vfs_mknod(struct inode *, struct dentry *, umode_t, dev_t);
extern int vfs_symlink(struct inode *, struct dentry *, const char *);
extern int vfs_link(struct dentry *, struct inode *, struct dentry *, struct inode **);
extern int vfs_rmdir(struct inode *, struct dentry *);
extern int vfs_unlink(struct inode *, struct dentry *, struct inode **);
extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *, struct inode **, unsigned int);
extern int vfs_whiteout(struct inode *, struct dentry *);

extern struct dentry *vfs_tmpfile(struct dentry *dentry, umode_t mode,
				  int open_flag);

/*
 * VFS dentry helper functions.
 */
extern void dentry_unhash(struct dentry *dentry);

int vfs_mkobj(struct dentry *, umode_t,
		int (*f)(struct dentry *, umode_t, void *),
		void *);

/*
 * VFS file helper functions.
 */
extern void inode_init_owner(struct inode *inode, const struct inode *dir,
			umode_t mode);
extern bool may_open_dev(const struct path *path);
umode_t mode_strip_sgid(const struct inode *dir, umode_t mode);
/*
 * VFS FS_IOC_FIEMAP helper definitions.
 */
struct fiemap_extent_info {
	unsigned int fi_flags;		/* Flags as passed from user */
	unsigned int fi_extents_mapped;	/* Number of mapped extents */
	unsigned int fi_extents_max;	/* Size of fiemap_extent array */
	struct fiemap_extent __user *fi_extents_start; /* Start of
							fiemap_extent array */
};
int fiemap_fill_next_extent(struct fiemap_extent_info *info, u64 logical,
			    u64 phys, u64 len, u32 flags);
int fiemap_check_flags(struct fiemap_extent_info *fieinfo, u32 fs_flags);

/*
 * File types
 *
 * NOTE! These match bits 12..15 of stat.st_mode
 * (ie "(i_mode >> 12) & 15").
 */
#define DT_UNKNOWN	0
#define DT_FIFO		1
#define DT_CHR		2
#define DT_DIR		4
#define DT_BLK		6
#define DT_REG		8
#define DT_LNK		10
#define DT_SOCK		12
#define DT_WHT		14

/*
 * This is the "filldir" function type, used by readdir() to let
 * the kernel specify what kind of dirent layout it wants to have.
 * This allows the kernel to read directories into kernel space or
 * to have different dirent layouts depending on the binary type.
 */
typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned);
struct dir_context {
	filldir_t actor;
	loff_t pos;
};

struct block_device_operations;

/* These macros are for out of kernel modules to test that
 * the kernel supports the unlocked_ioctl and compat_ioctl
 * fields in struct file_operations. */
#define HAVE_COMPAT_IOCTL 1
#define HAVE_UNLOCKED_IOCTL 1

struct file_operations {
	struct module *owner;
	loff_t (*llseek) (struct file *, loff_t, int);
	ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
	ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
	ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
	ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
	int (*readdir) (struct file *, void *, filldir_t);
	unsigned int (*poll) (struct file *, struct poll_table_struct *);
	long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
	long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
	int (*mmap) (struct file *, struct vm_area_struct *);
	int (*open) (struct inode *, struct file *);
	int (*flush) (struct file *, fl_owner_t id);
	int (*release) (struct inode *, struct file *);
	int (*fsync) (struct file *, loff_t, loff_t, int datasync);
	int (*aio_fsync) (struct kiocb *, int datasync);
	int (*fasync) (int, struct file *, int);
	int (*lock) (struct file *, int, struct file_lock *);
	ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
	unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
	int (*check_flags)(int);
	int (*flock) (struct file *, int, struct file_lock *);
	ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
	ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
	RH_KABI_REPLACE(int (*setlease)(struct file *, long, struct file_lock **), int (*setlease)(struct file *, long, struct file_lock **, void **))
	long (*fallocate)(struct file *file, int mode, loff_t offset,
			  loff_t len);
	int (*show_fdinfo)(struct seq_file *m, struct file *f);
	RH_KABI_EXTEND(int (*iterate) (struct file *, struct dir_context *))
};

/* RH usage only, not for external modules use */
struct file_operations_extend {
	struct file_operations kabi_fops;
	void (*mremap)(struct file *, struct vm_area_struct *);
	ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int);
	int (*clone_file_range)(struct file *, loff_t, struct file *, loff_t, u64);
	unsigned long mmap_supported_flags;
};

struct inode_operations {
	struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
	void * (*follow_link) (struct dentry *, struct nameidata *);
	int (*permission) (struct inode *, int);
	struct posix_acl * (*get_acl)(struct inode *, int);

	int (*readlink) (struct dentry *, char __user *,int);
	void (*put_link) (struct dentry *, struct nameidata *, void *);

	int (*create) (struct inode *,struct dentry *, umode_t, bool);
	int (*link) (struct dentry *,struct inode *,struct dentry *);
	int (*unlink) (struct inode *,struct dentry *);
	int (*symlink) (struct inode *,struct dentry *,const char *);
	int (*mkdir) (struct inode *,struct dentry *,umode_t);
	int (*rmdir) (struct inode *,struct dentry *);
	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
	int (*rename) (struct inode *, struct dentry *,
			struct inode *, struct dentry *);
	int (*setattr) (struct dentry *, struct iattr *);
	int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
	int (*setxattr) (struct dentry *, const char *,const void *,size_t,int);
	ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
	ssize_t (*listxattr) (struct dentry *, char *, size_t);
	int (*removexattr) (struct dentry *, const char *);
	int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
		      u64 len);
	int (*update_time)(struct inode *, struct timespec *, int);
	int (*atomic_open)(struct inode *, struct dentry *,
			   struct file *, unsigned open_flag,
			   umode_t create_mode, int *opened);
} ____cacheline_aligned;


/*
 * RHEL inode struct wrapper - should only be used with get_*_iop() accessors.
 */
typedef int (*iop_rename2_t) (struct inode *, struct dentry *,
			      struct inode *, struct dentry *, unsigned int);
typedef int (*iop_tmpfile_t) (struct inode *, struct dentry *, umode_t);

typedef int (*iop_dentry_open_t) (struct dentry *, struct file *, const struct cred *);

struct inode_operations_wrapper {
	struct inode_operations ops;
	unsigned version;
	/* -- Wrapper version 0 -- */
	int (*rename2) (struct inode *, struct dentry *,
			struct inode *, struct dentry *, unsigned int);
	int (*tmpfile) (struct inode *, struct dentry *, umode_t);

	/* WARNING: probably going away soon, do not use! */
	int (*dentry_open)(struct dentry *, struct file *, const struct cred *);

	/* -- Wrapper version 1 -- */
} ____cacheline_aligned;

ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
			      unsigned long nr_segs, unsigned long fast_segs,
			      struct iovec *fast_pointer,
			      struct iovec **ret_pointer);

extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
		unsigned long, loff_t *);
extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
		unsigned long, loff_t *);
extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,
				   loff_t, size_t, unsigned int);
extern int vfs_clone_file_range(struct file *file_in, loff_t pos_in,
		struct file *file_out, loff_t pos_out, u64 len);

struct super_operations {
   	struct inode *(*alloc_inode)(struct super_block *sb);
	void (*destroy_inode)(struct inode *);

   	void (*dirty_inode) (struct inode *, int flags);
	int (*write_inode) (struct inode *, struct writeback_control *wbc);
	int (*drop_inode) (struct inode *);
	void (*evict_inode) (struct inode *);
	void (*put_super) (struct super_block *);
	int (*sync_fs)(struct super_block *sb, int wait);
	int (*freeze_fs) (struct super_block *);
	int (*unfreeze_fs) (struct super_block *);
	int (*statfs) (struct dentry *, struct kstatfs *);
	int (*remount_fs) (struct super_block *, int *, char *);
	void (*umount_begin) (struct super_block *);

	int (*show_options)(struct seq_file *, struct dentry *);
	int (*show_devname)(struct seq_file *, struct dentry *);
	int (*show_path)(struct seq_file *, struct dentry *);
	int (*show_stats)(struct seq_file *, struct dentry *);
#ifdef CONFIG_QUOTA
	ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
	ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
#endif
	int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);
	int (*nr_cached_objects)(struct super_block *);
	void (*free_cached_objects)(struct super_block *, int);
	RH_KABI_EXTEND(struct list_head *(*inode_to_wblist)(struct inode *))
	RH_KABI_EXTEND(struct inode *(*wblist_to_inode)(struct list_head *))
};

/*
 * Inode flags - they have no relation to superblock flags now
 */
#define S_SYNC		1	/* Writes are synced at once */
#define S_NOATIME	2	/* Do not update access times */
#define S_APPEND	4	/* Append-only file */
#define S_IMMUTABLE	8	/* Immutable file */
#define S_DEAD		16	/* removed, but still open directory */
#define S_NOQUOTA	32	/* Inode is not counted to quota */
#define S_DIRSYNC	64	/* Directory modifications are synchronous */
#define S_NOCMTIME	128	/* Do not update file c/mtime */
#define S_SWAPFILE	256	/* Do not truncate: swapon got its bmaps */
#define S_PRIVATE	512	/* Inode is fs-internal */
#define S_IMA		1024	/* Inode has an associated IMA struct */
#define S_AUTOMOUNT	2048	/* Automount/referral quasi-directory */
#define S_NOSEC		4096	/* no suid or xattr security attributes */
#define S_IOPS_WRAPPER	8192	/* i_op points to struct inode_operations_wrapper */

#ifdef CONFIG_FS_DAX
#define S_DAX		16384	/* Direct Access, avoiding the page cache */
#else
#define S_DAX		0	/* Make all the DAX code disappear */
#endif

/*
 * Note that nosuid etc flags are inode-specific: setting some file-system
 * flags just means all the inodes inherit those flags by default. It might be
 * possible to override it selectively if you really wanted to with some
 * ioctl() that is not currently implemented.
 *
 * Exception: MS_RDONLY is always applied to the entire file system.
 *
 * Unfortunately, it is possible to change a filesystems flags with it mounted
 * with files in use.  This means that all of the inodes will not have their
 * i_flags updated.  Hence, i_flags no longer inherit the superblock mount
 * flags, so these have to be checked separately. -- rmk@arm.uk.linux.org
 */
#define __IS_FLG(inode, flg)	((inode)->i_sb->s_flags & (flg))

#define IS_RDONLY(inode)	((inode)->i_sb->s_flags & MS_RDONLY)
#define IS_SYNC(inode)		(__IS_FLG(inode, MS_SYNCHRONOUS) || \
					((inode)->i_flags & S_SYNC))
#define IS_DIRSYNC(inode)	(__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \
					((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
#define IS_MANDLOCK(inode)	__IS_FLG(inode, MS_MANDLOCK)
#define IS_NOATIME(inode)	__IS_FLG(inode, MS_RDONLY|MS_NOATIME)
#define IS_I_VERSION(inode)	__IS_FLG(inode, MS_I_VERSION)

#define IS_NOQUOTA(inode)	((inode)->i_flags & S_NOQUOTA)
#define IS_APPEND(inode)	((inode)->i_flags & S_APPEND)
#define IS_IMMUTABLE(inode)	((inode)->i_flags & S_IMMUTABLE)
#define IS_POSIXACL(inode)	__IS_FLG(inode, MS_POSIXACL)

#define IS_DEADDIR(inode)	((inode)->i_flags & S_DEAD)
#define IS_NOCMTIME(inode)	((inode)->i_flags & S_NOCMTIME)
#define IS_SWAPFILE(inode)	((inode)->i_flags & S_SWAPFILE)
#define IS_PRIVATE(inode)	((inode)->i_flags & S_PRIVATE)
#define IS_IMA(inode)		((inode)->i_flags & S_IMA)
#define IS_AUTOMOUNT(inode)	((inode)->i_flags & S_AUTOMOUNT)
#define IS_NOSEC(inode)		((inode)->i_flags & S_NOSEC)
#define IS_IOPS_WRAPPER(inode)	((inode)->i_flags & S_IOPS_WRAPPER)
#define IS_DAX(inode)		((inode)->i_flags & S_DAX)

#define IS_WHITEOUT(inode)	(S_ISCHR(inode->i_mode) && \
				 (inode)->i_rdev == WHITEOUT_DEV)

static inline bool HAS_UNMAPPED_ID(struct inode *inode)
{
	return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid);
}

/*
 * Inode state bits.  Protected by inode->i_lock
 *
 * Three bits determine the dirty state of the inode, I_DIRTY_SYNC,
 * I_DIRTY_DATASYNC and I_DIRTY_PAGES.
 *
 * Four bits define the lifetime of an inode.  Initially, inodes are I_NEW,
 * until that flag is cleared.  I_WILL_FREE, I_FREEING and I_CLEAR are set at
 * various stages of removing an inode.
 *
 * Two bits are used for locking and completion notification, I_NEW and I_SYNC.
 *
 * I_DIRTY_SYNC		Inode is dirty, but doesn't have to be written on
 *			fdatasync().  i_atime is the usual cause.
 * I_DIRTY_DATASYNC	Data-related inode changes pending. We keep track of
 *			these changes separately from I_DIRTY_SYNC so that we
 *			don't have to write inode on fdatasync() when only
 *			mtime has changed in it.
 * I_DIRTY_PAGES	Inode has dirty pages.  Inode itself may be clean.
 * I_NEW		Serves as both a mutex and completion notification.
 *			New inodes set I_NEW.  If two processes both create
 *			the same inode, one of them will release its inode and
 *			wait for I_NEW to be released before returning.
 *			Inodes in I_WILL_FREE, I_FREEING or I_CLEAR state can
 *			also cause waiting on I_NEW, without I_NEW actually
 *			being set.  find_inode() uses this to prevent returning
 *			nearly-dead inodes.
 * I_WILL_FREE		Must be set when calling write_inode_now() if i_count
 *			is zero.  I_FREEING must be set when I_WILL_FREE is
 *			cleared.
 * I_FREEING		Set when inode is about to be freed but still has dirty
 *			pages or buffers attached or the inode itself is still
 *			dirty.
 * I_CLEAR		Added by clear_inode().  In this state the inode is
 *			clean and can be destroyed.  Inode keeps I_FREEING.
 *
 *			Inodes that are I_WILL_FREE, I_FREEING or I_CLEAR are
 *			prohibited for many purposes.  iget() must wait for
 *			the inode to be completely released, then create it
 *			anew.  Other functions will just ignore such inodes,
 *			if appropriate.  I_NEW is used for waiting.
 *
 * I_SYNC		Writeback of inode is running. The bit is set during
 *			data writeback, and cleared with a wakeup on the bit
 *			address once it is done. The bit is also used to pin
 *			the inode in memory for flusher thread.
 *
 * I_REFERENCED		Marks the inode as recently references on the LRU list.
 *
 * I_DIO_WAKEUP		Never set.  Only used as a key for wait_on_bit().
 *
 * I_OVL_INUSE		Used by overlayfs to get exclusive ownership on upper
 *			and work dirs among overlayfs mounts.
 *
 * I_CREATING		New object's inode in the middle of setting up.
 *
 * Q: What is the difference between I_WILL_FREE and I_FREEING?
 */
#define I_DIRTY_SYNC		(1 << 0)
#define I_DIRTY_DATASYNC	(1 << 1)
#define I_DIRTY_PAGES		(1 << 2)
#define __I_NEW			3
#define I_NEW			(1 << __I_NEW)
#define I_WILL_FREE		(1 << 4)
#define I_FREEING		(1 << 5)
#define I_CLEAR			(1 << 6)
#define __I_SYNC		7
#define I_SYNC			(1 << __I_SYNC)
#define I_REFERENCED		(1 << 8)
#define __I_DIO_WAKEUP		9
#define I_DIO_WAKEUP		(1 << I_DIO_WAKEUP)
#define I_LINKABLE		(1 << 10)
#define I_OVL_INUSE		(1 << 14)
#define I_CREATING		(1 << 15)

#define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES)

extern void __mark_inode_dirty(struct inode *, int);
static inline void mark_inode_dirty(struct inode *inode)
{
	__mark_inode_dirty(inode, I_DIRTY);
}

static inline void mark_inode_dirty_sync(struct inode *inode)
{
	__mark_inode_dirty(inode, I_DIRTY_SYNC);
}

extern void inc_nlink(struct inode *inode);
extern void drop_nlink(struct inode *inode);
extern void clear_nlink(struct inode *inode);
extern void set_nlink(struct inode *inode, unsigned int nlink);

static inline void inode_inc_link_count(struct inode *inode)
{
	inc_nlink(inode);
	mark_inode_dirty(inode);
}

static inline void inode_dec_link_count(struct inode *inode)
{
	drop_nlink(inode);
	mark_inode_dirty(inode);
}

/**
 * inode_inc_iversion - increments i_version
 * @inode: inode that need to be updated
 *
 * Every time the inode is modified, the i_version field will be incremented.
 * The filesystem has to be mounted with i_version flag
 */

static inline void inode_inc_iversion(struct inode *inode)
{
       spin_lock(&inode->i_lock);
       inode->i_version++;
       spin_unlock(&inode->i_lock);
}

enum file_time_flags {
	S_ATIME = 1,
	S_MTIME = 2,
	S_CTIME = 4,
	S_VERSION = 8,
};

extern void touch_atime(struct path *);
static inline void file_accessed(struct file *file)
{
	if (!(file->f_flags & O_NOATIME))
		touch_atime(&file->f_path);
}

int sync_inode(struct inode *inode, struct writeback_control *wbc);
int sync_inode_metadata(struct inode *inode, int wait);

struct file_system_type {
	const char *name;
	int fs_flags;
#define FS_REQUIRES_DEV		1 
#define FS_BINARY_MOUNTDATA	2
#define FS_HAS_SUBTYPE		4
#define FS_USERNS_MOUNT		8	/* Can be mounted by userns root */
#define FS_HAS_RM_XQUOTA	256	/* KABI: fs has the rm_xquota quota op */
#define FS_HAS_INVALIDATE_RANGE	512	/* FS has new ->invalidatepage with length arg */
#define FS_HAS_DIO_IODONE2	1024	/* KABI: fs supports new iodone */
#define FS_HAS_NEXTDQBLK	2048	/* KABI: fs has the ->get_nextdqblk op */
#define FS_HAS_DOPS_WRAPPER	4096	/* kabi: fs is using dentry_operations_wrapper. sb->s_d_op points to
dentry_operations_wrapper */
#define FS_RENAME_DOES_D_MOVE	32768	/* FS will handle d_move() during rename() internally. */
#define FS_HAS_WBLIST		131072	/* KABI: fs has writeback list super ops */
#define FS_SETLEASE_NOLOCK	262144	/* KABI: setlease should be called w/o the i_lock */
	struct dentry *(*mount) (struct file_system_type *, int,
		       const char *, void *);
	void (*kill_sb) (struct super_block *);
	struct module *owner;
	struct file_system_type * next;
	struct hlist_head fs_supers;

	struct lock_class_key s_lock_key;
	struct lock_class_key s_umount_key;
	struct lock_class_key s_vfs_rename_key;
	struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];

	struct lock_class_key i_lock_key;
	struct lock_class_key i_mutex_key;
	struct lock_class_key i_mutex_dir_key;
};

#define sb_has_rm_xquota(sb)	((sb)->s_type->fs_flags & FS_HAS_RM_XQUOTA)
#define sb_has_nextdqblk(sb)	((sb)->s_type->fs_flags & FS_HAS_NEXTDQBLK)
#define sb_has_dops_wrapper(sb)	((sb)->s_type->fs_flags & FS_HAS_DOPS_WRAPPER)
#define sb_has_wblist(sb)	((sb)->s_type->fs_flags & FS_HAS_WBLIST)

/*
 * FIXME: These should be in include/linux/dcache.h but there
 * sb_has_dops_wrapper() is not available and compilation fails. This happens
 * as fs.h includes dcache.h and not other way around. So putting these
 * operations here for now.
 */
static inline const struct dentry_operations_wrapper *get_dop_wrapper(struct dentry *dentry)
{
	if (!sb_has_dops_wrapper(dentry->d_sb))
		return NULL;

	return container_of(dentry->d_op, const struct dentry_operations_wrapper, ops);
}

static inline dop_real_t get_real_dop(struct dentry *dentry)
{
	const struct dentry_operations_wrapper *wrapper = get_dop_wrapper(dentry);
	if (!wrapper)
		return NULL;

	return (offsetof(struct dentry_operations_wrapper, d_real) < wrapper->size) ? wrapper->d_real : NULL;
}

/**
 * d_real - Return the real dentry
 * @dentry: the dentry to query
 * @inode: inode to select the dentry from multiple layers (can be NULL)
 * @open_flags: open flags to control copy-up behavior
 * @flags: flags to control what is returned by this function
 *
 * If dentry is on an union/overlay, then return the underlying, real dentry.
 * Otherwise return the dentry itself.
 *
 * See also: Documentation/filesystems/vfs.txt
 */
static inline struct dentry *d_real(struct dentry *dentry,
				    const struct inode *inode,
				    unsigned int open_flags, unsigned int flags)
{
	if (unlikely(dentry->d_flags & DCACHE_OP_REAL)) {
		dop_real_t d_real_op = get_real_dop(dentry);

		return d_real_op(dentry, inode, open_flags, flags);
	} else {
		return dentry;
	}
}

/**
 * d_real_inode - Return the real inode
 * @dentry: The dentry to query
 *
 * If dentry is on an union/overlay, then return the underlying, real inode.
 * Otherwise return d_inode().
 */
static inline struct inode *d_real_inode(const struct dentry *dentry)
{
	/* This usage of d_real() results in const dentry */
	return d_real((struct dentry *) dentry, NULL, 0, 0)->d_inode;
}

static inline struct dentry *file_dentry(const struct file *file)
{
	return d_real(file->f_path.dentry, file_inode(file), 0, 0);
}

/*
 * the fs address space operations contain a new invalidatepage_rang () op
 * which supports a length parameter
 */
#define inode_has_invalidate_range(inode) \
	((inode)->i_sb->s_type->fs_flags & FS_HAS_INVALIDATE_RANGE)

#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)

extern struct dentry *mount_ns(struct file_system_type *fs_type,
	int flags, void *data, void *ns, struct user_namespace *user_ns,
	int (*fill_super)(struct super_block *, void *, int));
extern struct dentry *mount_bdev(struct file_system_type *fs_type,
	int flags, const char *dev_name, void *data,
	int (*fill_super)(struct super_block *, void *, int));
extern struct dentry *mount_single(struct file_system_type *fs_type,
	int flags, void *data,
	int (*fill_super)(struct super_block *, void *, int));
extern struct dentry *mount_nodev(struct file_system_type *fs_type,
	int flags, void *data,
	int (*fill_super)(struct super_block *, void *, int));
extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path);
void generic_shutdown_super(struct super_block *sb);
void kill_block_super(struct super_block *sb);
void kill_anon_super(struct super_block *sb);
void kill_litter_super(struct super_block *sb);
void deactivate_super(struct super_block *sb);
void deactivate_locked_super(struct super_block *sb);
int set_anon_super(struct super_block *s, void *data);
int get_anon_bdev(dev_t *);
void free_anon_bdev(dev_t);
struct super_block *sget_userns(struct file_system_type *type,
			int (*test)(struct super_block *,void *),
			int (*set)(struct super_block *,void *),
			int flags, struct user_namespace *user_ns,
			void *data);
struct super_block *sget(struct file_system_type *type,
			int (*test)(struct super_block *,void *),
			int (*set)(struct super_block *,void *),
			int flags, void *data);
extern struct dentry *mount_pseudo(struct file_system_type *, char *,
	const struct super_operations *ops,
	const struct dentry_operations *dops,
	unsigned long);

/* Alas, no aliases. Too much hassle with bringing module.h everywhere */
#define fops_get(fops) \
	(((fops) && try_module_get((fops)->owner) ? (fops) : NULL))
#define fops_put(fops) \
	do { if (fops) module_put((fops)->owner); } while(0)
/*
 * This one is to be used *ONLY* from ->open() instances.
 * fops must be non-NULL, pinned down *and* module dependencies
 * should be sufficient to pin the caller down as well.
 */
#define replace_fops(f, fops) \
	do {	\
		struct file *__file = (f); \
		fops_put(__file->f_op); \
		BUG_ON(!(__file->f_op = (fops))); \
	} while(0)

extern int register_filesystem(struct file_system_type *);
extern int unregister_filesystem(struct file_system_type *);
/* Begin: Red Hat Internal Use Only */
extern int register_fo_extend(const struct file_operations_extend *fop);
extern void unregister_fo_extend(const struct file_operations_extend *fop);
extern const struct file_operations_extend *lookup_fo_extend(
	const struct file_operations *fops);
static inline struct file_operations_extend *
get_fo_extend(struct file *fp)
{
	return (struct file_operations_extend *)lookup_fo_extend(fp->f_op);
}
/* End: Red Hat Internal Use Only */
extern struct vfsmount *kern_mount_data(struct file_system_type *, void *data);
#define kern_mount(type) kern_mount_data(type, NULL)
extern void kern_unmount(struct vfsmount *mnt);
extern int may_umount_tree(struct vfsmount *);
extern int may_umount(struct vfsmount *);
extern long do_mount(const char *, const char __user *,
		     const char *, unsigned long, void *);
extern struct vfsmount *collect_mounts(const struct path *);
extern void drop_collected_mounts(struct vfsmount *);
extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,
			  struct vfsmount *);
extern int vfs_statfs(struct path *, struct kstatfs *);
extern int user_statfs(const char __user *, struct kstatfs *);
extern int fd_statfs(int, struct kstatfs *);
extern int vfs_ustat(dev_t, struct kstatfs *);
extern int freeze_super(struct super_block *super);
extern int thaw_super(struct super_block *super);
extern bool our_mnt(struct vfsmount *mnt);

extern int current_umask(void);

extern void ihold(struct inode * inode);
extern void iput(struct inode *);

/* /sys/fs */
extern struct kobject *fs_kobj;

#define MAX_RW_COUNT (INT_MAX & PAGE_CACHE_MASK)
extern int rw_verify_area(int, struct file *, loff_t *, size_t);

#ifdef CONFIG_MANDATORY_FILE_LOCKING
extern int locks_mandatory_locked(struct file *);
extern int locks_mandatory_area(struct inode *, struct file *, loff_t, loff_t, unsigned char);

/*
 * Candidates for mandatory locking have the setgid bit set
 * but no group execute bit -  an otherwise meaningless combination.
 */

static inline int __mandatory_lock(struct inode *ino)
{
	return (ino->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID;
}

/*
 * ... and these candidates should be on MS_MANDLOCK mounted fs,
 * otherwise these will be advisory locks
 */

static inline int mandatory_lock(struct inode *ino)
{
	return IS_MANDLOCK(ino) && __mandatory_lock(ino);
}

static inline int locks_verify_locked(struct file *file)
{
	if (mandatory_lock(locks_inode(file)))
		return locks_mandatory_locked(file);
	return 0;
}

static inline int locks_verify_truncate(struct inode *inode,
				    struct file *f,
				    loff_t size)
{
	if (!inode->i_flock || !mandatory_lock(inode))
		return 0;

	if (size < inode->i_size) {
		return locks_mandatory_area(inode, f, size, inode->i_size - 1,
				F_WRLCK);
	} else {
		return locks_mandatory_area(inode, f, inode->i_size, size - 1,
				F_WRLCK);
	}
}

#else /* !CONFIG_MANDATORY_FILE_LOCKING */

static inline int locks_mandatory_locked(struct file *file)
{
	return 0;
}

static inline int locks_mandatory_area(struct inode *inode,
				       struct file *filp, loff_t start,
				       loff_t end, unsigned char type)
{
	return 0;
}

static inline int __mandatory_lock(struct inode *inode)
{
	return 0;
}

static inline int mandatory_lock(struct inode *inode)
{
	return 0;
}

static inline int locks_verify_locked(struct file *file)
{
	return 0;
}

static inline int locks_verify_truncate(struct inode *inode, struct file *filp,
					loff_t size)
{
	return 0;
}

#endif /* CONFIG_MANDATORY_FILE_LOCKING */


#ifdef CONFIG_FILE_LOCKING
static inline int break_lease(struct inode *inode, unsigned int mode)
{
	/*
	 * Since this check is lockless, we must ensure that any refcounts
	 * taken are done before checking inode->i_flock. Otherwise, we could
	 * end up racing with tasks trying to set a new lease on this file.
	 */
	smp_mb();
	if (inode->i_flock)
		return __break_lease(inode, mode, FL_LEASE);
	return 0;
}

static inline int break_deleg(struct inode *inode, unsigned int mode)
{
	if (inode->i_flock)
		return __break_lease(inode, mode, FL_DELEG);
	return 0;
}

static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
{
	int ret;

	ret = break_deleg(inode, O_WRONLY|O_NONBLOCK);
	if (ret == -EWOULDBLOCK && delegated_inode) {
		*delegated_inode = inode;
		ihold(inode);
	}
	return ret;
}

static inline int break_deleg_wait(struct inode **delegated_inode)
{
	int ret;

	ret = break_deleg(*delegated_inode, O_WRONLY);
	iput(*delegated_inode);
	*delegated_inode = NULL;
	return ret;
}

static inline int break_layout(struct inode *inode, bool wait)
{
	smp_mb();
	if (inode->i_flock)
		return __break_lease(inode,
				wait ? O_WRONLY : O_WRONLY | O_NONBLOCK,
				FL_LAYOUT);
	return 0;
}

#else /* !CONFIG_FILE_LOCKING */
static inline int break_lease(struct inode *inode, unsigned int mode)
{
	return 0;
}

static inline int break_deleg(struct inode *inode, unsigned int mode)
{
	return 0;
}

static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
{
	return 0;
}

static inline int break_deleg_wait(struct inode **delegated_inode)
{
	BUG();
	return 0;
}

static inline int break_layout(struct inode *inode, bool wait)
{
	return 0;
}

#endif /* CONFIG_FILE_LOCKING */

/* fs/open.c */
struct audit_names;
struct filename {
	const char		*name;	/* pointer to actual string */
	const __user char	*uptr;	/* original userland pointer */
	struct audit_names	*aname;
	bool			separate; /* should "name" be freed? */
#ifndef __GENKSYMS__
	int			refcnt;
#endif
};

extern long vfs_truncate(struct path *, loff_t);
extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs,
		       struct file *filp);
extern int vfs_fallocate(struct file *file, int mode, loff_t offset,
			loff_t len);
extern long do_sys_open(int dfd, const char __user *filename, int flags,
			umode_t mode);
extern struct file *file_open_name(struct filename *, int, umode_t);
extern struct file *filp_open(const char *, int, umode_t);
extern struct file *file_open_root(struct dentry *, struct vfsmount *,
				   const char *, int);
extern int vfs_open(const struct path *, struct file *, const struct cred *);
extern struct file * dentry_open(const struct path *, int, const struct cred *);
extern int filp_close(struct file *, fl_owner_t id);

extern struct filename *getname(const char __user *);
extern struct filename *getname_kernel(const char *);
extern void putname(struct filename *name);

enum {
	FILE_CREATED = 1,
	FILE_OPENED = 2
};
extern int finish_open(struct file *file, struct dentry *dentry,
			int (*open)(struct inode *, struct file *),
			int *opened);
extern int finish_no_open(struct file *file, struct dentry *dentry);

/* fs/ioctl.c */

extern int ioctl_preallocate(struct file *filp, void __user *argp);

/* fs/dcache.c */
extern void __init vfs_caches_init_early(void);
extern void __init vfs_caches_init(void);

extern struct kmem_cache *names_cachep;

#define __getname()		kmem_cache_alloc(names_cachep, GFP_KERNEL)
#define __putname(name)		kmem_cache_free(names_cachep, (void *)(name))

#ifdef CONFIG_BLOCK
extern int register_blkdev(unsigned int, const char *);
extern void unregister_blkdev(unsigned int, const char *);
extern struct block_device *bdget(dev_t);
extern struct block_device *bdgrab(struct block_device *bdev);
extern void bd_set_size(struct block_device *, loff_t size);
extern void bd_forget(struct inode *inode);
extern void bdput(struct block_device *);
extern void invalidate_bdev(struct block_device *);
extern void iterate_bdevs(void (*)(struct block_device *, void *), void *);
extern int sync_blockdev(struct block_device *bdev);
extern void kill_bdev(struct block_device *);
extern struct super_block *freeze_bdev(struct block_device *);
extern void emergency_thaw_all(void);
extern void emergency_thaw_bdev(struct super_block *sb);
extern int thaw_bdev(struct block_device *bdev, struct super_block *sb);
extern int fsync_bdev(struct block_device *);

extern struct super_block *blockdev_superblock;

static inline bool sb_is_blkdev_sb(struct super_block *sb)
{
	return sb == blockdev_superblock;
}
#else
static inline void bd_forget(struct inode *inode) {}
static inline int sync_blockdev(struct block_device *bdev) { return 0; }
static inline void kill_bdev(struct block_device *bdev) {}
static inline void invalidate_bdev(struct block_device *bdev) {}

static inline struct super_block *freeze_bdev(struct block_device *sb)
{
	return NULL;
}

static inline int thaw_bdev(struct block_device *bdev, struct super_block *sb)
{
	return 0;
}

static inline void iterate_bdevs(void (*f)(struct block_device *, void *), void *arg)
{
}

static inline int sb_is_blkdev_sb(struct super_block *sb)
{
	return 0;
}
#endif
extern int sync_filesystem(struct super_block *);
extern const struct file_operations def_blk_fops;
extern const struct file_operations def_chr_fops;
#ifdef CONFIG_BLOCK
extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);
extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long);
extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long);
extern int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder);
extern struct block_device *blkdev_get_by_path(const char *path, fmode_t mode,
					       void *holder);
extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode,
					      void *holder);
extern void blkdev_put(struct block_device *bdev, fmode_t mode);
extern int __blkdev_reread_part(struct block_device *bdev);
extern int blkdev_reread_part(struct block_device *bdev);

#ifdef CONFIG_SYSFS
extern int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk);
extern void bd_unlink_disk_holder(struct block_device *bdev,
				  struct gendisk *disk);
#else
static inline int bd_link_disk_holder(struct block_device *bdev,
				      struct gendisk *disk)
{
	return 0;
}
static inline void bd_unlink_disk_holder(struct block_device *bdev,
					 struct gendisk *disk)
{
}
#endif
#endif

/* fs/char_dev.c */
#define CHRDEV_MAJOR_HASH_SIZE	255
extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
extern int register_chrdev_region(dev_t, unsigned, const char *);
extern int __register_chrdev(unsigned int major, unsigned int baseminor,
			     unsigned int count, const char *name,
			     const struct file_operations *fops);
extern void __unregister_chrdev(unsigned int major, unsigned int baseminor,
				unsigned int count, const char *name);
extern void unregister_chrdev_region(dev_t, unsigned);
extern void chrdev_show(struct seq_file *,off_t);

static inline int register_chrdev(unsigned int major, const char *name,
				  const struct file_operations *fops)
{
	return __register_chrdev(major, 0, 256, name, fops);
}

static inline void unregister_chrdev(unsigned int major, const char *name)
{
	__unregister_chrdev(major, 0, 256, name);
}

/* fs/block_dev.c */
#define BDEVNAME_SIZE	32	/* Largest string for a blockdev identifier */
#define BDEVT_SIZE	10	/* Largest string for MAJ:MIN for blkdev */

#ifdef CONFIG_BLOCK
#define BLKDEV_MAJOR_HASH_SIZE	255
extern const char *__bdevname(dev_t, char *buffer);
extern const char *bdevname(struct block_device *bdev, char *buffer);
extern struct block_device *lookup_bdev(const char *);
extern void blkdev_show(struct seq_file *,off_t);

#else
#define BLKDEV_MAJOR_HASH_SIZE	0
#endif

extern void init_special_inode(struct inode *, umode_t, dev_t);

/* Invalid inode operations -- fs/bad_inode.c */
extern void make_bad_inode(struct inode *);
extern int is_bad_inode(struct inode *);

#ifdef CONFIG_BLOCK
/*
 * tmp cpmpat. Users used to set the write bit for all non reads, but
 * we will be dropping the bitmap use for ops. Support both until
 * the end of the patchset.
 */
static inline bool op_is_write(unsigned long flags)
{
	if (flags & (REQ_OP_WRITE | REQ_OP_WRITE_SAME | REQ_OP_DISCARD))
		return true;
	else
		return false;
}

/*
 * return READ, READA, or WRITE
 */
static inline int bio_rw(struct bio *bio)
{
	if (op_is_write(op_from_rq_bits(bio->bi_rw)))
		return WRITE;

	return bio->bi_rw & RWA_MASK;
}

/*
 * return data direction, READ or WRITE
 */
static inline int bio_data_dir(struct bio *bio)
{
	return op_is_write(op_from_rq_bits(bio->bi_rw)) ? WRITE : READ;
}

extern void check_disk_size_change(struct gendisk *disk,
				   struct block_device *bdev);
extern int revalidate_disk(struct gendisk *);
extern int check_disk_change(struct block_device *);
extern int __invalidate_device(struct block_device *, bool);
extern int invalidate_partition(struct gendisk *, int);
#endif
unsigned long invalidate_mapping_pages(struct address_space *mapping,
					pgoff_t start, pgoff_t end);

static inline void invalidate_remote_inode(struct inode *inode)
{
	if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
	    S_ISLNK(inode->i_mode))
		invalidate_mapping_pages(inode->i_mapping, 0, -1);
}
extern int invalidate_inode_pages2(struct address_space *mapping);
extern int invalidate_inode_pages2_range(struct address_space *mapping,
					 pgoff_t start, pgoff_t end);
extern int write_inode_now(struct inode *, int);
extern int filemap_fdatawrite(struct address_space *);
extern int filemap_flush(struct address_space *);
extern int filemap_fdatawait(struct address_space *);
extern void filemap_fdatawait_keep_errors(struct address_space *);
extern int filemap_fdatawait_range(struct address_space *, loff_t lstart,
				   loff_t lend);
extern int filemap_write_and_wait(struct address_space *mapping);
extern int filemap_write_and_wait_range(struct address_space *mapping,
				        loff_t lstart, loff_t lend);
extern int __filemap_fdatawrite_range(struct address_space *mapping,
				loff_t start, loff_t end, int sync_mode);
extern int filemap_fdatawrite_range(struct address_space *mapping,
				loff_t start, loff_t end);
extern int filemap_check_errors(struct address_space *mapping);

extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
			   int datasync);
extern int vfs_fsync(struct file *file, int datasync);
extern int generic_write_sync(struct file *file, loff_t pos, loff_t count);
extern void emergency_sync(void);
extern void emergency_remount(void);
#ifdef CONFIG_BLOCK
extern sector_t bmap(struct inode *, sector_t);
#endif
extern int notify_change(struct dentry *, struct iattr *, struct inode **);
extern int inode_permission(struct inode *, int);
extern int __inode_permission(struct inode *, int);
extern int generic_permission(struct inode *, int);
extern int __check_sticky(struct inode *dir, struct inode *inode);

static inline bool execute_ok(struct inode *inode)
{
	return (inode->i_mode & S_IXUGO) || S_ISDIR(inode->i_mode);
}

static inline void file_start_write(struct file *file)
{
	if (!S_ISREG(file_inode(file)->i_mode))
		return;
	__sb_start_write(file_inode(file)->i_sb, SB_FREEZE_WRITE, true);
}

static inline bool file_start_write_trylock(struct file *file)
{
	if (!S_ISREG(file_inode(file)->i_mode))
		return true;
	return __sb_start_write(file_inode(file)->i_sb, SB_FREEZE_WRITE, false);
}

static inline void file_end_write(struct file *file)
{
	if (!S_ISREG(file_inode(file)->i_mode))
		return;
	__sb_end_write(file_inode(file)->i_sb, SB_FREEZE_WRITE);
}

/*
 * get_write_access() gets write permission for a file.
 * put_write_access() releases this write permission.
 * This is used for regular files.
 * We cannot support write (and maybe mmap read-write shared) accesses and
 * MAP_DENYWRITE mmappings simultaneously. The i_writecount field of an inode
 * can have the following values:
 * 0: no writers, no VM_DENYWRITE mappings
 * < 0: (-i_writecount) vm_area_structs with VM_DENYWRITE set exist
 * > 0: (i_writecount) users are writing to the file.
 *
 * Normally we operate on that counter with atomic_{inc,dec} and it's safe
 * except for the cases where we don't hold i_writecount yet. Then we need to
 * use {get,deny}_write_access() - these functions check the sign and refuse
 * to do the change if sign is wrong.
 */
static inline int get_write_access(struct inode *inode)
{
	return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -ETXTBSY;
}
static inline int deny_write_access(struct file *file)
{
	struct inode *inode = file_inode(file);
	return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -ETXTBSY;
}
static inline void put_write_access(struct inode * inode)
{
	atomic_dec(&inode->i_writecount);
}
static inline void allow_write_access(struct file *file)
{
	if (file)
		atomic_inc(&file_inode(file)->i_writecount);
}
static inline bool inode_is_open_for_write(const struct inode *inode)
{
	return atomic_read(&inode->i_writecount) > 0;
}

#ifdef CONFIG_IMA
static inline void i_readcount_dec(struct inode *inode)
{
	BUG_ON(!atomic_read(&inode->i_readcount));
	atomic_dec(&inode->i_readcount);
}
static inline void i_readcount_inc(struct inode *inode)
{
	atomic_inc(&inode->i_readcount);
}
#else
static inline void i_readcount_dec(struct inode *inode)
{
	return;
}
static inline void i_readcount_inc(struct inode *inode)
{
	return;
}
#endif
extern int do_pipe_flags(int *, int);

extern int kernel_read(struct file *, loff_t, char *, unsigned long);
extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t);
extern ssize_t __kernel_write(struct file *, const char *, size_t, loff_t *);
extern struct file * open_exec(const char *);
 
/* fs/dcache.c -- generic fs support functions */
extern int is_subdir(struct dentry *, struct dentry *);
extern bool path_is_under(const struct path *, const struct path *);
extern ino_t find_inode_number(struct dentry *, struct qstr *);

#include <linux/err.h>

/* needed for stackable file system support */
extern loff_t default_llseek(struct file *file, loff_t offset, int whence);

extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence);

extern int inode_init_always(struct super_block *, struct inode *);
extern void inode_init_once(struct inode *);
extern void address_space_init_once(struct address_space *mapping);
extern struct inode * igrab(struct inode *);
extern ino_t iunique(struct super_block *, ino_t);
extern int inode_needs_sync(struct inode *inode);
extern int generic_delete_inode(struct inode *inode);
static inline int generic_drop_inode(struct inode *inode)
{
	return !inode->i_nlink || inode_unhashed(inode);
}

extern struct inode *ilookup5_nowait(struct super_block *sb,
		unsigned long hashval, int (*test)(struct inode *, void *),
		void *data);
extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
		int (*test)(struct inode *, void *), void *data);
extern struct inode *ilookup(struct super_block *sb, unsigned long ino);

extern struct inode *inode_insert5(struct inode *inode, unsigned long hashval,
		int (*test)(struct inode *, void *),
		int (*set)(struct inode *, void *),
		void *data);
extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *);
extern struct inode * iget_locked(struct super_block *, unsigned long);
extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *);
extern int insert_inode_locked(struct inode *);
#ifdef CONFIG_DEBUG_LOCK_ALLOC
extern void lockdep_annotate_inode_mutex_key(struct inode *inode);
#else
static inline void lockdep_annotate_inode_mutex_key(struct inode *inode) { };
#endif
extern void unlock_new_inode(struct inode *);
extern void discard_new_inode(struct inode *);
extern unsigned int get_next_ino(void);

extern void __iget(struct inode * inode);
extern void iget_failed(struct inode *);
extern void clear_inode(struct inode *);
extern void __destroy_inode(struct inode *);
extern struct inode *new_inode_pseudo(struct super_block *sb);
extern struct inode *new_inode(struct super_block *sb);
extern void free_inode_nonrcu(struct inode *inode);
extern int should_remove_suid(struct dentry *);
extern int file_remove_privs(struct file *);
extern int dentry_needs_remove_privs(struct dentry *dentry);
static inline int file_needs_remove_privs(struct file *file)
{
	return dentry_needs_remove_privs(file->f_path.dentry);
}

extern void __insert_inode_hash(struct inode *, unsigned long hashval);
static inline void insert_inode_hash(struct inode *inode)
{
	__insert_inode_hash(inode, inode->i_ino);
}

extern void __remove_inode_hash(struct inode *);
static inline void remove_inode_hash(struct inode *inode)
{
	if (!inode_unhashed(inode))
		__remove_inode_hash(inode);
}

extern void inode_sb_list_add(struct inode *inode);

#ifdef CONFIG_BLOCK
extern void submit_bio(int, struct bio *);
extern int bdev_read_only(struct block_device *);
#endif
extern int set_blocksize(struct block_device *, int);
extern int sb_set_blocksize(struct super_block *, int);
extern int sb_min_blocksize(struct super_block *, int);

extern int generic_file_mmap(struct file *, struct vm_area_struct *);
extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
extern int generic_file_remap_pages(struct vm_area_struct *, unsigned long addr,
		unsigned long size, pgoff_t pgoff);
extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size);
int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk);
extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t);
extern ssize_t generic_file_aio_read2(struct kiocb *, const struct iovec *, unsigned long, loff_t);
extern ssize_t __generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long,
		loff_t *);
extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t);
extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *,
		unsigned long *, loff_t, loff_t *, size_t, size_t);
extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *,
		unsigned long, loff_t, loff_t *, size_t, ssize_t);
extern ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos);
extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos);
extern int generic_segment_checks(const struct iovec *iov,
		unsigned long *nr_segs, size_t *count, int access_flags);

/* fs/block_dev.c */
extern ssize_t blkdev_aio_read(struct kiocb *, const struct iovec *,
			       unsigned long, loff_t);
extern ssize_t blkdev_aio_write(struct kiocb *iocb, const struct iovec *iov,
				unsigned long nr_segs, loff_t pos);
extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end,
			int datasync);
extern void block_sync_page(struct page *page);

/* fs/splice.c */
extern ssize_t generic_file_splice_read(struct file *, loff_t *,
		struct pipe_inode_info *, size_t, unsigned int);
extern ssize_t default_file_splice_read(struct file *, loff_t *,
		struct pipe_inode_info *, size_t, unsigned int);
extern ssize_t generic_file_splice_write(struct pipe_inode_info *,
		struct file *, loff_t *, size_t, unsigned int);
extern ssize_t default_file_splice_write(struct pipe_inode_info *pipe,
		struct file *out, loff_t *ppos, size_t len, unsigned int flags);
extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
		struct file *out, loff_t *, size_t len, unsigned int flags);
extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
		loff_t *opos, size_t len, unsigned int flags);


extern void
file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
extern loff_t noop_llseek(struct file *file, loff_t offset, int whence);
extern loff_t no_llseek(struct file *file, loff_t offset, int whence);
extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize);
extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence);
extern loff_t generic_file_llseek_size(struct file *file, loff_t offset,
		int whence, loff_t maxsize, loff_t eof);
extern loff_t fixed_size_llseek(struct file *file, loff_t offset,
		int whence, loff_t size);
extern loff_t no_seek_end_llseek_size(struct file *, loff_t, int, loff_t);
extern loff_t no_seek_end_llseek(struct file *, loff_t, int);
extern int generic_file_open(struct inode * inode, struct file * filp);
extern int nonseekable_open(struct inode * inode, struct file * filp);

#ifdef CONFIG_BLOCK
typedef void (dio_submit_t)(int rw, struct bio *bio, struct inode *inode,
			    loff_t file_offset);

enum {
	/* need locking between buffered and direct access */
	DIO_LOCKING	= 0x01,

	/* filesystem does not support filling holes */
	DIO_SKIP_HOLES	= 0x02,

	/* inode/fs/bdev does not need truncate protection */
	DIO_SKIP_DIO_COUNT = 0x04,

	/* filesystem can handle aio writes beyond i_size */
	DIO_ASYNC_EXTEND = 0x08,
};

void dio_end_io(struct bio *bio, int error);

ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
	struct block_device *bdev, const struct iovec *iov, loff_t offset,
	unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io,
	dio_submit_t submit_io,	int flags);

static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb,
		struct inode *inode, const struct iovec *iov, loff_t offset,
		unsigned long nr_segs, get_block_t get_block)
{
	return __blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov,
				    offset, nr_segs, get_block, NULL, NULL,
				    DIO_LOCKING | DIO_SKIP_HOLES);
}
#endif

void inode_dio_wait(struct inode *inode);
void inode_dio_done(struct inode *inode);

/*
 * inode_dio_begin - signal start of a direct I/O requests
 * @inode: inode the direct I/O happens on
 *
 * This is called once we've finished processing a direct I/O request,
 * and is used to wake up callers waiting for direct I/O to be quiesced.
 */
static inline void inode_dio_begin(struct inode *inode)
{
	atomic_inc(&inode->i_dio_count);
}

/*
 * inode_dio_end - signal finish of a direct I/O requests
 * @inode: inode the direct I/O happens on
 *
 * This is called once we've finished processing a direct I/O request,
 * and is used to wake up callers waiting for direct I/O to be quiesced.
 */
static inline void inode_dio_end(struct inode *inode)
{
	if (atomic_dec_and_test(&inode->i_dio_count))
		wake_up_bit(&inode->i_state, __I_DIO_WAKEUP);
}

extern void inode_set_flags(struct inode *inode, unsigned int flags,
			    unsigned int mask);

extern const struct file_operations generic_ro_fops;

#define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m))

extern int vfs_readlink(struct dentry *, char __user *, int, const char *);
extern int vfs_follow_link(struct nameidata *, const char *);
extern int page_readlink(struct dentry *, char __user *, int);
extern void *page_follow_link_light(struct dentry *, struct nameidata *);
extern void page_put_link(struct dentry *, struct nameidata *, void *);
extern int __page_symlink(struct inode *inode, const char *symname, int len,
		int nofs);
extern int page_symlink(struct inode *inode, const char *symname, int len);
extern const struct inode_operations page_symlink_inode_operations;
extern void kfree_put_link(struct dentry *, struct nameidata *, void *);
extern int generic_readlink(struct dentry *, char __user *, int);
extern void generic_fillattr(struct inode *, struct kstat *);
extern int vfs_getattr(struct path *, struct kstat *);
void __inode_add_bytes(struct inode *inode, loff_t bytes);
void inode_add_bytes(struct inode *inode, loff_t bytes);
void __inode_sub_bytes(struct inode *inode, loff_t bytes);
void inode_sub_bytes(struct inode *inode, loff_t bytes);
loff_t inode_get_bytes(struct inode *inode);
void inode_set_bytes(struct inode *inode, loff_t bytes);

extern int iterate_dir(struct file *, struct dir_context *);

extern int vfs_stat(const char __user *, struct kstat *);
extern int vfs_lstat(const char __user *, struct kstat *);
extern int vfs_fstat(unsigned int, struct kstat *);
extern int vfs_fstatat(int , const char __user *, struct kstat *, int);

extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
		    unsigned long arg);
extern int __generic_block_fiemap(struct inode *inode,
				  struct fiemap_extent_info *fieinfo,
				  loff_t start, loff_t len,
				  get_block_t *get_block);
extern int generic_block_fiemap(struct inode *inode,
				struct fiemap_extent_info *fieinfo, u64 start,
				u64 len, get_block_t *get_block);

extern void get_filesystem(struct file_system_type *fs);
extern void put_filesystem(struct file_system_type *fs);
extern struct file_system_type *get_fs_type(const char *name);
extern struct super_block *get_super(struct block_device *);
extern struct super_block *get_super_thawed(struct block_device *);
extern struct super_block *get_active_super(struct block_device *bdev);
extern void drop_super(struct super_block *sb);
extern void iterate_supers(void (*)(struct super_block *, void *), void *);
extern void iterate_supers_type(struct file_system_type *,
			        void (*)(struct super_block *, void *), void *);

extern int dcache_dir_open(struct inode *, struct file *);
extern int dcache_dir_close(struct inode *, struct file *);
extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
extern int dcache_readdir(struct file *, void *, filldir_t);
extern int simple_setattr(struct dentry *, struct iattr *);
extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *);
extern int simple_statfs(struct dentry *, struct kstatfs *);
extern int simple_open(struct inode *inode, struct file *file);
extern int simple_link(struct dentry *, struct inode *, struct dentry *);
extern int simple_unlink(struct inode *, struct dentry *);
extern int simple_rmdir(struct inode *, struct dentry *);
extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);
extern int noop_fsync(struct file *, loff_t, loff_t, int);
extern int noop_set_page_dirty(struct page *page);
extern void noop_invalidatepage_range(struct page *page, unsigned int offset,
		unsigned int length);
extern ssize_t noop_direct_IO(int rw, struct kiocb *kiocb,
		const struct iovec *iov, loff_t offset, unsigned long nr_segs);
extern int simple_empty(struct dentry *);
extern int simple_readpage(struct file *file, struct page *page);
extern int simple_write_begin(struct file *file, struct address_space *mapping,
			loff_t pos, unsigned len, unsigned flags,
			struct page **pagep, void **fsdata);
extern int simple_write_end(struct file *file, struct address_space *mapping,
			loff_t pos, unsigned len, unsigned copied,
			struct page *page, void *fsdata);
extern struct inode *alloc_anon_inode(struct super_block *);
extern int simple_nosetlease(struct file *, long, struct file_lock **, void **);
extern const struct dentry_operations simple_dentry_operations;

extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsigned int flags);
extern ssize_t generic_read_dir(struct file *, char __user *, size_t, loff_t *);
extern const struct file_operations simple_dir_operations;
extern const struct inode_operations simple_dir_inode_operations;
extern void make_empty_dir_inode(struct inode *inode);
extern bool is_empty_dir_inode(struct inode *inode);
struct tree_descr { char *name; const struct file_operations *ops; int mode; };
struct dentry *d_alloc_name(struct dentry *, const char *);
extern int simple_fill_super(struct super_block *, unsigned long, struct tree_descr *);
extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count);
extern void simple_release_fs(struct vfsmount **mount, int *count);

extern ssize_t simple_read_from_buffer(void __user *to, size_t count,
			loff_t *ppos, const void *from, size_t available);
extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
		const void __user *from, size_t count);

extern int generic_file_fsync(struct file *, loff_t, loff_t, int);

extern int generic_check_addressable(unsigned, u64);

#ifdef CONFIG_MIGRATION
extern int buffer_migrate_page(struct address_space *,
				struct page *, struct page *,
				enum migrate_mode);
#else
#define buffer_migrate_page NULL
#endif

extern int inode_change_ok(const struct inode *, struct iattr *);
extern int inode_newsize_ok(const struct inode *, loff_t offset);
extern void setattr_copy(struct inode *inode, const struct iattr *attr);

extern int file_update_time(struct file *file);

extern int generic_show_options(struct seq_file *m, struct dentry *root);
extern void save_mount_options(struct super_block *sb, char *options);
extern void replace_mount_options(struct super_block *sb, char *options);

static inline bool io_is_direct(struct file *filp)
{
	return (filp->f_flags & O_DIRECT) || IS_DAX(filp->f_mapping->host);
}

static inline bool vma_is_dax(struct vm_area_struct *vma)
{
	return vma->vm_file && IS_DAX(vma->vm_file->f_mapping->host);
}

static inline bool vma_is_fsdax(struct vm_area_struct *vma)
{
	struct inode *inode;

	if (!vma->vm_file)
		return false;
	if (!vma_is_dax(vma))
		return false;
	inode = file_inode(vma->vm_file);
	if (S_ISCHR(inode->i_mode))
		return false; /* device-dax */
	return true;
}

static inline ino_t parent_ino(struct dentry *dentry)
{
	ino_t res;

	/*
	 * Don't strictly need d_lock here? If the parent ino could change
	 * then surely we'd have a deeper race in the caller?
	 */
	spin_lock(&dentry->d_lock);
	res = dentry->d_parent->d_inode->i_ino;
	spin_unlock(&dentry->d_lock);
	return res;
}

/* Transaction based IO helpers */

/*
 * An argresp is stored in an allocated page and holds the
 * size of the argument or response, along with its content
 */
struct simple_transaction_argresp {
	ssize_t size;
	char data[0];
};

#define SIMPLE_TRANSACTION_LIMIT (PAGE_SIZE - sizeof(struct simple_transaction_argresp))

char *simple_transaction_get(struct file *file, const char __user *buf,
				size_t size);
ssize_t simple_transaction_read(struct file *file, char __user *buf,
				size_t size, loff_t *pos);
int simple_transaction_release(struct inode *inode, struct file *file);

void simple_transaction_set(struct file *file, size_t n);

/*
 * simple attribute files
 *
 * These attributes behave similar to those in sysfs:
 *
 * Writing to an attribute immediately sets a value, an open file can be
 * written to multiple times.
 *
 * Reading from an attribute creates a buffer from the value that might get
 * read with multiple read calls. When the attribute has been read
 * completely, no further read calls are possible until the file is opened
 * again.
 *
 * All attributes contain a text representation of a numeric value
 * that are accessed with the get() and set() functions.
 */
#define DEFINE_SIMPLE_ATTRIBUTE(__fops, __get, __set, __fmt)		\
static int __fops ## _open(struct inode *inode, struct file *file)	\
{									\
	__simple_attr_check_format(__fmt, 0ull);			\
	return simple_attr_open(inode, file, __get, __set, __fmt);	\
}									\
static const struct file_operations __fops = {				\
	.owner	 = THIS_MODULE,						\
	.open	 = __fops ## _open,					\
	.release = simple_attr_release,					\
	.read	 = simple_attr_read,					\
	.write	 = simple_attr_write,					\
	.llseek	 = generic_file_llseek,					\
};

static inline __printf(1, 2)
void __simple_attr_check_format(const char *fmt, ...)
{
	/* don't do anything, just let the compiler check the arguments; */
}

int simple_attr_open(struct inode *inode, struct file *file,
		     int (*get)(void *, u64 *), int (*set)(void *, u64),
		     const char *fmt);
int simple_attr_release(struct inode *inode, struct file *file);
ssize_t simple_attr_read(struct file *file, char __user *buf,
			 size_t len, loff_t *ppos);
ssize_t simple_attr_write(struct file *file, const char __user *buf,
			  size_t len, loff_t *ppos);

struct ctl_table;
int proc_nr_files(struct ctl_table *table, int write,
		  void __user *buffer, size_t *lenp, loff_t *ppos);
int proc_nr_dentry(struct ctl_table *table, int write,
		  void __user *buffer, size_t *lenp, loff_t *ppos);
int proc_nr_inodes(struct ctl_table *table, int write,
		   void __user *buffer, size_t *lenp, loff_t *ppos);
int __init get_filesystem_list(char *buf);

#define __FMODE_EXEC		((__force int) FMODE_EXEC)
#define __FMODE_NONOTIFY	((__force int) FMODE_NONOTIFY)

#define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE])
#define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \
					    (flag & __FMODE_NONOTIFY)))

static inline int is_sxid(umode_t mode)
{
	return (mode & S_ISUID) || ((mode & S_ISGID) && (mode & S_IXGRP));
}

static inline int check_sticky(struct inode *dir, struct inode *inode)
{
	if (!(dir->i_mode & S_ISVTX))
		return 0;

	return __check_sticky(dir, inode);
}

static inline void inode_has_no_xattr(struct inode *inode)
{
	if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & MS_NOSEC))
		inode->i_flags |= S_NOSEC;
}

static inline bool dir_emit(struct dir_context *ctx,
			    const char *name, int namelen,
			    u64 ino, unsigned type)
{
	return ctx->actor(ctx, name, namelen, ctx->pos, ino, type) == 0;
}
static inline bool dir_emit_dot(struct file *file, struct dir_context *ctx)
{
	return ctx->actor(ctx, ".", 1, ctx->pos,
			  file->f_path.dentry->d_inode->i_ino, DT_DIR) == 0;
}
static inline bool dir_emit_dotdot(struct file *file, struct dir_context *ctx)
{
	return ctx->actor(ctx, "..", 2, ctx->pos,
			  parent_ino(file->f_path.dentry), DT_DIR) == 0;
}
static inline bool dir_emit_dots(struct file *file, struct dir_context *ctx)
{
	if (ctx->pos == 0) {
		if (!dir_emit_dot(file, ctx))
			return false;
		ctx->pos = 1;
	}
	if (ctx->pos == 1) {
		if (!dir_emit_dotdot(file, ctx))
			return false;
		ctx->pos = 2;
	}
	return true;
}

static inline const struct inode_operations_wrapper *get_iop_wrapper(struct inode *inode,
								     unsigned version)
{
	const struct inode_operations_wrapper *wrapper;

	if (!IS_IOPS_WRAPPER(inode))
		return NULL;
	wrapper = container_of(inode->i_op, const struct inode_operations_wrapper, ops);
	if (wrapper->version < version)
		return NULL;
	return wrapper;
}

static inline iop_rename2_t get_rename2_iop(struct inode *inode)
{
	const struct inode_operations_wrapper *wrapper = get_iop_wrapper(inode, 0);
	return wrapper ? wrapper->rename2 : NULL;
}

static inline iop_tmpfile_t get_tmpfile_iop(struct inode *inode)
{
	const struct inode_operations_wrapper *wrapper = get_iop_wrapper(inode, 0);
	return wrapper ? wrapper->tmpfile : NULL;
}

static inline iop_dentry_open_t get_dentry_open_iop(struct inode *inode)
{
	const struct inode_operations_wrapper *wrapper = get_iop_wrapper(inode, 0);
	return wrapper ? wrapper->dentry_open : NULL;
}

extern bool path_noexec(const struct path *path);

#endif /* _LINUX_FS_H */
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
September 29 2025 07:01:09
0 / 0
0755
amba
--
September 29 2025 07:01:16
0 / 0
0755
avf
--
September 29 2025 07:01:17
0 / 0
0755
bcma
--
September 29 2025 07:01:17
0 / 0
0755
byteorder
--
September 29 2025 07:01:17
0 / 0
0755
can
--
September 29 2025 07:01:17
0 / 0
0755
ceph
--
September 29 2025 07:01:16
0 / 0
0755
clk
--
September 29 2025 07:01:16
0 / 0
0755
crush
--
September 29 2025 07:01:18
0 / 0
0755
decompress
--
September 29 2025 07:01:18
0 / 0
0755
dma
--
September 29 2025 07:01:16
0 / 0
0755
extcon
--
September 29 2025 07:01:17
0 / 0
0755
fsl
--
September 29 2025 07:01:16
0 / 0
0755
gpio
--
September 29 2025 07:01:16
0 / 0
0755
hsi
--
September 29 2025 07:01:16
0 / 0
0755
i2c
--
September 29 2025 07:01:16
0 / 0
0755
iio
--
September 29 2025 07:01:16
0 / 0
0755
input
--
September 29 2025 07:01:19
0 / 0
0755
irqchip
--
September 29 2025 07:01:19
0 / 0
0755
isdn
--
September 29 2025 07:01:16
0 / 0
0755
lockd
--
September 29 2025 07:01:20
0 / 0
0755
mfd
--
September 29 2025 07:01:17
0 / 0
0755
mlx4
--
September 29 2025 07:01:17
0 / 0
0755
mlx5
--
September 29 2025 07:01:17
0 / 0
0755
mmc
--
September 29 2025 07:01:17
0 / 0
0755
mtd
--
September 29 2025 07:01:18
0 / 0
0755
netfilter
--
September 29 2025 07:01:20
0 / 0
0755
netfilter_arp
--
September 29 2025 07:01:20
0 / 0
0755
netfilter_bridge
--
September 29 2025 07:01:20
0 / 0
0755
netfilter_ipv4
--
September 29 2025 07:01:20
0 / 0
0755
netfilter_ipv6
--
September 29 2025 07:01:20
0 / 0
0755
phy
--
September 29 2025 07:01:18
0 / 0
0755
pinctrl
--
September 29 2025 07:01:21
0 / 0
0755
platform_data
--
September 29 2025 07:01:21
0 / 0
0755
power
--
September 29 2025 07:01:21
0 / 0
0755
qed
--
September 29 2025 07:01:18
0 / 0
0755
raid
--
September 29 2025 07:01:18
0 / 0
0755
regulator
--
September 29 2025 07:01:22
0 / 0
0755
rtc
--
September 29 2025 07:01:18
0 / 0
0755
sched
--
September 29 2025 07:01:22
0 / 0
0755
spi
--
September 29 2025 07:01:18
0 / 0
0755
ssb
--
September 29 2025 07:01:18
0 / 0
0755
sunrpc
--
September 29 2025 07:01:22
0 / 0
0755
ulpi
--
September 29 2025 07:01:18
0 / 0
0755
unaligned
--
September 29 2025 07:01:23
0 / 0
0755
usb
--
September 29 2025 07:01:19
0 / 0
0755
uwb
--
September 29 2025 07:01:19
0 / 0
0755
wimax
--
September 29 2025 07:01:23
0 / 0
0755
8250_pci.h
0.976 KB
November 06 2023 09:15:52
0 / 0
0644
a.out.h
1.353 KB
November 06 2023 09:15:52
0 / 0
0644
acct.h
2.51 KB
November 06 2023 09:15:52
0 / 0
0644
acpi.h
26.935 KB
November 06 2023 09:15:52
0 / 0
0644
acpi_dma.h
3.177 KB
November 06 2023 09:15:52
0 / 0
0644
acpi_pmtmr.h
0.62 KB
November 06 2023 09:15:52
0 / 0
0644
adb.h
1.751 KB
November 06 2023 09:15:52
0 / 0
0644
adfs_fs.h
0.522 KB
November 06 2023 09:15:52
0 / 0
0644
adxl.h
0.303 KB
November 06 2023 09:15:52
0 / 0
0644
aer.h
1.682 KB
November 06 2023 09:15:52
0 / 0
0644
agp_backend.h
3.451 KB
November 06 2023 09:15:52
0 / 0
0644
agpgart.h
3.816 KB
November 06 2023 09:15:52
0 / 0
0644
ahci_platform.h
0.872 KB
November 06 2023 09:15:52
0 / 0
0644
aio.h
3.319 KB
November 06 2023 09:15:52
0 / 0
0644
alarmtimer.h
1.424 KB
November 06 2023 09:15:52
0 / 0
0644
altera_jtaguart.h
0.332 KB
November 06 2023 09:15:52
0 / 0
0644
altera_uart.h
0.35 KB
November 06 2023 09:15:52
0 / 0
0644
amd-iommu.h
6.782 KB
November 06 2023 09:15:52
0 / 0
0644
amifd.h
1.948 KB
November 06 2023 09:15:52
0 / 0
0644
amifdreg.h
2.611 KB
November 06 2023 09:15:52
0 / 0
0644
amigaffs.h
2.858 KB
November 06 2023 09:15:52
0 / 0
0644
anon_inodes.h
0.444 KB
November 06 2023 09:15:52
0 / 0
0644
apm-emulation.h
1.538 KB
November 06 2023 09:15:52
0 / 0
0644
apm_bios.h
2.682 KB
November 06 2023 09:15:52
0 / 0
0644
apple_bl.h
0.448 KB
November 06 2023 09:15:52
0 / 0
0644
arcdevice.h
12.456 KB
November 06 2023 09:15:52
0 / 0
0644
ascii85.h
0.52 KB
November 06 2023 09:15:52
0 / 0
0644
asn1.h
1.991 KB
November 06 2023 09:15:52
0 / 0
0644
asn1_ber_bytecode.h
2.718 KB
November 06 2023 09:15:52
0 / 0
0644
asn1_decoder.h
0.659 KB
November 06 2023 09:15:52
0 / 0
0644
assoc_array.h
3.073 KB
November 06 2023 09:15:52
0 / 0
0644
assoc_array_priv.h
5.489 KB
November 06 2023 09:15:52
0 / 0
0644
async.h
1.648 KB
November 06 2023 09:15:52
0 / 0
0644
async_tx.h
6.909 KB
November 06 2023 09:15:52
0 / 0
0644
ata.h
29.434 KB
November 06 2023 09:15:52
0 / 0
0644
ata_platform.h
0.733 KB
November 06 2023 09:15:52
0 / 0
0644
atalk.h
4.282 KB
November 06 2023 09:15:52
0 / 0
0644
ath9k_platform.h
1.442 KB
November 06 2023 09:15:52
0 / 0
0644
atm.h
0.242 KB
November 06 2023 09:15:52
0 / 0
0644
atm_suni.h
0.247 KB
November 06 2023 09:15:52
0 / 0
0644
atm_tcp.h
0.461 KB
November 06 2023 09:15:52
0 / 0
0644
atmdev.h
9.516 KB
November 06 2023 09:15:52
0 / 0
0644
atmel-mci.h
1.205 KB
November 06 2023 09:15:52
0 / 0
0644
atmel-pwm-bl.h
1.514 KB
November 06 2023 09:15:52
0 / 0
0644
atmel-ssc.h
9.288 KB
November 06 2023 09:15:52
0 / 0
0644
atmel_pdc.h
1.467 KB
November 06 2023 09:15:52
0 / 0
0644
atmel_pwm.h
2.66 KB
November 06 2023 09:15:52
0 / 0
0644
atmel_serial.h
5.944 KB
November 06 2023 09:15:52
0 / 0
0644
atmel_tc.h
11.082 KB
November 06 2023 09:15:52
0 / 0
0644
atomic.h
12.648 KB
November 06 2023 09:15:52
0 / 0
0644
attribute_container.h
2.467 KB
November 06 2023 09:15:52
0 / 0
0644
audit.h
16.849 KB
November 06 2023 09:15:52
0 / 0
0644
auto_dev-ioctl.h
0.443 KB
November 06 2023 09:15:52
0 / 0
0644
auto_fs.h
0.426 KB
November 06 2023 09:15:52
0 / 0
0644
auxvec.h
0.259 KB
November 06 2023 09:15:52
0 / 0
0644
average.h
1.988 KB
November 06 2023 09:15:52
0 / 0
0644
b1pcmcia.h
0.65 KB
November 06 2023 09:15:52
0 / 0
0644
backing-dev.h
10.367 KB
November 06 2023 09:15:52
0 / 0
0644
backlight.h
4.791 KB
November 06 2023 09:15:52
0 / 0
0644
badblocks.h
2.099 KB
November 06 2023 09:15:52
0 / 0
0644
balloon_compaction.h
7.676 KB
November 06 2023 09:15:52
0 / 0
0644
basic_mmio_gpio.h
2.083 KB
November 06 2023 09:15:52
0 / 0
0644
bcd.h
0.508 KB
November 06 2023 09:15:52
0 / 0
0644
bch.h
2.598 KB
November 06 2023 09:15:52
0 / 0
0644
bcm47xx_nvram.h
1.193 KB
November 06 2023 09:15:52
0 / 0
0644
bcm47xx_wdt.h
0.563 KB
November 06 2023 09:15:52
0 / 0
0644
bfin_mac.h
0.546 KB
November 06 2023 09:15:52
0 / 0
0644
binfmts.h
3.778 KB
November 06 2023 09:15:52
0 / 0
0644
bio.h
18.802 KB
November 06 2023 09:15:52
0 / 0
0644
bit_spinlock.h
2.267 KB
November 06 2023 09:15:52
0 / 0
0644
bitfield.h
4.67 KB
November 06 2023 09:15:52
0 / 0
0644
bitmap.h
12.933 KB
November 06 2023 09:15:52
0 / 0
0644
bitops.h
7.413 KB
November 06 2023 09:15:52
0 / 0
0644
bitrev.h
0.264 KB
November 06 2023 09:15:52
0 / 0
0644
blk-mq-pci.h
0.22 KB
November 06 2023 09:15:52
0 / 0
0644
blk-mq.h
12.551 KB
November 06 2023 09:15:52
0 / 0
0644
blk_types.h
10.567 KB
November 06 2023 09:15:52
0 / 0
0644
blkdev.h
56.196 KB
November 06 2023 09:15:52
0 / 0
0644
blktrace_api.h
3.11 KB
November 06 2023 09:15:52
0 / 0
0644
blockgroup_lock.h
1.137 KB
November 06 2023 09:15:52
0 / 0
0644
bma150.h
1.893 KB
November 06 2023 09:15:52
0 / 0
0644
bootmem.h
9.815 KB
November 06 2023 09:15:52
0 / 0
0644
bottom_half.h
0.581 KB
November 06 2023 09:15:52
0 / 0
0644
bpf.h
15.584 KB
November 06 2023 09:15:52
0 / 0
0644
bpf_trace.h
0.124 KB
November 06 2023 09:15:52
0 / 0
0644
bpf_types.h
1.257 KB
November 06 2023 09:15:52
0 / 0
0644
bpf_verifier.h
8.259 KB
November 06 2023 09:15:52
0 / 0
0644
brcmphy.h
1.185 KB
November 06 2023 09:15:52
0 / 0
0644
bsearch.h
0.23 KB
November 06 2023 09:15:52
0 / 0
0644
bsg-lib.h
1.977 KB
November 06 2023 09:15:52
0 / 0
0644
bsg.h
0.717 KB
November 06 2023 09:15:52
0 / 0
0644
btree-128.h
2.635 KB
November 06 2023 09:15:52
0 / 0
0644
btree-type.h
3.859 KB
November 06 2023 09:15:52
0 / 0
0644
btree.h
6.797 KB
November 06 2023 09:15:52
0 / 0
0644
btrfs.h
0.104 KB
November 06 2023 09:15:52
0 / 0
0644
buffer_head.h
12.054 KB
November 06 2023 09:15:52
0 / 0
0644
bug.h
3.679 KB
November 06 2023 09:15:52
0 / 0
0644
c2port.h
1.587 KB
November 06 2023 09:15:52
0 / 0
0644
cache.h
1.575 KB
November 06 2023 09:15:52
0 / 0
0644
capability.h
6.774 KB
November 06 2023 09:15:52
0 / 0
0644
cb710.h
5.69 KB
November 06 2023 09:15:52
0 / 0
0644
cciss_ioctl.h
0.99 KB
November 06 2023 09:15:52
0 / 0
0644
ccp.h
16.603 KB
November 06 2023 09:15:52
0 / 0
0644
cdev.h
0.827 KB
November 06 2023 09:15:52
0 / 0
0644
cdrom.h
8.664 KB
November 06 2023 09:15:52
0 / 0
0644
cfag12864b.h
2.096 KB
November 06 2023 09:15:52
0 / 0
0644
cgroup.h
28.788 KB
November 06 2023 09:15:52
0 / 0
0644
cgroup_subsys.h
1.452 KB
November 06 2023 09:15:52
0 / 0
0644
circ_buf.h
1.047 KB
November 06 2023 09:15:52
0 / 0
0644
cleancache.h
3.806 KB
November 06 2023 09:15:52
0 / 0
0644
clk-private.h
5.908 KB
November 06 2023 09:15:52
0 / 0
0644
clk-provider.h
17.066 KB
November 06 2023 09:15:52
0 / 0
0644
clk.h
10.333 KB
November 06 2023 09:15:52
0 / 0
0644
clkdev.h
1.146 KB
November 06 2023 09:15:52
0 / 0
0644
clksrc-dbx500-prcmu.h
0.444 KB
November 06 2023 09:15:52
0 / 0
0644
clockchips.h
6.523 KB
November 06 2023 09:15:52
0 / 0
0644
clocksource.h
7.805 KB
November 06 2023 09:15:52
0 / 0
0644
cm4000_cs.h
0.156 KB
November 06 2023 09:15:52
0 / 0
0644
cn_proc.h
1.846 KB
November 06 2023 09:15:52
0 / 0
0644
cnt32_to_63.h
3.604 KB
November 06 2023 09:15:52
0 / 0
0644
coda.h
2.197 KB
November 06 2023 09:15:52
0 / 0
0644
coda_psdev.h
2.62 KB
November 06 2023 09:15:52
0 / 0
0644
com20020.h
3.539 KB
November 06 2023 09:15:52
0 / 0
0644
compaction.h
4.037 KB
November 06 2023 09:15:52
0 / 0
0644
compat.h
25.058 KB
November 06 2023 09:15:52
0 / 0
0644
compiler-gcc.h
8.621 KB
November 06 2023 09:15:52
0 / 0
0644
compiler-intel.h
1.109 KB
November 06 2023 09:15:52
0 / 0
0644
compiler.h
14.431 KB
November 06 2023 09:15:52
0 / 0
0644
completion.h
3.768 KB
November 06 2023 09:15:52
0 / 0
0644
component.h
1.145 KB
November 06 2023 09:15:52
0 / 0
0644
concap.h
3.689 KB
November 06 2023 09:15:52
0 / 0
0644
configfs.h
10.109 KB
November 06 2023 09:15:52
0 / 0
0644
connector.h
2.307 KB
November 06 2023 09:15:52
0 / 0
0644
console.h
6.691 KB
November 06 2023 09:15:52
0 / 0
0644
console_struct.h
5.076 KB
November 06 2023 09:15:52
0 / 0
0644
consolemap.h
1.005 KB
November 06 2023 09:15:52
0 / 0
0644
container.h
0.652 KB
November 06 2023 09:15:52
0 / 0
0644
context_tracking.h
2.819 KB
November 06 2023 09:15:52
0 / 0
0644
context_tracking_state.h
1.26 KB
November 06 2023 09:15:52
0 / 0
0644
cordic.h
1.752 KB
November 06 2023 09:15:52
0 / 0
0644
coredump.h
0.554 KB
November 06 2023 09:15:52
0 / 0
0644
cper.h
12.337 KB
November 06 2023 09:15:52
0 / 0
0644
cpu.h
10.766 KB
November 06 2023 09:15:52
0 / 0
0644
cpu_cooling.h
2.069 KB
November 06 2023 09:15:52
0 / 0
0644
cpu_pm.h
2.783 KB
November 06 2023 09:15:52
0 / 0
0644
cpu_rmap.h
1.896 KB
November 06 2023 09:15:52
0 / 0
0644
cpufreq.h
19.551 KB
November 06 2023 09:15:52
0 / 0
0644
cpuidle.h
6.84 KB
November 06 2023 09:15:52
0 / 0
0644
cpuidle_haltpoll.h
0.305 KB
November 06 2023 09:15:52
0 / 0
0644
cpumask.h
29.029 KB
November 06 2023 09:15:52
0 / 0
0644
cpuset.h
5.784 KB
November 06 2023 09:15:52
0 / 0
0644
cputime.h
0.326 KB
November 06 2023 09:15:52
0 / 0
0644
cramfs_fs.h
0.272 KB
November 06 2023 09:15:52
0 / 0
0644
cramfs_fs_sb.h
0.335 KB
November 06 2023 09:15:52
0 / 0
0644
crash_core.h
2.921 KB
November 06 2023 09:15:52
0 / 0
0644
crash_dump.h
3.831 KB
November 06 2023 09:15:52
0 / 0
0644
crc-ccitt.h
0.322 KB
November 06 2023 09:15:52
0 / 0
0644
crc-itu-t.h
0.601 KB
November 06 2023 09:15:52
0 / 0
0644
crc-t10dif.h
0.343 KB
November 06 2023 09:15:52
0 / 0
0644
crc16.h
0.607 KB
November 06 2023 09:15:52
0 / 0
0644
crc32.h
2.601 KB
November 06 2023 09:15:52
0 / 0
0644
crc32c.h
0.248 KB
November 06 2023 09:15:52
0 / 0
0644
crc7.h
0.266 KB
November 06 2023 09:15:52
0 / 0
0644
crc8.h
3.653 KB
November 06 2023 09:15:52
0 / 0
0644
cred.h
11.925 KB
November 06 2023 09:15:52
0 / 0
0644
crypto.h
33.608 KB
November 06 2023 09:15:52
0 / 0
0644
cryptohash.h
0.407 KB
November 06 2023 09:15:52
0 / 0
0644
cryptouser.h
3.238 KB
November 06 2023 09:15:52
0 / 0
0644
cs5535.h
6.275 KB
November 06 2023 09:15:52
0 / 0
0644
ctype.h
1.689 KB
November 06 2023 09:15:52
0 / 0
0644
cuda.h
0.451 KB
November 06 2023 09:15:52
0 / 0
0644
cyclades.h
10.258 KB
November 06 2023 09:15:52
0 / 0
0644
cycx_x25.h
3.64 KB
November 06 2023 09:15:52
0 / 0
0644
davinci_emac.h
1.12 KB
November 06 2023 09:15:52
0 / 0
0644
dax.h
5.069 KB
November 06 2023 09:15:52
0 / 0
0644
dca.h
2.619 KB
November 06 2023 09:15:52
0 / 0
0644
dcache.h
17.918 KB
November 06 2023 09:15:52
0 / 0
0644
dccp.h
10.588 KB
November 06 2023 09:15:52
0 / 0
0644
dcookies.h
1.248 KB
November 06 2023 09:15:52
0 / 0
0644
debug_locks.h
1.477 KB
November 06 2023 09:15:52
0 / 0
0644
debugfs.h
7.68 KB
November 06 2023 09:15:52
0 / 0
0644
debugobjects.h
3.645 KB
November 06 2023 09:15:52
0 / 0
0644
delay.h
1.393 KB
November 06 2023 09:15:52
0 / 0
0644
delayacct.h
4.002 KB
November 06 2023 09:15:52
0 / 0
0644
dell-led.h
0.087 KB
November 06 2023 09:15:52
0 / 0
0644
devcoredump.h
0.963 KB
November 06 2023 09:15:52
0 / 0
0644
devfreq.h
8.803 KB
November 06 2023 09:15:52
0 / 0
0644
device-mapper.h
17.479 KB
November 06 2023 09:15:52
0 / 0
0644
device.h
48.329 KB
November 06 2023 09:15:52
0 / 0
0644
device_cgroup.h
0.583 KB
November 06 2023 09:15:52
0 / 0
0644
devpts_fs.h
1.098 KB
November 06 2023 09:15:52
0 / 0
0644
digsig.h
1.347 KB
November 06 2023 09:15:52
0 / 0
0644
dio.h
10.928 KB
November 06 2023 09:15:52
0 / 0
0644
dirent.h
0.173 KB
November 06 2023 09:15:52
0 / 0
0644
dlm.h
6.007 KB
November 06 2023 09:15:52
0 / 0
0644
dlm_plock.h
0.662 KB
November 06 2023 09:15:52
0 / 0
0644
dm-dirty-log.h
3.943 KB
November 06 2023 09:15:52
0 / 0
0644
dm-io.h
1.917 KB
November 06 2023 09:15:52
0 / 0
0644
dm-kcopyd.h
2.848 KB
November 06 2023 09:15:52
0 / 0
0644
dm-region-hash.h
3.107 KB
November 06 2023 09:15:52
0 / 0
0644
dm9000.h
1.074 KB
November 06 2023 09:15:52
0 / 0
0644
dma-attrs.h
1.582 KB
November 06 2023 09:15:52
0 / 0
0644
dma-buf.h
14.472 KB
November 06 2023 09:15:52
0 / 0
0644
dma-contiguous.h
4.583 KB
November 06 2023 09:15:52
0 / 0
0644
dma-debug.h
5.614 KB
November 06 2023 09:15:52
0 / 0
0644
dma-direction.h
0.292 KB
November 06 2023 09:15:52
0 / 0
0644
dma-fence-array.h
2.489 KB
November 06 2023 09:15:52
0 / 0
0644
dma-fence.h
18.796 KB
November 06 2023 09:15:52
0 / 0
0644
dma-mapping.h
21.935 KB
November 06 2023 09:15:52
0 / 0
0644
dma_remapping.h
1.139 KB
November 06 2023 09:15:52
0 / 0
0644
dmaengine.h
39.344 KB
November 06 2023 09:15:52
0 / 0
0644
dmapool.h
1.068 KB
November 06 2023 09:15:52
0 / 0
0644
dmar.h
7.766 KB
November 06 2023 09:15:52
0 / 0
0644
dmi.h
4.099 KB
November 06 2023 09:15:52
0 / 0
0644
dnotify.h
0.984 KB
November 06 2023 09:15:52
0 / 0
0644
dns_resolver.h
1.306 KB
November 06 2023 09:15:52
0 / 0
0644
dqblk_qtree.h
2.059 KB
November 06 2023 09:15:52
0 / 0
0644
dqblk_v1.h
0.334 KB
November 06 2023 09:15:52
0 / 0
0644
dqblk_v2.h
0.358 KB
November 06 2023 09:15:52
0 / 0
0644
drbd.h
10.301 KB
November 06 2023 09:15:52
0 / 0
0644
drbd_genl.h
15.29 KB
November 06 2023 09:15:52
0 / 0
0644
drbd_genl_api.h
1.728 KB
November 06 2023 09:15:52
0 / 0
0644
drbd_limits.h
6.577 KB
November 06 2023 09:15:52
0 / 0
0644
ds1286.h
1.194 KB
November 06 2023 09:15:52
0 / 0
0644
ds17287rtc.h
2.613 KB
November 06 2023 09:15:52
0 / 0
0644
ds2782_battery.h
0.116 KB
November 06 2023 09:15:52
0 / 0
0644
dtlk.h
3.462 KB
November 06 2023 09:15:52
0 / 0
0644
dw_apb_timer.h
1.807 KB
November 06 2023 09:15:52
0 / 0
0644
dynamic_debug.h
3.905 KB
November 06 2023 09:15:52
0 / 0
0644
dynamic_queue_limits.h
3.662 KB
November 06 2023 09:15:52
0 / 0
0644
earlycpio.h
0.313 KB
November 06 2023 09:15:52
0 / 0
0644
ecryptfs.h
3.785 KB
November 06 2023 09:15:52
0 / 0
0644
edac.h
24.938 KB
November 06 2023 09:15:52
0 / 0
0644
edd.h
1.435 KB
November 06 2023 09:15:52
0 / 0
0644
edma.h
0.788 KB
November 06 2023 09:15:52
0 / 0
0644
eeprom_93cx6.h
2.746 KB
November 06 2023 09:15:52
0 / 0
0644
eeprom_93xx46.h
0.412 KB
November 06 2023 09:15:52
0 / 0
0644
efi-bgrt.h
0.417 KB
November 06 2023 09:15:52
0 / 0
0644
efi.h
38.553 KB
November 06 2023 09:15:52
0 / 0
0644
efs_vh.h
1.51 KB
November 06 2023 09:15:52
0 / 0
0644
eisa.h
2.922 KB
November 06 2023 09:15:52
0 / 0
0644
elevator.h
10.762 KB
November 06 2023 09:15:52
0 / 0
0644
elf-fdpic.h
2.185 KB
November 06 2023 09:15:52
0 / 0
0644
elf-randomize.h
0.531 KB
November 06 2023 09:15:52
0 / 0
0644
elf.h
1.392 KB
November 06 2023 09:15:52
0 / 0
0644
elfcore-compat.h
1.199 KB
November 06 2023 09:15:52
0 / 0
0644
elfcore.h
2.063 KB
November 06 2023 09:15:52
0 / 0
0644
elfnote.h
3.497 KB
November 06 2023 09:15:52
0 / 0
0644
enclosure.h
4.601 KB
November 06 2023 09:15:52
0 / 0
0644
err.h
1.412 KB
November 06 2023 09:15:52
0 / 0
0644
errno.h
1.303 KB
November 06 2023 09:15:52
0 / 0
0644
errqueue.h
0.439 KB
November 06 2023 09:15:52
0 / 0
0644
etherdevice.h
15.311 KB
November 06 2023 09:15:52
0 / 0
0644
ethtool.h
18.335 KB
November 06 2023 09:15:52
0 / 0
0644
eventfd.h
2.062 KB
November 06 2023 09:15:52
0 / 0
0644
eventpoll.h
2.011 KB
November 06 2023 09:15:52
0 / 0
0644
evm.h
2.479 KB
November 06 2023 09:15:52
0 / 0
0644
export.h
2.665 KB
November 06 2023 09:15:52
0 / 0
0644
exportfs.h
7.308 KB
November 06 2023 09:15:52
0 / 0
0644
ext2_fs.h
0.906 KB
November 06 2023 09:15:52
0 / 0
0644
extcon.h
10.258 KB
November 06 2023 09:15:52
0 / 0
0644
f2fs_fs.h
12.972 KB
November 06 2023 09:15:52
0 / 0
0644
f75375s.h
0.528 KB
November 06 2023 09:15:52
0 / 0
0644
falloc.h
0.702 KB
November 06 2023 09:15:52
0 / 0
0644
fanotify.h
0.201 KB
November 06 2023 09:15:52
0 / 0
0644
fault-inject.h
1.836 KB
November 06 2023 09:15:52
0 / 0
0644
fb.h
28.167 KB
November 06 2023 09:15:52
0 / 0
0644
fcdevice.h
0.965 KB
November 06 2023 09:15:52
0 / 0
0644
fcntl.h
0.888 KB
November 06 2023 09:15:52
0 / 0
0644
fd.h
0.44 KB
November 06 2023 09:15:52
0 / 0
0644
fddidevice.h
1.076 KB
November 06 2023 09:15:52
0 / 0
0644
fdtable.h
3.31 KB
November 06 2023 09:15:52
0 / 0
0644
fec.h
0.555 KB
November 06 2023 09:15:52
0 / 0
0644
file.h
1.998 KB
November 06 2023 09:15:52
0 / 0
0644
filter.h
23.736 KB
November 06 2023 09:15:52
0 / 0
0644
fips.h
0.125 KB
November 06 2023 09:15:52
0 / 0
0644
firewire.h
13.141 KB
November 06 2023 09:15:52
0 / 0
0644
firmware-map.h
1.319 KB
November 06 2023 09:15:52
0 / 0
0644
firmware.h
2.181 KB
November 06 2023 09:15:52
0 / 0
0644
fixp-arith.h
2.245 KB
November 06 2023 09:15:52
0 / 0
0644
flat.h
1.576 KB
November 06 2023 09:15:52
0 / 0
0644
flex_array.h
2.427 KB
November 06 2023 09:15:52
0 / 0
0644
flex_proportions.h
2.731 KB
November 06 2023 09:15:52
0 / 0
0644
font.h
1.214 KB
November 06 2023 09:15:52
0 / 0
0644
frame.h
0.749 KB
November 06 2023 09:15:52
0 / 0
0644
freezer.h
9.99 KB
November 06 2023 09:15:52
0 / 0
0644
frontswap.h
2.511 KB
November 06 2023 09:15:52
0 / 0
0644
fs.h
111.014 KB
November 06 2023 09:15:52
0 / 0
0644
fs_enet_pd.h
3.309 KB
November 06 2023 09:15:52
0 / 0
0644
fs_pin.h
0.566 KB
November 06 2023 09:15:52
0 / 0
0644
fs_stack.h
0.754 KB
November 06 2023 09:15:52
0 / 0
0644
fs_struct.h
0.976 KB
November 06 2023 09:15:52
0 / 0
0644
fs_uart_pd.h
1.487 KB
November 06 2023 09:15:52
0 / 0
0644
fscache-cache.h
18.399 KB
November 06 2023 09:15:52
0 / 0
0644
fscache.h
27.87 KB
November 06 2023 09:15:52
0 / 0
0644
fsl-diu-fb.h
4.081 KB
November 06 2023 09:15:52
0 / 0
0644
fsl_devices.h
4.315 KB
November 06 2023 09:15:52
0 / 0
0644
fsl_hypervisor.h
2.758 KB
November 06 2023 09:15:52
0 / 0
0644
fsnotify.h
7.391 KB
November 06 2023 09:15:52
0 / 0
0644
fsnotify_backend.h
18.438 KB
November 06 2023 09:15:52
0 / 0
0644
ftrace.h
26.952 KB
November 06 2023 09:15:52
0 / 0
0644
ftrace_event.h
14.768 KB
November 06 2023 09:15:52
0 / 0
0644
ftrace_irq.h
0.766 KB
November 06 2023 09:15:52
0 / 0
0644
futex.h
1.766 KB
November 06 2023 09:15:52
0 / 0
0644
fwnode.h
1.527 KB
November 06 2023 09:15:52
0 / 0
0644
gameport.h
5.562 KB
November 06 2023 09:15:52
0 / 0
0644
gcd.h
0.15 KB
November 06 2023 09:15:52
0 / 0
0644
genalloc.h
5.188 KB
November 06 2023 09:15:52
0 / 0
0644
generic_acl.h
0.343 KB
November 06 2023 09:15:52
0 / 0
0644
genetlink.h
1.352 KB
November 06 2023 09:15:52
0 / 0
0644
genhd.h
22.085 KB
November 06 2023 09:15:52
0 / 0
0644
genl_magic_func.h
12.006 KB
November 06 2023 09:15:52
0 / 0
0644
genl_magic_struct.h
7.435 KB
November 06 2023 09:15:52
0 / 0
0644
getcpu.h
0.588 KB
November 06 2023 09:15:52
0 / 0
0644
gfp.h
16.164 KB
November 06 2023 09:15:52
0 / 0
0644
gpio-fan.h
0.783 KB
November 06 2023 09:15:52
0 / 0
0644
gpio-pxa.h
0.52 KB
November 06 2023 09:15:52
0 / 0
0644
gpio.h
5.75 KB
November 06 2023 09:15:52
0 / 0
0644
gpio_keys.h
0.93 KB
November 06 2023 09:15:52
0 / 0
0644
gpio_mouse.h
1.459 KB
November 06 2023 09:15:52
0 / 0
0644
gpt.h
4.08 KB
November 06 2023 09:15:52
0 / 0
0644
gsmmux.h
0.884 KB
November 06 2023 09:15:52
0 / 0
0644
hardirq.h
1.893 KB
November 06 2023 09:15:52
0 / 0
0644
hash.h
2.029 KB
November 06 2023 09:15:52
0 / 0
0644
hashtable.h
6.62 KB
November 06 2023 09:15:52
0 / 0
0644
hdlc.h
3.427 KB
November 06 2023 09:15:52
0 / 0
0644
hdlcdrv.h
6.28 KB
November 06 2023 09:15:52
0 / 0
0644
hdmi.h
9.366 KB
November 06 2023 09:15:52
0 / 0
0644
hid-debug.h
2.074 KB
November 06 2023 09:15:52
0 / 0
0644
hid-roccat.h
0.672 KB
November 06 2023 09:15:52
0 / 0
0644
hid-sensor-hub.h
9.129 KB
November 06 2023 09:15:52
0 / 0
0644
hid-sensor-ids.h
6.793 KB
November 06 2023 09:15:52
0 / 0
0644
hid.h
34.163 KB
November 06 2023 09:15:52
0 / 0
0644
hiddev.h
1.879 KB
November 06 2023 09:15:52
0 / 0
0644
hidraw.h
1.49 KB
November 06 2023 09:15:52
0 / 0
0644
highmem.h
5.852 KB
November 06 2023 09:15:52
0 / 0
0644
highuid.h
3.081 KB
November 06 2023 09:15:52
0 / 0
0644
hil.h
18.415 KB
November 06 2023 09:15:52
0 / 0
0644
hil_mlc.h
5.129 KB
November 06 2023 09:15:52
0 / 0
0644
hippidevice.h
1.291 KB
November 06 2023 09:15:52
0 / 0
0644
hmm.h
18.063 KB
November 06 2023 09:15:52
0 / 0
0644
hp_sdc.h
14.02 KB
November 06 2023 09:15:52
0 / 0
0644
hpet.h
2.516 KB
November 06 2023 09:15:52
0 / 0
0644
hrtimer.h
12.906 KB
November 06 2023 09:15:52
0 / 0
0644
htcpld.h
0.564 KB
November 06 2023 09:15:52
0 / 0
0644
htirq.h
0.769 KB
November 06 2023 09:15:52
0 / 0
0644
huge_mm.h
11.704 KB
November 06 2023 09:15:52
0 / 0
0644
hugetlb.h
14.299 KB
November 06 2023 09:15:52
0 / 0
0644
hugetlb_cgroup.h
2.971 KB
November 06 2023 09:15:52
0 / 0
0644
hugetlb_inline.h
0.321 KB
November 06 2023 09:15:52
0 / 0
0644
hw_breakpoint.h
3.814 KB
November 06 2023 09:15:52
0 / 0
0644
hw_random.h
1.948 KB
November 06 2023 09:15:52
0 / 0
0644
hwmon-sysfs.h
1.977 KB
November 06 2023 09:15:52
0 / 0
0644
hwmon-vid.h
1.478 KB
November 06 2023 09:15:52
0 / 0
0644
hwmon.h
11.495 KB
November 06 2023 09:15:52
0 / 0
0644
hwspinlock.h
10.895 KB
November 06 2023 09:15:52
0 / 0
0644
hyperv.h
39.959 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-algo-bit.h
2.244 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-algo-pca.h
2.5 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-algo-pcf.h
1.881 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-dev.h
1.026 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-gpio.h
1.313 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-mux-gpio.h
1.351 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-mux-pinctrl.h
1.44 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-mux.h
1.644 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-ocores.h
0.691 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-omap.h
1.174 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-pca-platform.h
0.393 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-pnx.h
0.921 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-pxa.h
0.39 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-smbus.h
1.777 KB
November 06 2023 09:15:52
0 / 0
0644
i2c-xiic.h
1.41 KB
November 06 2023 09:15:52
0 / 0
0644
i2c.h
24.742 KB
November 06 2023 09:15:52
0 / 0
0644
i2o.h
29.697 KB
November 06 2023 09:15:52
0 / 0
0644
i7300_idle.h
1.908 KB
November 06 2023 09:15:52
0 / 0
0644
i8042.h
1.796 KB
November 06 2023 09:15:52
0 / 0
0644
i8253.h
0.746 KB
November 06 2023 09:15:52
0 / 0
0644
i82593.h
5.584 KB
November 06 2023 09:15:52
0 / 0
0644
icmp.h
0.843 KB
November 06 2023 09:15:52
0 / 0
0644
icmpv6.h
1.11 KB
November 06 2023 09:15:52
0 / 0
0644
ide.h
44.838 KB
November 06 2023 09:15:52
0 / 0
0644
idr.h
7.269 KB
November 06 2023 09:15:52
0 / 0
0644
idr_ext.h
1.891 KB
November 06 2023 09:15:52
0 / 0
0644
ieee80211.h
105.181 KB
November 06 2023 09:15:52
0 / 0
0644
ieee802154.h
11.504 KB
November 06 2023 09:15:52
0 / 0
0644
if_arp.h
1.78 KB
November 06 2023 09:15:52
0 / 0
0644
if_bridge.h
2.617 KB
November 06 2023 09:15:52
0 / 0
0644
if_eql.h
1.074 KB
November 06 2023 09:15:52
0 / 0
0644
if_ether.h
1.315 KB
November 06 2023 09:15:52
0 / 0
0644
if_fddi.h
3.443 KB
November 06 2023 09:15:52
0 / 0
0644
if_frad.h
2.876 KB
November 06 2023 09:15:52
0 / 0
0644
if_link.h
0.629 KB
November 06 2023 09:15:52
0 / 0
0644
if_ltalk.h
0.146 KB
November 06 2023 09:15:52
0 / 0
0644
if_macvlan.h
3.593 KB
November 06 2023 09:15:52
0 / 0
0644
if_phonet.h
0.268 KB
November 06 2023 09:15:52
0 / 0
0644
if_pppol2tp.h
0.71 KB
November 06 2023 09:15:52
0 / 0
0644
if_pppox.h
2.963 KB
November 06 2023 09:15:52
0 / 0
0644
if_team.h
7.588 KB
November 06 2023 09:15:52
0 / 0
0644
if_tun.h
1.136 KB
November 06 2023 09:15:52
0 / 0
0644
if_tunnel.h
0.361 KB
November 06 2023 09:15:52
0 / 0
0644
if_vlan.h
16.53 KB
November 06 2023 09:15:52
0 / 0
0644
igmp.h
4.26 KB
November 06 2023 09:15:52
0 / 0
0644
ihex.h
1.916 KB
November 06 2023 09:15:52
0 / 0
0644
ima.h
1.764 KB
November 06 2023 09:15:52
0 / 0
0644
in.h
2.427 KB
November 06 2023 09:15:52
0 / 0
0644
in6.h
1.849 KB
November 06 2023 09:15:52
0 / 0
0644
inet.h
2.798 KB
November 06 2023 09:15:52
0 / 0
0644
inet_diag.h
1.662 KB
November 06 2023 09:15:52
0 / 0
0644
inet_lro.h
4.264 KB
November 06 2023 09:15:52
0 / 0
0644
inetdevice.h
9.515 KB
November 06 2023 09:15:52
0 / 0
0644
init.h
11.228 KB
November 06 2023 09:15:52
0 / 0
0644
init_ohci1394_dma.h
0.153 KB
November 06 2023 09:15:52
0 / 0
0644
init_task.h
6.884 KB
November 06 2023 09:15:52
0 / 0
0644
initrd.h
0.569 KB
November 06 2023 09:15:52
0 / 0
0644
inotify.h
0.642 KB
November 06 2023 09:15:52
0 / 0
0644
input-polldev.h
2.067 KB
November 06 2023 09:15:52
0 / 0
0644
input.h
18.353 KB
November 06 2023 09:15:52
0 / 0
0644
integrity.h
0.928 KB
November 06 2023 09:15:52
0 / 0
0644
intel-iommu.h
15.686 KB
November 06 2023 09:15:52
0 / 0
0644
intel_mid_dma.h
2.405 KB
November 06 2023 09:15:52
0 / 0
0644
intel_pmic_gpio.h
0.363 KB
November 06 2023 09:15:52
0 / 0
0644
interrupt.h
21.445 KB
November 06 2023 09:15:52
0 / 0
0644
interval_tree.h
0.739 KB
November 06 2023 09:15:52
0 / 0
0644
interval_tree_generic.h
7.032 KB
November 06 2023 09:15:52
0 / 0
0644
io-mapping.h
4.322 KB
November 06 2023 09:15:52
0 / 0
0644
io.h
4.692 KB
November 06 2023 09:15:52
0 / 0
0644
ioc3.h
3.139 KB
November 06 2023 09:15:52
0 / 0
0644
ioc4.h
5.781 KB
November 06 2023 09:15:52
0 / 0
0644
iocontext.h
4.7 KB
November 06 2023 09:15:52
0 / 0
0644
iomap.h
4.462 KB
November 06 2023 09:15:52
0 / 0
0644
iommu-helper.h
0.89 KB
November 06 2023 09:15:52
0 / 0
0644
iommu.h
17.304 KB
November 06 2023 09:15:52
0 / 0
0644
iopoll.h
5.523 KB
November 06 2023 09:15:52
0 / 0
0644
ioport.h
10.51 KB
November 06 2023 09:15:52
0 / 0
0644
ioprio.h
1.953 KB
November 06 2023 09:15:52
0 / 0
0644
iova.h
6.957 KB
November 06 2023 09:15:52
0 / 0
0644
ip.h
1.066 KB
November 06 2023 09:15:52
0 / 0
0644
ipack.h
8.264 KB
November 06 2023 09:15:52
0 / 0
0644
ipc.h
0.38 KB
November 06 2023 09:15:52
0 / 0
0644
ipc_namespace.h
4.439 KB
November 06 2023 09:15:52
0 / 0
0644
ipmi.h
10.452 KB
November 06 2023 09:15:52
0 / 0
0644
ipmi_smi.h
8.354 KB
November 06 2023 09:15:52
0 / 0
0644
ipv6.h
7.729 KB
November 06 2023 09:15:52
0 / 0
0644
ipv6_route.h
0.58 KB
November 06 2023 09:15:52
0 / 0
0644
irq.h
25.038 KB
November 06 2023 09:15:52
0 / 0
0644
irq_cpustat.h
0.889 KB
November 06 2023 09:15:52
0 / 0
0644
irq_poll.h
0.523 KB
November 06 2023 09:15:52
0 / 0
0644
irq_work.h
1.244 KB
November 06 2023 09:15:52
0 / 0
0644
irqbypass.h
3.595 KB
November 06 2023 09:15:52
0 / 0
0644
irqchip.h
0.374 KB
November 06 2023 09:15:52
0 / 0
0644
irqdesc.h
5.051 KB
November 06 2023 09:15:52
0 / 0
0644
irqdomain.h
7.817 KB
November 06 2023 09:15:52
0 / 0
0644
irqflags.h
4.65 KB
November 06 2023 09:15:52
0 / 0
0644
irqnr.h
1.335 KB
November 06 2023 09:15:52
0 / 0
0644
irqreturn.h
0.422 KB
November 06 2023 09:15:52
0 / 0
0644
isa.h
0.873 KB
November 06 2023 09:15:52
0 / 0
0644
isapnp.h
3.805 KB
November 06 2023 09:15:52
0 / 0
0644
iscsi_boot_sysfs.h
3.675 KB
November 06 2023 09:15:52
0 / 0
0644
iscsi_ibft.h
1.274 KB
November 06 2023 09:15:52
0 / 0
0644
isdn.h
22.961 KB
November 06 2023 09:15:52
0 / 0
0644
isdn_divertif.h
1.271 KB
November 06 2023 09:15:52
0 / 0
0644
isdn_ppp.h
6.674 KB
November 06 2023 09:15:52
0 / 0
0644
isdnif.h
19.259 KB
November 06 2023 09:15:52
0 / 0
0644
isicom.h
1.454 KB
November 06 2023 09:15:52
0 / 0
0644
jbd.h
31.973 KB
November 06 2023 09:15:52
0 / 0
0644
jbd2.h
43.505 KB
November 06 2023 09:15:52
0 / 0
0644
jbd_common.h
0.919 KB
November 06 2023 09:15:52
0 / 0
0644
jhash.h
4.276 KB
November 06 2023 09:15:52
0 / 0
0644
jiffies.h
11.294 KB
November 06 2023 09:15:52
0 / 0
0644
journal-head.h
2.827 KB
November 06 2023 09:15:52
0 / 0
0644
joystick.h
1.283 KB
November 06 2023 09:15:52
0 / 0
0644
jump_label.h
5.839 KB
November 06 2023 09:15:52
0 / 0
0644
jump_label_ratelimit.h
1.074 KB
November 06 2023 09:15:52
0 / 0
0644
jz4740-adc.h
0.961 KB
November 06 2023 09:15:52
0 / 0
0644
kaiser.h
0.696 KB
November 06 2023 09:15:52
0 / 0
0644
kallsyms.h
3.556 KB
November 06 2023 09:15:52
0 / 0
0644
kbd_diacr.h
0.155 KB
November 06 2023 09:15:52
0 / 0
0644
kbd_kern.h
3.89 KB
November 06 2023 09:15:52
0 / 0
0644
kbuild.h
0.302 KB
November 06 2023 09:15:52
0 / 0
0644
kcmp.h
0.209 KB
November 06 2023 09:15:52
0 / 0
0644
kconfig.h
1.886 KB
November 06 2023 09:15:52
0 / 0
0644
kcore.h
0.845 KB
November 06 2023 09:15:52
0 / 0
0644
kd.h
0.168 KB
November 06 2023 09:15:52
0 / 0
0644
kdb.h
5.467 KB
November 06 2023 09:15:52
0 / 0
0644
kdebug.h
0.438 KB
November 06 2023 09:15:52
0 / 0
0644
kdev_t.h
1.78 KB
November 06 2023 09:15:52
0 / 0
0644
kern_levels.h
1.534 KB
November 06 2023 09:15:52
0 / 0
0644
kernel-page-flags.h
0.455 KB
November 06 2023 09:15:52
0 / 0
0644
kernel.h
29.786 KB
November 06 2023 09:15:52
0 / 0
0644
kernel_stat.h
3.271 KB
November 06 2023 09:15:52
0 / 0
0644
kernelcapi.h
4.406 KB
November 06 2023 09:15:52
0 / 0
0644
kernfs.h
14.278 KB
November 06 2023 09:15:52
0 / 0
0644
kexec.h
7.631 KB
November 06 2023 09:15:52
0 / 0
0644
key-type.h
5.313 KB
November 06 2023 09:15:52
0 / 0
0644
key.h
11.405 KB
November 06 2023 09:15:52
0 / 0
0644
keyboard.h
0.611 KB
November 06 2023 09:15:52
0 / 0
0644
kfifo.h
25.281 KB
November 06 2023 09:15:52
0 / 0
0644
kgdb.h
10.709 KB
November 06 2023 09:15:52
0 / 0
0644
khugepaged.h
1.977 KB
November 06 2023 09:15:52
0 / 0
0644
klist.h
1.88 KB
November 06 2023 09:15:52
0 / 0
0644
kmemcheck.h
4.241 KB
November 06 2023 09:15:52
0 / 0
0644
kmemleak.h
3.119 KB
November 06 2023 09:15:52
0 / 0
0644
kmod.h
3.212 KB
November 06 2023 09:15:52
0 / 0
0644
kmsg_dump.h
2.854 KB
November 06 2023 09:15:52
0 / 0
0644
kobj_map.h
0.494 KB
November 06 2023 09:15:52
0 / 0
0644
kobject.h
6.756 KB
November 06 2023 09:15:52
0 / 0
0644
kobject_ns.h
1.938 KB
November 06 2023 09:15:52
0 / 0
0644
kprobes.h
13.345 KB
November 06 2023 09:15:52
0 / 0
0644
kref.h
5.46 KB
November 06 2023 09:15:52
0 / 0
0644
ks0108.h
1.569 KB
November 06 2023 09:15:52
0 / 0
0644
ks8842.h
1.194 KB
November 06 2023 09:15:52
0 / 0
0644
ks8851_mll.h
1.038 KB
November 06 2023 09:15:52
0 / 0
0644
ksm.h
2.84 KB
November 06 2023 09:15:52
0 / 0
0644
kthread.h
4.412 KB
November 06 2023 09:15:52
0 / 0
0644
ktime.h
11.761 KB
November 06 2023 09:15:52
0 / 0
0644
kvm_host.h
34.924 KB
November 06 2023 09:15:52
0 / 0
0644
kvm_irqfd.h
2.386 KB
November 06 2023 09:15:52
0 / 0
0644
kvm_para.h
0.254 KB
November 06 2023 09:15:52
0 / 0
0644
kvm_types.h
1.587 KB
November 06 2023 09:15:52
0 / 0
0644
l2tp.h
0.217 KB
November 06 2023 09:15:52
0 / 0
0644
lapb.h
1.673 KB
November 06 2023 09:15:52
0 / 0
0644
latencytop.h
1.141 KB
November 06 2023 09:15:52
0 / 0
0644
lcd.h
3.919 KB
November 06 2023 09:15:52
0 / 0
0644
lcm.h
0.15 KB
November 06 2023 09:15:52
0 / 0
0644
led-lm3530.h
3.704 KB
November 06 2023 09:15:52
0 / 0
0644
leds-bd2802.h
0.627 KB
November 06 2023 09:15:52
0 / 0
0644
leds-lp3944.h
1.073 KB
November 06 2023 09:15:52
0 / 0
0644
leds-pca9532.h
1.024 KB
November 06 2023 09:15:52
0 / 0
0644
leds-regulator.h
1.286 KB
November 06 2023 09:15:52
0 / 0
0644
leds-tca6507.h
1.018 KB
November 06 2023 09:15:52
0 / 0
0644
leds.h
8.801 KB
November 06 2023 09:15:52
0 / 0
0644
leds_pwm.h
0.359 KB
November 06 2023 09:15:52
0 / 0
0644
lglock.h
2.46 KB
November 06 2023 09:15:52
0 / 0
0644
lguest.h
2.242 KB
November 06 2023 09:15:52
0 / 0
0644
lguest_launcher.h
2.475 KB
November 06 2023 09:15:52
0 / 0
0644
libata.h
63.278 KB
November 06 2023 09:15:52
0 / 0
0644
libfdt.h
0.2 KB
November 06 2023 09:15:52
0 / 0
0644
libfdt_env.h
0.277 KB
November 06 2023 09:15:52
0 / 0
0644
libnvdimm.h
9.087 KB
November 06 2023 09:15:52
0 / 0
0644
libps2.h
2.028 KB
November 06 2023 09:15:52
0 / 0
0644
license.h
0.365 KB
November 06 2023 09:15:52
0 / 0
0644
linkage.h
2.463 KB
November 06 2023 09:15:52
0 / 0
0644
linux_logo.h
2.024 KB
November 06 2023 09:15:52
0 / 0
0644
lis3lv02d.h
4.967 KB
November 06 2023 09:15:52
0 / 0
0644
list.h
22.998 KB
November 06 2023 09:15:52
0 / 0
0644
list_bl.h
4.723 KB
November 06 2023 09:15:52
0 / 0
0644
list_lru.h
4.503 KB
November 06 2023 09:15:52
0 / 0
0644
list_nulls.h
3.364 KB
November 06 2023 09:15:52
0 / 0
0644
list_sort.h
0.232 KB
November 06 2023 09:15:52
0 / 0
0644
livepatch.h
8.393 KB
November 06 2023 09:15:52
0 / 0
0644
llc.h
0.731 KB
November 06 2023 09:15:52
0 / 0
0644
llist.h
7.138 KB
November 06 2023 09:15:52
0 / 0
0644
lockdep.h
16.72 KB
November 06 2023 09:15:52
0 / 0
0644
lockref.h
1.443 KB
November 06 2023 09:15:52
0 / 0
0644
log2.h
5.04 KB
November 06 2023 09:15:52
0 / 0
0644
loop.h
2.16 KB
November 06 2023 09:15:52
0 / 0
0644
lp.h
2.723 KB
November 06 2023 09:15:52
0 / 0
0644
lru_cache.h
12.426 KB
November 06 2023 09:15:52
0 / 0
0644
lsm_audit.h
2.689 KB
November 06 2023 09:15:52
0 / 0
0644
lzo.h
1.333 KB
November 06 2023 09:15:52
0 / 0
0644
m48t86.h
0.454 KB
November 06 2023 09:15:52
0 / 0
0644
mISDNdsp.h
1.15 KB
November 06 2023 09:15:52
0 / 0
0644
mISDNhw.h
5.782 KB
November 06 2023 09:15:52
0 / 0
0644
mISDNif.h
14.927 KB
November 06 2023 09:15:52
0 / 0
0644
mailbox.h
0.74 KB
November 06 2023 09:15:52
0 / 0
0644
mailbox_client.h
1.794 KB
November 06 2023 09:15:52
0 / 0
0644
mailbox_controller.h
5.373 KB
November 06 2023 09:15:52
0 / 0
0644
maple.h
2.672 KB
November 06 2023 09:15:52
0 / 0
0644
marvell_phy.h
0.696 KB
November 06 2023 09:15:52
0 / 0
0644
math64.h
5.467 KB
November 06 2023 09:15:52
0 / 0
0644
max17040_battery.h
0.463 KB
November 06 2023 09:15:52
0 / 0
0644
mbcache.h
1.456 KB
November 06 2023 09:15:52
0 / 0
0644
mbus.h
1.864 KB
November 06 2023 09:15:52
0 / 0
0644
mc146818rtc.h
4.216 KB
November 06 2023 09:15:52
0 / 0
0644
mc6821.h
1.143 KB
November 06 2023 09:15:52
0 / 0
0644
mdev.h
5.2 KB
November 06 2023 09:15:52
0 / 0
0644
mdio-bitbang.h
1.141 KB
November 06 2023 09:15:52
0 / 0
0644
mdio-gpio.h
0.64 KB
November 06 2023 09:15:52
0 / 0
0644
mdio-mux.h
0.538 KB
November 06 2023 09:15:52
0 / 0
0644
mdio.h
6.746 KB
November 06 2023 09:15:52
0 / 0
0644
media-bus-format.h
4.953 KB
November 06 2023 09:15:52
0 / 0
0644
mei_cl_bus.h
3.253 KB
November 06 2023 09:15:52
0 / 0
0644
mem_encrypt.h
1.21 KB
November 06 2023 09:15:52
0 / 0
0644
memblock.h
13.154 KB
November 06 2023 09:15:52
0 / 0
0644
memcontrol.h
16.781 KB
November 06 2023 09:15:52
0 / 0
0644
memory.h
4.874 KB
November 06 2023 09:15:52
0 / 0
0644
memory_hotplug.h
8.428 KB
November 06 2023 09:15:52
0 / 0
0644
mempolicy.h
8.067 KB
November 06 2023 09:15:52
0 / 0
0644
mempool.h
2.273 KB
November 06 2023 09:15:52
0 / 0
0644
memremap.h
5.234 KB
November 06 2023 09:15:52
0 / 0
0644
memstick.h
9.732 KB
November 06 2023 09:15:52
0 / 0
0644
mg_disk.h
1.027 KB
November 06 2023 09:15:52
0 / 0
0644
micrel_phy.h
1.034 KB
November 06 2023 09:15:52
0 / 0
0644
migrate.h
8.076 KB
November 06 2023 09:15:52
0 / 0
0644
migrate_mode.h
0.728 KB
November 06 2023 09:15:52
0 / 0
0644
mii.h
8.702 KB
November 06 2023 09:15:52
0 / 0
0644
miscdevice.h
2.2 KB
November 06 2023 09:15:52
0 / 0
0644
mm-arch-hooks.h
0.663 KB
November 06 2023 09:15:52
0 / 0
0644
mm.h
79.026 KB
November 06 2023 09:15:52
0 / 0
0644
mm_inline.h
2.684 KB
November 06 2023 09:15:52
0 / 0
0644
mm_types.h
18.602 KB
November 06 2023 09:15:52
0 / 0
0644
mman.h
3.096 KB
November 06 2023 09:15:52
0 / 0
0644
mmdebug.h
1.095 KB
November 06 2023 09:15:52
0 / 0
0644
mmiotrace.h
2.996 KB
November 06 2023 09:15:52
0 / 0
0644
mmu_context.h
0.331 KB
November 06 2023 09:15:52
0 / 0
0644
mmu_notifier.h
16.146 KB
November 06 2023 09:15:52
0 / 0
0644
mmzone.h
42.224 KB
November 06 2023 09:15:52
0 / 0
0644
mnt_namespace.h
0.496 KB
November 06 2023 09:15:52
0 / 0
0644
mod_devicetable.h
17.82 KB
November 06 2023 09:15:52
0 / 0
0644
module.h
20.108 KB
November 06 2023 09:15:52
0 / 0
0644
moduleloader.h
2.423 KB
November 06 2023 09:15:52
0 / 0
0644
moduleparam.h
16.402 KB
November 06 2023 09:15:52
0 / 0
0644
mount.h
3.301 KB
November 06 2023 09:15:52
0 / 0
0644
mpage.h
0.705 KB
November 06 2023 09:15:52
0 / 0
0644
mpi.h
5.32 KB
November 06 2023 09:15:52
0 / 0
0644
mpls.h
0.347 KB
November 06 2023 09:15:52
0 / 0
0644
mroute.h
4.673 KB
November 06 2023 09:15:52
0 / 0
0644
mroute6.h
3.246 KB
November 06 2023 09:15:52
0 / 0
0644
msdos_fs.h
0.229 KB
November 06 2023 09:15:52
0 / 0
0644
msg.h
1.256 KB
November 06 2023 09:15:52
0 / 0
0644
msi.h
2.948 KB
November 06 2023 09:15:52
0 / 0
0644
msm_mdp.h
2.087 KB
November 06 2023 09:15:52
0 / 0
0644
mutex-debug.h
0.462 KB
November 06 2023 09:15:52
0 / 0
0644
mutex.h
5.711 KB
November 06 2023 09:15:52
0 / 0
0644
mv643xx.h
52.399 KB
November 06 2023 09:15:52
0 / 0
0644
mv643xx_eth.h
1.832 KB
November 06 2023 09:15:52
0 / 0
0644
mv643xx_i2c.h
0.532 KB
November 06 2023 09:15:52
0 / 0
0644
mxm-wmi.h
1.053 KB
November 06 2023 09:15:52
0 / 0
0644
n_r3964.h
4.058 KB
November 06 2023 09:15:52
0 / 0
0644
namei.h
2.811 KB
November 06 2023 09:15:52
0 / 0
0644
namei_lookup.h
0.901 KB
November 06 2023 09:15:52
0 / 0
0644
nbd.h
1.342 KB
November 06 2023 09:15:52
0 / 0
0644
nd.h
5.912 KB
November 06 2023 09:15:52
0 / 0
0644
ndctl.h
0.658 KB
November 06 2023 09:15:52
0 / 0
0644
net.h
10.185 KB
November 06 2023 09:15:52
0 / 0
0644
net_dim.h
10.962 KB
November 06 2023 09:15:52
0 / 0
0644
netdev_features.h
9.441 KB
November 06 2023 09:15:52
0 / 0
0644
netdevice.h
147.077 KB
November 06 2023 09:15:52
0 / 0
0644
netfilter.h
11.763 KB
November 06 2023 09:15:52
0 / 0
0644
netfilter_bridge.h
1.766 KB
November 06 2023 09:15:52
0 / 0
0644
netfilter_defs.h
0.195 KB
November 06 2023 09:15:52
0 / 0
0644
netfilter_ipv4.h
0.397 KB
November 06 2023 09:15:52
0 / 0
0644
netfilter_ipv6.h
1.379 KB
November 06 2023 09:15:52
0 / 0
0644
netlink.h
6.215 KB
November 06 2023 09:15:52
0 / 0
0644
netpoll.h
2.938 KB
November 06 2023 09:15:52
0 / 0
0644
nfs.h
1.27 KB
November 06 2023 09:15:52
0 / 0
0644
nfs3.h
0.216 KB
November 06 2023 09:15:52
0 / 0
0644
nfs4.h
16.91 KB
November 06 2023 09:15:52
0 / 0
0644
nfs_fs.h
16.607 KB
November 06 2023 09:15:52
0 / 0
0644
nfs_fs_i.h
0.263 KB
November 06 2023 09:15:52
0 / 0
0644
nfs_fs_sb.h
8.636 KB
November 06 2023 09:15:52
0 / 0
0644
nfs_iostat.h
4.146 KB
November 06 2023 09:15:52
0 / 0
0644
nfs_page.h
5.835 KB
November 06 2023 09:15:52
0 / 0
0644
nfs_xdr.h
38.689 KB
November 06 2023 09:15:52
0 / 0
0644
nfsacl.h
1.11 KB
November 06 2023 09:15:52
0 / 0
0644
nilfs2_fs.h
23.474 KB
November 06 2023 09:15:52
0 / 0
0644
nl802154.h
4.234 KB
November 06 2023 09:15:52
0 / 0
0644
nls.h
2.959 KB
November 06 2023 09:15:52
0 / 0
0644
nmi.h
2.453 KB
November 06 2023 09:15:52
0 / 0
0644
node.h
2.182 KB
November 06 2023 09:15:52
0 / 0
0644
nodemask.h
16.468 KB
November 06 2023 09:15:52
0 / 0
0644
nospec.h
2.158 KB
November 06 2023 09:15:52
0 / 0
0644
notifier.h
7.654 KB
November 06 2023 09:15:52
0 / 0
0644
nsc_gpio.h
1.387 KB
November 06 2023 09:15:52
0 / 0
0644
nsproxy.h
2.214 KB
November 06 2023 09:15:52
0 / 0
0644
ntb.h
30.499 KB
November 06 2023 09:15:52
0 / 0
0644
ntb_transport.h
3.801 KB
November 06 2023 09:15:52
0 / 0
0644
nubus.h
4.096 KB
November 06 2023 09:15:52
0 / 0
0644
numa.h
0.247 KB
November 06 2023 09:15:52
0 / 0
0644
nvme-fc-driver.h
38.029 KB
November 06 2023 09:15:52
0 / 0
0644
nvme-fc.h
8.394 KB
November 06 2023 09:15:52
0 / 0
0644
nvme-rdma.h
2.438 KB
November 06 2023 09:15:52
0 / 0
0644
nvme.h
25.372 KB
November 06 2023 09:15:52
0 / 0
0644
nvmem-consumer.h
2.111 KB
November 06 2023 09:15:52
0 / 0
0644
nvmem-provider.h
1.521 KB
November 06 2023 09:15:52
0 / 0
0644
nvram.h
0.445 KB
November 06 2023 09:15:52
0 / 0
0644
nwpserial.h
0.538 KB
November 06 2023 09:15:52
0 / 0
0644
of.h
24.801 KB
November 06 2023 09:15:52
0 / 0
0644
of_address.h
2.162 KB
November 06 2023 09:15:52
0 / 0
0644
of_device.h
1.993 KB
November 06 2023 09:15:52
0 / 0
0644
of_dma.h
1.733 KB
November 06 2023 09:15:52
0 / 0
0644
of_fdt.h
4.618 KB
November 06 2023 09:15:52
0 / 0
0644
of_gpio.h
5.174 KB
November 06 2023 09:15:52
0 / 0
0644
of_graph.h
3.556 KB
November 06 2023 09:15:52
0 / 0
0644
of_iommu.h
1.008 KB
November 06 2023 09:15:52
0 / 0
0644
of_irq.h
2.896 KB
November 06 2023 09:15:52
0 / 0
0644
of_mdio.h
1.55 KB
November 06 2023 09:15:52
0 / 0
0644
of_mtd.h
0.431 KB
November 06 2023 09:15:52
0 / 0
0644
of_net.h
0.507 KB
November 06 2023 09:15:52
0 / 0
0644
of_pci.h
0.954 KB
November 06 2023 09:15:52
0 / 0
0644
of_pdt.h
1.434 KB
November 06 2023 09:15:52
0 / 0
0644
of_platform.h
3.835 KB
November 06 2023 09:15:52
0 / 0
0644
oid_registry.h
3.646 KB
November 06 2023 09:15:52
0 / 0
0644
olpc-ec.h
1.008 KB
November 06 2023 09:15:52
0 / 0
0644
omap-dma.h
11.555 KB
November 06 2023 09:15:52
0 / 0
0644
omap-iommu.h
1.686 KB
November 06 2023 09:15:52
0 / 0
0644
omapfb.h
1.217 KB
November 06 2023 09:15:52
0 / 0
0644
oom.h
2.93 KB
November 06 2023 09:15:52
0 / 0
0644
openvswitch.h
0.824 KB
November 06 2023 09:15:52
0 / 0
0644
opp.h
2.931 KB
November 06 2023 09:15:52
0 / 0
0644
oprofile.h
6.292 KB
November 06 2023 09:15:52
0 / 0
0644
osq_lock.h
1.003 KB
November 06 2023 09:15:52
0 / 0
0644
overflow.h
9.235 KB
November 06 2023 09:15:52
0 / 0
0644
oxu210hp.h
0.154 KB
November 06 2023 09:15:52
0 / 0
0644
padata.h
6.386 KB
November 06 2023 09:15:52
0 / 0
0644
page-flags-layout.h
3.031 KB
November 06 2023 09:15:52
0 / 0
0644
page-flags.h
19.842 KB
November 06 2023 09:15:52
0 / 0
0644
page-isolation.h
1.781 KB
November 06 2023 09:15:52
0 / 0
0644
page_cgroup.h
3.527 KB
November 06 2023 09:15:52
0 / 0
0644
page_counter.h
1.403 KB
November 06 2023 09:15:52
0 / 0
0644
page_ext.h
1.65 KB
November 06 2023 09:15:52
0 / 0
0644
page_idle.h
2.119 KB
November 06 2023 09:15:52
0 / 0
0644
page_owner.h
1.248 KB
November 06 2023 09:15:52
0 / 0
0644
page_ref.h
2.2 KB
November 06 2023 09:15:52
0 / 0
0644
pageblock-flags.h
2.738 KB
November 06 2023 09:15:52
0 / 0
0644
pagemap.h
17.609 KB
November 06 2023 09:15:52
0 / 0
0644
pagevec.h
1.687 KB
November 06 2023 09:15:52
0 / 0
0644
parman.h
2.865 KB
November 06 2023 09:15:52
0 / 0
0644
parport.h
16.7 KB
November 06 2023 09:15:52
0 / 0
0644
parport_pc.h
6.518 KB
November 06 2023 09:15:52
0 / 0
0644
parser.h
1.001 KB
November 06 2023 09:15:52
0 / 0
0644
pata_arasan_cf_data.h
1.225 KB
November 06 2023 09:15:52
0 / 0
0644
patchkey.h
0.701 KB
November 06 2023 09:15:52
0 / 0
0644
path.h
0.502 KB
November 06 2023 09:15:52
0 / 0
0644
pch_dma.h
0.976 KB
November 06 2023 09:15:52
0 / 0
0644
pci-acpi.h
3.265 KB
November 06 2023 09:15:52
0 / 0
0644
pci-aspm.h
1.673 KB
November 06 2023 09:15:52
0 / 0
0644
pci-ats.h
1.448 KB
November 06 2023 09:15:52
0 / 0
0644
pci-dma-compat.h
4.503 KB
November 06 2023 09:15:52
0 / 0
0644
pci.h
76.525 KB
November 06 2023 09:15:52
0 / 0
0644
pci_hotplug.h
7.246 KB
November 06 2023 09:15:52
0 / 0
0644
pci_ids.h
118.847 KB
November 06 2023 09:15:52
0 / 0
0644
pcieport_if.h
2.299 KB
November 06 2023 09:15:52
0 / 0
0644
pda_power.h
1.124 KB
November 06 2023 09:15:52
0 / 0
0644
pe.h
15.476 KB
November 06 2023 09:15:52
0 / 0
0644
percpu-defs.h
7.488 KB
November 06 2023 09:15:52
0 / 0
0644
percpu-refcount.h
9.434 KB
November 06 2023 09:15:52
0 / 0
0644
percpu-rwsem.h
0.905 KB
November 06 2023 09:15:52
0 / 0
0644
percpu.h
25.955 KB
November 06 2023 09:15:52
0 / 0
0644
percpu_counter.h
4.206 KB
November 06 2023 09:15:52
0 / 0
0644
percpu_ida.h
2.279 KB
November 06 2023 09:15:52
0 / 0
0644
perf_event.h
37.155 KB
November 06 2023 09:15:52
0 / 0
0644
perf_regs.h
0.946 KB
November 06 2023 09:15:52
0 / 0
0644
personality.h
1.513 KB
November 06 2023 09:15:52
0 / 0
0644
pfn.h
0.612 KB
November 06 2023 09:15:52
0 / 0
0644
pfn_t.h
3.187 KB
November 06 2023 09:15:52
0 / 0
0644
phonedev.h
0.532 KB
November 06 2023 09:15:52
0 / 0
0644
phonet.h
1.119 KB
November 06 2023 09:15:52
0 / 0
0644
phy.h
30.428 KB
November 06 2023 09:15:52
0 / 0
0644
phy_fixed.h
1.606 KB
November 06 2023 09:15:52
0 / 0
0644
pid.h
5.779 KB
November 06 2023 09:15:52
0 / 0
0644
pid_namespace.h
2.393 KB
November 06 2023 09:15:52
0 / 0
0644
pim.h
0.626 KB
November 06 2023 09:15:52
0 / 0
0644
pipe_fs_i.h
6 KB
November 06 2023 09:15:52
0 / 0
0644
pkeys.h
0.856 KB
November 06 2023 09:15:52
0 / 0
0644
pktcdvd.h
5.871 KB
November 06 2023 09:15:52
0 / 0
0644
platform_device.h
10.544 KB
November 06 2023 09:15:52
0 / 0
0644
plist.h
8.695 KB
November 06 2023 09:15:52
0 / 0
0644
pm.h
29.698 KB
November 06 2023 09:15:52
0 / 0
0644
pm2301_charger.h
1.683 KB
November 06 2023 09:15:52
0 / 0
0644
pm_clock.h
1.665 KB
November 06 2023 09:15:52
0 / 0
0644
pm_domain.h
9.578 KB
November 06 2023 09:15:52
0 / 0
0644
pm_qos.h
8.11 KB
November 06 2023 09:15:52
0 / 0
0644
pm_runtime.h
8.157 KB
November 06 2023 09:15:52
0 / 0
0644
pm_wakeup.h
5.925 KB
November 06 2023 09:15:52
0 / 0
0644
pmu.h
2.298 KB
November 06 2023 09:15:52
0 / 0
0644
pnfs_osd_xdr.h
9.269 KB
November 06 2023 09:15:52
0 / 0
0644
pnp.h
14.823 KB
November 06 2023 09:15:52
0 / 0
0644
poison.h
2.535 KB
November 06 2023 09:15:52
0 / 0
0644
poll.h
4.471 KB
November 06 2023 09:15:52
0 / 0
0644
posix-clock.h
5.427 KB
November 06 2023 09:15:52
0 / 0
0644
posix-timers.h
4.124 KB
November 06 2023 09:15:52
0 / 0
0644
posix_acl.h
4.229 KB
November 06 2023 09:15:52
0 / 0
0644
posix_acl_xattr.h
1.783 KB
November 06 2023 09:15:52
0 / 0
0644
power_supply.h
10.628 KB
November 06 2023 09:15:52
0 / 0
0644
powercap.h
12.575 KB
November 06 2023 09:15:52
0 / 0
0644
ppp-comp.h
3.098 KB
November 06 2023 09:15:52
0 / 0
0644
ppp_channel.h
3.072 KB
November 06 2023 09:15:52
0 / 0
0644
ppp_defs.h
0.443 KB
November 06 2023 09:15:52
0 / 0
0644
pps-gpio.h
0.991 KB
November 06 2023 09:15:52
0 / 0
0644
pps_kernel.h
3.537 KB
November 06 2023 09:15:52
0 / 0
0644
pr.h
0.515 KB
November 06 2023 09:15:52
0 / 0
0644
preempt.h
4.633 KB
November 06 2023 09:15:52
0 / 0
0644
preempt_mask.h
4.405 KB
November 06 2023 09:15:52
0 / 0
0644
prefetch.h
1.5 KB
November 06 2023 09:15:52
0 / 0
0644
printk.h
11.78 KB
November 06 2023 09:15:52
0 / 0
0644
prio_heap.h
1.763 KB
November 06 2023 09:15:52
0 / 0
0644
proc_fs.h
2.984 KB
November 06 2023 09:15:52
0 / 0
0644
proc_ns.h
1.902 KB
November 06 2023 09:15:52
0 / 0
0644
profile.h
2.59 KB
November 06 2023 09:15:52
0 / 0
0644
projid.h
2.385 KB
November 06 2023 09:15:52
0 / 0
0644
property.h
7.698 KB
November 06 2023 09:15:52
0 / 0
0644
proportions.h
3.169 KB
November 06 2023 09:15:52
0 / 0
0644
pstore.h
2.624 KB
November 06 2023 09:15:52
0 / 0
0644
pstore_ram.h
2.316 KB
November 06 2023 09:15:52
0 / 0
0644
pti.h
1.525 KB
November 06 2023 09:15:52
0 / 0
0644
ptp_classify.h
5.47 KB
November 06 2023 09:15:52
0 / 0
0644
ptp_clock_kernel.h
8.615 KB
November 06 2023 09:15:52
0 / 0
0644
ptr_ring.h
16.481 KB
November 06 2023 09:15:52
0 / 0
0644
ptrace.h
15.064 KB
November 06 2023 09:15:52
0 / 0
0644
pvclock_gtod.h
0.497 KB
November 06 2023 09:15:52
0 / 0
0644
pwm.h
7.177 KB
November 06 2023 09:15:52
0 / 0
0644
pwm_backlight.h
0.606 KB
November 06 2023 09:15:52
0 / 0
0644
pxa168_eth.h
0.627 KB
November 06 2023 09:15:52
0 / 0
0644
pxa2xx_ssp.h
8.27 KB
November 06 2023 09:15:52
0 / 0
0644
qnx6_fs.h
3.232 KB
November 06 2023 09:15:52
0 / 0
0644
quicklist.h
2.101 KB
November 06 2023 09:15:52
0 / 0
0644
quota.h
14.106 KB
November 06 2023 09:15:52
0 / 0
0644
quotaops.h
9.797 KB
November 06 2023 09:15:52
0 / 0
0644
radix-tree.h
19.883 KB
November 06 2023 09:15:52
0 / 0
0644
raid_class.h
2.081 KB
November 06 2023 09:15:52
0 / 0
0644
ramfs.h
0.965 KB
November 06 2023 09:15:52
0 / 0
0644
random.h
3.286 KB
November 06 2023 09:15:52
0 / 0
0644
range.h
0.598 KB
November 06 2023 09:15:52
0 / 0
0644
ras.h
0.344 KB
November 06 2023 09:15:52
0 / 0
0644
ratelimit.h
2.323 KB
November 06 2023 09:15:52
0 / 0
0644
rational.h
0.586 KB
November 06 2023 09:15:52
0 / 0
0644
rbtree.h
3.943 KB
November 06 2023 09:15:52
0 / 0
0644
rbtree_augmented.h
7.072 KB
November 06 2023 09:15:52
0 / 0
0644
rbtree_latch.h
6.643 KB
November 06 2023 09:15:52
0 / 0
0644
rculist.h
21.448 KB
November 06 2023 09:15:52
0 / 0
0644
rculist_bl.h
4.321 KB
November 06 2023 09:15:52
0 / 0
0644
rculist_nulls.h
6.121 KB
November 06 2023 09:15:52
0 / 0
0644
rcupdate.h
38.397 KB
November 06 2023 09:15:52
0 / 0
0644
rcutiny.h
3.998 KB
November 06 2023 09:15:52
0 / 0
0644
rcutree.h
3.403 KB
November 06 2023 09:15:52
0 / 0
0644
reboot.h
1.313 KB
November 06 2023 09:15:52
0 / 0
0644
reciprocal_div.h
0.97 KB
November 06 2023 09:15:52
0 / 0
0644
refcount.h
2.452 KB
November 06 2023 09:15:52
0 / 0
0644
regmap.h
21.462 KB
November 06 2023 09:15:52
0 / 0
0644
regset.h
12.995 KB
November 06 2023 09:15:52
0 / 0
0644
relay.h
8.61 KB
November 06 2023 09:15:52
0 / 0
0644
remoteproc.h
17.213 KB
November 06 2023 09:15:52
0 / 0
0644
res_counter.h
5.678 KB
November 06 2023 09:15:52
0 / 0
0644
reservation.h
9.01 KB
November 06 2023 09:15:52
0 / 0
0644
reset-controller.h
1.706 KB
November 06 2023 09:15:52
0 / 0
0644
reset.h
0.497 KB
November 06 2023 09:15:52
0 / 0
0644
resource.h
0.299 KB
November 06 2023 09:15:52
0 / 0
0644
resource_ext.h
2.225 KB
November 06 2023 09:15:52
0 / 0
0644
resume-trace.h
0.684 KB
November 06 2023 09:15:52
0 / 0
0644
rfkill-gpio.h
1.64 KB
November 06 2023 09:15:52
0 / 0
0644
rfkill-regulator.h
1.377 KB
November 06 2023 09:15:52
0 / 0
0644
rfkill.h
9.493 KB
November 06 2023 09:15:52
0 / 0
0644
rh_kabi.h
6.42 KB
November 06 2023 09:15:52
0 / 0
0644
rhashtable.h
38.319 KB
November 06 2023 09:15:52
0 / 0
0644
ring_buffer.h
6.617 KB
November 06 2023 09:15:52
0 / 0
0644
rio.h
16.5 KB
November 06 2023 09:15:52
0 / 0
0644
rio_drv.h
13.752 KB
November 06 2023 09:15:52
0 / 0
0644
rio_ids.h
1.246 KB
November 06 2023 09:15:52
0 / 0
0644
rio_regs.h
14.726 KB
November 06 2023 09:15:52
0 / 0
0644
rmap.h
9.264 KB
November 06 2023 09:15:52
0 / 0
0644
rmi.h
9.693 KB
November 06 2023 09:15:52
0 / 0
0644
rndis.h
16.826 KB
November 06 2023 09:15:52
0 / 0
0644
root_dev.h
0.527 KB
November 06 2023 09:15:52
0 / 0
0644
rotary_encoder.h
0.32 KB
November 06 2023 09:15:52
0 / 0
0644
rpmsg.h
11.407 KB
November 06 2023 09:15:52
0 / 0
0644
rslib.h
2.993 KB
November 06 2023 09:15:52
0 / 0
0644
rtc-ds2404.h
0.456 KB
November 06 2023 09:15:52
0 / 0
0644
rtc-v3020.h
1.032 KB
November 06 2023 09:15:52
0 / 0
0644
rtc.h
6.424 KB
November 06 2023 09:15:52
0 / 0
0644
rtmutex.h
2.913 KB
November 06 2023 09:15:52
0 / 0
0644
rtnetlink.h
4.236 KB
November 06 2023 09:15:52
0 / 0
0644
rwlock.h
4.289 KB
November 06 2023 09:15:52
0 / 0
0644
rwlock_api_smp.h
7.632 KB
November 06 2023 09:15:52
0 / 0
0644
rwlock_types.h
1.179 KB
November 06 2023 09:15:52
0 / 0
0644
rwsem-spinlock.h
1.479 KB
November 06 2023 09:15:52
0 / 0
0644
rwsem.h
5.806 KB
November 06 2023 09:15:52
0 / 0
0644
rxrpc.h
2.331 KB
November 06 2023 09:15:52
0 / 0
0644
s3c_adc_battery.h
0.91 KB
November 06 2023 09:15:52
0 / 0
0644
sa11x0-dma.h
0.559 KB
November 06 2023 09:15:52
0 / 0
0644
sbitmap.h
14.015 KB
November 06 2023 09:15:52
0 / 0
0644
scatterlist.h
12.157 KB
November 06 2023 09:15:52
0 / 0
0644
scc.h
2.799 KB
November 06 2023 09:15:52
0 / 0
0644
sched.h
97.418 KB
November 06 2023 09:15:52
0 / 0
0644
screen_info.h
0.559 KB
November 06 2023 09:15:52
0 / 0
0644
sctp.h
22.086 KB
November 06 2023 09:15:52
0 / 0
0644
scx200.h
1.781 KB
November 06 2023 09:15:52
0 / 0
0644
scx200_gpio.h
2.343 KB
November 06 2023 09:15:52
0 / 0
0644
sdla.h
6.9 KB
November 06 2023 09:15:52
0 / 0
0644
seccomp.h
2.153 KB
November 06 2023 09:15:52
0 / 0
0644
securebits.h
0.195 KB
November 06 2023 09:15:52
0 / 0
0644
security.h
121.274 KB
November 06 2023 09:15:52
0 / 0
0644
selection.h
1.327 KB
November 06 2023 09:15:52
0 / 0
0644
selinux.h
0.889 KB
November 06 2023 09:15:52
0 / 0
0644
sem.h
1.251 KB
November 06 2023 09:15:52
0 / 0
0644
semaphore.h
1.359 KB
November 06 2023 09:15:52
0 / 0
0644
seq_buf.h
1.124 KB
November 06 2023 09:15:52
0 / 0
0644
seq_file.h
7.364 KB
November 06 2023 09:15:52
0 / 0
0644
seq_file_net.h
0.658 KB
November 06 2023 09:15:52
0 / 0
0644
seqlock.h
15.873 KB
November 06 2023 09:15:52
0 / 0
0644
seqno-fence.h
3.955 KB
November 06 2023 09:15:52
0 / 0
0644
serial.h
0.615 KB
November 06 2023 09:15:52
0 / 0
0644
serial_8250.h
4.233 KB
November 06 2023 09:15:52
0 / 0
0644
serial_core.h
11.733 KB
November 06 2023 09:15:52
0 / 0
0644
serial_max3100.h
1.39 KB
November 06 2023 09:15:52
0 / 0
0644
serial_mfd.h
1.254 KB
November 06 2023 09:15:52
0 / 0
0644
serial_pnx8xxx.h
2.607 KB
November 06 2023 09:15:52
0 / 0
0644
serial_s3c.h
7.954 KB
November 06 2023 09:15:52
0 / 0
0644
serial_sci.h
3.563 KB
November 06 2023 09:15:52
0 / 0
0644
serio.h
4.156 KB
November 06 2023 09:15:52
0 / 0
0644
sfi.h
5.677 KB
November 06 2023 09:15:52
0 / 0
0644
sfi_acpi.h
3.399 KB
November 06 2023 09:15:52
0 / 0
0644
sh_clk.h
5.907 KB
November 06 2023 09:15:52
0 / 0
0644
sh_dma.h
2.329 KB
November 06 2023 09:15:52
0 / 0
0644
sh_eth.h
0.48 KB
November 06 2023 09:15:52
0 / 0
0644
sh_intc.h
3.386 KB
November 06 2023 09:15:52
0 / 0
0644
sh_timer.h
0.219 KB
November 06 2023 09:15:52
0 / 0
0644
shdma-base.h
4.056 KB
November 06 2023 09:15:52
0 / 0
0644
shm.h
1.783 KB
November 06 2023 09:15:52
0 / 0
0644
shmem_fs.h
3.572 KB
November 06 2023 09:15:52
0 / 0
0644
shrinker.h
1.443 KB
November 06 2023 09:15:52
0 / 0
0644
signal.h
12.854 KB
November 06 2023 09:15:52
0 / 0
0644
signalfd.h
0.729 KB
November 06 2023 09:15:52
0 / 0
0644
siphash.h
2.765 KB
November 06 2023 09:15:52
0 / 0
0644
sirfsoc_dma.h
0.12 KB
November 06 2023 09:15:52
0 / 0
0644
sizes.h
1.194 KB
November 06 2023 09:15:52
0 / 0
0644
skb_array.h
5.166 KB
November 06 2023 09:15:52
0 / 0
0644
skbuff.h
114.936 KB
November 06 2023 09:15:52
0 / 0
0644
slab.h
18.757 KB
November 06 2023 09:15:52
0 / 0
0644
slab_def.h
4.614 KB
November 06 2023 09:15:52
0 / 0
0644
slob_def.h
0.946 KB
November 06 2023 09:15:52
0 / 0
0644
slub_def.h
6.104 KB
November 06 2023 09:15:52
0 / 0
0644
sm501-regs.h
11.764 KB
November 06 2023 09:15:52
0 / 0
0644
sm501.h
4.632 KB
November 06 2023 09:15:52
0 / 0
0644
smc911x.h
0.249 KB
November 06 2023 09:15:52
0 / 0
0644
smc91x.h
1.046 KB
November 06 2023 09:15:52
0 / 0
0644
smp.h
5.903 KB
November 06 2023 09:15:52
0 / 0
0644
smpboot.h
2.147 KB
November 06 2023 09:15:52
0 / 0
0644
smsc911x.h
2.251 KB
November 06 2023 09:15:52
0 / 0
0644
smscphy.h
1.215 KB
November 06 2023 09:15:52
0 / 0
0644
sock_diag.h
0.889 KB
November 06 2023 09:15:52
0 / 0
0644
socket.h
11.284 KB
November 06 2023 09:15:52
0 / 0
0644
sonet.h
0.42 KB
November 06 2023 09:15:52
0 / 0
0644
sony-laptop.h
1.244 KB
November 06 2023 09:15:52
0 / 0
0644
sonypi.h
2.354 KB
November 06 2023 09:15:52
0 / 0
0644
sort.h
0.203 KB
November 06 2023 09:15:52
0 / 0
0644
sound.h
0.75 KB
November 06 2023 09:15:52
0 / 0
0644
soundcard.h
1.593 KB
November 06 2023 09:15:52
0 / 0
0644
spinlock.h
12.38 KB
November 06 2023 09:15:52
0 / 0
0644
spinlock_api_smp.h
5.464 KB
November 06 2023 09:15:52
0 / 0
0644
spinlock_api_up.h
3.375 KB
November 06 2023 09:15:52
0 / 0
0644
spinlock_types.h
2.122 KB
November 06 2023 09:15:52
0 / 0
0644
spinlock_types_up.h
0.709 KB
November 06 2023 09:15:52
0 / 0
0644
spinlock_up.h
2.468 KB
November 06 2023 09:15:52
0 / 0
0644
splice.h
3.247 KB
November 06 2023 09:15:52
0 / 0
0644
srcu.h
10.111 KB
November 06 2023 09:15:52
0 / 0
0644
ssbi.h
1.064 KB
November 06 2023 09:15:52
0 / 0
0644
stackprotector.h
0.278 KB
November 06 2023 09:15:52
0 / 0
0644
stacktrace.h
1.435 KB
November 06 2023 09:15:52
0 / 0
0644
start_kernel.h
0.288 KB
November 06 2023 09:15:52
0 / 0
0644
stat.h
0.728 KB
November 06 2023 09:15:52
0 / 0
0644
statfs.h
1.276 KB
November 06 2023 09:15:52
0 / 0
0644
static_key.h
0.029 KB
November 06 2023 09:15:52
0 / 0
0644
stddef.h
0.77 KB
November 06 2023 09:15:52
0 / 0
0644
ste_modem_shm.h
1.587 KB
November 06 2023 09:15:52
0 / 0
0644
stm.h
4.754 KB
November 06 2023 09:15:52
0 / 0
0644
stmmac.h
3.789 KB
November 06 2023 09:15:52
0 / 0
0644
stmp3xxx_rtc_wdt.h
0.324 KB
November 06 2023 09:15:52
0 / 0
0644
stmp_device.h
0.604 KB
November 06 2023 09:15:52
0 / 0
0644
stop_machine.h
4.542 KB
November 06 2023 09:15:52
0 / 0
0644
string.h
6.272 KB
November 06 2023 09:15:52
0 / 0
0644
string_helpers.h
2.104 KB
November 06 2023 09:15:52
0 / 0
0644
stringify.h
0.333 KB
November 06 2023 09:15:52
0 / 0
0644
sudmac.h
1.239 KB
November 06 2023 09:15:52
0 / 0
0644
sungem_phy.h
3.898 KB
November 06 2023 09:15:52
0 / 0
0644
sunserialcore.h
1.038 KB
November 06 2023 09:15:52
0 / 0
0644
superhyway.h
2.804 KB
November 06 2023 09:15:52
0 / 0
0644
suspend.h
16.145 KB
November 06 2023 09:15:52
0 / 0
0644
svga.h
3.709 KB
November 06 2023 09:15:52
0 / 0
0644
sw842.h
0.282 KB
November 06 2023 09:15:52
0 / 0
0644
swab.h
0.497 KB
November 06 2023 09:15:52
0 / 0
0644
swait.h
6.93 KB
November 06 2023 09:15:52
0 / 0
0644
swap.h
20.783 KB
November 06 2023 09:15:52
0 / 0
0644
swap_slots.h
0.782 KB
November 06 2023 09:15:52
0 / 0
0644
swapfile.h
0.505 KB
November 06 2023 09:15:52
0 / 0
0644
swapops.h
6.925 KB
November 06 2023 09:15:52
0 / 0
0644
swiotlb.h
3.742 KB
November 06 2023 09:15:52
0 / 0
0644
sync_core.h
0.566 KB
November 06 2023 09:15:52
0 / 0
0644
sync_file.h
1.568 KB
November 06 2023 09:15:52
0 / 0
0644
synclink.h
0.966 KB
November 06 2023 09:15:52
0 / 0
0644
sys.h
0.899 KB
November 06 2023 09:15:52
0 / 0
0644
sys_soc.h
0.93 KB
November 06 2023 09:15:52
0 / 0
0644
syscalls.h
38.072 KB
November 06 2023 09:15:52
0 / 0
0644
syscore_ops.h
0.62 KB
November 06 2023 09:15:52
0 / 0
0644
sysctl.h
7.046 KB
November 06 2023 09:15:52
0 / 0
0644
sysfs.h
13.691 KB
November 06 2023 09:15:52
0 / 0
0644
syslog.h
1.89 KB
November 06 2023 09:15:52
0 / 0
0644
sysrq.h
1.842 KB
November 06 2023 09:15:52
0 / 0
0644
sysv_fs.h
8.995 KB
November 06 2023 09:15:52
0 / 0
0644
task_io_accounting.h
1.094 KB
November 06 2023 09:15:52
0 / 0
0644
task_io_accounting_ops.h
2.511 KB
November 06 2023 09:15:52
0 / 0
0644
task_work.h
0.564 KB
November 06 2023 09:15:52
0 / 0
0644
taskstats_kern.h
0.89 KB
November 06 2023 09:15:52
0 / 0
0644
tboot.h
3.992 KB
November 06 2023 09:15:52
0 / 0
0644
tc.h
3.407 KB
November 06 2023 09:15:52
0 / 0
0644
tca6416_keypad.h
0.827 KB
November 06 2023 09:15:52
0 / 0
0644
tcp.h
13.024 KB
November 06 2023 09:15:52
0 / 0
0644
tegra-ahb.h
0.646 KB
November 06 2023 09:15:52
0 / 0
0644
tegra-powergate.h
1.46 KB
November 06 2023 09:15:52
0 / 0
0644
tegra-soc.h
0.773 KB
November 06 2023 09:15:52
0 / 0
0644
textsearch.h
4.69 KB
November 06 2023 09:15:52
0 / 0
0644
textsearch_fsm.h
1.147 KB
November 06 2023 09:15:52
0 / 0
0644
tfrc.h
1.888 KB
November 06 2023 09:15:52
0 / 0
0644
thermal.h
8.435 KB
November 06 2023 09:15:52
0 / 0
0644
thinkpad_acpi.h
0.274 KB
November 06 2023 09:15:52
0 / 0
0644
thread_info.h
4.943 KB
November 06 2023 09:15:52
0 / 0
0644
threads.h
1.24 KB
November 06 2023 09:15:52
0 / 0
0644
thunderbolt.h
18.877 KB
November 06 2023 09:15:52
0 / 0
0644
ti_wilink_st.h
14.051 KB
November 06 2023 09:15:52
0 / 0
0644
tick.h
6.989 KB
November 06 2023 09:15:52
0 / 0
0644
tifm.h
4.805 KB
November 06 2023 09:15:52
0 / 0
0644
timb_dma.h
1.742 KB
November 06 2023 09:15:52
0 / 0
0644
timb_gpio.h
1.277 KB
November 06 2023 09:15:52
0 / 0
0644
time-armada-370-xp.h
0.382 KB
November 06 2023 09:15:52
0 / 0
0644
time.h
6.872 KB
November 06 2023 09:15:52
0 / 0
0644
time64.h
4.856 KB
November 06 2023 09:15:52
0 / 0
0644
timecounter.h
4.613 KB
November 06 2023 09:15:52
0 / 0
0644
timekeeper_internal.h
4.741 KB
November 06 2023 09:15:52
0 / 0
0644
timekeeping.h
5.124 KB
November 06 2023 09:15:52
0 / 0
0644
timer.h
8.471 KB
November 06 2023 09:15:52
0 / 0
0644
timerfd.h
0.976 KB
November 06 2023 09:15:52
0 / 0
0644
timeriomem-rng.h
0.398 KB
November 06 2023 09:15:52
0 / 0
0644
timerqueue.h
1.075 KB
November 06 2023 09:15:52
0 / 0
0644
timex.h
6.344 KB
November 06 2023 09:15:52
0 / 0
0644
tnum.h
2.857 KB
November 06 2023 09:15:52
0 / 0
0644
topology.h
5.559 KB
November 06 2023 09:15:52
0 / 0
0644
toshiba.h
0.883 KB
November 06 2023 09:15:52
0 / 0
0644
tpm.h
3.171 KB
November 06 2023 09:15:52
0 / 0
0644
tpm_command.h
0.789 KB
November 06 2023 09:15:52
0 / 0
0644
tpm_eventlog.h
2.111 KB
November 06 2023 09:15:52
0 / 0
0644
trace.h
0.903 KB
November 06 2023 09:15:52
0 / 0
0644
trace_clock.h
0.613 KB
November 06 2023 09:15:52
0 / 0
0644
trace_seq.h
3.164 KB
November 06 2023 09:15:52
0 / 0
0644
tracehook.h
7.28 KB
November 06 2023 09:15:52
0 / 0
0644
tracepoint.h
12.933 KB
November 06 2023 09:15:52
0 / 0
0644
transport_class.h
2.505 KB
November 06 2023 09:15:52
0 / 0
0644
tsacct_kern.h
1.163 KB
November 06 2023 09:15:52
0 / 0
0644
tty.h
23.262 KB
November 06 2023 09:15:52
0 / 0
0644
tty_driver.h
15.094 KB
November 06 2023 09:15:52
0 / 0
0644
tty_flip.h
1.205 KB
November 06 2023 09:15:52
0 / 0
0644
tty_ldisc.h
7.908 KB
November 06 2023 09:15:52
0 / 0
0644
typecheck.h
0.571 KB
November 06 2023 09:15:52
0 / 0
0644
types.h
4.836 KB
November 06 2023 09:15:52
0 / 0
0644
u64_stats_sync.h
4.803 KB
November 06 2023 09:15:52
0 / 0
0644
uaccess.h
4.221 KB
November 06 2023 09:15:52
0 / 0
0644
ucb1400.h
4.265 KB
November 06 2023 09:15:52
0 / 0
0644
ucs2_string.h
0.608 KB
November 06 2023 09:15:52
0 / 0
0644
udp.h
3.504 KB
November 06 2023 09:15:52
0 / 0
0644
uidgid.h
4.182 KB
November 06 2023 09:15:52
0 / 0
0644
uinput.h
2.084 KB
November 06 2023 09:15:52
0 / 0
0644
uio.h
1.145 KB
November 06 2023 09:15:52
0 / 0
0644
uio_driver.h
3.936 KB
November 06 2023 09:15:52
0 / 0
0644
uprobes.h
5.971 KB
November 06 2023 09:15:52
0 / 0
0644
usb.h
76.122 KB
November 06 2023 09:15:52
0 / 0
0644
usb_usual.h
3.417 KB
November 06 2023 09:15:52
0 / 0
0644
usbdevice_fs.h
2.183 KB
November 06 2023 09:15:52
0 / 0
0644
user-return-notifier.h
1.139 KB
November 06 2023 09:15:52
0 / 0
0644
user.h
0.021 KB
November 06 2023 09:15:52
0 / 0
0644
user_namespace.h
3.928 KB
November 06 2023 09:15:52
0 / 0
0644
userfaultfd_k.h
3.6 KB
November 06 2023 09:15:52
0 / 0
0644
uts.h
0.341 KB
November 06 2023 09:15:52
0 / 0
0644
utsname.h
1.652 KB
November 06 2023 09:15:52
0 / 0
0644
uuid.h
2.998 KB
November 06 2023 09:15:52
0 / 0
0644
uwb.h
25.222 KB
November 06 2023 09:15:52
0 / 0
0644
verify_pefile.h
0.609 KB
November 06 2023 09:15:52
0 / 0
0644
vermagic.h
0.796 KB
November 06 2023 09:15:52
0 / 0
0644
vexpress.h
3.856 KB
November 06 2023 09:15:52
0 / 0
0644
vfio.h
5.582 KB
November 06 2023 09:15:52
0 / 0
0644
vfs.h
0.075 KB
November 06 2023 09:15:52
0 / 0
0644
vga_switcheroo.h
8.703 KB
November 06 2023 09:15:52
0 / 0
0644
vgaarb.h
9.052 KB
November 06 2023 09:15:52
0 / 0
0644
via-core.h
7.268 KB
November 06 2023 09:15:52
0 / 0
0644
via-gpio.h
0.326 KB
November 06 2023 09:15:52
0 / 0
0644
via.h
0.872 KB
November 06 2023 09:15:52
0 / 0
0644
via_i2c.h
1.48 KB
November 06 2023 09:15:52
0 / 0
0644
video_output.h
1.891 KB
November 06 2023 09:15:52
0 / 0
0644
videodev2.h
2.678 KB
November 06 2023 09:15:52
0 / 0
0644
virtio.h
5.959 KB
November 06 2023 09:15:52
0 / 0
0644
virtio_byteorder.h
1.418 KB
November 06 2023 09:15:52
0 / 0
0644
virtio_caif.h
0.48 KB
November 06 2023 09:15:52
0 / 0
0644
virtio_config.h
12.748 KB
November 06 2023 09:15:52
0 / 0
0644
virtio_console.h
1.928 KB
November 06 2023 09:15:52
0 / 0
0644
virtio_mmio.h
4.479 KB
November 06 2023 09:15:52
0 / 0
0644
virtio_ring.h
2.685 KB
November 06 2023 09:15:52
0 / 0
0644
virtio_vsock.h
4.904 KB
November 06 2023 09:15:52
0 / 0
0644
vlynq.h
3.876 KB
November 06 2023 09:15:52
0 / 0
0644
vm_event_item.h
2.195 KB
November 06 2023 09:15:52
0 / 0
0644
vm_sockets.h
0.687 KB
November 06 2023 09:15:52
0 / 0
0644
vmalloc.h
6.413 KB
November 06 2023 09:15:52
0 / 0
0644
vme.h
4.879 KB
November 06 2023 09:15:52
0 / 0
0644
vmpressure.h
1.648 KB
November 06 2023 09:15:52
0 / 0
0644
vmstat.h
7.231 KB
November 06 2023 09:15:52
0 / 0
0644
vmw_vmci_api.h
3.148 KB
November 06 2023 09:15:52
0 / 0
0644
vmw_vmci_defs.h
28.036 KB
November 06 2023 09:15:52
0 / 0
0644
vringh.h
7.764 KB
November 06 2023 09:15:52
0 / 0
0644
vt.h
0.559 KB
November 06 2023 09:15:52
0 / 0
0644
vt_buffer.h
1.251 KB
November 06 2023 09:15:52
0 / 0
0644
vt_kern.h
6.328 KB
November 06 2023 09:15:52
0 / 0
0644
vtime.h
3.658 KB
November 06 2023 09:15:52
0 / 0
0644
w1-gpio.h
0.682 KB
November 06 2023 09:15:52
0 / 0
0644
wait.h
41.651 KB
November 06 2023 09:15:52
0 / 0
0644
wanrouter.h
0.167 KB
November 06 2023 09:15:52
0 / 0
0644
watchdog.h
7.494 KB
November 06 2023 09:15:52
0 / 0
0644
wireless.h
1.362 KB
November 06 2023 09:15:52
0 / 0
0644
wl12xx.h
2.26 KB
November 06 2023 09:15:52
0 / 0
0644
wm97xx.h
10.567 KB
November 06 2023 09:15:52
0 / 0
0644
wmi.h
1.942 KB
November 06 2023 09:15:52
0 / 0
0644
workqueue.h
21.5 KB
November 06 2023 09:15:52
0 / 0
0644
writeback.h
5.92 KB
November 06 2023 09:15:52
0 / 0
0644
ww_mutex.h
12.801 KB
November 06 2023 09:15:52
0 / 0
0644
xattr.h
3.147 KB
November 06 2023 09:15:52
0 / 0
0644
xilinxfb.h
0.923 KB
November 06 2023 09:15:52
0 / 0
0644
xz.h
11.163 KB
November 06 2023 09:15:52
0 / 0
0644
yam.h
2.812 KB
November 06 2023 09:15:52
0 / 0
0644
z2_battery.h
0.272 KB
November 06 2023 09:15:52
0 / 0
0644
zbud.h
0.679 KB
November 06 2023 09:15:52
0 / 0
0644
zconf.h
1.729 KB
November 06 2023 09:15:52
0 / 0
0644
zlib.h
33.599 KB
November 06 2023 09:15:52
0 / 0
0644
zorro.h
6.508 KB
November 06 2023 09:15:52
0 / 0
0644
zorro_ids.h
29.199 KB
November 06 2023 09:15:52
0 / 0
0644
zpool.h
2.902 KB
November 06 2023 09:15:52
0 / 0
0644
zsmalloc.h
1.418 KB
November 06 2023 09:15:52
0 / 0
0644
zutil.h
2.718 KB
November 06 2023 09:15:52
0 / 0
0644