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