15c99d639SIngo Weinhold /* 2be7328a9SIngo Weinhold * Copyright 2008-2009, Ingo Weinhold, ingo_weinhold@gmx.de. 35c99d639SIngo Weinhold * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de. 45c99d639SIngo Weinhold * Distributed under the terms of the MIT License. 55c99d639SIngo Weinhold * 65c99d639SIngo Weinhold * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. 75c99d639SIngo Weinhold * Distributed under the terms of the NewOS License. 85c99d639SIngo Weinhold */ 9c586076dSIngo Weinhold #ifndef _KERNEL_VM_STORE_ANONYMOUS_NO_SWAP_H 10c586076dSIngo Weinhold #define _KERNEL_VM_STORE_ANONYMOUS_NO_SWAP_H 115c99d639SIngo Weinhold 12be7328a9SIngo Weinhold 13be7328a9SIngo Weinhold #include <vm/VMCache.h> 145c99d639SIngo Weinhold 155c99d639SIngo Weinhold 165c99d639SIngo Weinhold class VMAnonymousNoSwapCache : public VMCache { 175c99d639SIngo Weinhold public: 185c99d639SIngo Weinhold virtual ~VMAnonymousNoSwapCache(); 195c99d639SIngo Weinhold 20*ab3d6a3eSIngo Weinhold status_t Init(bool canOvercommit, 21*ab3d6a3eSIngo Weinhold int32 numPrecommittedPages, 22*ab3d6a3eSIngo Weinhold int32 numGuardPages, 23*ab3d6a3eSIngo Weinhold uint32 allocationFlags); 245c99d639SIngo Weinhold 25cff6e9e4SIngo Weinhold virtual status_t Commit(off_t size, int priority); 265c99d639SIngo Weinhold virtual bool HasPage(off_t offset); 275c99d639SIngo Weinhold 28*ab3d6a3eSIngo Weinhold virtual status_t Read(off_t offset, const iovec* vecs, 29*ab3d6a3eSIngo Weinhold size_t count, uint32 flags, 30*ab3d6a3eSIngo Weinhold size_t* _numBytes); 31*ab3d6a3eSIngo Weinhold virtual status_t Write(off_t offset, const iovec* vecs, 32*ab3d6a3eSIngo Weinhold size_t count, uint32 flags, 33*ab3d6a3eSIngo Weinhold size_t* _numBytes); 345c99d639SIngo Weinhold 35*ab3d6a3eSIngo Weinhold virtual status_t Fault(struct VMAddressSpace* aspace, 36*ab3d6a3eSIngo Weinhold off_t offset); 375c99d639SIngo Weinhold 385c99d639SIngo Weinhold virtual void MergeStore(VMCache* source); 395c99d639SIngo Weinhold 405c99d639SIngo Weinhold private: 415c99d639SIngo Weinhold bool fCanOvercommit; 425c99d639SIngo Weinhold bool fHasPrecommitted; 435c99d639SIngo Weinhold uint8 fPrecommittedPages; 445c99d639SIngo Weinhold int32 fGuardedSize; 455c99d639SIngo Weinhold }; 465c99d639SIngo Weinhold 475c99d639SIngo Weinhold 48c586076dSIngo Weinhold #endif /* _KERNEL_VM_STORE_ANONYMOUS_NO_SWAP_H */ 49