1/*
2 * Copyright 2010, Ingo Weinhold <ingo_weinhold@gmx.de>.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _KERNEL_GENERIC_VM_PHYSICAL_PAGE_MAPPER_CLASS_H
6#define _KERNEL_GENERIC_VM_PHYSICAL_PAGE_MAPPER_CLASS_H
7
8
9#include <vm/VMTranslationMap.h>
10
11
12struct GenericVMPhysicalPageMapper : VMPhysicalPageMapper {
13								GenericVMPhysicalPageMapper();
14	virtual						~GenericVMPhysicalPageMapper();
15
16	virtual	status_t			GetPage(phys_addr_t physicalAddress,
17									addr_t* _virtualAddress,
18									void** _handle);
19	virtual	status_t			PutPage(addr_t virtualAddress,
20									void* handle);
21
22	virtual	status_t			GetPageCurrentCPU(
23									phys_addr_t physicalAddress,
24									addr_t* _virtualAddress,
25									void** _handle);
26	virtual	status_t			PutPageCurrentCPU(addr_t virtualAddress,
27									void* _handle);
28
29	virtual	status_t			GetPageDebug(phys_addr_t physicalAddress,
30									addr_t* _virtualAddress,
31									void** _handle);
32	virtual	status_t			PutPageDebug(addr_t virtualAddress,
33									void* handle);
34
35	virtual	status_t			MemsetPhysical(phys_addr_t address, int value,
36									phys_size_t length);
37	virtual	status_t			MemcpyFromPhysical(void* to, phys_addr_t from,
38									size_t length, bool user);
39	virtual	status_t			MemcpyToPhysical(phys_addr_t to,
40									const void* from, size_t length, bool user);
41	virtual	void				MemcpyPhysicalPage(phys_addr_t to,
42									phys_addr_t from);
43};
44
45
46#endif	// _KERNEL_GENERIC_VM_PHYSICAL_PAGE_MAPPER_CLASS_H
47