#include <l4/sys/types.h>
#include <l4/l4rm/l4rm.h>
#include "cfg.h"
#include "debug.h"
Go to the source code of this file.
Data Structures | |
struct | app_addr_t |
Pair of addresses. More... | |
struct | app_area_t |
Application's area to page by our pager thread. More... | |
struct | app_t |
Application descriptor. More... | |
Defines | |
#define | MAX_APP_AREA 28 |
maximum entries for memory regions of an application | |
#define | DEFAULT_PRIO 0x10 |
default priority for new tasks | |
#define | DEFAULT_MCP 0xff |
default mcp for new tasks | |
#define | APP_AREA_VALID 0x0001 |
entry is valid | |
#define | APP_AREA_PAGE 0x0002 |
forward pagefaults to ds | |
#define | APP_AREA_MMIO 0x0004 |
don't kill this area | |
#define | APP_AREA_NOSUP 0x0008 |
don't page superpages | |
#define | APP_MODE_SIGMA0 0x00000001 |
emulate sigma0 style application | |
#define | APP_MODE_INTERP 0x00000004 |
interpret using libld-l4.s.so | |
#define | APP_DIRECTMAP 0x00000008 |
map program sections one-by-one | |
#define | APP_SYMBOLS 0x00000010 |
load symbols | |
#define | APP_LINES 0x00000020 |
load lines information | |
#define | APP_ALLOW_KILL 0x00000040 |
killing other apps is allowed | |
#define | APP_ALLOW_VGA 0x00000080 |
access to VGA memory allowed | |
#define | APP_NOSIGMA0 0x00000100 |
don't page other regions | |
#define | APP_ALLOW_CLI 0x00000200 |
task may execute cli/sti | |
#define | APP_SHOW_AREAS 0x00000400 |
show app areas before start | |
#define | APP_STOP 0x00000800 |
stop app just before start | |
#define | APP_CONT 0x00001000 |
ensure that we cont only once | |
#define | APP_NOSUPER 0x00002000 |
don't page superpages | |
#define | APP_ALL_WRITBLE 0x00004000 |
all sections writable | |
#define | APP_ALLOW_BIOS 0x00008000 |
access to BIOS allowed | |
#define | APP_MSG_IO 0x00010000 |
internal pager flag | |
#define | APP_HASH_BINARY 0x00020000 |
hash sections of binary | |
#define | HERE_TO_APP(addr, base) (base).app + (((l4_addr_t)(addr) - (base).here)) |
Functions | |
app_t * | task_to_app (l4_threadid_t tid) |
Return the address of the task struct. | |
int | create_app_desc (app_t **new_app) |
Create a new app_t descriptor. | |
void | app_msg (app_t *app, const char *format,...) |
Dump a message corresponding to an application. | |
void | app_list_addr (app_t *app) |
Dump all app_areas for debugging purposes. | |
int | app_boot (cfg_task_t *ct, l4_taskid_t owner) |
int | app_cont (app_t *app) |
int | app_kill (l4_taskid_t task_id, l4_taskid_t caller) |
Kill application. | |
int | app_dump (unsigned long task_id) |
Dump application to standard output. | |
int | app_info (unsigned long task_id, l4dm_dataspace_t *l4env_ds, l4_threadid_t client, char **fname) |
Deliver application info to flexpage. | |
void | app_share_sections_with_client (app_t *app, l4_threadid_t client) |
Share all sections which are not exclusiv owned by the applications to the application. | |
int | init_infopage (l4env_infopage_t *env) |
Initialize the application's environment infopage. | |
int | app_attach_ds_to_pager (app_t *app, l4dm_dataspace_t *ds, l4_addr_t addr, l4_size_t size, l4_uint16_t type, l4_uint32_t rights, const char *dbg_name, app_area_t **aa) |
Attach dataspace to pager. |
int app_attach_ds_to_pager | ( | app_t * | app, | |
l4dm_dataspace_t * | ds, | |||
l4_addr_t | addr, | |||
l4_size_t | size, | |||
l4_uint16_t | type, | |||
l4_uint32_t | rights, | |||
const char * | dbg_name, | |||
app_area_t ** | aa | |||
) |
Attach dataspace to pager.
Therefore it is accessible by the application.
app | application | |
ds | dataspace to attach | |
addr | start address of dataspace inside application. If L4_MAX_ADDRESS, then do not make the dataspace accessible from the application but only register to allow smoothly shutdown of dataspace on exit of the application. | |
size | size of dataspace | |
type | type | |
rights | rights for the pager | |
dbg_name | name of application area for debugging purposes |
aa | application area |
< forward pagefaults to ds
int app_boot | ( | cfg_task_t * | ct, | |
l4_taskid_t | owner | |||
) |
< stop app just before start
int app_cont | ( | app_t * | app | ) |
< ensure that we cont only once
< ensure that we cont only once
< emulate sigma0 style application
int app_dump | ( | unsigned long | task_id | ) |
Dump application to standard output.
task_id | L4 task id or 0 to dump all tasks |
int app_info | ( | unsigned long | task_id, | |
l4dm_dataspace_t * | l4env_ds, | |||
l4_threadid_t | client, | |||
char ** | fname | |||
) |
Deliver application info to flexpage.
task_id | L4 task id | |
l4env_ds | dataspace containing l4env infopage information | |
client | Client to transfer the ownership to |
fname | application name |
int app_kill | ( | l4_taskid_t | task_id, | |
l4_taskid_t | caller | |||
) |
Kill application.
task_id | task to be killed | |
caller_id | task which wants to kill task_id |
< killing other apps is allowed
void app_list_addr | ( | app_t * | app | ) |
Dump all app_areas for debugging purposes.
void app_msg | ( | app_t * | app, | |
const char * | format, | |||
... | ||||
) |
Dump a message corresponding to an application.
If the application has already an task number, print it in hashes after the name of the application.
void app_share_sections_with_client | ( | app_t * | app, | |
l4_threadid_t | client | |||
) |
Share all sections which are not exclusiv owned by the applications to the application.
Modules have the L4_DSTYPE_APP_IS_OWNER bit set which means that their ownership is already transfered to the application
int create_app_desc | ( | app_t ** | new_app | ) |
Create a new app_t descriptor.
new_app | pointer to new app descriptor |
int init_infopage | ( | l4env_infopage_t * | env | ) |
Initialize the application's environment infopage.
env | pointer to L4env infopage |
app_t* task_to_app | ( | l4_threadid_t | tid | ) |
Return the address of the task struct.
tid | L4 thread ID |