vm_compressor_pager.h [plain text]
#ifdef XNU_KERNEL_PRIVATE
#ifndef _VM_VM_COMPRESSOR_PAGER_H_
#define _VM_VM_COMPRESSOR_PAGER_H_
#include <mach/mach_types.h>
#include <kern/kern_types.h>
#include <vm/vm_external.h>
extern kern_return_t vm_compressor_pager_put(
memory_object_t mem_obj,
memory_object_offset_t offset,
ppnum_t ppnum,
void **current_chead,
char *scratch_buf);
extern kern_return_t vm_compressor_pager_get(
memory_object_t mem_obj,
memory_object_offset_t offset,
ppnum_t ppnum,
int *my_fault_type,
int flags);
#define C_DONT_BLOCK 0x01
#define C_KEEP 0x02
extern void vm_compressor_pager_state_clr(
memory_object_t mem_obj,
memory_object_offset_t offset);
extern vm_external_state_t vm_compressor_pager_state_get(
memory_object_t mem_obj,
memory_object_offset_t offset);
#define VM_COMPRESSOR_PAGER_STATE_GET(object, offset) \
(((COMPRESSED_PAGER_IS_ACTIVE || DEFAULT_FREEZER_COMPRESSED_PAGER_IS_ACTIVE) && \
(object)->internal && \
(object)->pager != NULL && \
!(object)->terminating && \
(object)->alive) \
? vm_compressor_pager_state_get((object)->pager, \
(offset) + (object)->paging_offset) \
: VM_EXTERNAL_STATE_UNKNOWN)
#define VM_COMPRESSOR_PAGER_STATE_CLR(object, offset) \
MACRO_BEGIN \
if ((COMPRESSED_PAGER_IS_ACTIVE || DEFAULT_FREEZER_COMPRESSED_PAGER_IS_ACTIVE) && \
(object)->internal && \
(object)->pager != NULL && \
!(object)->terminating && \
(object)->alive) { \
vm_compressor_pager_state_clr( \
(object)->pager, \
(offset) + (object)->paging_offset); \
} \
MACRO_END
extern void vm_compressor_init(void);
extern int vm_compressor_put(ppnum_t pn, int *slot, void **current_chead, char *scratch_buf);
extern int vm_compressor_get(ppnum_t pn, int *slot, int flags);
extern void vm_compressor_free(int *slot);
#endif
#endif