Commit Graph

888 Commits

Author SHA1 Message Date
Bahadir Balban
b933db1e36 Fixed target symbol parsing in pre-typed capabilities
Also renamed CONT to CONTAINER on certain symbols
2009-11-17 12:34:59 +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
Bora Sahin
682c62f8bb A fix and a helper macro for the thread library.
The fix solves the problem of giving the last slice from a pool.

The helper macro makes utcb space creation easy for the user because we have to
consider a few things like alignment and total allocated space.
2009-11-16 21:49:37 +02:00
Bahadir Balban
8856609896 cinfo is compiling with new changes 2009-11-16 21:25:38 +02:00
Bahadir Balban
2eabc22184 Few more minor fixes on cappool and capctrl 2009-11-16 20:38:46 +02:00
Bahadir Balban
93c0d244a4 Removed unnecessary bits 2009-11-16 20:21:12 +02:00
Bahadir Balban
60759689a9 More progress on parsing custom and typed capability symbols 2009-11-16 20:17:55 +02:00
Bora Sahin
7fb923cd35 A workaround for an unmatched locker-unlocker mutex problem.
If sleepers on a mutex were more than one, only one of them was woken up. This
caused the other ones to sleep forever. Now, there is not any facility to check
if there are still sleepers on the kernel space when a thread is about to unlock
a mutex. To workaround this problem, we started waking up all the threads
instead of one. This brings another problem called thundering herd but also
provides random fairness which gives more oppurtunity to a higher priority
thread to get the lock.
2009-11-16 19:06:45 +02:00
Bahadir Balban
b50c3f6f2b Half-way through prepare_capability() 2009-11-16 18:51:36 +02:00
Bahadir Balban
0c88f96935 Added a CAP_ prefix to all cap symbols for easier processing 2009-11-15 14:07:25 +02:00
Bahadir Balban
8a9d5b8ee5 Added capability control capability to caps configured as standard 2009-11-15 12:39:30 +02:00
Bahadir Balban
7a78483904 Final touches to configure all capabilities
Standard capabilities are provided. They can be optionally disabled.
Also 4 custom capabilities are provided. They can be optionally
enabled and configured to different types/targets. Particularly
inter-container ipc will be done by these capabilities.
2009-11-15 11:39:13 +02:00
Bahadir Balban
6cd3fe6f0b Fixed few more rules with capabilities 2009-11-14 18:28:31 +02:00
Bahadir Balban
ca4dcae707 Added more rules, increased custom capabilities to 4 2009-11-14 18:18:24 +02:00
Bahadir Balban
235e38865d Fixed target suppression on custom capabilities 2009-11-14 16:40:05 +02:00
Bahadir Balban
24a787019c Added all standard capabilities tctrl, exregs, ipc to configuation
A use field determines whether the default capability is enabled
or disabled.
2009-11-14 16:34:12 +02:00
Bahadir Balban
69ad9d929a Added precise capability targeting
IPC capability targets current container, current pager's space,
another container, or another container's pager.

Any other capability (e.g. thread_control) targets current container
or pager's space.
2009-11-14 12:47:26 +02:00
Bahadir Balban
16a652e3d9 Added a not working suppression of capability target choice if cap is not ipc 2009-11-14 11:41:20 +02:00
Bahadir Balban
9c0a2ccc5e Better descriptions for pool capabilities 2009-11-14 11:31:01 +02:00
Bahadir Balban
692aaa33d3 Initial changes in cml template for full capability configuration 2009-11-13 18:17:44 +02:00
Bora Sahin
58959d5fb0 A comprehensive overhaul on the thread library.
Lots of polishing, organizational changes, bug fixes, error handling etc. are
introduced.

COPY and NEW space thread creation are allowed but not thoroughly tested yet. It
seems they will work best if the lib supports utcb virtual range management
through the mapping.
2009-11-13 15:37:22 +02:00
Bora Sahin
743034a36b A comprehensive overhaul on the thread library.
Lots of polishing, organizational changes, bug fixes, error handling etc. are
introduced.

COPY and NEW space thread creation are allowed but not thoroughly tested yet. It
seems they will work best if the lib supports utcb virtual range management
through the mapping.
2009-11-13 15:35:45 +02:00
Bora Sahin
9763296ddc Locking is added to the thread library.
Now, we support thread trees which are spanning more than one level depth. Any
thread can create any number of threads provided that they are under the limits
which are enforced by the kernel.

Also with this commit, we have almost finished supporting SHARED space thread
creation in which stack and utcb space are allocated statically.
2009-11-13 15:22:06 +02:00
Bora Sahin
c8a55f8834 Stack recycling is added to the thread library.
Still, it does not support thread trees which have more than one level depth.
2009-11-13 15:21:53 +02:00
Bora Sahin
344362e9da Task list is introduced to the thread library.
In order to do resource recycling we need a table structure. In the search of
one, we concluded that a task list will make things easier when we start adding
COPY and NEW space handling.

This commit is for utcb recycling. Now, it does not support thread trees more
than one level depth. Thus, to be able to test it, we preferred l4thread_destroy
instead of l4thread_exit.
2009-11-13 15:21:41 +02:00
Bora Sahin
20f2b2bfdb Lots of cosmetic changes to the thread library. 2009-11-13 15:21:28 +02:00
Bora Sahin
1256f1a13a The second step in creating a thread library.
UTCB support has beed added. It has the same drawback as in the stack support:
the area in question has to be already mapped-in.

There are also some minor fixes for the stack support and the utcb common helper
routines.
2009-11-13 15:21:15 +02:00
Bora Sahin
b31ab82437 The first step in creating a thread library.
The difference between this thread library and the existing ones like pthreads
is the necessity of informing the library about the address range of the stack
and the l4 specific utcb. Utcb has not been supported yet. As for stack, there
is also a drawback: library does not support mapping. In other words, the stack
area in question has to be already mapped-in. Thus, for now we only support
threads sharing their address spaces: TC_SHARE_SPACE. In this respect, it is
very similar to pthreads.
2009-11-13 15:20:50 +02:00
Bora Sahin
18a5c89c97 utcb handling helper routines for the thread library.
This is one of the steps we need in the process of providing a similar interface
for thread creation which can be found in the mainstream operating systems like
Linux.
2009-11-13 12:59:27 +02:00
Bora Sahin
00adcd9afa libl4thread skeleton is introduced.
With this library, it is aimed at easing thread manipulation, utcb handling etc.
2009-11-13 12:58:54 +02:00
Bora Sahin
69a09ea514 Automatic pager size calculation takes container name into account instead of
a fixed one.
2009-11-13 12:58:41 +02:00
Bora Sahin
bb6dd492e0 Bare container type is converted to Examples container type.
Examples container type is designed to keep applications using codezero
userspace libraries, which is aiming to help newcomers who would like to
develop programs on top of the l4 microkernel.

Now bare bone application is one of the examples. In the near future, lots of
new programs will be introduced to show the various aspects of codezero
eco-system.
2009-11-13 12:57:40 +02:00
Bora Sahin
871d40a6b4 Trying to fix merge / revert problems related to the thread library.
Revert "Merge branch 'libl4thread' of git://www.b-labs.co.uk/bora/git/codezero into bora"

This reverts commit dc7fd0d24d.
2009-11-13 12:32:33 +02:00
Bahadir Balban
317ce0bd29 Minor fixes to container cml template 2009-11-11 23:11:10 +02:00
Bora Sahin
0e6dec0fee Locking is added to the thread library.
Now, we support thread trees which are spanning more than one level depth. Any
thread can create any number of threads provided that they are under the limits
which are enforced by the kernel.

Also with this commit, we have almost finished supporting SHARED space thread
creation in which stack and utcb space are allocated statically.
2009-11-11 21:33:15 +02:00
Bahadir Balban
0be7b734d3 Amendment to previous commit 2009-11-11 15:56:54 +02:00
Bahadir Balban
bee7fe541f cleaned up posix example cml symbols 2009-11-11 15:54:34 +02:00
Amit Mahajan
d8f480fd1b Compilation errors resolved for 2009Q3 toolchains. 2009-11-11 02:02:27 +05:30
Amit Mahajan
fc43608da9 Error in number of containers corrected 2009-11-11 02:02:26 +05:30
Amit Mahajan
276b6e3fc4 Sanity checking for container memory regions added 2009-11-11 02:02:26 +05:30
Amit Mahajan
1db70a608f Added default values to cml symbols 2009-11-11 02:02:26 +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
Amit Mahajan
272b01d873 Remove CONFIG_ from pager_size symbol 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
Bora Sahin
3149356ffc Stack recycling is added to the thread library.
Still, it does not support thread trees which have more than one level depth.
2009-11-10 21:48:48 +02:00
Bahadir Balban
dc7fd0d24d Merge branch 'libl4thread' of git://www.b-labs.co.uk/bora/git/codezero into bora
Conflicts:
	conts/libl4thread/include/l4thread/addr.h
	conts/libl4thread/include/l4thread/thread.h
	conts/libl4thread/include/l4thread/utcb.h
	conts/libl4thread/src/addr.c
	conts/libl4thread/src/thread.c
	conts/libl4thread/src/utcb.c
2009-11-10 17:38:51 +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
Bora Sahin
a23b7fcbc2 Task list is introduced to the thread library.
In order to do resource recycling we need a table structure. In the search of
one, we concluded that a task list will make things easier when we start adding
COPY and NEW space handling.

This commit is for utcb recycling. Now, it does not support thread trees more
than one level depth. Thus, to be able to test it, we preferred l4thread_destroy
instead of l4thread_exit.
2009-11-10 14:46:54 +02:00