1 /* 2 * (c) 2008-2009 Alexander Warg <warg@os.inf.tu-dresden.de> 3 * economic rights: Technische Universität Dresden (Germany) 4 * 5 * This file is part of TUD:OS and distributed under the terms of the 6 * GNU General Public License 2. 7 * Please see the COPYING-GPL-2 file for details. 8 */ 9 #pragma once 10 11 #include "dataspace.h" 12 13 namespace Moe { 14 15 /** 16 * A dataspace serving a contiguous range of physical memory. 17 */ 18 class Dataspace_cont : public Dataspace 19 { 20 public: 21 Dataspace_cont(void *start, unsigned long size, 22 Flags flags, 23 unsigned char page_shift); 24 ~Dataspace_cont()25 ~Dataspace_cont() { unmap(); } 26 27 Address address(l4_addr_t offset, 28 Flags flags, l4_addr_t hot_spot = 0, 29 l4_addr_t min = 0, l4_addr_t max = ~0) const override; 30 int copy_address(l4_addr_t offset, Flags flags, 31 l4_addr_t *addr, unsigned long *size) const override; 32 33 int dma_map(Dma_space *dma, l4_addr_t offset, l4_size_t *size, 34 Dma_attribs dma_attrs, Dma_space::Direction dir, 35 Dma_space::Dma_addr *dma_addr) override; 36 37 protected: start(void * start)38 void start(void *start) { _start = (char*)start; } start()39 void *start() { return _start; } 40 41 private: 42 void unmap() const throw(); 43 44 char *_start; 45 }; 46 47 }; 48 49