1*5c99d639SIngo Weinhold /* 2*5c99d639SIngo Weinhold * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. 3*5c99d639SIngo Weinhold * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de. 4*5c99d639SIngo Weinhold * Distributed under the terms of the MIT License. 5*5c99d639SIngo Weinhold * 6*5c99d639SIngo Weinhold * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. 7*5c99d639SIngo Weinhold * Distributed under the terms of the NewOS License. 8*5c99d639SIngo Weinhold */ 9*5c99d639SIngo Weinhold #ifndef _KERNEL_VM_STORE_ANONYMOUS_H 10*5c99d639SIngo Weinhold #define _KERNEL_VM_STORE_ANONYMOUS_H 11*5c99d639SIngo Weinhold 12*5c99d639SIngo Weinhold #include <vm_types.h> 13*5c99d639SIngo Weinhold 14*5c99d639SIngo Weinhold 15*5c99d639SIngo Weinhold class VMAnonymousNoSwapCache : public VMCache { 16*5c99d639SIngo Weinhold public: 17*5c99d639SIngo Weinhold virtual ~VMAnonymousNoSwapCache(); 18*5c99d639SIngo Weinhold 19*5c99d639SIngo Weinhold status_t Init(bool canOvercommit, int32 numPrecommittedPages, 20*5c99d639SIngo Weinhold int32 numGuardPages); 21*5c99d639SIngo Weinhold 22*5c99d639SIngo Weinhold virtual status_t Commit(off_t size); 23*5c99d639SIngo Weinhold virtual bool HasPage(off_t offset); 24*5c99d639SIngo Weinhold 25*5c99d639SIngo Weinhold virtual status_t Read(off_t offset, const iovec *vecs, size_t count, 26*5c99d639SIngo Weinhold size_t *_numBytes, bool fsReenter); 27*5c99d639SIngo Weinhold virtual status_t Write(off_t offset, const iovec *vecs, size_t count, 28*5c99d639SIngo Weinhold size_t *_numBytes, bool fsReenter); 29*5c99d639SIngo Weinhold 30*5c99d639SIngo Weinhold virtual status_t Fault(struct vm_address_space *aspace, off_t offset); 31*5c99d639SIngo Weinhold 32*5c99d639SIngo Weinhold virtual void MergeStore(VMCache* source); 33*5c99d639SIngo Weinhold 34*5c99d639SIngo Weinhold private: 35*5c99d639SIngo Weinhold bool fCanOvercommit; 36*5c99d639SIngo Weinhold bool fHasPrecommitted; 37*5c99d639SIngo Weinhold uint8 fPrecommittedPages; 38*5c99d639SIngo Weinhold int32 fGuardedSize; 39*5c99d639SIngo Weinhold }; 40*5c99d639SIngo Weinhold 41*5c99d639SIngo Weinhold 42*5c99d639SIngo Weinhold #endif /* _KERNEL_VM_STORE_ANONYMOUS_H */ 43