1
/*
2
* \brief Process-creation interface
3
* \author Norman Feske
4
* \date 2006-06-22
5
*/
6
7
/*
8
* Copyright (C) 2006-2013 Genode Labs GmbH
9
*
10
* This file is part of the Genode OS framework, which is distributed
11
* under the terms of the GNU General Public License version 2.
12
*/
13
14
#
ifndef _INCLUDE__BASE__PROCESS_H_
15
#
define _INCLUDE__BASE__PROCESS_H_
16
17
#
include <ram_session/capability.h>
18
#
include <rm_session/client.h>
19
#
include <pd_session/client.h>
20
#
include <cpu_session/client.h>
21
#
include <parent/capability.h>
22
23
namespace
Genode {
class
Process;
}
24
25
26
class
Genode::
Process
27
{
28
private
:
29
30
Pd_session_client _pd_session_client;
31
Thread_capability _thread0_cap;
32
Cpu_session_client _cpu_session_client;
33
Rm_session_client _rm_session_client;
34
35
static
Dataspace_capability _dynamic_linker_cap;
36
37
public
:
38
39
/**
40
* Constructor
41
*
42
* \param elf_data_ds dataspace that contains the elf binary
43
* \param pd_session the new protection domain
44
* \param ram_session RAM session providing the BSS for the
45
* new protection domain
46
* \param cpu_session CPU session for the new protection domain
47
* \param rm_session RM session for the new protection domain
48
* \param parent parent of the new protection domain
49
* \param name name of protection domain (can be used
50
* for debugging)
51
*
52
* The dataspace `elf_data_ds` can be read-only.
53
*
54
* On construction of a protection domain, execution of the initial
55
* thread is started immediately.
56
*/
57
Process(
Dataspace_capability
elf_data_ds
,
58
Pd_session_capability
pd_session
,
59
Ram_session_capability
ram_session
,
60
Cpu_session_capability
cpu_session
,
61
Rm_session_capability
rm_session
,
62
Parent_capability
parent
,
63
char const
*
name
)
;
64
65
/**
66
* Destructor
67
*
68
* When called, the protection domain gets killed.
69
*/
70
~
Process(
)
;
71
72
static
void
dynamic_linker(
Dataspace_capability
dynamic_linker_cap
)
73
{
74
_dynamic_linker_cap =
dynamic_linker_cap;
75
}
76
77
Thread_capability
main_thread_cap(
)
const
{
return
_thread0_cap
;
}
78
}
;
79
80
#
endif /* _INCLUDE__BASE__PROCESS_H_ */