| /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ |
| /* |
| * Copyright (c) 2019 Amlogic, Inc. All rights reserved. |
| */ |
| |
| #ifndef __PIN_FILE_H__ |
| #define __PIN_FILE_H__ |
| |
| struct aml_pin_file { |
| spinlock_t pin_file_lock; /* for address space */ |
| unsigned int start_bit; |
| int cached_pages; |
| struct vm_struct *root_vm; |
| unsigned long *bitmap; |
| struct list_head list; |
| spinlock_t page_lock; /* for cached pages */ |
| }; |
| |
| /* the macro must large than enum mapping_flags in include/linux/pagemap.h */ |
| #define AS_LOCK_MAPPING 10 |
| |
| struct page *aml_mlock_page_as_lock_mapping(struct vm_area_struct *vma, |
| struct mm_struct *mm, struct vm_fault *vmf, unsigned long address); |
| |
| void reset_page_vma_flags(struct vm_area_struct *vma, vm_flags_t flags); |
| |
| int aml_is_pin_locked_file(struct page *page); |
| |
| void aml_set_pin_locked_file(struct page *page); |
| |
| void aml_clear_pin_locked_file(struct page *page); |
| |
| extern int sysctrl_shrink_unevictable; |
| |
| #endif /* __PIN_FILE_H__ */ |