15c99d639SIngo Weinhold /* 2*be7328a9SIngo 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 12*be7328a9SIngo Weinhold 13*be7328a9SIngo Weinhold #include <vm/VMCache.h> 145c99d639SIngo Weinhold 155c99d639SIngo Weinhold 165c99d639SIngo Weinhold class VMAnonymousNoSwapCache : public VMCache { 175c99d639SIngo Weinhold public: 185c99d639SIngo Weinhold virtual ~VMAnonymousNoSwapCache(); 195c99d639SIngo Weinhold 205c99d639SIngo Weinhold status_t Init(bool canOvercommit, int32 numPrecommittedPages, 215c99d639SIngo Weinhold int32 numGuardPages); 225c99d639SIngo Weinhold 235c99d639SIngo Weinhold virtual status_t Commit(off_t size); 245c99d639SIngo Weinhold virtual bool HasPage(off_t offset); 255c99d639SIngo Weinhold 265c99d639SIngo Weinhold virtual status_t Read(off_t offset, const iovec *vecs, size_t count, 274eaa43acSIngo Weinhold uint32 flags, size_t *_numBytes); 285c99d639SIngo Weinhold virtual status_t Write(off_t offset, const iovec *vecs, size_t count, 292a79a768SIngo Weinhold uint32 flags, size_t *_numBytes); 305c99d639SIngo Weinhold 31b0db552cSIngo Weinhold virtual status_t Fault(struct VMAddressSpace *aspace, off_t offset); 325c99d639SIngo Weinhold 335c99d639SIngo Weinhold virtual void MergeStore(VMCache* source); 345c99d639SIngo Weinhold 355c99d639SIngo Weinhold private: 365c99d639SIngo Weinhold bool fCanOvercommit; 375c99d639SIngo Weinhold bool fHasPrecommitted; 385c99d639SIngo Weinhold uint8 fPrecommittedPages; 395c99d639SIngo Weinhold int32 fGuardedSize; 405c99d639SIngo Weinhold }; 415c99d639SIngo Weinhold 425c99d639SIngo Weinhold 43c586076dSIngo Weinhold #endif /* _KERNEL_VM_STORE_ANONYMOUS_NO_SWAP_H */ 44