repo: https://github.com/T-head-Semi/linux commit: b1313fe517ca3703119dcc99ef3bbf75ab42bcfb Change-Id: I6cbb35294024ea3a66140e311f4bb705fd7fd626
32 lines
841 B
C
32 lines
841 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_SWAP_SLOTS_H
|
|
#define _LINUX_SWAP_SLOTS_H
|
|
|
|
#include <linux/swap.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/mutex.h>
|
|
|
|
#define SWAP_SLOTS_CACHE_SIZE SWAP_BATCH
|
|
#define THRESHOLD_ACTIVATE_SWAP_SLOTS_CACHE (5*SWAP_SLOTS_CACHE_SIZE)
|
|
#define THRESHOLD_DEACTIVATE_SWAP_SLOTS_CACHE (2*SWAP_SLOTS_CACHE_SIZE)
|
|
|
|
struct swap_slots_cache {
|
|
bool lock_initialized;
|
|
struct mutex alloc_lock; /* protects slots, nr, cur */
|
|
swp_entry_t *slots;
|
|
int nr;
|
|
int cur;
|
|
spinlock_t free_lock; /* protects slots_ret, n_ret */
|
|
swp_entry_t *slots_ret;
|
|
int n_ret;
|
|
};
|
|
|
|
void disable_swap_slots_cache_lock(void);
|
|
void reenable_swap_slots_cache_unlock(void);
|
|
void enable_swap_slots_cache(void);
|
|
int free_swap_slot(swp_entry_t entry);
|
|
|
|
extern bool swap_slot_cache_enabled;
|
|
|
|
#endif /* _LINUX_SWAP_SLOTS_H */
|