__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PAGEMAP_H
#define _LINUX_PAGEMAP_H

/*
 * Copyright 1995 Linus Torvalds
 */
#include <linux/mm.h>
#include <linux/fs.h>
#include <linux/list.h>
#include <linux/highmem.h>
#include <linux/compiler.h>
#include <linux/uaccess.h>
#include <linux/gfp.h>
#include <linux/bitops.h>
#include <linux/hardirq.h> /* for in_interrupt() */
#include <linux/hugetlb_inline.h>

struct folio_batch;

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);
}
int invalidate_inode_pages2(struct address_space *mapping);
int invalidate_inode_pages2_range(struct address_space *mapping,
		pgoff_t start, pgoff_t end);
int kiocb_invalidate_pages(struct kiocb *iocb, size_t count);
void kiocb_invalidate_post_direct_write(struct kiocb *iocb, size_t count);
int filemap_invalidate_pages(struct address_space *mapping,
			     loff_t pos, loff_t end, bool nowait);

int write_inode_now(struct inode *, int sync);
int filemap_fdatawrite(struct address_space *);
int filemap_flush(struct address_space *);
int filemap_fdatawait_keep_errors(struct address_space *mapping);
int filemap_fdatawait_range(struct address_space *, loff_t lstart, loff_t lend);
int filemap_fdatawait_range_keep_errors(struct address_space *mapping,
		loff_t start_byte, loff_t end_byte);
int filemap_invalidate_inode(struct inode *inode, bool flush,
			     loff_t start, loff_t end);

static inline int filemap_fdatawait(struct address_space *mapping)
{
	return filemap_fdatawait_range(mapping, 0, LLONG_MAX);
}

bool filemap_range_has_page(struct address_space *, loff_t lstart, loff_t lend);
int filemap_write_and_wait_range(struct address_space *mapping,
		loff_t lstart, loff_t lend);
int __filemap_fdatawrite_range(struct address_space *mapping,
		loff_t start, loff_t end, int sync_mode);
int filemap_fdatawrite_range(struct address_space *mapping,
		loff_t start, loff_t end);
int filemap_check_errors(struct address_space *mapping);
void __filemap_set_wb_err(struct address_space *mapping, int err);
int filemap_fdatawrite_wbc(struct address_space *mapping,
			   struct writeback_control *wbc);
int kiocb_write_and_wait(struct kiocb *iocb, size_t count);

static inline int filemap_write_and_wait(struct address_space *mapping)
{
	return filemap_write_and_wait_range(mapping, 0, LLONG_MAX);
}

/**
 * filemap_set_wb_err - set a writeback error on an address_space
 * @mapping: mapping in which to set writeback error
 * @err: error to be set in mapping
 *
 * When writeback fails in some way, we must record that error so that
 * userspace can be informed when fsync and the like are called.  We endeavor
 * to report errors on any file that was open at the time of the error.  Some
 * internal callers also need to know when writeback errors have occurred.
 *
 * When a writeback error occurs, most filesystems will want to call
 * filemap_set_wb_err to record the error in the mapping so that it will be
 * automatically reported whenever fsync is called on the file.
 */
static inline void filemap_set_wb_err(struct address_space *mapping, int err)
{
	/* Fastpath for common case of no error */
	if (unlikely(err))
		__filemap_set_wb_err(mapping, err);
}

/**
 * filemap_check_wb_err - has an error occurred since the mark was sampled?
 * @mapping: mapping to check for writeback errors
 * @since: previously-sampled errseq_t
 *
 * Grab the errseq_t value from the mapping, and see if it has changed "since"
 * the given value was sampled.
 *
 * If it has then report the latest error set, otherwise return 0.
 */
static inline int filemap_check_wb_err(struct address_space *mapping,
					errseq_t since)
{
	return errseq_check(&mapping->wb_err, since);
}

/**
 * filemap_sample_wb_err - sample the current errseq_t to test for later errors
 * @mapping: mapping to be sampled
 *
 * Writeback errors are always reported relative to a particular sample point
 * in the past. This function provides those sample points.
 */
static inline errseq_t filemap_sample_wb_err(struct address_space *mapping)
{
	return errseq_sample(&mapping->wb_err);
}

/**
 * file_sample_sb_err - sample the current errseq_t to test for later errors
 * @file: file pointer to be sampled
 *
 * Grab the most current superblock-level errseq_t value for the given
 * struct file.
 */
static inline errseq_t file_sample_sb_err(struct file *file)
{
	return errseq_sample(&file->f_path.dentry->d_sb->s_wb_err);
}

/*
 * Flush file data before changing attributes.  Caller must hold any locks
 * required to prevent further writes to this file until we're done setting
 * flags.
 */
static inline int inode_drain_writes(struct inode *inode)
{
	inode_dio_wait(inode);
	return filemap_write_and_wait(inode->i_mapping);
}

static inline bool mapping_empty(struct address_space *mapping)
{
	return xa_empty(&mapping->i_pages);
}

/*
 * mapping_shrinkable - test if page cache state allows inode reclaim
 * @mapping: the page cache mapping
 *
 * This checks the mapping's cache state for the pupose of inode
 * reclaim and LRU management.
 *
 * The caller is expected to hold the i_lock, but is not required to
 * hold the i_pages lock, which usually protects cache state. That's
 * because the i_lock and the list_lru lock that protect the inode and
 * its LRU state don't nest inside the irq-safe i_pages lock.
 *
 * Cache deletions are performed under the i_lock, which ensures that
 * when an inode goes empty, it will reliably get queued on the LRU.
 *
 * Cache additions do not acquire the i_lock and may race with this
 * check, in which case we'll report the inode as shrinkable when it
 * has cache pages. This is okay: the shrinker also checks the
 * refcount and the referenced bit, which will be elevated or set in
 * the process of adding new cache pages to an inode.
 */
static inline bool mapping_shrinkable(struct address_space *mapping)
{
	void *head;

	/*
	 * On highmem systems, there could be lowmem pressure from the
	 * inodes before there is highmem pressure from the page
	 * cache. Make inodes shrinkable regardless of cache state.
	 */
	if (IS_ENABLED(CONFIG_HIGHMEM))
		return true;

	/* Cache completely empty? Shrink away. */
	head = rcu_access_pointer(mapping->i_pages.xa_head);
	if (!head)
		return true;

	/*
	 * The xarray stores single offset-0 entries directly in the
	 * head pointer, which allows non-resident page cache entries
	 * to escape the shadow shrinker's list of xarray nodes. The
	 * inode shrinker needs to pick them up under memory pressure.
	 */
	if (!xa_is_node(head) && xa_is_value(head))
		return true;

	return false;
}

/*
 * Bits in mapping->flags.
 */
enum mapping_flags {
	AS_EIO		= 0,	/* IO error on async write */
	AS_ENOSPC	= 1,	/* ENOSPC on async write */
	AS_MM_ALL_LOCKS	= 2,	/* under mm_take_all_locks() */
	AS_UNEVICTABLE	= 3,	/* e.g., ramdisk, SHM_LOCK */
	AS_EXITING	= 4, 	/* final truncate in progress */
	/* writeback related tags are not used */
	AS_NO_WRITEBACK_TAGS = 5,
	AS_RELEASE_ALWAYS = 6,	/* Call ->release_folio(), even if no private data */
	AS_STABLE_WRITES = 7,	/* must wait for writeback before modifying
				   folio contents */
	AS_INACCESSIBLE = 8,	/* Do not attempt direct R/W access to the mapping */
	/* Bits 16-25 are used for FOLIO_ORDER */
	AS_FOLIO_ORDER_BITS = 5,
	AS_FOLIO_ORDER_MIN = 16,
	AS_FOLIO_ORDER_MAX = AS_FOLIO_ORDER_MIN + AS_FOLIO_ORDER_BITS,
};

#define AS_FOLIO_ORDER_BITS_MASK ((1u << AS_FOLIO_ORDER_BITS) - 1)
#define AS_FOLIO_ORDER_MIN_MASK (AS_FOLIO_ORDER_BITS_MASK << AS_FOLIO_ORDER_MIN)
#define AS_FOLIO_ORDER_MAX_MASK (AS_FOLIO_ORDER_BITS_MASK << AS_FOLIO_ORDER_MAX)
#define AS_FOLIO_ORDER_MASK (AS_FOLIO_ORDER_MIN_MASK | AS_FOLIO_ORDER_MAX_MASK)

/**
 * mapping_set_error - record a writeback error in the address_space
 * @mapping: the mapping in which an error should be set
 * @error: the error to set in the mapping
 *
 * When writeback fails in some way, we must record that error so that
 * userspace can be informed when fsync and the like are called.  We endeavor
 * to report errors on any file that was open at the time of the error.  Some
 * internal callers also need to know when writeback errors have occurred.
 *
 * When a writeback error occurs, most filesystems will want to call
 * mapping_set_error to record the error in the mapping so that it can be
 * reported when the application calls fsync(2).
 */
static inline void mapping_set_error(struct address_space *mapping, int error)
{
	if (likely(!error))
		return;

	/* Record in wb_err for checkers using errseq_t based tracking */
	__filemap_set_wb_err(mapping, error);

	/* Record it in superblock */
	if (mapping->host)
		errseq_set(&mapping->host->i_sb->s_wb_err, error);

	/* Record it in flags for now, for legacy callers */
	if (error == -ENOSPC)
		set_bit(AS_ENOSPC, &mapping->flags);
	else
		set_bit(AS_EIO, &mapping->flags);
}

static inline void mapping_set_unevictable(struct address_space *mapping)
{
	set_bit(AS_UNEVICTABLE, &mapping->flags);
}

static inline void mapping_clear_unevictable(struct address_space *mapping)
{
	clear_bit(AS_UNEVICTABLE, &mapping->flags);
}

static inline bool mapping_unevictable(struct address_space *mapping)
{
	return mapping && test_bit(AS_UNEVICTABLE, &mapping->flags);
}

static inline void mapping_set_exiting(struct address_space *mapping)
{
	set_bit(AS_EXITING, &mapping->flags);
}

static inline int mapping_exiting(struct address_space *mapping)
{
	return test_bit(AS_EXITING, &mapping->flags);
}

static inline void mapping_set_no_writeback_tags(struct address_space *mapping)
{
	set_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags);
}

static inline int mapping_use_writeback_tags(struct address_space *mapping)
{
	return !test_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags);
}

static inline bool mapping_release_always(const struct address_space *mapping)
{
	return test_bit(AS_RELEASE_ALWAYS, &mapping->flags);
}

static inline void mapping_set_release_always(struct address_space *mapping)
{
	set_bit(AS_RELEASE_ALWAYS, &mapping->flags);
}

static inline void mapping_clear_release_always(struct address_space *mapping)
{
	clear_bit(AS_RELEASE_ALWAYS, &mapping->flags);
}

static inline bool mapping_stable_writes(const struct address_space *mapping)
{
	return test_bit(AS_STABLE_WRITES, &mapping->flags);
}

static inline void mapping_set_stable_writes(struct address_space *mapping)
{
	set_bit(AS_STABLE_WRITES, &mapping->flags);
}

static inline void mapping_clear_stable_writes(struct address_space *mapping)
{
	clear_bit(AS_STABLE_WRITES, &mapping->flags);
}

static inline void mapping_set_inaccessible(struct address_space *mapping)
{
	/*
	 * It's expected inaccessible mappings are also unevictable. Compaction
	 * migrate scanner (isolate_migratepages_block()) relies on this to
	 * reduce page locking.
	 */
	set_bit(AS_UNEVICTABLE, &mapping->flags);
	set_bit(AS_INACCESSIBLE, &mapping->flags);
}

static inline bool mapping_inaccessible(struct address_space *mapping)
{
	return test_bit(AS_INACCESSIBLE, &mapping->flags);
}

static inline gfp_t mapping_gfp_mask(struct address_space * mapping)
{
	return mapping->gfp_mask;
}

/* Restricts the given gfp_mask to what the mapping allows. */
static inline gfp_t mapping_gfp_constraint(struct address_space *mapping,
		gfp_t gfp_mask)
{
	return mapping_gfp_mask(mapping) & gfp_mask;
}

/*
 * This is non-atomic.  Only to be used before the mapping is activated.
 * Probably needs a barrier...
 */
static inline void mapping_set_gfp_mask(struct address_space *m, gfp_t mask)
{
	m->gfp_mask = mask;
}

/*
 * There are some parts of the kernel which assume that PMD entries
 * are exactly HPAGE_PMD_ORDER.  Those should be fixed, but until then,
 * limit the maximum allocation order to PMD size.  I'm not aware of any
 * assumptions about maximum order if THP are disabled, but 8 seems like
 * a good order (that's 1MB if you're using 4kB pages)
 */
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
#define PREFERRED_MAX_PAGECACHE_ORDER	HPAGE_PMD_ORDER
#else
#define PREFERRED_MAX_PAGECACHE_ORDER	8
#endif

/*
 * xas_split_alloc() does not support arbitrary orders. This implies no
 * 512MB THP on ARM64 with 64KB base page size.
 */
#define MAX_XAS_ORDER		(XA_CHUNK_SHIFT * 2 - 1)
#define MAX_PAGECACHE_ORDER	min(MAX_XAS_ORDER, PREFERRED_MAX_PAGECACHE_ORDER)

/*
 * mapping_max_folio_size_supported() - Check the max folio size supported
 *
 * The filesystem should call this function at mount time if there is a
 * requirement on the folio mapping size in the page cache.
 */
static inline size_t mapping_max_folio_size_supported(void)
{
	if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
		return 1U << (PAGE_SHIFT + MAX_PAGECACHE_ORDER);
	return PAGE_SIZE;
}

/*
 * mapping_set_folio_order_range() - Set the orders supported by a file.
 * @mapping: The address space of the file.
 * @min: Minimum folio order (between 0-MAX_PAGECACHE_ORDER inclusive).
 * @max: Maximum folio order (between @min-MAX_PAGECACHE_ORDER inclusive).
 *
 * The filesystem should call this function in its inode constructor to
 * indicate which base size (min) and maximum size (max) of folio the VFS
 * can use to cache the contents of the file.  This should only be used
 * if the filesystem needs special handling of folio sizes (ie there is
 * something the core cannot know).
 * Do not tune it based on, eg, i_size.
 *
 * Context: This should not be called while the inode is active as it
 * is non-atomic.
 */
static inline void mapping_set_folio_order_range(struct address_space *mapping,
						 unsigned int min,
						 unsigned int max)
{
	if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
		return;

	if (min > MAX_PAGECACHE_ORDER)
		min = MAX_PAGECACHE_ORDER;

	if (max > MAX_PAGECACHE_ORDER)
		max = MAX_PAGECACHE_ORDER;

	if (max < min)
		max = min;

	mapping->flags = (mapping->flags & ~AS_FOLIO_ORDER_MASK) |
		(min << AS_FOLIO_ORDER_MIN) | (max << AS_FOLIO_ORDER_MAX);
}

static inline void mapping_set_folio_min_order(struct address_space *mapping,
					       unsigned int min)
{
	mapping_set_folio_order_range(mapping, min, MAX_PAGECACHE_ORDER);
}

/**
 * mapping_set_large_folios() - Indicate the file supports large folios.
 * @mapping: The address space of the file.
 *
 * The filesystem should call this function in its inode constructor to
 * indicate that the VFS can use large folios to cache the contents of
 * the file.
 *
 * Context: This should not be called while the inode is active as it
 * is non-atomic.
 */
static inline void mapping_set_large_folios(struct address_space *mapping)
{
	mapping_set_folio_order_range(mapping, 0, MAX_PAGECACHE_ORDER);
}

static inline unsigned int
mapping_max_folio_order(const struct address_space *mapping)
{
	if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
		return 0;
	return (mapping->flags & AS_FOLIO_ORDER_MAX_MASK) >> AS_FOLIO_ORDER_MAX;
}

static inline unsigned int
mapping_min_folio_order(const struct address_space *mapping)
{
	if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
		return 0;
	return (mapping->flags & AS_FOLIO_ORDER_MIN_MASK) >> AS_FOLIO_ORDER_MIN;
}

static inline unsigned long
mapping_min_folio_nrpages(struct address_space *mapping)
{
	return 1UL << mapping_min_folio_order(mapping);
}

/**
 * mapping_align_index() - Align index for this mapping.
 * @mapping: The address_space.
 * @index: The page index.
 *
 * The index of a folio must be naturally aligned.  If you are adding a
 * new folio to the page cache and need to know what index to give it,
 * call this function.
 */
static inline pgoff_t mapping_align_index(struct address_space *mapping,
					  pgoff_t index)
{
	return round_down(index, mapping_min_folio_nrpages(mapping));
}

/*
 * Large folio support currently depends on THP.  These dependencies are
 * being worked on but are not yet fixed.
 */
static inline bool mapping_large_folio_support(struct address_space *mapping)
{
	/* AS_FOLIO_ORDER is only reasonable for pagecache folios */
	VM_WARN_ONCE((unsigned long)mapping & PAGE_MAPPING_ANON,
			"Anonymous mapping always supports large folio");

	return mapping_max_folio_order(mapping) > 0;
}

/* Return the maximum folio size for this pagecache mapping, in bytes. */
static inline size_t mapping_max_folio_size(const struct address_space *mapping)
{
	return PAGE_SIZE << mapping_max_folio_order(mapping);
}

static inline int filemap_nr_thps(struct address_space *mapping)
{
#ifdef CONFIG_READ_ONLY_THP_FOR_FS
	return atomic_read(&mapping->nr_thps);
#else
	return 0;
#endif
}

static inline void filemap_nr_thps_inc(struct address_space *mapping)
{
#ifdef CONFIG_READ_ONLY_THP_FOR_FS
	if (!mapping_large_folio_support(mapping))
		atomic_inc(&mapping->nr_thps);
#else
	WARN_ON_ONCE(mapping_large_folio_support(mapping) == 0);
#endif
}

static inline void filemap_nr_thps_dec(struct address_space *mapping)
{
#ifdef CONFIG_READ_ONLY_THP_FOR_FS
	if (!mapping_large_folio_support(mapping))
		atomic_dec(&mapping->nr_thps);
#else
	WARN_ON_ONCE(mapping_large_folio_support(mapping) == 0);
#endif
}

struct address_space *folio_mapping(struct folio *);
struct address_space *swapcache_mapping(struct folio *);

/**
 * folio_file_mapping - Find the mapping this folio belongs to.
 * @folio: The folio.
 *
 * For folios which are in the page cache, return the mapping that this
 * page belongs to.  Folios in the swap cache return the mapping of the
 * swap file or swap device where the data is stored.  This is different
 * from the mapping returned by folio_mapping().  The only reason to
 * use it is if, like NFS, you return 0 from ->activate_swapfile.
 *
 * Do not call this for folios which aren't in the page cache or swap cache.
 */
static inline struct address_space *folio_file_mapping(struct folio *folio)
{
	if (unlikely(folio_test_swapcache(folio)))
		return swapcache_mapping(folio);

	return folio->mapping;
}

/**
 * folio_flush_mapping - Find the file mapping this folio belongs to.
 * @folio: The folio.
 *
 * For folios which are in the page cache, return the mapping that this
 * page belongs to.  Anonymous folios return NULL, even if they're in
 * the swap cache.  Other kinds of folio also return NULL.
 *
 * This is ONLY used by architecture cache flushing code.  If you aren't
 * writing cache flushing code, you want either folio_mapping() or
 * folio_file_mapping().
 */
static inline struct address_space *folio_flush_mapping(struct folio *folio)
{
	if (unlikely(folio_test_swapcache(folio)))
		return NULL;

	return folio_mapping(folio);
}

static inline struct address_space *page_file_mapping(struct page *page)
{
	return folio_file_mapping(page_folio(page));
}

/**
 * folio_inode - Get the host inode for this folio.
 * @folio: The folio.
 *
 * For folios which are in the page cache, return the inode that this folio
 * belongs to.
 *
 * Do not call this for folios which aren't in the page cache.
 */
static inline struct inode *folio_inode(struct folio *folio)
{
	return folio->mapping->host;
}

/**
 * folio_attach_private - Attach private data to a folio.
 * @folio: Folio to attach data to.
 * @data: Data to attach to folio.
 *
 * Attaching private data to a folio increments the page's reference count.
 * The data must be detached before the folio will be freed.
 */
static inline void folio_attach_private(struct folio *folio, void *data)
{
	folio_get(folio);
	folio->private = data;
	folio_set_private(folio);
}

/**
 * folio_change_private - Change private data on a folio.
 * @folio: Folio to change the data on.
 * @data: Data to set on the folio.
 *
 * Change the private data attached to a folio and return the old
 * data.  The page must previously have had data attached and the data
 * must be detached before the folio will be freed.
 *
 * Return: Data that was previously attached to the folio.
 */
static inline void *folio_change_private(struct folio *folio, void *data)
{
	void *old = folio_get_private(folio);

	folio->private = data;
	return old;
}

/**
 * folio_detach_private - Detach private data from a folio.
 * @folio: Folio to detach data from.
 *
 * Removes the data that was previously attached to the folio and decrements
 * the refcount on the page.
 *
 * Return: Data that was attached to the folio.
 */
static inline void *folio_detach_private(struct folio *folio)
{
	void *data = folio_get_private(folio);

	if (!folio_test_private(folio))
		return NULL;
	folio_clear_private(folio);
	folio->private = NULL;
	folio_put(folio);

	return data;
}

static inline void attach_page_private(struct page *page, void *data)
{
	folio_attach_private(page_folio(page), data);
}

static inline void *detach_page_private(struct page *page)
{
	return folio_detach_private(page_folio(page));
}

#ifdef CONFIG_NUMA
struct folio *filemap_alloc_folio_noprof(gfp_t gfp, unsigned int order);
#else
static inline struct folio *filemap_alloc_folio_noprof(gfp_t gfp, unsigned int order)
{
	return folio_alloc_noprof(gfp, order);
}
#endif

#define filemap_alloc_folio(...)				\
	alloc_hooks(filemap_alloc_folio_noprof(__VA_ARGS__))

static inline struct page *__page_cache_alloc(gfp_t gfp)
{
	return &filemap_alloc_folio(gfp, 0)->page;
}

static inline gfp_t readahead_gfp_mask(struct address_space *x)
{
	return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN;
}

typedef int filler_t(struct file *, struct folio *);

pgoff_t page_cache_next_miss(struct address_space *mapping,
			     pgoff_t index, unsigned long max_scan);
pgoff_t page_cache_prev_miss(struct address_space *mapping,
			     pgoff_t index, unsigned long max_scan);

/**
 * typedef fgf_t - Flags for getting folios from the page cache.
 *
 * Most users of the page cache will not need to use these flags;
 * there are convenience functions such as filemap_get_folio() and
 * filemap_lock_folio().  For users which need more control over exactly
 * what is done with the folios, these flags to __filemap_get_folio()
 * are available.
 *
 * * %FGP_ACCESSED - The folio will be marked accessed.
 * * %FGP_LOCK - The folio is returned locked.
 * * %FGP_CREAT - If no folio is present then a new folio is allocated,
 *   added to the page cache and the VM's LRU list.  The folio is
 *   returned locked.
 * * %FGP_FOR_MMAP - The caller wants to do its own locking dance if the
 *   folio is already in cache.  If the folio was allocated, unlock it
 *   before returning so the caller can do the same dance.
 * * %FGP_WRITE - The folio will be written to by the caller.
 * * %FGP_NOFS - __GFP_FS will get cleared in gfp.
 * * %FGP_NOWAIT - Don't block on the folio lock.
 * * %FGP_STABLE - Wait for the folio to be stable (finished writeback)
 * * %FGP_DONTCACHE - Uncached buffered IO
 * * %FGP_WRITEBEGIN - The flags to use in a filesystem write_begin()
 *   implementation.
 */
typedef unsigned int __bitwise fgf_t;

#define FGP_ACCESSED		((__force fgf_t)0x00000001)
#define FGP_LOCK		((__force fgf_t)0x00000002)
#define FGP_CREAT		((__force fgf_t)0x00000004)
#define FGP_WRITE		((__force fgf_t)0x00000008)
#define FGP_NOFS		((__force fgf_t)0x00000010)
#define FGP_NOWAIT		((__force fgf_t)0x00000020)
#define FGP_FOR_MMAP		((__force fgf_t)0x00000040)
#define FGP_STABLE		((__force fgf_t)0x00000080)
#define FGP_DONTCACHE		((__force fgf_t)0x00000100)
#define FGF_GET_ORDER(fgf)	(((__force unsigned)fgf) >> 26)	/* top 6 bits */

#define FGP_WRITEBEGIN		(FGP_LOCK | FGP_WRITE | FGP_CREAT | FGP_STABLE)

static inline unsigned int filemap_get_order(size_t size)
{
	unsigned int shift = ilog2(size);

	if (shift <= PAGE_SHIFT)
		return 0;

	return shift - PAGE_SHIFT;
}

/**
 * fgf_set_order - Encode a length in the fgf_t flags.
 * @size: The suggested size of the folio to create.
 *
 * The caller of __filemap_get_folio() can use this to suggest a preferred
 * size for the folio that is created.  If there is already a folio at
 * the index, it will be returned, no matter what its size.  If a folio
 * is freshly created, it may be of a different size than requested
 * due to alignment constraints, memory pressure, or the presence of
 * other folios at nearby indices.
 */
static inline fgf_t fgf_set_order(size_t size)
{
	unsigned int order = filemap_get_order(size);

	if (!order)
		return 0;
	return (__force fgf_t)(order << 26);
}

void *filemap_get_entry(struct address_space *mapping, pgoff_t index);
struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
		fgf_t fgp_flags, gfp_t gfp);
struct page *pagecache_get_page(struct address_space *mapping, pgoff_t index,
		fgf_t fgp_flags, gfp_t gfp);

/**
 * filemap_get_folio - Find and get a folio.
 * @mapping: The address_space to search.
 * @index: The page index.
 *
 * Looks up the page cache entry at @mapping & @index.  If a folio is
 * present, it is returned with an increased refcount.
 *
 * Return: A folio or ERR_PTR(-ENOENT) if there is no folio in the cache for
 * this index.  Will not return a shadow, swap or DAX entry.
 */
static inline struct folio *filemap_get_folio(struct address_space *mapping,
					pgoff_t index)
{
	return __filemap_get_folio(mapping, index, 0, 0);
}

/**
 * filemap_lock_folio - Find and lock a folio.
 * @mapping: The address_space to search.
 * @index: The page index.
 *
 * Looks up the page cache entry at @mapping & @index.  If a folio is
 * present, it is returned locked with an increased refcount.
 *
 * Context: May sleep.
 * Return: A folio or ERR_PTR(-ENOENT) if there is no folio in the cache for
 * this index.  Will not return a shadow, swap or DAX entry.
 */
static inline struct folio *filemap_lock_folio(struct address_space *mapping,
					pgoff_t index)
{
	return __filemap_get_folio(mapping, index, FGP_LOCK, 0);
}

/**
 * filemap_grab_folio - grab a folio from the page cache
 * @mapping: The address space to search
 * @index: The page index
 *
 * Looks up the page cache entry at @mapping & @index. If no folio is found,
 * a new folio is created. The folio is locked, marked as accessed, and
 * returned.
 *
 * Return: A found or created folio. ERR_PTR(-ENOMEM) if no folio is found
 * and failed to create a folio.
 */
static inline struct folio *filemap_grab_folio(struct address_space *mapping,
					pgoff_t index)
{
	return __filemap_get_folio(mapping, index,
			FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
			mapping_gfp_mask(mapping));
}

/**
 * find_get_page - find and get a page reference
 * @mapping: the address_space to search
 * @offset: the page index
 *
 * Looks up the page cache slot at @mapping & @offset.  If there is a
 * page cache page, it is returned with an increased refcount.
 *
 * Otherwise, %NULL is returned.
 */
static inline struct page *find_get_page(struct address_space *mapping,
					pgoff_t offset)
{
	return pagecache_get_page(mapping, offset, 0, 0);
}

static inline struct page *find_get_page_flags(struct address_space *mapping,
					pgoff_t offset, fgf_t fgp_flags)
{
	return pagecache_get_page(mapping, offset, fgp_flags, 0);
}

/**
 * find_lock_page - locate, pin and lock a pagecache page
 * @mapping: the address_space to search
 * @index: the page index
 *
 * Looks up the page cache entry at @mapping & @index.  If there is a
 * page cache page, it is returned locked and with an increased
 * refcount.
 *
 * Context: May sleep.
 * Return: A struct page or %NULL if there is no page in the cache for this
 * index.
 */
static inline struct page *find_lock_page(struct address_space *mapping,
					pgoff_t index)
{
	return pagecache_get_page(mapping, index, FGP_LOCK, 0);
}

/**
 * find_or_create_page - locate or add a pagecache page
 * @mapping: the page's address_space
 * @index: the page's index into the mapping
 * @gfp_mask: page allocation mode
 *
 * Looks up the page cache slot at @mapping & @offset.  If there is a
 * page cache page, it is returned locked and with an increased
 * refcount.
 *
 * If the page is not present, a new page is allocated using @gfp_mask
 * and added to the page cache and the VM's LRU list.  The page is
 * returned locked and with an increased refcount.
 *
 * On memory exhaustion, %NULL is returned.
 *
 * find_or_create_page() may sleep, even if @gfp_flags specifies an
 * atomic allocation!
 */
static inline struct page *find_or_create_page(struct address_space *mapping,
					pgoff_t index, gfp_t gfp_mask)
{
	return pagecache_get_page(mapping, index,
					FGP_LOCK|FGP_ACCESSED|FGP_CREAT,
					gfp_mask);
}

/**
 * grab_cache_page_nowait - returns locked page at given index in given cache
 * @mapping: target address_space
 * @index: the page index
 *
 * Same as grab_cache_page(), but do not wait if the page is unavailable.
 * This is intended for speculative data generators, where the data can
 * be regenerated if the page couldn't be grabbed.  This routine should
 * be safe to call while holding the lock for another page.
 *
 * Clear __GFP_FS when allocating the page to avoid recursion into the fs
 * and deadlock against the caller's locked page.
 */
static inline struct page *grab_cache_page_nowait(struct address_space *mapping,
				pgoff_t index)
{
	return pagecache_get_page(mapping, index,
			FGP_LOCK|FGP_CREAT|FGP_NOFS|FGP_NOWAIT,
			mapping_gfp_mask(mapping));
}

extern pgoff_t __folio_swap_cache_index(struct folio *folio);

/**
 * folio_index - File index of a folio.
 * @folio: The folio.
 *
 * For a folio which is either in the page cache or the swap cache,
 * return its index within the address_space it belongs to.  If you know
 * the page is definitely in the page cache, you can look at the folio's
 * index directly.
 *
 * Return: The index (offset in units of pages) of a folio in its file.
 */
static inline pgoff_t folio_index(struct folio *folio)
{
	if (unlikely(folio_test_swapcache(folio)))
		return __folio_swap_cache_index(folio);
	return folio->index;
}

/**
 * folio_next_index - Get the index of the next folio.
 * @folio: The current folio.
 *
 * Return: The index of the folio which follows this folio in the file.
 */
static inline pgoff_t folio_next_index(struct folio *folio)
{
	return folio->index + folio_nr_pages(folio);
}

/**
 * folio_file_page - The page for a particular index.
 * @folio: The folio which contains this index.
 * @index: The index we want to look up.
 *
 * Sometimes after looking up a folio in the page cache, we need to
 * obtain the specific page for an index (eg a page fault).
 *
 * Return: The page containing the file data for this index.
 */
static inline struct page *folio_file_page(struct folio *folio, pgoff_t index)
{
	return folio_page(folio, index & (folio_nr_pages(folio) - 1));
}

/**
 * folio_contains - Does this folio contain this index?
 * @folio: The folio.
 * @index: The page index within the file.
 *
 * Context: The caller should have the page locked in order to prevent
 * (eg) shmem from moving the page between the page cache and swap cache
 * and changing its index in the middle of the operation.
 * Return: true or false.
 */
static inline bool folio_contains(struct folio *folio, pgoff_t index)
{
	return index - folio_index(folio) < folio_nr_pages(folio);
}

/*
 * Given the page we found in the page cache, return the page corresponding
 * to this index in the file
 */
static inline struct page *find_subpage(struct page *head, pgoff_t index)
{
	/* HugeTLBfs wants the head page regardless */
	if (PageHuge(head))
		return head;

	return head + (index & (thp_nr_pages(head) - 1));
}

unsigned filemap_get_folios(struct address_space *mapping, pgoff_t *start,
		pgoff_t end, struct folio_batch *fbatch);
unsigned filemap_get_folios_contig(struct address_space *mapping,
		pgoff_t *start, pgoff_t end, struct folio_batch *fbatch);
unsigned filemap_get_folios_tag(struct address_space *mapping, pgoff_t *start,
		pgoff_t end, xa_mark_t tag, struct folio_batch *fbatch);

struct page *grab_cache_page_write_begin(struct address_space *mapping,
			pgoff_t index);

/*
 * Returns locked page at given index in given cache, creating it if needed.
 */
static inline struct page *grab_cache_page(struct address_space *mapping,
								pgoff_t index)
{
	return find_or_create_page(mapping, index, mapping_gfp_mask(mapping));
}

struct folio *read_cache_folio(struct address_space *, pgoff_t index,
		filler_t *filler, struct file *file);
struct folio *mapping_read_folio_gfp(struct address_space *, pgoff_t index,
		gfp_t flags);
struct page *read_cache_page(struct address_space *, pgoff_t index,
		filler_t *filler, struct file *file);
extern struct page * read_cache_page_gfp(struct address_space *mapping,
				pgoff_t index, gfp_t gfp_mask);

static inline struct page *read_mapping_page(struct address_space *mapping,
				pgoff_t index, struct file *file)
{
	return read_cache_page(mapping, index, NULL, file);
}

static inline struct folio *read_mapping_folio(struct address_space *mapping,
				pgoff_t index, struct file *file)
{
	return read_cache_folio(mapping, index, NULL, file);
}

/**
 * page_pgoff - Calculate the logical page offset of this page.
 * @folio: The folio containing this page.
 * @page: The page which we need the offset of.
 *
 * For file pages, this is the offset from the beginning of the file
 * in units of PAGE_SIZE.  For anonymous pages, this is the offset from
 * the beginning of the anon_vma in units of PAGE_SIZE.  This will
 * return nonsense for KSM pages.
 *
 * Context: Caller must have a reference on the folio or otherwise
 * prevent it from being split or freed.
 *
 * Return: The offset in units of PAGE_SIZE.
 */
static inline pgoff_t page_pgoff(const struct folio *folio,
		const struct page *page)
{
	return folio->index + folio_page_idx(folio, page);
}

/*
 * Return byte-offset into filesystem object for page.
 */
static inline loff_t page_offset(struct page *page)
{
	return ((loff_t)page->index) << PAGE_SHIFT;
}

/**
 * folio_pos - Returns the byte position of this folio in its file.
 * @folio: The folio.
 */
static inline loff_t folio_pos(struct folio *folio)
{
	return page_offset(&folio->page);
}

/*
 * Get the offset in PAGE_SIZE (even for hugetlb folios).
 */
static inline pgoff_t folio_pgoff(struct folio *folio)
{
	return folio->index;
}

static inline pgoff_t linear_page_index(struct vm_area_struct *vma,
					unsigned long address)
{
	pgoff_t pgoff;
	pgoff = (address - vma->vm_start) >> PAGE_SHIFT;
	pgoff += vma->vm_pgoff;
	return pgoff;
}

struct wait_page_key {
	struct folio *folio;
	int bit_nr;
	int page_match;
};

struct wait_page_queue {
	struct folio *folio;
	int bit_nr;
	wait_queue_entry_t wait;
};

static inline bool wake_page_match(struct wait_page_queue *wait_page,
				  struct wait_page_key *key)
{
	if (wait_page->folio != key->folio)
	       return false;
	key->page_match = 1;

	if (wait_page->bit_nr != key->bit_nr)
		return false;

	return true;
}

void __folio_lock(struct folio *folio);
int __folio_lock_killable(struct folio *folio);
vm_fault_t __folio_lock_or_retry(struct folio *folio, struct vm_fault *vmf);
void unlock_page(struct page *page);
void folio_unlock(struct folio *folio);

/**
 * folio_trylock() - Attempt to lock a folio.
 * @folio: The folio to attempt to lock.
 *
 * Sometimes it is undesirable to wait for a folio to be unlocked (eg
 * when the locks are being taken in the wrong order, or if making
 * progress through a batch of folios is more important than processing
 * them in order).  Usually folio_lock() is the correct function to call.
 *
 * Context: Any context.
 * Return: Whether the lock was successfully acquired.
 */
static inline bool folio_trylock(struct folio *folio)
{
	return likely(!test_and_set_bit_lock(PG_locked, folio_flags(folio, 0)));
}

/*
 * Return true if the page was successfully locked
 */
static inline bool trylock_page(struct page *page)
{
	return folio_trylock(page_folio(page));
}

/**
 * folio_lock() - Lock this folio.
 * @folio: The folio to lock.
 *
 * The folio lock protects against many things, probably more than it
 * should.  It is primarily held while a folio is being brought uptodate,
 * either from its backing file or from swap.  It is also held while a
 * folio is being truncated from its address_space, so holding the lock
 * is sufficient to keep folio->mapping stable.
 *
 * The folio lock is also held while write() is modifying the page to
 * provide POSIX atomicity guarantees (as long as the write does not
 * cross a page boundary).  Other modifications to the data in the folio
 * do not hold the folio lock and can race with writes, eg DMA and stores
 * to mapped pages.
 *
 * Context: May sleep.  If you need to acquire the locks of two or
 * more folios, they must be in order of ascending index, if they are
 * in the same address_space.  If they are in different address_spaces,
 * acquire the lock of the folio which belongs to the address_space which
 * has the lowest address in memory first.
 */
static inline void folio_lock(struct folio *folio)
{
	might_sleep();
	if (!folio_trylock(folio))
		__folio_lock(folio);
}

/**
 * lock_page() - Lock the folio containing this page.
 * @page: The page to lock.
 *
 * See folio_lock() for a description of what the lock protects.
 * This is a legacy function and new code should probably use folio_lock()
 * instead.
 *
 * Context: May sleep.  Pages in the same folio share a lock, so do not
 * attempt to lock two pages which share a folio.
 */
static inline void lock_page(struct page *page)
{
	struct folio *folio;
	might_sleep();

	folio = page_folio(page);
	if (!folio_trylock(folio))
		__folio_lock(folio);
}

/**
 * folio_lock_killable() - Lock this folio, interruptible by a fatal signal.
 * @folio: The folio to lock.
 *
 * Attempts to lock the folio, like folio_lock(), except that the sleep
 * to acquire the lock is interruptible by a fatal signal.
 *
 * Context: May sleep; see folio_lock().
 * Return: 0 if the lock was acquired; -EINTR if a fatal signal was received.
 */
static inline int folio_lock_killable(struct folio *folio)
{
	might_sleep();
	if (!folio_trylock(folio))
		return __folio_lock_killable(folio);
	return 0;
}

/*
 * folio_lock_or_retry - Lock the folio, unless this would block and the
 * caller indicated that it can handle a retry.
 *
 * Return value and mmap_lock implications depend on flags; see
 * __folio_lock_or_retry().
 */
static inline vm_fault_t folio_lock_or_retry(struct folio *folio,
					     struct vm_fault *vmf)
{
	might_sleep();
	if (!folio_trylock(folio))
		return __folio_lock_or_retry(folio, vmf);
	return 0;
}

/*
 * This is exported only for folio_wait_locked/folio_wait_writeback, etc.,
 * and should not be used directly.
 */
void folio_wait_bit(struct folio *folio, int bit_nr);
int folio_wait_bit_killable(struct folio *folio, int bit_nr);

/* 
 * Wait for a folio to be unlocked.
 *
 * This must be called with the caller "holding" the folio,
 * ie with increased folio reference count so that the folio won't
 * go away during the wait.
 */
static inline void folio_wait_locked(struct folio *folio)
{
	if (folio_test_locked(folio))
		folio_wait_bit(folio, PG_locked);
}

static inline int folio_wait_locked_killable(struct folio *folio)
{
	if (!folio_test_locked(folio))
		return 0;
	return folio_wait_bit_killable(folio, PG_locked);
}

static inline void wait_on_page_locked(struct page *page)
{
	folio_wait_locked(page_folio(page));
}

void folio_end_read(struct folio *folio, bool success);
void wait_on_page_writeback(struct page *page);
void folio_wait_writeback(struct folio *folio);
int folio_wait_writeback_killable(struct folio *folio);
void end_page_writeback(struct page *page);
void folio_end_writeback(struct folio *folio);
void wait_for_stable_page(struct page *page);
void folio_wait_stable(struct folio *folio);
void __folio_mark_dirty(struct folio *folio, struct address_space *, int warn);
void folio_account_cleaned(struct folio *folio, struct bdi_writeback *wb);
void __folio_cancel_dirty(struct folio *folio);
static inline void folio_cancel_dirty(struct folio *folio)
{
	/* Avoid atomic ops, locking, etc. when not actually needed. */
	if (folio_test_dirty(folio))
		__folio_cancel_dirty(folio);
}
bool folio_clear_dirty_for_io(struct folio *folio);
bool clear_page_dirty_for_io(struct page *page);
void folio_invalidate(struct folio *folio, size_t offset, size_t length);
bool noop_dirty_folio(struct address_space *mapping, struct folio *folio);

#ifdef CONFIG_MIGRATION
int filemap_migrate_folio(struct address_space *mapping, struct folio *dst,
		struct folio *src, enum migrate_mode mode);
#else
#define filemap_migrate_folio NULL
#endif
void folio_end_private_2(struct folio *folio);
void folio_wait_private_2(struct folio *folio);
int folio_wait_private_2_killable(struct folio *folio);

/*
 * Fault in userspace address range.
 */
size_t fault_in_writeable(char __user *uaddr, size_t size);
size_t fault_in_subpage_writeable(char __user *uaddr, size_t size);
size_t fault_in_safe_writeable(const char __user *uaddr, size_t size);
size_t fault_in_readable(const char __user *uaddr, size_t size);

int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
		pgoff_t index, gfp_t gfp);
int filemap_add_folio(struct address_space *mapping, struct folio *folio,
		pgoff_t index, gfp_t gfp);
void filemap_remove_folio(struct folio *folio);
void __filemap_remove_folio(struct folio *folio, void *shadow);
void replace_page_cache_folio(struct folio *old, struct folio *new);
void delete_from_page_cache_batch(struct address_space *mapping,
				  struct folio_batch *fbatch);
bool filemap_release_folio(struct folio *folio, gfp_t gfp);
loff_t mapping_seek_hole_data(struct address_space *, loff_t start, loff_t end,
		int whence);

/* Must be non-static for BPF error injection */
int __filemap_add_folio(struct address_space *mapping, struct folio *folio,
		pgoff_t index, gfp_t gfp, void **shadowp);

bool filemap_range_has_writeback(struct address_space *mapping,
				 loff_t start_byte, loff_t end_byte);

/**
 * filemap_range_needs_writeback - check if range potentially needs writeback
 * @mapping:           address space within which to check
 * @start_byte:        offset in bytes where the range starts
 * @end_byte:          offset in bytes where the range ends (inclusive)
 *
 * Find at least one page in the range supplied, usually used to check if
 * direct writing in this range will trigger a writeback. Used by O_DIRECT
 * read/write with IOCB_NOWAIT, to see if the caller needs to do
 * filemap_write_and_wait_range() before proceeding.
 *
 * Return: %true if the caller should do filemap_write_and_wait_range() before
 * doing O_DIRECT to a page in this range, %false otherwise.
 */
static inline bool filemap_range_needs_writeback(struct address_space *mapping,
						 loff_t start_byte,
						 loff_t end_byte)
{
	if (!mapping->nrpages)
		return false;
	if (!mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) &&
	    !mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK))
		return false;
	return filemap_range_has_writeback(mapping, start_byte, end_byte);
}

/**
 * struct readahead_control - Describes a readahead request.
 *
 * A readahead request is for consecutive pages.  Filesystems which
 * implement the ->readahead method should call readahead_page() or
 * readahead_page_batch() in a loop and attempt to start I/O against
 * each page in the request.
 *
 * Most of the fields in this struct are private and should be accessed
 * by the functions below.
 *
 * @file: The file, used primarily by network filesystems for authentication.
 *	  May be NULL if invoked internally by the filesystem.
 * @mapping: Readahead this filesystem object.
 * @ra: File readahead state.  May be NULL.
 */
struct readahead_control {
	struct file *file;
	struct address_space *mapping;
	struct file_ra_state *ra;
/* private: use the readahead_* accessors instead */
	pgoff_t _index;
	unsigned int _nr_pages;
	unsigned int _batch_count;
	bool dropbehind;
	bool _workingset;
	unsigned long _pflags;
};

#define DEFINE_READAHEAD(ractl, f, r, m, i)				\
	struct readahead_control ractl = {				\
		.file = f,						\
		.mapping = m,						\
		.ra = r,						\
		._index = i,						\
	}

#define VM_READAHEAD_PAGES	(SZ_128K / PAGE_SIZE)

void page_cache_ra_unbounded(struct readahead_control *,
		unsigned long nr_to_read, unsigned long lookahead_count);
void page_cache_sync_ra(struct readahead_control *, unsigned long req_count);
void page_cache_async_ra(struct readahead_control *, struct folio *,
		unsigned long req_count);
void readahead_expand(struct readahead_control *ractl,
		      loff_t new_start, size_t new_len);

/**
 * page_cache_sync_readahead - generic file readahead
 * @mapping: address_space which holds the pagecache and I/O vectors
 * @ra: file_ra_state which holds the readahead state
 * @file: Used by the filesystem for authentication.
 * @index: Index of first page to be read.
 * @req_count: Total number of pages being read by the caller.
 *
 * page_cache_sync_readahead() should be called when a cache miss happened:
 * it will submit the read.  The readahead logic may decide to piggyback more
 * pages onto the read request if access patterns suggest it will improve
 * performance.
 */
static inline
void page_cache_sync_readahead(struct address_space *mapping,
		struct file_ra_state *ra, struct file *file, pgoff_t index,
		unsigned long req_count)
{
	DEFINE_READAHEAD(ractl, file, ra, mapping, index);
	page_cache_sync_ra(&ractl, req_count);
}

/**
 * page_cache_async_readahead - file readahead for marked pages
 * @mapping: address_space which holds the pagecache and I/O vectors
 * @ra: file_ra_state which holds the readahead state
 * @file: Used by the filesystem for authentication.
 * @folio: The folio which triggered the readahead call.
 * @req_count: Total number of pages being read by the caller.
 *
 * page_cache_async_readahead() should be called when a page is used which
 * is marked as PageReadahead; this is a marker to suggest that the application
 * has used up enough of the readahead window that we should start pulling in
 * more pages.
 */
static inline
void page_cache_async_readahead(struct address_space *mapping,
		struct file_ra_state *ra, struct file *file,
		struct folio *folio, unsigned long req_count)
{
	DEFINE_READAHEAD(ractl, file, ra, mapping, folio->index);
	page_cache_async_ra(&ractl, folio, req_count);
}

static inline struct folio *__readahead_folio(struct readahead_control *ractl)
{
	struct folio *folio;

	BUG_ON(ractl->_batch_count > ractl->_nr_pages);
	ractl->_nr_pages -= ractl->_batch_count;
	ractl->_index += ractl->_batch_count;

	if (!ractl->_nr_pages) {
		ractl->_batch_count = 0;
		return NULL;
	}

	folio = xa_load(&ractl->mapping->i_pages, ractl->_index);
	VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
	ractl->_batch_count = folio_nr_pages(folio);

	return folio;
}

/**
 * readahead_page - Get the next page to read.
 * @ractl: The current readahead request.
 *
 * Context: The page is locked and has an elevated refcount.  The caller
 * should decreases the refcount once the page has been submitted for I/O
 * and unlock the page once all I/O to that page has completed.
 * Return: A pointer to the next page, or %NULL if we are done.
 */
static inline struct page *readahead_page(struct readahead_control *ractl)
{
	struct folio *folio = __readahead_folio(ractl);

	return &folio->page;
}

/**
 * readahead_folio - Get the next folio to read.
 * @ractl: The current readahead request.
 *
 * Context: The folio is locked.  The caller should unlock the folio once
 * all I/O to that folio has completed.
 * Return: A pointer to the next folio, or %NULL if we are done.
 */
static inline struct folio *readahead_folio(struct readahead_control *ractl)
{
	struct folio *folio = __readahead_folio(ractl);

	if (folio)
		folio_put(folio);
	return folio;
}

static inline unsigned int __readahead_batch(struct readahead_control *rac,
		struct page **array, unsigned int array_sz)
{
	unsigned int i = 0;
	XA_STATE(xas, &rac->mapping->i_pages, 0);
	struct page *page;

	BUG_ON(rac->_batch_count > rac->_nr_pages);
	rac->_nr_pages -= rac->_batch_count;
	rac->_index += rac->_batch_count;
	rac->_batch_count = 0;

	xas_set(&xas, rac->_index);
	rcu_read_lock();
	xas_for_each(&xas, page, rac->_index + rac->_nr_pages - 1) {
		if (xas_retry(&xas, page))
			continue;
		VM_BUG_ON_PAGE(!PageLocked(page), page);
		VM_BUG_ON_PAGE(PageTail(page), page);
		array[i++] = page;
		rac->_batch_count += thp_nr_pages(page);
		if (i == array_sz)
			break;
	}
	rcu_read_unlock();

	return i;
}

/**
 * readahead_page_batch - Get a batch of pages to read.
 * @rac: The current readahead request.
 * @array: An array of pointers to struct page.
 *
 * Context: The pages are locked and have an elevated refcount.  The caller
 * should decreases the refcount once the page has been submitted for I/O
 * and unlock the page once all I/O to that page has completed.
 * Return: The number of pages placed in the array.  0 indicates the request
 * is complete.
 */
#define readahead_page_batch(rac, array)				\
	__readahead_batch(rac, array, ARRAY_SIZE(array))

/**
 * readahead_pos - The byte offset into the file of this readahead request.
 * @rac: The readahead request.
 */
static inline loff_t readahead_pos(struct readahead_control *rac)
{
	return (loff_t)rac->_index * PAGE_SIZE;
}

/**
 * readahead_length - The number of bytes in this readahead request.
 * @rac: The readahead request.
 */
static inline size_t readahead_length(struct readahead_control *rac)
{
	return rac->_nr_pages * PAGE_SIZE;
}

/**
 * readahead_index - The index of the first page in this readahead request.
 * @rac: The readahead request.
 */
static inline pgoff_t readahead_index(struct readahead_control *rac)
{
	return rac->_index;
}

/**
 * readahead_count - The number of pages in this readahead request.
 * @rac: The readahead request.
 */
static inline unsigned int readahead_count(struct readahead_control *rac)
{
	return rac->_nr_pages;
}

/**
 * readahead_batch_length - The number of bytes in the current batch.
 * @rac: The readahead request.
 */
static inline size_t readahead_batch_length(struct readahead_control *rac)
{
	return rac->_batch_count * PAGE_SIZE;
}

static inline unsigned long dir_pages(struct inode *inode)
{
	return (unsigned long)(inode->i_size + PAGE_SIZE - 1) >>
			       PAGE_SHIFT;
}

/**
 * folio_mkwrite_check_truncate - check if folio was truncated
 * @folio: the folio to check
 * @inode: the inode to check the folio against
 *
 * Return: the number of bytes in the folio up to EOF,
 * or -EFAULT if the folio was truncated.
 */
static inline ssize_t folio_mkwrite_check_truncate(struct folio *folio,
					      struct inode *inode)
{
	loff_t size = i_size_read(inode);
	pgoff_t index = size >> PAGE_SHIFT;
	size_t offset = offset_in_folio(folio, size);

	if (!folio->mapping)
		return -EFAULT;

	/* folio is wholly inside EOF */
	if (folio_next_index(folio) - 1 < index)
		return folio_size(folio);
	/* folio is wholly past EOF */
	if (folio->index > index || !offset)
		return -EFAULT;
	/* folio is partially inside EOF */
	return offset;
}

/**
 * page_mkwrite_check_truncate - check if page was truncated
 * @page: the page to check
 * @inode: the inode to check the page against
 *
 * Returns the number of bytes in the page up to EOF,
 * or -EFAULT if the page was truncated.
 */
static inline int page_mkwrite_check_truncate(struct page *page,
					      struct inode *inode)
{
	loff_t size = i_size_read(inode);
	pgoff_t index = size >> PAGE_SHIFT;
	int offset = offset_in_page(size);

	if (page->mapping != inode->i_mapping)
		return -EFAULT;

	/* page is wholly inside EOF */
	if (page->index < index)
		return PAGE_SIZE;
	/* page is wholly past EOF */
	if (page->index > index || !offset)
		return -EFAULT;
	/* page is partially inside EOF */
	return offset;
}

/**
 * i_blocks_per_folio - How many blocks fit in this folio.
 * @inode: The inode which contains the blocks.
 * @folio: The folio.
 *
 * If the block size is larger than the size of this folio, return zero.
 *
 * Context: The caller should hold a refcount on the folio to prevent it
 * from being split.
 * Return: The number of filesystem blocks covered by this folio.
 */
static inline
unsigned int i_blocks_per_folio(struct inode *inode, struct folio *folio)
{
	return folio_size(folio) >> inode->i_blkbits;
}
#endif /* _LINUX_PAGEMAP_H */

Filemanager

Name Type Size Permission Actions
amba Folder 0755
atomic Folder 0755
avf Folder 0755
bcma Folder 0755
bus Folder 0755
byteorder Folder 0755
can Folder 0755
cdx Folder 0755
ceph Folder 0755
clk Folder 0755
comedi Folder 0755
crush Folder 0755
decompress Folder 0755
device Folder 0755
dma Folder 0755
dsa Folder 0755
extcon Folder 0755
firmware Folder 0755
fpga Folder 0755
framer Folder 0755
fsl Folder 0755
gpio Folder 0755
greybus Folder 0755
habanalabs Folder 0755
hsi Folder 0755
i3c Folder 0755
iio Folder 0755
input Folder 0755
io_uring Folder 0755
irqchip Folder 0755
isdn Folder 0755
lockd Folder 0755
lsm Folder 0755
mailbox Folder 0755
mdio Folder 0755
memory Folder 0755
mfd Folder 0755
misc Folder 0755
mlx4 Folder 0755
mlx5 Folder 0755
mmc Folder 0755
mtd Folder 0755
mux Folder 0755
net Folder 0755
netfilter Folder 0755
netfilter_arp Folder 0755
netfilter_bridge Folder 0755
netfilter_ipv4 Folder 0755
netfilter_ipv6 Folder 0755
pcs Folder 0755
pds Folder 0755
perf Folder 0755
phy Folder 0755
pinctrl Folder 0755
platform_data Folder 0755
power Folder 0755
pse-pd Folder 0755
pwrseq Folder 0755
qat Folder 0755
qed Folder 0755
raid Folder 0755
regulator Folder 0755
remoteproc Folder 0755
reset Folder 0755
rpmsg Folder 0755
rtc Folder 0755
sched Folder 0755
soc Folder 0755
soundwire Folder 0755
spi Folder 0755
ssb Folder 0755
sunrpc Folder 0755
surface_aggregator Folder 0755
ulpi Folder 0755
unaligned Folder 0755
usb Folder 0755
8250_pci.h File 1.01 KB 0644
acct.h File 2.45 KB 0644
acpi.h File 44.88 KB 0644
acpi_amd_wbrf.h File 2.24 KB 0644
acpi_dma.h File 2.95 KB 0644
acpi_iort.h File 2.64 KB 0644
acpi_mdio.h File 819 B 0644
acpi_pmtmr.h File 1.02 KB 0644
acpi_viot.h File 478 B 0644
adb.h File 1.79 KB 0644
adfs_fs.h File 574 B 0644
adreno-smmu-priv.h File 3.15 KB 0644
adxl.h File 310 B 0644
aer.h File 1.49 KB 0644
agp_backend.h File 3.45 KB 0644
agpgart.h File 3.79 KB 0644
ahci-remap.h File 607 B 0644
ahci_platform.h File 1.81 KB 0644
aio.h File 570 B 0644
alarmtimer.h File 1.83 KB 0644
alcor_pci.h File 8.74 KB 0644
align.h File 552 B 0644
alloc_tag.h File 6.4 KB 0644
altera_jtaguart.h File 379 B 0644
altera_uart.h File 397 B 0644
amd-iommu.h File 2.12 KB 0644
amd-pmf-io.h File 1.58 KB 0644
anon_inodes.h File 1021 B 0644
aperture.h File 1.61 KB 0644
apm-emulation.h File 1.56 KB 0644
apm_bios.h File 2.25 KB 0644
apple-gmux.h File 4.63 KB 0644
arch_topology.h File 2.93 KB 0644
args.h File 1021 B 0644
arm-cci.h File 1.39 KB 0644
arm-smccc.h File 20.7 KB 0644
arm_ffa.h File 14.71 KB 0644
arm_sdei.h File 2.67 KB 0644
armada-37xx-rwtm-mailbox.h File 431 B 0644
array_size.h File 332 B 0644
ascii85.h File 555 B 0644
asn1.h File 1.79 KB 0644
asn1_ber_bytecode.h File 2.52 KB 0644
asn1_decoder.h File 493 B 0644
asn1_encoder.h File 983 B 0644
assoc_array.h File 2.88 KB 0644
assoc_array_priv.h File 5.3 KB 0644
async.h File 4.36 KB 0644
async_tx.h File 6.7 KB 0644
ata.h File 30.39 KB 0644
ata_platform.h File 755 B 0644
atalk.h File 4.45 KB 0644
atm.h File 287 B 0644
atm_tcp.h File 542 B 0644
atmdev.h File 10.17 KB 0644
atmel-isc-media.h File 2.07 KB 0644
atmel-ssc.h File 9.74 KB 0644
atmel_pdc.h File 1.26 KB 0644
atomic.h File 2.58 KB 0644
attribute_container.h File 2.47 KB 0644
audit.h File 20.48 KB 0644
audit_arch.h File 559 B 0644
auto_dev-ioctl.h File 296 B 0644
auto_fs.h File 278 B 0644
auxiliary_bus.h File 10.33 KB 0644
auxvec.h File 304 B 0644
average.h File 2.42 KB 0644
backing-dev-defs.h File 8.4 KB 0644
backing-dev.h File 10.41 KB 0644
backing-file.h File 1.51 KB 0644
backlight.h File 11.9 KB 0644
badblocks.h File 2.66 KB 0644
balloon_compaction.h File 6 KB 0644
base64.h File 370 B 0644
bcd.h File 683 B 0644
bch.h File 2.1 KB 0644
bcm47xx_nvram.h File 1.2 KB 0644
bcm47xx_sprom.h File 616 B 0644
bcm47xx_wdt.h File 555 B 0644
bcm963xx_nvram.h File 2.96 KB 0644
bcm963xx_tag.h File 3.6 KB 0644
binfmts.h File 4.63 KB 0644
bio-integrity.h File 4.16 KB 0644
bio.h File 18.01 KB 0644
bit_spinlock.h File 2.3 KB 0644
bitfield.h File 6.39 KB 0644
bitmap-str.h File 842 B 0644
bitmap.h File 29.11 KB 0644
bitops.h File 10.14 KB 0644
bitrev.h File 2.53 KB 0644
bits.h File 1.57 KB 0644
blk-cgroup.h File 1.53 KB 0644
blk-crypto-profile.h File 5.3 KB 0644
blk-crypto.h File 4.13 KB 0644
blk-integrity.h File 3.99 KB 0644
blk-mq.h File 33.72 KB 0644
blk-pm.h File 647 B 0644
blk_types.h File 15.31 KB 0644
blkdev.h File 49.82 KB 0644
blkpg.h File 436 B 0644
blktrace_api.h File 3.55 KB 0644
blockgroup_lock.h File 810 B 0644
bma150.h File 1.25 KB 0644
bootconfig.h File 9.27 KB 0644
bootmem_info.h File 2.04 KB 0644
bottom_half.h File 1013 B 0644
bpf-cgroup-defs.h File 2.07 KB 0644
bpf-cgroup.h File 18.4 KB 0644
bpf-netns.h File 1.41 KB 0644
bpf.h File 110.52 KB 0644
bpf_crypto.h File 865 B 0644
bpf_lirc.h File 698 B 0644
bpf_local_storage.h File 6.61 KB 0644
bpf_lsm.h File 2.01 KB 0644
bpf_mem_alloc.h File 2.05 KB 0644
bpf_mprog.h File 9.29 KB 0644
bpf_trace.h File 166 B 0644
bpf_types.h File 6.1 KB 0644
bpf_verifier.h File 33.06 KB 0644
bpfptr.h File 2.09 KB 0644
brcmphy.h File 21.77 KB 0644
bsearch.h File 624 B 0644
bsg-lib.h File 1.71 KB 0644
bsg.h File 499 B 0644
btf.h File 20.05 KB 0644
btf_ids.h File 8.18 KB 0644
btree-128.h File 2.67 KB 0644
btree-type.h File 3.9 KB 0644
btree.h File 6.84 KB 0644
btrfs.h File 145 B 0644
buffer_head.h File 17.37 KB 0644
bug.h File 2.33 KB 0644
build-salt.h File 375 B 0644
build_bug.h File 2.99 KB 0644
buildid.h File 671 B 0644
bvec.h File 7.54 KB 0644
c2port.h File 1.35 KB 0644
cache.h File 5.51 KB 0644
cacheflush.h File 675 B 0644
cacheinfo.h File 4.92 KB 0644
call_once.h File 1.67 KB 0644
capability.h File 6.27 KB 0644
cb710.h File 5.36 KB 0644
cc_platform.h File 3.42 KB 0644
cciss_ioctl.h File 1.03 KB 0644
ccp.h File 18.14 KB 0644
cdev.h File 845 B 0644
cdrom.h File 8.92 KB 0644
cfag12864b.h File 1.07 KB 0644
cfi.h File 1.23 KB 0644
cfi_types.h File 1.06 KB 0644
cgroup-defs.h File 26.77 KB 0644
cgroup.h File 26.33 KB 0644
cgroup_api.h File 26 B 0644
cgroup_dmem.h File 1.91 KB 0644
cgroup_rdma.h File 1.18 KB 0644
cgroup_refcnt.h File 2.59 KB 0644
cgroup_subsys.h File 1.28 KB 0644
circ_buf.h File 1.09 KB 0644
cleanup.h File 13.45 KB 0644
clk-provider.h File 65.77 KB 0644
clk.h File 36.18 KB 0644
clkdev.h File 1.2 KB 0644
clockchips.h File 7.29 KB 0644
clocksource.h File 11.01 KB 0644
clocksource_ids.h File 333 B 0644
closure.h File 14.22 KB 0644
cma.h File 2.26 KB 0644
cmpxchg-emu.h File 435 B 0644
cn_proc.h File 1.85 KB 0644
cnt32_to_63.h File 3.46 KB 0644
coda.h File 2.16 KB 0644
codetag.h File 3.4 KB 0644
compaction.h File 4.5 KB 0644
compat.h File 32.32 KB 0644
compiler-clang.h File 4.13 KB 0644
compiler-gcc.h File 3.92 KB 0644
compiler-version.h File 517 B 0644
compiler.h File 12.26 KB 0644
compiler_attributes.h File 15.91 KB 0644
compiler_types.h File 18.79 KB 0644
completion.h File 4.14 KB 0644
component.h File 4.35 KB 0644
configfs.h File 8.54 KB 0644
connector.h File 4.01 KB 0644
console.h File 24.18 KB 0644
console_struct.h File 6.98 KB 0644
consolemap.h File 1.25 KB 0644
const.h File 100 B 0644
container.h File 616 B 0644
container_of.h File 1.3 KB 0644
context_tracking.h File 4.4 KB 0644
context_tracking_irq.h File 633 B 0644
context_tracking_state.h File 3.8 KB 0644
cookie.h File 1.22 KB 0644
cordic.h File 2.08 KB 0644
coredump.h File 2.17 KB 0644
coresight-pmu.h File 2.32 KB 0644
coresight-stm.h File 152 B 0644
coresight.h File 22.68 KB 0644
count_zeros.h File 1.42 KB 0644
counter.h File 21.48 KB 0644
cper.h File 17.59 KB 0644
cpu.h File 6.67 KB 0644
cpu_cooling.h File 1.83 KB 0644
cpu_pm.h File 2.38 KB 0644
cpu_rmap.h File 1.7 KB 0644
cpu_smt.h File 1.12 KB 0644
cpufeature.h File 1.71 KB 0644
cpufreq.h File 36.37 KB 0644
cpuhotplug.h File 16.95 KB 0644
cpuhplock.h File 1.52 KB 0644
cpuidle.h File 11.42 KB 0644
cpuidle_haltpoll.h File 312 B 0644
cpumask.h File 37.26 KB 0644
cpumask_api.h File 27 B 0644
cpumask_types.h File 2.18 KB 0644
cpuset.h File 8.01 KB 0644
crash_core.h File 2.65 KB 0644
crash_dump.h File 6.29 KB 0644
crash_reserve.h File 1.33 KB 0644
crc-ccitt.h File 369 B 0644
crc-itu-t.h File 530 B 0644
crc-t10dif.h File 759 B 0644
crc16.h File 540 B 0644
crc32.h File 4.23 KB 0644
crc32c.h File 346 B 0644
crc32poly.h File 610 B 0644
crc4.h File 192 B 0644
crc64.h File 539 B 0644
crc7.h File 316 B 0644
crc8.h File 3.66 KB 0644
cred.h File 11.95 KB 0644
crypto.h File 19.01 KB 0644
cs5535.h File 6.13 KB 0644
ctype.h File 1.87 KB 0644
cuda.h File 620 B 0644
damon.h File 33.47 KB 0644
dasd_mod.h File 204 B 0644
davinci_emac.h File 1.05 KB 0644
dax.h File 8.75 KB 0644
dca.h File 1.88 KB 0644
dcache.h File 18.81 KB 0644
dccp.h File 10.74 KB 0644
debug_locks.h File 1.57 KB 0644
debugfs.h File 15.87 KB 0644
debugobjects.h File 4.09 KB 0644
delay.h File 4.18 KB 0644
delayacct.h File 7.08 KB 0644
delayed_call.h File 709 B 0644
dev_printk.h File 9.74 KB 0644
devcoredump.h File 3.53 KB 0644
devfreq-event.h File 5.95 KB 0644
devfreq.h File 14.52 KB 0644
devfreq_cooling.h File 2.7 KB 0644
device-mapper.h File 21.11 KB 0644
device.h File 43.19 KB 0644
device_cgroup.h File 1.57 KB 0644
devm-helpers.h File 2.67 KB 0644
devpts_fs.h File 1.13 KB 0644
dfl.h File 2.72 KB 0644
digsig.h File 1.18 KB 0644
dim.h File 12.69 KB 0644
dio.h File 10.77 KB 0644
dirent.h File 215 B 0644
dlm.h File 6.44 KB 0644
dlm_plock.h File 642 B 0644
dm-bufio.h File 5.16 KB 0644
dm-dirty-log.h File 4 KB 0644
dm-io.h File 2.03 KB 0644
dm-kcopyd.h File 3.03 KB 0644
dm-region-hash.h File 3.16 KB 0644
dm-verity-loadpin.h File 617 B 0644
dm9000.h File 987 B 0644
dma-buf.h File 21.21 KB 0644
dma-direct.h File 4.16 KB 0644
dma-direction.h File 407 B 0644
dma-fence-array.h File 2.86 KB 0644
dma-fence-chain.h File 3.66 KB 0644
dma-fence-unwrap.h File 2.24 KB 0644
dma-fence.h File 22.94 KB 0644
dma-heap.h File 1.13 KB 0644
dma-map-ops.h File 15.89 KB 0644
dma-mapping.h File 21.19 KB 0644
dma-resv.h File 16.94 KB 0644
dmaengine.h File 55.21 KB 0644
dmapool.h File 1.79 KB 0644
dmar.h File 8.06 KB 0644
dmi.h File 4.27 KB 0644
dnotify.h File 1012 B 0644
dns_resolver.h File 1.36 KB 0644
dpll.h File 6.78 KB 0644
dqblk_qtree.h File 2.19 KB 0644
dqblk_v1.h File 327 B 0644
dqblk_v2.h File 406 B 0644
drbd.h File 9.92 KB 0644
drbd_config.h File 285 B 0644
drbd_genl.h File 21.49 KB 0644
drbd_genl_api.h File 1.76 KB 0644
drbd_limits.h File 7.92 KB 0644
ds2782_battery.h File 158 B 0644
dtlk.h File 3.5 KB 0644
dtpm.h File 1.46 KB 0644
dw_apb_timer.h File 1.32 KB 0644
dynamic_debug.h File 10.96 KB 0644
dynamic_queue_limits.h File 5.43 KB 0644
earlycpio.h File 359 B 0644
ecryptfs.h File 3.82 KB 0644
edac.h File 19.44 KB 0644
edd.h File 1.05 KB 0644
eeprom_93cx6.h File 2.64 KB 0644
efi-bgrt.h File 644 B 0644
efi.h File 44.59 KB 0644
efi_embedded_fw.h File 1.04 KB 0644
efs_vh.h File 1.55 KB 0644
eisa.h File 2.97 KB 0644
elf-fdpic.h File 2.39 KB 0644
elf-randomize.h File 583 B 0644
elf.h File 2.97 KB 0644
elfcore-compat.h File 1.43 KB 0644
elfcore.h File 3.93 KB 0644
elfnote-lto.h File 314 B 0644
elfnote.h File 3.54 KB 0644
enclosure.h File 4.02 KB 0644
energy_model.h File 13.12 KB 0644
entry-common.h File 18.62 KB 0644
entry-kvm.h File 2.77 KB 0644
err.h File 3.35 KB 0644
errname.h File 283 B 0644
errno.h File 1.45 KB 0644
error-injection.h File 630 B 0644
errqueue.h File 524 B 0644
errseq.h File 382 B 0644
etherdevice.h File 19.37 KB 0644
ethtool.h File 52.71 KB 0644
ethtool_netlink.h File 3.74 KB 0644
eventfd.h File 2.1 KB 0644
eventpoll.h File 2.41 KB 0644
evm.h File 2.12 KB 0644
execmem.h File 5.72 KB 0644
export-internal.h File 2.3 KB 0644
export.h File 2.67 KB 0644
exportfs.h File 11.19 KB 0644
ext2_fs.h File 967 B 0644
extable.h File 1.28 KB 0644
extcon-provider.h File 3.83 KB 0644
extcon.h File 9.99 KB 0644
f2fs_fs.h File 20.26 KB 0644
f75375s.h File 541 B 0644
falloc.h File 1.79 KB 0644
fanotify.h File 4.99 KB 0644
fault-inject-usercopy.h File 496 B 0644
fault-inject.h File 3.07 KB 0644
fb.h File 30.04 KB 0644
fbcon.h File 2.09 KB 0644
fcdevice.h File 774 B 0644
fcntl.h File 1.66 KB 0644
fd.h File 490 B 0644
fddidevice.h File 833 B 0644
fdtable.h File 3.08 KB 0644
fec.h File 463 B 0644
fiemap.h File 831 B 0644
file.h File 3.66 KB 0644
file_ref.h File 5.46 KB 0644
fileattr.h File 1.9 KB 0644
filelock.h File 13.17 KB 0644
filter.h File 48.89 KB 0644
find.h File 20.71 KB 0644
fips.h File 303 B 0644
firewire.h File 17.27 KB 0644
firmware-map.h File 959 B 0644
firmware.h File 6.3 KB 0644
fixp-arith.h File 4.21 KB 0644
flat.h File 2.57 KB 0644
flex_proportions.h File 1.98 KB 0644
folio_queue.h File 9.99 KB 0644
font.h File 1.7 KB 0644
fortify-string.h File 28.64 KB 0644
fprobe.h File 3.92 KB 0644
fpu.h File 246 B 0644
freezer.h File 2.34 KB 0644
fs.h File 129.11 KB 0644
fs_api.h File 22 B 0644
fs_context.h File 8.36 KB 0644
fs_parser.h File 5.01 KB 0644
fs_pin.h File 539 B 0644
fs_stack.h File 895 B 0644
fs_struct.h File 1.04 KB 0644
fs_types.h File 2.02 KB 0644
fscache-cache.h File 7.09 KB 0644
fscache.h File 24.09 KB 0644
fscrypt.h File 34.57 KB 0644
fsi-occ.h File 715 B 0644
fsi-sbefifo.h File 629 B 0644
fsi.h File 2.27 KB 0644
fsl-diu-fb.h File 3.87 KB 0644
fsl_devices.h File 4.16 KB 0644
fsl_hypervisor.h File 2.76 KB 0644
fsl_ifc.h File 24.48 KB 0644
fsldma.h File 202 B 0644
fsnotify.h File 13.17 KB 0644
fsnotify_backend.h File 31.2 KB 0644
fsverity.h File 9.29 KB 0644
ftrace.h File 43.74 KB 0644
ftrace_irq.h File 884 B 0644
ftrace_regs.h File 1.31 KB 0644
futex.h File 2.44 KB 0644
fw_table.h File 1.75 KB 0644
fwnode.h File 7.81 KB 0644
fwnode_mdio.h File 858 B 0644
gameport.h File 5.24 KB 0644
gcd.h File 193 B 0644
genalloc.h File 7.68 KB 0644
generic-radix-tree.h File 11.43 KB 0644
genl_magic_func.h File 11.67 KB 0644
genl_magic_struct.h File 7.58 KB 0644
getcpu.h File 641 B 0644
gfp.h File 14.84 KB 0644
gfp_api.h File 23 B 0644
gfp_types.h File 16.57 KB 0644
glob.h File 256 B 0644
gnss.h File 1.56 KB 0644
goldfish.h File 878 B 0644
gpio-pxa.h File 571 B 0644
gpio.h File 5.01 KB 0644
gpio_keys.h File 1.81 KB 0644
greybus.h File 3.57 KB 0644
group_cpus.h File 310 B 0644
hardirq.h File 3.25 KB 0644
hash.h File 2.93 KB 0644
hashtable.h File 6.67 KB 0644
hashtable_api.h File 29 B 0644
hdlc.h File 3.19 KB 0644
hdlcdrv.h File 6.32 KB 0644
hdmi.h File 12.84 KB 0644
hex.h File 884 B 0644
hid-debug.h File 1.42 KB 0644
hid-over-i2c.h File 3.53 KB 0644
hid-over-spi.h File 4.91 KB 0644
hid-roccat.h File 490 B 0644
hid-sensor-hub.h File 8.97 KB 0644
hid-sensor-ids.h File 7.85 KB 0644
hid.h File 39.52 KB 0644
hid_bpf.h File 8.19 KB 0644
hidden.h File 966 B 0644
hiddev.h File 1.42 KB 0644
hidraw.h File 1.13 KB 0644
highmem-internal.h File 6.62 KB 0644
highmem.h File 18.61 KB 0644
highuid.h File 3.12 KB 0644
hil.h File 18.42 KB 0644
hil_mlc.h File 5.13 KB 0644
hippidevice.h File 1.08 KB 0644
hisi_acc_qm.h File 14.13 KB 0644
hmm.h File 3.93 KB 0644
host1x.h File 13.67 KB 0644
host1x_context_bus.h File 337 B 0644
hp_sdc.h File 14.01 KB 0644
hpet.h File 2.55 KB 0644
hrtimer.h File 11.36 KB 0644
hrtimer_api.h File 27 B 0644
hrtimer_defs.h File 4.22 KB 0644
hrtimer_types.h File 1.53 KB 0644
hte.h File 7.37 KB 0644
huge_mm.h File 18.87 KB 0644
hugetlb.h File 36.03 KB 0644
hugetlb_cgroup.h File 6.78 KB 0644
hugetlb_inline.h File 374 B 0644
hw_breakpoint.h File 4.19 KB 0644
hw_random.h File 2.23 KB 0644
hwmon-sysfs.h File 2.8 KB 0644
hwmon-vid.h File 862 B 0644
hwmon.h File 15.94 KB 0644
hwspinlock.h File 15.79 KB 0644
hyperv.h File 49.31 KB 0644
hypervisor.h File 748 B 0644
i2c-algo-bit.h File 1.4 KB 0644
i2c-algo-pca.h File 2.89 KB 0644
i2c-algo-pcf.h File 1.21 KB 0644
i2c-atr.h File 3.95 KB 0644
i2c-dev.h File 371 B 0644
i2c-mux.h File 1.61 KB 0644
i2c-of-prober.h File 4.94 KB 0644
i2c-smbus.h File 1.69 KB 0644
i2c.h File 39.67 KB 0644
i8042.h File 2.45 KB 0644
i8253.h File 808 B 0644
i8254.h File 489 B 0644
icmp.h File 1 KB 0644
icmpv6.h File 2.87 KB 0644
idle_inject.h File 1.02 KB 0644
idr.h File 9.72 KB 0644
ieee80211.h File 180.45 KB 0644
ieee802154.h File 14.46 KB 0644
if_arp.h File 1.81 KB 0644
if_bridge.h File 5.42 KB 0644
if_eql.h File 1.13 KB 0644
if_ether.h File 1.26 KB 0644
if_fddi.h File 3.24 KB 0644
if_hsr.h File 1.5 KB 0644
if_link.h File 592 B 0644
if_macvlan.h File 2.76 KB 0644
if_phonet.h File 319 B 0644
if_pppol2tp.h File 501 B 0644
if_pppox.h File 2.83 KB 0644
if_rmnet.h File 2.06 KB 0644
if_tap.h File 2.21 KB 0644
if_team.h File 7.94 KB 0644
if_tun.h File 1.54 KB 0644
if_tunnel.h File 409 B 0644
if_vlan.h File 22.16 KB 0644
igmp.h File 4.42 KB 0644
ihex.h File 2.15 KB 0644
ima.h File 2.71 KB 0644
imx-media.h File 605 B 0644
in.h File 2.29 KB 0644
in6.h File 1.63 KB 0644
indirect_call_wrapper.h File 2.24 KB 0644
inet.h File 2.64 KB 0644
inet_diag.h File 2.76 KB 0644
inetdevice.h File 9.53 KB 0644
init.h File 12 KB 0644
init_ohci1394_dma.h File 196 B 0644
init_syscalls.h File 1.01 KB 0644
init_task.h File 1.1 KB 0644
initrd.h File 1008 B 0644
inotify.h File 628 B 0644
input.h File 20.81 KB 0644
instruction_pointer.h File 346 B 0644
instrumentation.h File 1.85 KB 0644
instrumented.h File 6.21 KB 0644
int_log.h File 1.26 KB 0644
integrity.h File 1.46 KB 0644
intel-ish-client-if.h File 4.13 KB 0644
intel_rapl.h File 6 KB 0644
intel_tcc.h File 466 B 0644
intel_th.h File 2.44 KB 0644
intel_tpmi.h File 1.99 KB 0644
intel_vsec.h File 4.24 KB 0644
interconnect-clk.h File 648 B 0644
interconnect-provider.h File 5.53 KB 0644
interconnect.h File 3.36 KB 0644
interrupt.h File 27.29 KB 0644
interval_tree.h File 2.88 KB 0644
interval_tree_generic.h File 6.7 KB 0644
io-64-nonatomic-hi-lo.h File 2.41 KB 0644
io-64-nonatomic-lo-hi.h File 2.41 KB 0644
io-mapping.h File 4.69 KB 0644
io-pgtable.h File 10.18 KB 0644
io.h File 5.51 KB 0644
io_uring.h File 1.04 KB 0644
io_uring_types.h File 18.69 KB 0644
ioam6.h File 226 B 0644
ioam6_genl.h File 266 B 0644
ioam6_iptunnel.h File 285 B 0644
iocontext.h File 4.16 KB 0644
iomap.h File 15.6 KB 0644
iommu-dma.h File 2.98 KB 0644
iommu-helper.h File 1.12 KB 0644
iommu.h File 53.6 KB 0644
iommufd.h File 7.34 KB 0644
iopoll.h File 7.9 KB 0644
ioport.h File 15.09 KB 0644
ioprio.h File 2.17 KB 0644
ioremap.h File 744 B 0644
iosys-map.h File 16.8 KB 0644
iov_iter.h File 10.36 KB 0644
iova.h File 4.2 KB 0644
iova_bitmap.h File 1.31 KB 0644
ip.h File 1.56 KB 0644
ipack.h File 8.69 KB 0644
ipc.h File 619 B 0644
ipc_namespace.h File 5.63 KB 0644
ipmi.h File 11.09 KB 0644
ipmi_smi.h File 9.83 KB 0644
ipv6.h File 8.23 KB 0644
ipv6_route.h File 372 B 0644
irq.h File 43.49 KB 0644
irq_poll.h File 575 B 0644
irq_sim.h File 1.35 KB 0644
irq_work.h File 2.04 KB 0644
irqbypass.h File 3.45 KB 0644
irqchip.h File 2.65 KB 0644
irqdesc.h File 8.04 KB 0644
irqdomain.h File 24.75 KB 0644
irqdomain_defs.h File 842 B 0644
irqflags.h File 7.96 KB 0644
irqflags_types.h File 563 B 0644
irqhandler.h File 284 B 0644
irqnr.h File 1.5 KB 0644
irqreturn.h File 529 B 0644
isa-dma.h File 276 B 0644
isa.h File 3.33 KB 0644
isapnp.h File 2.88 KB 0644
iscsi_boot_sysfs.h File 3.71 KB 0644
iscsi_ibft.h File 994 B 0644
ism.h File 2.2 KB 0644
iversion.h File 10.96 KB 0644
jbd2.h File 51.56 KB 0644
jhash.h File 4.56 KB 0644
jiffies.h File 20.07 KB 0644
journal-head.h File 2.91 KB 0644
joystick.h File 437 B 0644
jump_label.h File 16.45 KB 0644
jump_label_ratelimit.h File 2.77 KB 0644
jz4740-adc.h File 1023 B 0644
jz4780-nemc.h File 976 B 0644
kallsyms.h File 4.26 KB 0644
kasan-checks.h File 1.46 KB 0644
kasan-enabled.h File 639 B 0644
kasan-tags.h File 487 B 0644
kasan.h File 20.56 KB 0644
kbd_diacr.h File 198 B 0644
kbd_kern.h File 3.6 KB 0644
kbuild.h File 380 B 0644
kconfig.h File 2.63 KB 0644
kcore.h File 611 B 0644
kcov.h File 4.31 KB 0644
kcsan-checks.h File 18.63 KB 0644
kcsan.h File 2.19 KB 0644
kdb.h File 7.36 KB 0644
kdebug.h File 487 B 0644
kdev_t.h File 1.8 KB 0644
kern_levels.h File 1.57 KB 0644
kernel-page-flags.h File 522 B 0644
kernel.h File 12.88 KB 0644
kernel_read_file.h File 1.62 KB 0644
kernel_stat.h File 3.63 KB 0644
kernelcapi.h File 1.45 KB 0644
kernfs.h File 19.49 KB 0644
kexec.h File 12.68 KB 0644
key-type.h File 6.63 KB 0644
key.h File 16.05 KB 0644
keyboard.h File 665 B 0644
keyctl.h File 1.25 KB 0644
kfence.h File 8.7 KB 0644
kfifo.h File 28.9 KB 0644
kgdb.h File 12.02 KB 0644
khugepaged.h File 1.78 KB 0644
klist.h File 1.88 KB 0644
kmemleak.h File 3.24 KB 0644
kmod.h File 1.02 KB 0644
kmsan-checks.h File 2.86 KB 0644
kmsan.h File 11.52 KB 0644
kmsan_string.h File 681 B 0644
kmsan_types.h File 906 B 0644
kmsg_dump.h File 3.12 KB 0644
kobj_map.h File 545 B 0644
kobject.h File 6.96 KB 0644
kobject_api.h File 27 B 0644
kobject_ns.h File 1.79 KB 0644
kprobes.h File 16.25 KB 0644
kref.h File 3.84 KB 0644
kref_api.h File 24 B 0644
ks0108.h File 970 B 0644
ks8842.h File 632 B 0644
ks8851_mll.h File 472 B 0644
ksm.h File 4.08 KB 0644
kstrtox.h File 6.51 KB 0644
kthread.h File 8.48 KB 0644
ktime.h File 5.4 KB 0644
ktime_api.h File 25 B 0644
kvm_dirty_ring.h File 2.68 KB 0644
kvm_host.h File 77.92 KB 0644
kvm_irqfd.h File 1.99 KB 0644
kvm_para.h File 402 B 0644
kvm_types.h File 2.6 KB 0644
l2tp.h File 261 B 0644
lantiq.h File 365 B 0644
lapb.h File 1.78 KB 0644
latencytop.h File 1.06 KB 0644
lcd.h File 4.18 KB 0644
lcm.h File 275 B 0644
led-class-flash.h File 6.08 KB 0644
led-class-multicolor.h File 2.44 KB 0644
led-lm3530.h File 3.7 KB 0644
leds-bd2802.h File 476 B 0644
leds-expresswire.h File 1.13 KB 0644
leds-lp3944.h File 950 B 0644
leds-lp3952.h File 2.35 KB 0644
leds-pca9532.h File 866 B 0644
leds-regulator.h File 1.14 KB 0644
leds-ti-lmu-common.h File 1.12 KB 0644
leds.h File 23.34 KB 0644
libata.h File 69.91 KB 0644
libfdt.h File 202 B 0644
libfdt_env.h File 491 B 0644
libgcc.h File 875 B 0644
libnvdimm.h File 9.93 KB 0644
libps2.h File 2.47 KB 0644
license.h File 418 B 0644
limits.h File 809 B 0644
linear_range.h File 2.01 KB 0644
linkage.h File 9.56 KB 0644
linkmode.h File 2.17 KB 0644
linux_logo.h File 1.81 KB 0644
lis3lv02d.h File 5 KB 0644
list.h File 35.12 KB 0644
list_bl.h File 4.79 KB 0644
list_lru.h File 9.8 KB 0644
list_nulls.h File 4.22 KB 0644
list_sort.h File 374 B 0644
litex.h File 2.06 KB 0644
livepatch.h File 8.26 KB 0644
livepatch_sched.h File 802 B 0644
llc.h File 749 B 0644
llist.h File 10.43 KB 0644
llist_api.h File 25 B 0644
local_lock.h File 1.98 KB 0644
local_lock_internal.h File 4.24 KB 0644
lockdep.h File 20.9 KB 0644
lockdep_api.h File 27 B 0644
lockdep_types.h File 7.61 KB 0644
lockref.h File 1.65 KB 0644
log2.h File 6.24 KB 0644
logic_iomem.h File 2.07 KB 0644
logic_pio.h File 3.11 KB 0644
lp.h File 2.76 KB 0644
lru_cache.h File 11.67 KB 0644
lsm_audit.h File 3.22 KB 0644
lsm_count.h File 2.36 KB 0644
lsm_hook_defs.h File 24.09 KB 0644
lsm_hooks.h File 4.81 KB 0644
lwq.h File 3.69 KB 0644
lz4.h File 26.69 KB 0644
lzo.h File 1.93 KB 0644
mISDNdsp.h File 1.19 KB 0644
mISDNhw.h File 5.39 KB 0644
mISDNif.h File 14.9 KB 0644
mailbox_client.h File 1.78 KB 0644
mailbox_controller.h File 5.7 KB 0644
map_benchmark.h File 1.07 KB 0644
maple.h File 2.68 KB 0644
maple_tree.h File 28.94 KB 0644
marvell_phy.h File 1.94 KB 0644
math.h File 6.31 KB 0644
math64.h File 9 KB 0644
mbcache.h File 2.09 KB 0644
mbus.h File 3.09 KB 0644
mc146818rtc.h File 4.72 KB 0644
mc6821.h File 1.18 KB 0644
mcb.h File 3.62 KB 0644
mdev.h File 2.36 KB 0644
mdio-bitbang.h File 1.46 KB 0644
mdio-gpio.h File 177 B 0644
mdio-mux.h File 1021 B 0644
mdio.h File 22.72 KB 0644
mei_aux.h File 929 B 0644
mei_cl_bus.h File 4.6 KB 0644
mem_encrypt.h File 1.31 KB 0644
memblock.h File 20.4 KB 0644
memcontrol.h File 45.83 KB 0644
memfd.h File 950 B 0644
memory-tiers.h File 3.94 KB 0644
memory.h File 6.42 KB 0644
memory_hotplug.h File 10.77 KB 0644
mempolicy.h File 7.25 KB 0644
mempool.h File 4.28 KB 0644
memregion.h File 1.8 KB 0644
memremap.h File 7.67 KB 0644
memstick.h File 9.61 KB 0644
mhi.h File 27.42 KB 0644
mhi_ep.h File 10.63 KB 0644
micrel_phy.h File 2.1 KB 0644
microchipphy.h File 2.65 KB 0644
migrate.h File 7.72 KB 0644
migrate_mode.h File 713 B 0644
mii.h File 15.51 KB 0644
mii_timestamper.h File 3.66 KB 0644
min_heap.h File 15.78 KB 0644
minmax.h File 10 KB 0644
misc_cgroup.h File 3.23 KB 0644
miscdevice.h File 3.21 KB 0644
mm.h File 126.61 KB 0644
mm_api.h File 22 B 0644
mm_inline.h File 17.38 KB 0644
mm_types.h File 51.72 KB 0644
mm_types_task.h File 2.32 KB 0644
mman.h File 5.48 KB 0644
mmap_lock.h File 6.03 KB 0644
mmdebug.h File 4.28 KB 0644
mmiotrace.h File 3.05 KB 0644
mmu_context.h File 1.13 KB 0644
mmu_notifier.h File 21.93 KB 0644
mmzone.h File 66.74 KB 0644
mnt_idmapping.h File 6.88 KB 0644
mnt_namespace.h File 767 B 0644
mod_devicetable.h File 25.41 KB 0644
module.h File 27.85 KB 0644
module_signature.h File 1.22 KB 0644
module_symbol.h File 409 B 0644
moduleloader.h File 3.84 KB 0644
moduleparam.h File 22.51 KB 0644
most.h File 12.2 KB 0644
mount.h File 4.21 KB 0644
moxtet.h File 2.27 KB 0644
mpage.h File 644 B 0644
mpi.h File 3.17 KB 0644
mpls.h File 394 B 0644
mpls_iptunnel.h File 178 B 0644
mroute.h File 2.12 KB 0644
mroute6.h File 2.93 KB 0644
mroute_base.h File 12.45 KB 0644
msdos_fs.h File 273 B 0644
msdos_partition.h File 1.62 KB 0644
msg.h File 395 B 0644
msi.h File 22.01 KB 0644
msi_api.h File 1.93 KB 0644
mtio.h File 1.29 KB 0644
mutex.h File 5.82 KB 0644
mutex_api.h File 25 B 0644
mutex_types.h File 2.09 KB 0644
mv643xx_eth.h File 2 KB 0644
mv643xx_i2c.h File 335 B 0644
mvebu-pmsu.h File 520 B 0644
mxm-wmi.h File 399 B 0644
namei.h File 5.46 KB 0644
nd.h File 6.19 KB 0644
ndctl.h File 674 B 0644
net.h File 11.86 KB 0644
net_tstamp.h File 2.97 KB 0644
netdev_features.h File 10.5 KB 0644
netdevice.h File 170.32 KB 0644
netdevice_xmit.h File 223 B 0644
netfilter.h File 14.03 KB 0644
netfilter_bridge.h File 2.08 KB 0644
netfilter_defs.h File 242 B 0644
netfilter_ipv4.h File 1.05 KB 0644
netfilter_ipv6.h File 5.86 KB 0644
netfilter_netdev.h File 3.97 KB 0644
netfs.h File 21.8 KB 0644
netlink.h File 10.69 KB 0644
netpoll.h File 2.52 KB 0644
nfs.h File 1.71 KB 0644
nfs3.h File 260 B 0644
nfs4.h File 24.25 KB 0644
nfs_common.h File 458 B 0644
nfs_fs.h File 20.45 KB 0644
nfs_fs_i.h File 308 B 0644
nfs_fs_sb.h File 11.34 KB 0644
nfs_iostat.h File 3.92 KB 0644
nfs_page.h File 8.48 KB 0644
nfs_ssc.h File 2.01 KB 0644
nfs_xdr.h File 43.3 KB 0644
nfsacl.h File 1.4 KB 0644
nfslocalio.h File 3.47 KB 0644
nitro_enclaves.h File 267 B 0644
nl802154.h File 3.87 KB 0644
nls.h File 3.09 KB 0644
nmi.h File 7.21 KB 0644
node.h File 4.67 KB 0644
nodemask.h File 17.89 KB 0644
nodemask_types.h File 263 B 0644
nospec.h File 2.24 KB 0644
notifier.h File 8.18 KB 0644
ns_common.h File 284 B 0644
nsc_gpio.h File 1.42 KB 0644
nsproxy.h File 3.67 KB 0644
ntb.h File 52.43 KB 0644
ntb_transport.h File 3.8 KB 0644
nubus.h File 5.54 KB 0644
numa.h File 1.6 KB 0644
numa_memblks.h File 1.57 KB 0644
nvme-auth.h File 1.44 KB 0644
nvme-fc-driver.h File 46.78 KB 0644
nvme-fc.h File 9.72 KB 0644
nvme-keyring.h File 732 B 0644
nvme-rdma.h File 2.31 KB 0644
nvme-tcp.h File 4.67 KB 0644
nvme.h File 50.91 KB 0644
nvmem-consumer.h File 6.87 KB 0644
nvmem-provider.h File 8.03 KB 0644
nvram.h File 3.47 KB 0644
oa_tc6.h File 947 B 0644
objagg.h File 1.94 KB 0644
objpool.h File 9.58 KB 0644
objtool.h File 6.62 KB 0644
objtool_types.h File 2.08 KB 0644
of.h File 51.38 KB 0644
of_address.h File 5.5 KB 0644
of_clk.h File 819 B 0644
of_device.h File 2.23 KB 0644
of_dma.h File 2.3 KB 0644
of_fdt.h File 3.48 KB 0644
of_gpio.h File 878 B 0644
of_graph.h File 5.4 KB 0644
of_iommu.h File 671 B 0644
of_irq.h File 3.83 KB 0644
of_mdio.h File 3.91 KB 0644
of_net.h File 1.15 KB 0644
of_pci.h File 915 B 0644
of_pdt.h File 1.14 KB 0644
of_platform.h File 4.07 KB 0644
of_reserved_mem.h File 2.22 KB 0644
oid_registry.h File 6.02 KB 0644
olpc-ec.h File 2 KB 0644
omap-dma.h File 9.54 KB 0644
omap-gpmc.h File 2.29 KB 0644
omap-iommu.h File 880 B 0644
omap-mailbox.h File 272 B 0644
omapfb.h File 576 B 0644
once.h File 2.66 KB 0644
once_lite.h File 926 B 0644
oom.h File 2.81 KB 0644
openvswitch.h File 403 B 0644
osq_lock.h File 912 B 0644
overflow.h File 14.82 KB 0644
packing.h File 16 KB 0644
padata.h File 6.21 KB 0644
page-flags-layout.h File 3.73 KB 0644
page-flags.h File 39.15 KB 0644
page-isolation.h File 1.04 KB 0644
page_counter.h File 3.21 KB 0644
page_ext.h File 2.9 KB 0644
page_frag_cache.h File 1.71 KB 0644
page_idle.h File 1.95 KB 0644
page_owner.h File 2.38 KB 0644
page_ref.h File 7.6 KB 0644
page_reporting.h File 895 B 0644
page_table_check.h File 3.74 KB 0644
pageblock-flags.h File 2.8 KB 0644
pagemap.h File 51.01 KB 0644
pagevec.h File 2.62 KB 0644
pagewalk.h File 7.36 KB 0644
panic.h File 2.83 KB 0644
panic_notifier.h File 296 B 0644
papr_scm.h File 2.17 KB 0644
parman.h File 2.87 KB 0644
parport.h File 18.87 KB 0644
parport_pc.h File 6.62 KB 0644
parser.h File 1.17 KB 0644
part_stat.h File 2.38 KB 0644
pata_arasan_cf_data.h File 1.22 KB 0644
patchkey.h File 757 B 0644
path.h File 752 B 0644
pch_dma.h File 408 B 0644
pci-acpi.h File 4.18 KB 0644
pci-ats.h File 2.01 KB 0644
pci-bwctrl.h File 650 B 0644
pci-doe.h File 576 B 0644
pci-ecam.h File 3.43 KB 0644
pci-ep-cfs.h File 956 B 0644
pci-epc.h File 12.02 KB 0644
pci-epf.h File 7.84 KB 0644
pci-p2pdma.h File 3.01 KB 0644
pci-pwrctrl.h File 1.74 KB 0644
pci-tph.h File 1.44 KB 0644
pci.h File 98.79 KB 0644
pci_hotplug.h File 4.35 KB 0644
pci_ids.h File 125.8 KB 0644
pcs-lynx.h File 442 B 0644
pcs-rzn1-miic.h File 385 B 0644
pe.h File 16.73 KB 0644
peci-cpu.h File 2.29 KB 0644
peci.h File 3.08 KB 0644
percpu-defs.h File 17.3 KB 0644
percpu-refcount.h File 11.22 KB 0644
percpu-rwsem.h File 4.32 KB 0644
percpu.h File 5.17 KB 0644
percpu_counter.h File 6.81 KB 0644
perf_event.h File 59.38 KB 0644
perf_event_api.h File 30 B 0644
perf_regs.h File 1.05 KB 0644
personality.h File 393 B 0644
pfn.h File 666 B 0644
pfn_t.h File 3.21 KB 0644
pgalloc_tag.h File 6.2 KB 0644
pgtable.h File 53.52 KB 0644
pgtable_api.h File 27 B 0644
phonet.h File 537 B 0644
phy.h File 77.74 KB 0644
phy_fixed.h File 1.82 KB 0644
phy_led_triggers.h File 1.01 KB 0644
phy_link_topology.h File 1.74 KB 0644
phylib_stubs.h File 2.64 KB 0644
phylink.h File 29.83 KB 0644
pid.h File 9.4 KB 0644
pid_namespace.h File 3.29 KB 0644
pid_types.h File 282 B 0644
pidfs.h File 356 B 0644
pim.h File 2.67 KB 0644
pipe_fs_i.h File 10.26 KB 0644
pkeys.h File 990 B 0644
pktcdvd.h File 5.7 KB 0644
pl320-ipc.h File 209 B 0644
platform_device.h File 13.15 KB 0644
platform_profile.h File 2.02 KB 0644
pldmfw.h File 4.91 KB 0644
plist.h File 8.58 KB 0644
plist_types.h File 315 B 0644
pm-trace.h File 940 B 0644
pm.h File 36.63 KB 0644
pm_clock.h File 2.59 KB 0644
pm_domain.h File 16.68 KB 0644
pm_opp.h File 18.9 KB 0644
pm_qos.h File 10.41 KB 0644
pm_runtime.h File 20.47 KB 0644
pm_wakeirq.h File 1009 B 0644
pm_wakeup.h File 7.43 KB 0644
pmbus.h File 2.86 KB 0644
pmu.h File 2.45 KB 0644
pnp.h File 14.98 KB 0644
poison.h File 2.84 KB 0644
poll.h File 3.86 KB 0644
polynomial.h File 814 B 0644
posix-clock.h File 4.52 KB 0644
posix-timers.h File 7.09 KB 0644
posix-timers_types.h File 2.21 KB 0644
posix_acl.h File 4.32 KB 0644
posix_acl_xattr.h File 1.95 KB 0644
power_supply.h File 41.09 KB 0644
powercap.h File 11.98 KB 0644
ppp-comp.h File 2.97 KB 0644
ppp_channel.h File 3.04 KB 0644
ppp_defs.h File 663 B 0644
pps_gen_kernel.h File 1.95 KB 0644
pps_kernel.h File 2.94 KB 0644
pr.h File 1.33 KB 0644
prandom.h File 1.31 KB 0644
preempt.h File 15.9 KB 0644
prefetch.h File 1.55 KB 0644
prime_numbers.h File 1.35 KB 0644
printk.h File 23.79 KB 0644
prmt.h File 342 B 0644
proc_fs.h File 9.13 KB 0644
proc_ns.h File 2.52 KB 0644
processor.h File 1.84 KB 0644
profile.h File 1.39 KB 0644
projid.h File 2.22 KB 0644
property.h File 19.91 KB 0644
pruss_driver.h File 4.44 KB 0644
psci.h File 1.52 KB 0644
pseudo_fs.h File 401 B 0644
psi.h File 1.78 KB 0644
psi_types.h File 4.94 KB 0644
psp-platform-access.h File 1.86 KB 0644
psp-sev.h File 27.29 KB 0644
psp-tee.h File 2.65 KB 0644
psp.h File 697 B 0644
pstore.h File 7.77 KB 0644
pstore_blk.h File 1.53 KB 0644
pstore_ram.h File 883 B 0644
pstore_zone.h File 2.28 KB 0644
ptdump.h File 815 B 0644
pti.h File 251 B 0644
ptp_classify.h File 6.89 KB 0644
ptp_clock_kernel.h File 16.23 KB 0644
ptp_kvm.h File 505 B 0644
ptp_mock.h File 670 B 0644
ptp_pch.h File 666 B 0644
ptr_ring.h File 16.54 KB 0644
ptrace.h File 16.79 KB 0644
ptrace_api.h File 26 B 0644
purgatory.h File 590 B 0644
pvclock_gtod.h File 548 B 0644
pwm.h File 18.78 KB 0644
pwm_backlight.h File 649 B 0644
pxa168_eth.h File 728 B 0644
pxa2xx_ssp.h File 11.13 KB 0644
qnx6_fs.h File 3.27 KB 0644
quota.h File 18.76 KB 0644
quotaops.h File 10.27 KB 0644
radix-tree.h File 15.95 KB 0644
raid_class.h File 2.01 KB 0644
ramfs.h File 746 B 0644
random.h File 4.97 KB 0644
randomize_kstack.h File 3.96 KB 0644
range.h File 1.07 KB 0644
ras.h File 1.53 KB 0644
ratelimit.h File 1.72 KB 0644
ratelimit_types.h File 1.33 KB 0644
rational.h File 639 B 0644
rbtree.h File 11.32 KB 0644
rbtree_augmented.h File 10.18 KB 0644
rbtree_latch.h File 6.73 KB 0644
rbtree_types.h File 946 B 0644
rcu_node_tree.h File 3.73 KB 0644
rcu_notifier.h File 1.09 KB 0644
rcu_segcblist.h File 10.77 KB 0644
rcu_sync.h File 1.41 KB 0644
rculist.h File 30.59 KB 0644
rculist_bl.h File 3.29 KB 0644
rculist_nulls.h File 6.6 KB 0644
rcupdate.h File 42.48 KB 0644
rcupdate_trace.h File 3.27 KB 0644
rcupdate_wait.h File 2.55 KB 0644
rcuref.h File 4.66 KB 0644
rcutiny.h File 4.55 KB 0644
rcutree.h File 4.34 KB 0644
rcuwait.h File 2.32 KB 0644
rcuwait_api.h File 27 B 0644
reboot-mode.h File 600 B 0644
reboot.h File 5.3 KB 0644
reciprocal_div.h File 3.28 KB 0644
ref_tracker.h File 2.35 KB 0644
refcount.h File 11.83 KB 0644
refcount_api.h File 28 B 0644
refcount_types.h File 512 B 0644
regmap.h File 72.65 KB 0644
regset.h File 11.35 KB 0644
relay.h File 8.47 KB 0644
remoteproc.h File 25.08 KB 0644
resctrl.h File 11.58 KB 0644
reset-controller.h File 3.79 KB 0644
reset.h File 37.86 KB 0644
resource.h File 223 B 0644
resource_ext.h File 2.08 KB 0644
restart_block.h File 1.11 KB 0644
resume_user_mode.h File 1.88 KB 0644
rethook.h File 3.15 KB 0644
rfkill.h File 10.79 KB 0644
rhashtable-types.h File 3.72 KB 0644
rhashtable.h File 37.93 KB 0644
ring_buffer.h File 8.82 KB 0644
rio.h File 19.02 KB 0644
rio_drv.h File 14.32 KB 0644
rio_ids.h File 723 B 0644
rio_regs.h File 19.07 KB 0644
rmap.h File 25.2 KB 0644
rmi.h File 12.04 KB 0644
rndis.h File 16.86 KB 0644
rodata_test.h File 394 B 0644
rolling_buffer.h File 2.16 KB 0644
root_dev.h File 361 B 0644
rpmb.h File 3.16 KB 0644
rpmsg.h File 9.46 KB 0644
rseq.h File 2.99 KB 0644
rslib.h File 3.64 KB 0644
rtc.h File 9.32 KB 0644
rtmutex.h File 3.38 KB 0644
rtnetlink.h File 7.36 KB 0644
rtsx_common.h File 846 B 0644
rtsx_pci.h File 40.09 KB 0644
rtsx_usb.h File 15.51 KB 0644
rv.h File 1.56 KB 0644
rw_hint.h File 702 B 0644
rwbase_rt.h File 1 KB 0644
rwlock.h File 4.15 KB 0644
rwlock_api_smp.h File 7.85 KB 0644
rwlock_rt.h File 3.38 KB 0644
rwlock_types.h File 1.77 KB 0644
rwsem.h File 8.6 KB 0644
sbitmap.h File 17.82 KB 0644
scatterlist.h File 21.17 KB 0644
scc.h File 2.84 KB 0644
sched.h File 64.53 KB 0644
sched_clock.h File 1.46 KB 0644
scmi_imx_protocol.h File 1.54 KB 0644
scmi_protocol.h File 38.75 KB 0644
scpi_protocol.h File 2.67 KB 0644
screen_info.h File 3.35 KB 0644
scs.h File 2.25 KB 0644
sctp.h File 23.09 KB 0644
scx200.h File 1.82 KB 0644
scx200_gpio.h File 2.38 KB 0644
seccomp.h File 2.99 KB 0644
seccomp_types.h File 834 B 0644
secretmem.h File 706 B 0644
securebits.h File 239 B 0644
security.h File 64.62 KB 0644
sed-opal-key.h File 614 B 0644
sed-opal.h File 1.95 KB 0644
seg6.h File 121 B 0644
seg6_genl.h File 136 B 0644
seg6_hmac.h File 136 B 0644
seg6_iptunnel.h File 148 B 0644
seg6_local.h File 100 B 0644
selection.h File 1.67 KB 0644
sem.h File 515 B 0644
sem_types.h File 234 B 0644
semaphore.h File 1.58 KB 0644
seq_buf.h File 4.24 KB 0644
seq_file.h File 10.18 KB 0644
seq_file_net.h File 787 B 0644
seqlock.h File 37.14 KB 0644
seqlock_api.h File 27 B 0644
seqlock_types.h File 3.11 KB 0644
serdev.h File 10.12 KB 0644
serial.h File 1.03 KB 0644
serial_8250.h File 7.38 KB 0644
serial_bcm63xx.h File 4.73 KB 0644
serial_core.h File 39.9 KB 0644
serial_s3c.h File 9.54 KB 0644
serial_sci.h File 1.62 KB 0644
serio.h File 4.41 KB 0644
set_memory.h File 2.06 KB 0644
sfp.h File 16.54 KB 0644
sh_clk.h File 5.96 KB 0644
sh_dma.h File 3.47 KB 0644
sh_eth.h File 369 B 0644
sh_intc.h File 3.63 KB 0644
sh_timer.h File 172 B 0644
shdma-base.h File 4.27 KB 0644
shm.h File 835 B 0644
shmem_fs.h File 7.74 KB 0644
shrinker.h File 4.87 KB 0644
signal.h File 13.79 KB 0644
signal_types.h File 1.69 KB 0644
signalfd.h File 817 B 0644
siox.h File 2.26 KB 0644
siphash.h File 5.66 KB 0644
sizes.h File 1.68 KB 0644
skb_array.h File 5.43 KB 0644
skbuff.h File 148.33 KB 0644
skbuff_ref.h File 1.74 KB 0644
skmsg.h File 13.94 KB 0644
slab.h File 37.02 KB 0644
slimbus.h File 6.94 KB 0644
sm501-regs.h File 11.62 KB 0644
sm501.h File 4.02 KB 0644
smc91x.h File 1.57 KB 0644
smp.h File 8.03 KB 0644
smp_types.h File 1.35 KB 0644
smpboot.h File 1.68 KB 0644
smsc911x.h File 1.63 KB 0644
smscphy.h File 3.1 KB 0644
sock_diag.h File 2.42 KB 0644
socket.h File 15.52 KB 0644
sockptr.h File 4.05 KB 0644
softirq.h File 29 B 0644
sonet.h File 469 B 0644
sony-laptop.h File 1.41 KB 0644
sonypi.h File 1.71 KB 0644
sort.h File 348 B 0644
sound.h File 685 B 0644
soundcard.h File 1.59 KB 0644
spinlock.h File 17.55 KB 0644
spinlock_api.h File 28 B 0644
spinlock_api_smp.h File 5.23 KB 0644
spinlock_api_up.h File 3.38 KB 0644
spinlock_rt.h File 4.12 KB 0644
spinlock_types.h File 1.78 KB 0644
spinlock_types_raw.h File 1.69 KB 0644
spinlock_types_up.h File 732 B 0644
spinlock_up.h File 2.08 KB 0644
splice.h File 3.72 KB 0644
spmi.h File 5.85 KB 0644
sprintf.h File 1.24 KB 0644
sram.h File 437 B 0644
srcu.h File 15.35 KB 0644
srcutiny.h File 3.15 KB 0644
srcutree.h File 10.6 KB 0644
ssbi.h File 726 B 0644
stackdepot.h File 8.95 KB 0644
stackleak.h File 2.36 KB 0644
stackprotector.h File 859 B 0644
stacktrace.h File 4 KB 0644
start_kernel.h File 345 B 0644
stat.h File 1.82 KB 0644
statfs.h File 1.78 KB 0644
static_call.h File 10.66 KB 0644
static_call_types.h File 2.74 KB 0644
static_key.h File 30 B 0644
stdarg.h File 313 B 0644
stddef.h File 3.17 KB 0644
stm.h File 4.6 KB 0644
stmmac.h File 7.79 KB 0644
stmp3xxx_rtc_wdt.h File 331 B 0644
stmp_device.h File 412 B 0644
stop_machine.h File 4.94 KB 0644
string.h File 17.88 KB 0644
string_choices.h File 2.22 KB 0644
string_helpers.h File 3.29 KB 0644
stringhash.h File 2.65 KB 0644
stringify.h File 395 B 0644
sungem_phy.h File 3.97 KB 0644
sunserialcore.h File 1.08 KB 0644
sunxi-rsb.h File 2.89 KB 0644
surface_acpi_notify.h File 1.07 KB 0644
suspend.h File 20.63 KB 0644
svga.h File 3.75 KB 0644
sw842.h File 328 B 0644
swab.h File 912 B 0644
swait.h File 9.47 KB 0644
swait_api.h File 25 B 0644
swap.h File 21.47 KB 0644
swap_cgroup.h File 1004 B 0644
swap_slots.h File 721 B 0644
swapfile.h File 450 B 0644
swapops.h File 16.33 KB 0644
swiotlb.h File 9.09 KB 0644
switchtec.h File 10.92 KB 0644
sxgbe_platform.h File 1.23 KB 0644
sync_core.h File 1.03 KB 0644
sync_file.h File 1.57 KB 0644
synclink.h File 989 B 0644
sys.h File 960 B 0644
sys_soc.h File 1.26 KB 0644
syscall_user_dispatch.h File 1.31 KB 0644
syscall_user_dispatch_types.h File 388 B 0644
syscalls.h File 56.4 KB 0644
syscalls_api.h File 28 B 0644
syscore_ops.h File 633 B 0644
sysctl.h File 9.6 KB 0644
sysfb.h File 2.87 KB 0644
sysfs.h File 24.5 KB 0644
syslog.h File 1.29 KB 0644
sysrq.h File 1.95 KB 0644
sysv_fs.h File 9.03 KB 0644
t10-pi.h File 1.85 KB 0644
task_io_accounting.h File 1.13 KB 0644
task_io_accounting_ops.h File 2.55 KB 0644
task_work.h File 1.06 KB 0644
taskstats_kern.h File 957 B 0644
tboot.h File 3.26 KB 0644
tc.h File 3.46 KB 0644
tca6416_keypad.h File 683 B 0644
tcp.h File 20.67 KB 0644
tee_core.h File 9.67 KB 0644
tee_drv.h File 8.94 KB 0644
tegra-icc.h File 1.86 KB 0644
termios_internal.h File 1.48 KB 0644
text-patching.h File 349 B 0644
textsearch.h File 4.73 KB 0644
textsearch_fsm.h File 1.19 KB 0644
tfrc.h File 1.68 KB 0644
thermal.h File 11.63 KB 0644
thread_info.h File 7.75 KB 0644
threads.h File 1.31 KB 0644
thunderbolt.h File 21.38 KB 0644
ti-emif-sram.h File 4.75 KB 0644
ti_wilink_st.h File 13.47 KB 0644
tick.h File 9.89 KB 0644
tifm.h File 4.66 KB 0644
timb_dma.h File 1.17 KB 0644
timb_gpio.h File 717 B 0644
time.h File 3.14 KB 0644
time32.h File 1.75 KB 0644
time64.h File 4.68 KB 0644
time_namespace.h File 4.02 KB 0644
timecounter.h File 4.38 KB 0644
timekeeper_internal.h File 5.72 KB 0644
timekeeping.h File 8.82 KB 0644
timer.h File 7.4 KB 0644
timer_types.h File 477 B 0644
timerfd.h File 508 B 0644
timeriomem-rng.h File 432 B 0644
timerqueue.h File 1.18 KB 0644
timerqueue_types.h File 335 B 0644
timex.h File 6.41 KB 0644
tnum.h File 4.15 KB 0644
topology.h File 7.33 KB 0644
torture.h File 4.91 KB 0644
toshiba.h File 460 B 0644
tpm.h File 14.74 KB 0644
tpm_command.h File 847 B 0644
tpm_eventlog.h File 6.53 KB 0644
trace.h File 2.77 KB 0644
trace_clock.h File 667 B 0644
trace_events.h File 30.39 KB 0644
trace_recursion.h File 5 KB 0644
trace_seq.h File 4.52 KB 0644
tracefs.h File 3.79 KB 0644
tracepoint-defs.h File 2.46 KB 0644
tracepoint.h File 20.39 KB 0644
transport_class.h File 2.58 KB 0644
ts-nbus.h File 532 B 0644
tsacct_kern.h File 1.2 KB 0644
tsm.h File 3.78 KB 0644
tty.h File 17.21 KB 0644
tty_buffer.h File 1.29 KB 0644
tty_driver.h File 22.2 KB 0644
tty_flip.h File 2.68 KB 0644
tty_ldisc.h File 10.29 KB 0644
tty_port.h File 9.21 KB 0644
turris-omnia-mcu-interface.h File 11.13 KB 0644
typecheck.h File 782 B 0644
types.h File 6.04 KB 0644
u64_stats_sync.h File 5.45 KB 0644
u64_stats_sync_api.h File 34 B 0644
uacce.h File 4.37 KB 0644
uaccess.h File 18.83 KB 0644
ubsan.h File 307 B 0644
ucs2_string.h File 740 B 0644
udp.h File 6.09 KB 0644
uidgid.h File 4.27 KB 0644
uidgid_types.h File 241 B 0644
uio.h File 12.13 KB 0644
uio_driver.h File 5.25 KB 0644
umh.h File 1.82 KB 0644
unaligned.h File 3.14 KB 0644
unicode.h File 2.05 KB 0644
union_find.h File 1.14 KB 0644
units.h File 2.88 KB 0644
unroll.h File 1.77 KB 0644
uprobes.h File 9.44 KB 0644
usb.h File 78.94 KB 0644
usb_usual.h File 3.58 KB 0644
usbdevice_fs.h File 2.18 KB 0644
user-return-notifier.h File 1.18 KB 0644
user.h File 22 B 0644
user_events.h File 1.68 KB 0644
user_namespace.h File 6.42 KB 0644
userfaultfd_k.h File 13.22 KB 0644
usermode_driver.h File 515 B 0644
util_macros.h File 2.51 KB 0644
uts.h File 388 B 0644
utsname.h File 1.8 KB 0644
uuid.h File 2.49 KB 0644
vbox_utils.h File 1.75 KB 0644
vdpa.h File 22.11 KB 0644
verification.h File 1.86 KB 0644
vermagic.h File 1.24 KB 0644
vexpress.h File 297 B 0644
vfio.h File 13.34 KB 0644
vfio_pci_core.h File 5.59 KB 0644
vfs.h File 116 B 0644
vga_switcheroo.h File 8.62 KB 0644
vgaarb.h File 2.81 KB 0644
vhost_iotlb.h File 1.43 KB 0644
via-core.h File 6.57 KB 0644
via.h File 932 B 0644
via_i2c.h File 844 B 0644
videodev2.h File 2.7 KB 0644
virtio.h File 10.57 KB 0644
virtio_anchor.h File 507 B 0644
virtio_byteorder.h File 1.46 KB 0644
virtio_caif.h File 513 B 0644
virtio_config.h File 18.11 KB 0644
virtio_dma_buf.h File 1.12 KB 0644
virtio_net.h File 6.53 KB 0644
virtio_pci_admin.h File 1.47 KB 0644
virtio_pci_legacy.h File 1.37 KB 0644
virtio_pci_modern.h File 4.39 KB 0644
virtio_ring.h File 3.2 KB 0644
virtio_vsock.h File 7.44 KB 0644
vm_event_item.h File 4.29 KB 0644
vmalloc.h File 10.61 KB 0644
vmcore_info.h File 3.08 KB 0644
vmpressure.h File 1.68 KB 0644
vmstat.h File 16.78 KB 0644
vmw_vmci_api.h File 2.88 KB 0644
vmw_vmci_defs.h File 29.93 KB 0644
vringh.h File 9.35 KB 0644
vt.h File 611 B 0644
vt_buffer.h File 1.13 KB 0644
vt_kern.h File 5.32 KB 0644
vtime.h File 4.47 KB 0644
w1.h File 8.93 KB 0644
wait.h File 43.03 KB 0644
wait_api.h File 24 B 0644
wait_bit.h File 22.51 KB 0644
watch_queue.h File 3.83 KB 0644
watchdog.h File 8.21 KB 0644
win_minmax.h File 831 B 0644
wireless.h File 1.56 KB 0644
wkup_m3_ipc.h File 1.58 KB 0644
wm97xx.h File 10.44 KB 0644
wmi.h File 3.36 KB 0644
wordpart.h File 1.5 KB 0644
workqueue.h File 29.84 KB 0644
workqueue_api.h File 29 B 0644
workqueue_types.h File 564 B 0644
writeback.h File 12.67 KB 0644
ww_mutex.h File 13.38 KB 0644
wwan.h File 6 KB 0644
xarray.h File 58.06 KB 0644
xattr.h File 4.5 KB 0644
xxhash.h File 8.27 KB 0644
xz.h File 15.66 KB 0644
yam.h File 2.18 KB 0644
zconf.h File 1.73 KB 0644
zlib.h File 28.11 KB 0644
zorro.h File 3.57 KB 0644
zpool.h File 2.84 KB 0644
zsmalloc.h File 1.71 KB 0644
zstd.h File 22.47 KB 0644
zstd_errors.h File 3.09 KB 0644
zstd_lib.h File 144.05 KB 0644
zswap.h File 1.82 KB 0644
zutil.h File 2.73 KB 0644
Filemanager