mirror of
https://github.com/drasko/codezero.git
synced 2026-01-14 11:53: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.
24 lines
528 B
C
24 lines
528 B
C
/*
|
|
* Capability-related operations of the pager.
|
|
*
|
|
* Copyright (C) 2009 Bahadir Balban
|
|
*/
|
|
#ifndef __MM0_CAPABILITY_H__
|
|
#define __MM0_CAPABILITY_H__
|
|
|
|
#include <l4lib/capability.h>
|
|
#include <task.h>
|
|
|
|
extern struct cap_list capability_list;
|
|
|
|
struct initdata;
|
|
int read_pager_capabilities();
|
|
void copy_boot_capabilities();
|
|
|
|
int sys_request_cap(struct tcb *sender, struct capability *c);
|
|
|
|
void cap_print(struct capability *cap);
|
|
void cap_list_print(struct cap_list *cap_list);
|
|
void setup_caps();
|
|
#endif /* __MM0_CAPABILITY_H__ */
|