Commit Graph

102 Commits

Author SHA1 Message Date
Bahadir Balban
0bd2b78215 Updated two_posix example cml 2009-12-01 14:36:50 +02:00
Bahadir Balban
e0c40ece5d Added a new irq_control system call
This is currently an empty call. It will be used for registering,
receiving and releasing irqs.
2009-11-23 16:46:51 +02:00
Bahadir Balban
2a36465100 Updated example cmls with new symbols 2009-11-22 15:13:18 +02:00
Bahadir Balban
19b4c6c4c1 Moved capability struct to api/capability.h for userspace coherence
Userspace often breaks as we change the capability structure. Now
structure is under api/ so userspace can also update with changes.
2009-11-22 15:08:29 +02:00
Bahadir Balban
a4176fe837 Merge branch 'master' of git://www.b-labs.co.uk/amit/git/codezero into amit
Conflicts:
	conts/posix/mm0/mm/task.c
2009-11-20 00:20:52 +02:00
Bahadir Balban
688936f541 Merge branch 'master' into devel 2009-11-20 00:18:45 +02:00
Amit Mahajan
1384701a53 Corrected value assignment error in stack_used variable 2009-11-19 21:32:16 +05:30
Amit Mahajan
9bd5bd889f Prevent recompilation of libdev 2009-11-19 21:18:33 +05:30
Bahadir Balban
351c986b73 Fixed a minor issue with mm0 mm/task.c local variable initialization 2009-11-19 17:29:08 +02:00
Bahadir Balban
3f1045d66e Merge branch 'master' of git://www.b-labs.co.uk/bora/git/codezero into bora
Conflicts:
	config/cml/container_ruleset.template
	config/configuration.py
	conts/examples/example1/SConstruct
	conts/libl4thread/include/l4thread/thread.h
2009-11-19 14:41:07 +02:00
Bahadir Balban
51a12a507f Error recovery fixes to mm0 and l4_map_helper 2009-11-18 10:55:53 +02:00
Bahadir Balban
89093b8ace Inter-container ipc tests working. 2009-11-17 23:34:37 +02:00
Bora Sahin
a5eede8fb9 The very same fix we applied to the thread library but for posix this time. 2009-11-17 12:05:56 +02:00
Bahadir Balban
317ce0bd29 Minor fixes to container cml template 2009-11-11 23:11:10 +02:00
Amit Mahajan
d8f480fd1b Compilation errors resolved for 2009Q3 toolchains. 2009-11-11 02:02:27 +05:30
Amit Mahajan
c44d25b596 Taking UART code out from libc and loader and putting in libdev 2009-11-11 02:02:26 +05:30
Bahadir Balban
4ab05d1b2a Added forgotten file
new file:   src/capability.c
2009-11-10 22:23:49 +02:00
Bahadir Balban
34a1c581a3 Added forgotten header 2009-11-10 22:21:19 +02:00
Bahadir Balban
d1bd77a135 Removed cap list prints from mm0 2009-11-10 17:22:46 +02:00
Bahadir Balban
2ba4736a8b Cleaned up various bits with capability syscalls.
Made grant interace same as other calls.
Corrected counting and reading of task capabilities by applying it
to all cap lists that a task has right.
2009-11-10 16:15:14 +02:00
Bahadir Balban
f912f28731 Clarified a few confusing definitions in ipc.c 2009-11-09 22:59:24 +02:00
Bahadir Balban
da8b0a90f3 Fixed error with ipc transfer type checking.
Tested test0 mutex ipc successfully rejecting to occur when given
different micro-capabilities than the actual transfer type.
2009-11-09 22:50:21 +02:00
Bahadir Balban
78917835c7 Substantially fixed cap_split() behaviour.
Need to fix ipc flags capability checking yet.
2009-11-09 19:15:52 +02:00
Bahadir Balban
b24c8eb89d Capability replicate/split/destroy/grant working for test0 ipc.
Implemented a protocol between a client and its pager to
request and get a capability to ipc to another client of the pager.

Pager first ensures the request is valid from its client.
It then tries to use a greater capability that it possesses, to
produce a new capability that the client requested. Once the kernel
validates the correct one and replicates/reduces it to client's
need, it grants it to the client.
2009-11-09 00:40:07 +02:00
Bahadir Balban
1bb2c05c9b Added routines for pager to search a suitable capability to grant to clients
Pager handles client capability requests by using one of its own
capabilities to create a new one that suits the client's needs.

The current issue is that the kernel can have multiple caps and it
may not know which one is suitable for using to create one for the client.

The kernel knows this very well, so the solution would be to attempt to
use capabilities that roughly match (i.e. by type) and leave it to
the kernel to decide whether it is any powerful to suit client's needs.
2009-11-08 17:54:57 +02:00
Bahadir Balban
dc03c7b130 Implemented a protocol between client and pager for requesting caps.
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.
2009-11-08 14:15:33 +02:00
Bahadir Balban
b136b79a2d Capability replicate/deduce/share tested with mm0. 2009-11-07 23:45:57 +02:00
Bahadir Balban
e8f002f879 Fixed most of userspace (mm0) for capability manipulation 2009-11-07 19:43:05 +02:00
Bahadir Balban
e8f9f3f04a Added generic capability operation bits to autogenerated capabilities
cinfo.c generator script now has generic capability operation
bits added to all default capabilities that it generates.
2009-11-07 16:14:14 +02:00
Bahadir Balban
3728e7ef1e Capability manipulation syscalls
Support for capability replicate, share, grant, deduce, and split.
The code builds, but hasn't been tested.
2009-11-07 15:29:52 +02:00
Bahadir Balban
e28658c10e posix: MM0 task page access issues fixed. 2009-11-05 19:04:19 +02:00
Bahadir Balban
d306d6b451 posix: Fixing mm0 mapping task pages incorrectly
Modifying task_virt_to_page() so that it takes into account page
protections. If mm0 writes to a task page that is meant to be
read-only, (e.g. the zero page) the design is broken.

Every access to a task's page will take the page fault route,
and the page fault handler will return the page instead of 0.
2009-11-05 18:25:26 +02:00
Bahadir Balban
35a5dc4c92 Added userland support for exregs/read, mm0 slightly more graceful for illegal access 2009-11-05 15:56:01 +02:00
Bahadir Balban
78635bdd11 posix: When mapping a new task, data segment size was miscalculated 2009-11-05 14:10:22 +02:00
Bahadir Balban
74ad567312 Added err value to vma_split 2009-11-05 13:52:39 +02:00
Bahadir Balban
9b71f2bfe2 Fix for mm0 bss mapping of zero pages starting from wrong offset
bss segment may have some of it at the end of data, but the bits
that lie on a new page need to be mmaped as anonymous. When this
occured we were not passing the new page boundary but the last
data page where bss started
2009-11-05 13:43:38 +02:00
Bahadir Balban
fd04e9d460 Added helper to extract raw thread id from fully qualified thread id
Currently, the tid returned from kernel contains container id as
well, which makes it sufficient to do inter-container syscalls without
any preparation.

The helpers added are for presentation purposes only. Container id
is deleted so that the raw thread id is available for printing or
similar.
2009-11-05 01:47:04 +02:00
Bahadir Balban
d9520adb55 Added means to search for threads in other containers
Thread ids now contain their container ids in the top 2 nibbles.
Threads on other containers can be addressed by changing those
two nibbles. The addressing of inter-container threads are
subject to capabilities.
2009-11-04 20:56:57 +02:00
Bahadir Balban
aeef546544 Changed l4id_t type to unsigned integer. Expanded task_ids to have cid
Task ids are now unsigned as the container ids will need to be encoded
in the id fields as well.

For requests who require even more comprehensive id input, (such as
thread creation) also added is the container id so that threads
_could_ potentially be created in other containers as well.
2009-11-04 16:39:04 +02:00
Amit Mahajan
a41a8e0d93 Some cleanup in uart fixes. 2009-11-02 21:52:33 +05:30
Amit Mahajan
91c617d0b2 Removed hard coded values of toolchain and gcc cpu flags 2009-11-02 21:29:54 +05:30
Bora Sahin
38cf7bc175 POSIX now uses libmem/malloc instead of the built-in one.
(cherry picked from commit 48adbffa6514755385af842f1fe8ca5068229eea)
2009-10-31 14:31:13 +02:00
Bora Sahin
2c53feedb1 malloc is carried from POSIX to libmem/malloc.
This malloc is a very simple first-fit sort of allocator. Now, it builds
without any problem but because we havent fixed include paths and added
it to the referenced libraries in the posix container yet, POSIX doesnt
build. So take it with caution.
(cherry picked from commit 65523743e86268eddd3bd2aab58476003f71c2c2)
2009-10-31 14:28:40 +02:00
Bahadir Balban
2839f46245 Cleanup on previous commits 2009-10-30 21:59:46 +02:00
Bahadir Balban
ee7621b2df Some more progress with debugging pager exits 2009-10-30 18:28:45 +02:00
Bahadir Balban
18ffa0b4d1 Added a TASK_CAP_LIST macro that abstracts away the primary cap list
We moved initial list of a pager's caps from ktcb to task's space
since the task is expected to trust its space.

Most references to task->cap_list had to change. Although a single
cap list only tells part of the story about the task's caps, the
TASK_CAP_LIST macro works for us to get the first private set of
caps that a task has.
2009-10-30 13:46:47 +02:00
Bahadir Balban
5840d6d696 Capability-enabled kernel running 2_posix test OK. 2009-10-27 15:59:07 +02:00
Bahadir Balban
6093214981 Added sharing of pager capabilities with children or siblings
Pagers can now share their own private capabilities with their
paged children, or their siblings with whom they have a common pager
ancestor.

Added flags CAP_SHARE_CHILD and CAP_SHARE_SIBLINGS for that.
2009-10-23 13:50:32 +03:00
Bahadir Balban
0f9ea9674c Progress on capabilities
Capabilities will be shared among collection of threads. A pager
will have a right to share its own capabilities with its space,
its thread group and its container.

Currently sharing is possible with only all of the caps. Next,
it will be support for cap splitting, granting, and partial sharing
and granting.
2009-10-22 14:04:25 +03:00
Bahadir Balban
cc2d740900 Neater thread creation flags. 2009-10-21 16:58:10 +03:00