mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 19:03:15 +01:00
In posix, test0 makes inter-space ipc for testing extended ipc. This correctly fails when only the cap to ipc to pager is given to all tasks in the container. In order to overcome this problem, the tasks who fork for doing ipc to each other make a request to the pager to get capabilities to do so. Pager finds its own widened ipc capability over the container, replicates it, validates and reduces it to desired boundaries (i.e. just ipc betw. two spaces) and grants it as IMMUTABLE to requesting tasks. This protocol may be useful in implementing a client/server capability request relationship. Code builds but untested.
39 lines
817 B
C
39 lines
817 B
C
/*
|
|
* Data that comes from the kernel, and other init data.
|
|
*
|
|
* Copyright (C) 2007 Bahadir Balban
|
|
*/
|
|
#ifndef __MM_INIT_H__
|
|
#define __MM_INIT_H__
|
|
|
|
#include <l4/macros.h>
|
|
#include <l4/config.h>
|
|
#include <l4/types.h>
|
|
#include INC_PLAT(offsets.h)
|
|
#include INC_GLUE(memory.h)
|
|
#include INC_GLUE(memlayout.h)
|
|
#include <bootdesc.h>
|
|
#include <physmem.h>
|
|
#include <vm_area.h>
|
|
#include <capability.h>
|
|
|
|
struct initdata {
|
|
struct bootdesc *bootdesc;
|
|
struct page_bitmap *page_map;
|
|
unsigned long pager_utcb_virt;
|
|
unsigned long pager_utcb_phys;
|
|
struct link boot_file_list;
|
|
};
|
|
|
|
extern struct initdata initdata;
|
|
|
|
void init(void);
|
|
|
|
void copy_boot_capabilities(int ncaps);
|
|
/* TODO: Remove this stuff from here. */
|
|
int init_devzero(void);
|
|
struct vm_file *get_devzero(void);
|
|
int init_execve(char *path);
|
|
|
|
#endif /* __MM_INIT_H__ */
|