xref: /haiku/src/system/kernel/vm/VMAnonymousNoSwapCache.h (revision be7328a9f6b3c55eec71d403a0367d80fd4ebd12)
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