1// vi:set ft=cpp: -*- Mode: C++ -*-
2/**
3 * \file
4 * Virtualization interface
5 */
6/*
7 * (c) 2008-2010 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
8 *               Alexander Warg <warg@os.inf.tu-dresden.de>
9 *     economic rights: Technische Universität Dresden (Germany)
10 *
11 * This file is part of TUD:OS and distributed under the terms of the
12 * GNU General Public License 2.
13 * Please see the COPYING-GPL-2 file for details.
14 *
15 * As a special exception, you may use this file as part of a free software
16 * library without restriction.  Specifically, if other files instantiate
17 * templates or use macros or inline functions from this file, or you compile
18 * this file and link it with other files to produce an executable, this
19 * file does not by itself cause the resulting executable to be covered by
20 * the GNU General Public License.  This exception does not however
21 * invalidate any other reasons why the executable file might be covered by
22 * the GNU General Public License.
23 */
24
25#pragma once
26
27#include <l4/sys/vm.h>
28#include <l4/sys/task>
29
30namespace L4 {
31
32/**
33 * Virtual machine host address space.
34 * \ingroup l4_kernel_object_api
35 *
36 * L4::Vm is a specialisation of L4::Task, used for virtual machines. The
37 * microkernel employs an appropriate page-table format for hosting VMs, such
38 * as ePT on VT-x. On Arm, it offers a call to make the virtual GICC area
39 * available to the VM.
40 */
41class Vm : public Kobject_t<Vm, Task, L4_PROTO_VM>
42{
43protected:
44  Vm();
45
46private:
47  Vm(Vm const &);
48  void operator = (Vm const &);
49};
50
51};
52