1 // vi:set ft=cpp: -*- Mode: C++ -*- 2 /** 3 * \file 4 * Virtualization interface 5 */ 6 /* 7 * (c) 2018 Adam Lackorzynski <adam@l4re.org> 8 * 9 * This file is part of TUD:OS and distributed under the terms of the 10 * GNU General Public License 2. 11 * Please see the COPYING-GPL-2 file for details. 12 * 13 * As a special exception, you may use this file as part of a free software 14 * library without restriction. Specifically, if other files instantiate 15 * templates or use macros or inline functions from this file, or you compile 16 * this file and link it with other files to produce an executable, this 17 * file does not by itself cause the resulting executable to be covered by 18 * the GNU General Public License. This exception does not however 19 * invalidate any other reasons why the executable file might be covered by 20 * the GNU General Public License. 21 */ 22 #pragma once 23 24 #include <l4/sys/task> 25 26 namespace L4 { 27 28 class Vm : public Kobject_t<Vm, Task, L4_PROTO_VM> 29 { 30 public: 31 /* 32 * Map the GIC's virtual GICC page to the task. 33 * 34 * \param vgicc_fpage Flexpage that describes an area in the address space 35 * of the destination task to map the vGICC page to. 36 * \utcb{utcb} 37 * 38 * \return Syscall return tag. 39 */ 40 l4_msgtag_t vgicc_map(l4_fpage_t const vgicc_fpage, 41 l4_utcb_t *utcb = l4_utcb()) noexcept 42 { return l4_task_vgicc_map_u(cap(), vgicc_fpage, utcb); } 43 44 protected: 45 Vm(); 46 47 private: 48 Vm(Vm const &); 49 void operator = (Vm const &); 50 }; 51 52 } 53