swp_entry_t
#define __swp_entry(type, off) ((swp_entry_t) { pte_val(mk_swap_pte((type), (off))) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, off) ((swp_entry_t) \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, offset) ((swp_entry_t) { (((type) & __SWP_TYPE_MASK) << __SWP_TYPE_SHIFT) | \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
void mte_restore_tags(swp_entry_t entry, struct page *page);
#define __swp_entry(type,offset) ((swp_entry_t) { ((type) << __SWP_TYPE_SHIFT) | ((offset) << __SWP_OFFSET_SHIFT) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __pmd_to_swp_entry(pmd) ((swp_entry_t) { pmd_val(pmd) })
extern void arch_swap_restore(swp_entry_t entry, struct folio *folio);
void arch_swap_restore(swp_entry_t entry, struct folio *folio)
void mte_restore_tags(swp_entry_t entry, struct page *page)
swp_entry_t entry = swp_entry(type, offset);
swp_entry_t entry = page_swap_entry(page);
swp_entry_t entry = swp_entry(type, 0);
swp_entry_t last_entry = swp_entry(type + 1, 0);
#define __swp_entry(type, offset) ((swp_entry_t) { \
#define __swp_entry(type, offset) ((swp_entry_t) { \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
((swp_entry_t) { \
#define __swp_entry(type, offset) ((swp_entry_t) { pte_val(mk_swap_pte((type), (offset))) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __pmd_to_swp_entry(pmd) ((swp_entry_t) { pmd_val(pmd) })
#define __swp_entry(typ, off) ((swp_entry_t) { ((typ) & 0x7f) | \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, offset) ((swp_entry_t) { (((type) & 0x7f) << 4) | ((offset) << 12) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, offset) ((swp_entry_t) { (((type) & 0x3f) | \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
((swp_entry_t) { ((type) & 0x1f) | ((offset) << 6) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 2 })
#define __swp_entry(type, offset) ((swp_entry_t) { (((type) & 0x1f) << 10) | ((offset) << 15) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, offset) ((swp_entry_t) { (((type) & 0x1f) << 4) | ((offset) << 9) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_high })
#define __swp_entry(type, offset) ((swp_entry_t) { (((type) & 0x1f) << 2) | ((offset) << 7) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_high })
#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 8) | ((offset) << 13) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, offset) ((swp_entry_t) { pte_val(mk_swap_pte((type), (offset))) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, off) ((swp_entry_t) { (((type) & 0x1f) << 26) \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
((swp_entry_t) { (((type) & 0x3f) << 5) | ((offset) << 12) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, offset) ((swp_entry_t) { \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __swp_entry(type, offset) ((swp_entry_t) { ((type) & 0x1f) | ((offset) << 5) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 3 })
#define __swp_entry(type, offset) ((swp_entry_t) { \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val((pte)) & ~_PAGE_PTE })
#define __swp_entry(type, offset) ((swp_entry_t) { ((type) & 0x1f) | ((offset) << 5) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 3 })
#define __swp_entry(type, offset) ((swp_entry_t) { \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val((pte)) })
#define __swp_entry(type, offset) ((swp_entry_t) \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
#define __pmd_to_swp_entry(pmd) ((swp_entry_t) { pmd_val(pmd) })
static inline unsigned long __swp_type(swp_entry_t entry)
static inline unsigned long __swp_offset(swp_entry_t entry)
static inline swp_entry_t __swp_entry(unsigned long type, unsigned long offset)
return (swp_entry_t) { pte_val(mk_swap_pte(type, offset)) };
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
static inline unsigned long __swp_type_rste(swp_entry_t entry)
static inline unsigned long __swp_offset_rste(swp_entry_t entry)
#define __rste_to_swp_entry(rste) ((swp_entry_t) { rste })
static inline swp_entry_t __pmd_to_swp_entry(pmd_t pmd)
swp_entry_t arch_entry;
static inline pmd_t __swp_entry_to_pmd(swp_entry_t arch_entry)
swp_entry_t arch_entry;
swp_entry_t arch_entry;
#define __swp_entry(type, offset) ((swp_entry_t){ ((type) & 0x1f) | (offset) << 5})
#define __pte_to_swp_entry(pte) ((swp_entry_t){ (pte).pte_high })
#define __swp_entry(type, offset) ((swp_entry_t){((type) & 0x1f) | (offset) << 10})
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 1 })
static inline unsigned long __swp_type(swp_entry_t entry)
static inline unsigned long __swp_offset(swp_entry_t entry)
static inline swp_entry_t __swp_entry(unsigned long type, unsigned long offset)
return (swp_entry_t) {
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
( (swp_entry_t) \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
((swp_entry_t) { (((type) & 0x1f) << 5) | ((offset) << 11) })
((swp_entry_t) { pte_val(pte_mkuptodate(pte)) })
#define __swp_entry(type, offset) ((swp_entry_t) { \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
#define __swp_entry(type, offset) ((swp_entry_t){((type) & _SWP_TYPE_MASK) \
#define __swp_entry(type, offset) ((swp_entry_t) { \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val((pte)) })
#define __pmd_to_swp_entry(pmd) ((swp_entry_t) { pmd_val((pmd)) })
((swp_entry_t){(((type) & 0x1f) << 6) | ((offs) << 11) | \
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
struct mm_struct *mm, gfp_t gfp, swp_entry_t entry)
void memcg1_swapout(struct folio *folio, swp_entry_t entry);
void memcg1_swapin(swp_entry_t entry, unsigned int nr_pages);
static inline void memcg1_swapout(struct folio *folio, swp_entry_t entry)
static inline void memcg1_swapin(swp_entry_t entry, unsigned int nr_pages)
gfp_t gfp, swp_entry_t entry);
typedef swp_entry_t softleaf_t;
swp_entry_t swap;
static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio)
static inline swp_entry_t page_swap_entry(struct page *page)
swp_entry_t entry = folio->swap;
extern int add_swap_count_continuation(swp_entry_t, gfp_t);
extern int __swap_count(swp_entry_t entry);
extern bool swap_entry_swapped(struct swap_info_struct *si, swp_entry_t entry);
extern int swp_swapcount(swp_entry_t entry);
extern struct swap_info_struct *get_swap_device(swp_entry_t entry);
int swap_dup_entry_direct(swp_entry_t entry);
void swap_put_entries_direct(swp_entry_t entry, int nr);
swp_entry_t swap_alloc_hibernation_slot(int type);
void swap_free_hibernation_slot(swp_entry_t entry);
static inline struct swap_info_struct *get_swap_device(swp_entry_t entry)
static inline int add_swap_count_continuation(swp_entry_t swp, gfp_t gfp_mask)
static inline int swap_dup_entry_direct(swp_entry_t ent)
static inline void swap_put_entries_direct(swp_entry_t ent, int nr)
static inline int __swap_count(swp_entry_t entry)
static inline bool swap_entry_swapped(struct swap_info_struct *si, swp_entry_t entry)
static inline int swp_swapcount(swp_entry_t entry)
int __mem_cgroup_try_charge_swap(struct folio *folio, swp_entry_t entry);
swp_entry_t entry)
extern void __mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages);
static inline void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
swp_entry_t entry)
static inline void mem_cgroup_uncharge_swap(swp_entry_t entry,
extern unsigned short swap_cgroup_clear(swp_entry_t ent, unsigned int nr_ents);
extern unsigned short lookup_swap_cgroup_id(swp_entry_t ent);
void swap_cgroup_record(struct folio *folio, unsigned short id, swp_entry_t ent)
unsigned short swap_cgroup_clear(swp_entry_t ent, unsigned int nr_ents)
unsigned short lookup_swap_cgroup_id(swp_entry_t ent)
extern void swap_cgroup_record(struct folio *folio, unsigned short id, swp_entry_t ent);
static inline pgoff_t swp_offset(swp_entry_t entry)
static inline pte_t swp_entry_to_pte(swp_entry_t entry)
swp_entry_t arch_entry;
static inline swp_entry_t radix_to_swp_entry(void *arg)
swp_entry_t entry;
static inline void *swp_to_radix_entry(swp_entry_t entry)
static inline swp_entry_t make_readable_device_private_entry(pgoff_t offset)
static inline swp_entry_t make_writable_device_private_entry(pgoff_t offset)
static inline swp_entry_t make_device_exclusive_entry(pgoff_t offset)
static inline swp_entry_t make_readable_device_private_entry(pgoff_t offset)
static inline swp_entry_t make_writable_device_private_entry(pgoff_t offset)
static inline swp_entry_t make_device_exclusive_entry(pgoff_t offset)
static inline swp_entry_t make_readable_migration_entry(pgoff_t offset)
static inline swp_entry_t make_readable_exclusive_migration_entry(pgoff_t offset)
static inline swp_entry_t make_writable_migration_entry(pgoff_t offset)
static inline swp_entry_t make_migration_entry_young(swp_entry_t entry)
static inline swp_entry_t make_migration_entry_dirty(swp_entry_t entry)
static inline swp_entry_t make_readable_migration_entry(pgoff_t offset)
static inline swp_entry_t make_readable_exclusive_migration_entry(pgoff_t offset)
static inline swp_entry_t make_writable_migration_entry(pgoff_t offset)
static inline swp_entry_t make_migration_entry_young(swp_entry_t entry)
static inline swp_entry_t make_migration_entry_dirty(swp_entry_t entry)
static inline swp_entry_t make_hwpoison_entry(struct page *page)
static inline int is_hwpoison_entry(swp_entry_t entry)
static inline swp_entry_t make_hwpoison_entry(struct page *page)
static inline int is_hwpoison_entry(swp_entry_t swp)
static inline swp_entry_t make_pte_marker_entry(pte_marker marker)
static inline swp_entry_t make_poisoned_swp_entry(void)
static inline swp_entry_t make_guard_swp_entry(void)
static inline pmd_t swp_entry_to_pmd(swp_entry_t entry)
swp_entry_t arch_entry;
static inline pmd_t swp_entry_to_pmd(swp_entry_t entry)
static inline swp_entry_t swp_entry(unsigned long type, pgoff_t offset)
swp_entry_t ret;
static inline unsigned swp_type(swp_entry_t entry)
void zswap_invalidate(swp_entry_t swp);
static inline void zswap_invalidate(swp_entry_t swp) {}
swp_entry_t swp_entry;
swp_entry_t leaf_entry;
swp_entry_t entry;
swp_entry_t arch_entry;
swp_entry_t arch_entry;
swp_entry_t swp = radix_to_swp_entry(folio);
swp_entry_t swp_entry;
swp_entry_t swp_entry;
swp_entry_t entry;
swp_entry_t entry;
static inline swp_entry_t folio_swap(swp_entry_t entry,
swp_entry_t swap = {
swp_entry_t entry;
void memcg1_swapout(struct folio *folio, swp_entry_t entry)
void memcg1_swapin(swp_entry_t entry, unsigned int nr_pages)
gfp_t gfp, swp_entry_t entry)
int __mem_cgroup_try_charge_swap(struct folio *folio, swp_entry_t entry)
void __mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
static void check_swap_exclusive(struct folio *folio, swp_entry_t entry,
swp_entry_t swp_entry;
swp_entry_t swp_entry;
static unsigned char mincore_swap(swp_entry_t entry, bool shmem)
swp_entry_t entry;
swp_entry_t entry;
swp_entry_t entry = page_swap_entry(subpage);
swp_entry_t entry;
swp_entry_t entry;
swp_entry_t entry;
static struct folio *shmem_swapin_cluster(swp_entry_t swap, gfp_t gfp,
swp_entry_t entry, int order, gfp_t gfp)
swp_entry_t entry = old->swap;
struct folio *folio, swp_entry_t swap)
swp_entry_t swapin_error;
swp_entry_t swap, gfp_t gfp)
swp_entry_t tmp;
swp_entry_t swap;
swp_entry_t swap)
swp_entry_t iter, swap;
static inline struct address_space *swap_address_space(swp_entry_t entry)
static inline loff_t swap_dev_pos(swp_entry_t entry)
swp_entry_t entry)
swp_entry_t folio_entry = folio->swap;
bool swap_cache_has_folio(swp_entry_t entry);
struct folio *swap_cache_get_folio(swp_entry_t entry);
void *swap_cache_get_shadow(swp_entry_t entry);
struct folio *swap_cache_alloc_folio(swp_entry_t entry, gfp_t gfp_flags,
struct folio *folio, swp_entry_t entry);
struct folio *folio, swp_entry_t entry, void *shadow);
void __swap_cache_clear_shadow(swp_entry_t entry, int nr_ents);
void swapcache_clear(struct swap_info_struct *si, swp_entry_t entry, int nr);
struct folio *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
struct folio *swap_cluster_readahead(swp_entry_t entry, gfp_t flag,
struct folio *swapin_readahead(swp_entry_t entry, gfp_t flag,
struct folio *swapin_folio(swp_entry_t entry, struct folio *folio);
static inline int swap_zeromap_batch(swp_entry_t entry, int max_nr,
static inline int non_swapcache_batch(swp_entry_t entry, int max_nr)
static inline struct swap_info_struct *__swap_entry_to_info(swp_entry_t entry)
static inline struct address_space *swap_address_space(swp_entry_t entry)
static inline bool folio_matches_swap_entry(const struct folio *folio, swp_entry_t entry)
static inline struct folio *swap_cluster_readahead(swp_entry_t entry,
static inline struct folio *swapin_readahead(swp_entry_t swp, gfp_t gfp_mask,
static inline struct folio *swapin_folio(swp_entry_t entry, struct folio *folio)
static inline bool swap_cache_has_folio(swp_entry_t entry)
static inline struct folio *swap_cache_get_folio(swp_entry_t entry)
static inline void *swap_cache_get_shadow(swp_entry_t entry)
struct folio *folio, swp_entry_t entry, void *shadow)
static inline int swap_zeromap_batch(swp_entry_t entry, int max_nr,
static inline int non_swapcache_batch(swp_entry_t entry, int max_nr)
static inline unsigned int swp_cluster_offset(swp_entry_t entry)
static inline struct swap_info_struct *__swap_entry_to_info(swp_entry_t entry)
static inline struct swap_cluster_info *__swap_entry_to_cluster(swp_entry_t entry)
unsigned short lookup_swap_cgroup_id(swp_entry_t ent)
swp_entry_t ent)
unsigned short swap_cgroup_clear(swp_entry_t ent, unsigned int nr_ents)
bool swap_cache_has_folio(swp_entry_t entry)
void *swap_cache_get_shadow(swp_entry_t entry)
struct folio *folio, swp_entry_t entry)
static int swap_cache_add_folio(struct folio *folio, swp_entry_t entry,
swp_entry_t entry, void *shadow)
swp_entry_t entry = folio->swap;
swp_entry_t entry = new->swap;
void __swap_cache_clear_shadow(swp_entry_t entry, int nr_ents)
static struct folio *__swap_cache_prepare_and_add(swp_entry_t entry,
struct folio *swap_cache_alloc_folio(swp_entry_t entry, gfp_t gfp_mask,
struct folio *swapin_folio(swp_entry_t entry, struct folio *folio)
struct folio *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
struct folio *swap_cluster_readahead(swp_entry_t entry, gfp_t gfp_mask,
static struct folio *swap_vma_readahead(swp_entry_t targ_entry, gfp_t gfp_mask,
struct folio *swap_cache_get_folio(swp_entry_t entry)
struct folio *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask,
static struct swap_info_struct *swap_entry_to_info(swp_entry_t entry)
swp_entry_t entry = folio->swap;
swp_entry_t entry = folio->swap;
struct swap_info_struct *get_swap_device(swp_entry_t entry)
swp_entry_t entry = swp_entry(si->type, offset);
int __swap_count(swp_entry_t entry)
bool swap_entry_swapped(struct swap_info_struct *si, swp_entry_t entry)
int swp_swapcount(swp_entry_t entry)
swp_entry_t entry, int order)
swp_entry_t entry = folio->swap;
void swap_put_entries_direct(swp_entry_t entry, int nr)
swp_entry_t swap_alloc_hibernation_slot(int type)
swp_entry_t entry = {0};
void swap_free_hibernation_slot(swp_entry_t entry)
const swp_entry_t entry = swp_entry(si->type, offset);
unsigned long addr, swp_entry_t entry, struct folio *folio)
swp_entry_t swp_entry;
swp_entry_t entry;
swp_entry_t entry = swp_entry(0, ~0UL);
static int __swap_duplicate(swp_entry_t entry, unsigned char usage, int nr)
int swap_dup_entry_direct(swp_entry_t entry)
int add_swap_count_continuation(swp_entry_t entry, gfp_t gfp_mask)
static int __swap_duplicate(swp_entry_t entry, unsigned char usage, int nr);
struct swap_info_struct *si, swp_entry_t entry)
swp_entry_t swap = folio->swap;
swp_entry_t swpentry;
swp_entry_t page_swpentry = page_swap_entry(page);
swp_entry_t swp = folio->swap;
swp_entry_t swp = folio->swap;
void zswap_invalidate(swp_entry_t swp)
swp_entry_t swpentry;
static inline struct xarray *swap_zswap_tree(swp_entry_t swp)
swp_entry_t swpentry)