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