Commit Graph

71 Commits

Author SHA1 Message Date
Bora Sahin
9bb96108ed Container number is received from the configuration system. 2009-09-25 13:43:33 +03:00
Bahadir Balban
f29d86b5ff Added autogeneration of cinfo.c with memory capabilities
Also fixed a bug with configurator in that the containers
were not sorted properly and consequently an already filled
in container was getting overwritten by the new one.
	modified:   config/configuration.py
	modified:   configure.py
	new file:   generate_kernel_cinfo.py
	deleted:    src/generic/cinfo.c
2009-09-22 19:35:18 +03:00
Bahadir Balban
28f963517d Carried container definition to cinfo.c
This file is meant to be autogenerated by the configurator
2009-09-18 11:30:53 +03:00
Bahadir Balban
942865e6fc Working compilation, but adding variant_dir = BUILD it doesn't work 2009-09-11 13:55:46 +03:00
Bahadir Balban
ccd8a61a89 Added container physical regions to cml configuration 2009-09-04 11:41:44 +03:00
Russel Winder
6ca0f2607a Switch to using a different strategy for building the kernel. 2009-08-27 16:43:47 +01:00
Bahadir Balban
117e3482b6 Capabilities for quantitative resources working.
Status:
- Capability initialization is a bit hacky with dummy current etc.
- All container caps belong to the pager
- Tasks refer to their pager's capabilities for mutex allocation - Hacky.
- Kernel container keeps quantitative caps and memory caps in separate lists - Hacky.

These will all evolve and get fixed.
2009-08-22 23:41:53 +03:00
Bahadir Balban
d3d072e47d Capability accounting for quantitative capabilities - First part done.
Need to make sure accounting charges correct containers during init.
Therefore kernel resource spending must also be accounted for.
2009-08-22 12:09:51 +03:00
Bahadir Balban
de087eb1f8 Clean up to kernel code, Added `used' field to capabilities
With the addition of used field, capability structure can be
used for resource accounting over the capability.
2009-08-21 12:10:34 +03:00
Bahadir Balban
dabc448c4e Added freeing of pager init memory, but this memory is currently not utilized. 2009-08-19 16:26:44 +03:00
Bahadir Balban
95b7b65c89 Pager virtual address pool bookkeeping added for all pager virtual addresses
Previously virt_to_phys/phys_to_virt macros were used such that they did a
blind offset translation for creating a pager internal virtual address for
user mappings.

This is now changed such that a properly bookkeeped virtual address pool is
used which will avoid any clashes on the virtual space.
2009-08-19 14:44:36 +03:00
Bahadir Balban
5bee43ae99 Merge branch 'newBuild' of /opt/c0-trees/codezero-russel into devel
Conflicts:

	SConstruct
	src/api/SConscript
	src/arch/arm/SConscript
	src/generic/SConscript
	tasks/bootdesc/SConstruct
2009-08-14 17:09:58 +03:00
Bahadir Balban
6a42491751 Fixed uninitialized local vars. 2009-08-14 12:54:54 +03:00
Bahadir Balban
c7404c7322 Fixed boot messages 2009-08-11 15:28:39 +03:00
Bahadir Balban
f82db61519 Added freeing/unmapping of boot memory 2009-08-11 15:01:27 +03:00
Bahadir Balban
f4d9520fef First working Codezero & POSIX Services with container/capability changes 2009-08-11 11:23:26 +03:00
Bahadir Balban
15b659eaf0 Removed any refs to global id pools.
Also added container reference setup to thread creation
2009-08-10 15:16:57 +03:00
Bahadir Balban
aa71161a04 Seems phys_to_page/page_to_phys macros are fixed in mm0 2009-08-09 17:59:32 +03:00
Bahadir Balban
02a3f1ac91 Pager works until end of init_physmem_secondary 2009-08-09 17:22:13 +03:00
Bahadir Balban
961b255257 Replaced kread and kmem_control syscalls with capability_control and container_control respectively. 2009-08-06 16:22:55 +03:00
Bahadir Balban
dccfff80a3 Removed commented out scheduler globals. 2009-08-06 15:02:42 +03:00
Bahadir Balban
e329a7c91a Removed kmalloc. Initialization path resolved, almost done. 2009-08-06 14:15:39 +03:00
Russel Winder
8b9b254f6c Make the coding style more consistent with PEP-8. 2009-08-05 11:15:26 +01:00
Bahadir Balban
519bfba8c7 Container/Pager/Capability initialization that works.
Need to safely free boot memory and jump to first task's stack.
Need to test scheduler and all syscall entries.
2009-08-04 13:56:11 +03:00
Bahadir Balban
7e8845abf8 Code that compiles until initialization of containers and pagers. 2009-08-02 23:43:14 +03:00
Russel Winder
9b2ff087d0 Add in all the amendments and new files needed to get the kernel building. 2009-08-01 17:50:59 +01:00
Bahadir Balban
82807c2f0a Code that works until after allocating pgd and pmd caches. 2009-07-29 20:01:40 +03:00
Bahadir Balban
723cf7bde9 Code that compiles and works up to initializing the first memcache. 2009-07-29 19:08:29 +03:00
Bahadir Balban
dd8f773f10 Some more progress on resource management and boot up. 2009-07-29 13:32:38 +03:00
Russel Winder
d40c76de84 Remove all the SCons files pending starting a new build system. 2009-07-28 14:47:00 +01:00
Bahadir Balban
2b0ea24e94 Added 2 more files. 2009-07-25 17:52:06 +03:00
Bahadir Balban
f7b768ee16 More changes for cleaner initialization and support for containers. 2009-07-25 17:44:29 +03:00
Bahadir Balban
0dd8918ae5 Remove all references to ARM registers in system call arguments. 2009-06-10 17:30:02 +03:00
Bahadir Balban
6b3ddadcf5 Cleaned up code for userspace mutexes.
- Issues: wait_on_prepare and wait_on_prepared_wait use cases
  are erroneous because they may sleep with mutex_control_lock
  taken if preemption occurs.
2009-06-10 14:37:23 +03:00
Bahadir Balban
276b4643c6 Removed linux linked list dependency. 2009-06-02 13:19:17 +03:00
Bahadir Balban
13d469f659 Removed all unecessary prints from the mutex test and the kernel
- removed (%d) Sleeping print from contended kernel mutexes.
- removed (%d) Waiting print from WAIT_EVENT used by the pager for suspending tasks.
- removed prints from the mutex_control syscall and user mutex test.
2009-06-01 16:02:10 +03:00
Bahadir Balban
3b9cda968d Added mutex locking to kmalloc/kfree. 2009-06-01 15:18:44 +03:00
Bahadir Balban
53f54f2328 Modified kmalloc to cater for dynamic memory allocation on a previously allocated size 2009-06-01 14:48:26 +03:00
Bahadir Balban
33200c92df Mutex implementation almost working.
- Fixed a wrong instruction in mutex.S user library
- Added support for blocking lock/unlock
- Divided waiting into wait_on_prepare and wait_on_prepared_wait
  so that mutex_control lock is released after getting in the waitqueue.
- Declaring waitqueue on the stack should be done outside wait_on_prepare

Issues:
- Tests can be simplified for atomic data access instead of producer/consumer.
- kmalloc variable sized memory caches are not freed properly. Currently only the
  last slot can be freed, occupied correctly. it should be done in any slot, i.e.
  1, 2, 3, 4 instead of just 5.
- Need to add a mutex to kmalloc.
2009-06-01 14:11:40 +03:00
Bahadir Balban
b11d4c4607 Added mutex_control syscall for userspace mutexes.
- Compiles and Codezero runs as normal without touching mutex implementation
- Mutex implementation needs testing.

The mutex control syscall allows userspace programs to declare any virtual
address as a mutex lock and ask for help from the kernel syscall
for resolving locking contentions.
2009-05-29 15:34:04 +03:00
Bahadir Balban
3ff519439b Added first part of extended ipc support.
- Extended ipc tests
- Need to copy from ktcb-to-ktcb instead of ktcb-to-user
- Need to check flags of both ipc parties before ipc copy type.
2009-05-27 14:07:17 +03:00
Bahadir Balban
5ac5889a0f Unstable changes for ipc - Fork fails for some reason 2009-05-23 18:43:55 +03:00
Bahadir Balban
d632966778 Comment fix to utcb lazy mapping 2009-05-22 23:02:40 +03:00
Bahadir Balban
3bbbcdfefa Full utcb copying partially works now. 2009-05-19 11:26:45 +03:00
Bahadir Balban
93368447f9 Added kernel + libl4 changes for full and extended ipc.
- Short ipc working as normal. Full/extended ipc haven't been tested.
- Added automated compilation and inclusion of test executable in test0.
2009-05-15 19:14:40 +03:00
Bahadir Balban
8528e2e1ba Modified the kernel and all tasks with well-formatted printout messages. 2009-05-12 11:25:14 +03:00
Bahadir Balban
db0d756dfa Removed thread group id pool.
We don't need a separate group id pool for now.
2009-05-11 12:21:08 +03:00
Bahadir Balban
1b04037034 Address space creation/deletion implemented
- Proper releasing of user pmd and pgds when a space is not used.
- Proper releasing of task, space ids.

- At occasions a starting thread gets bogus SPSR, this needs investigating.
- At a very rare occasion arch_setup_new_thread() had a kernel data abort during
  register copying from one task to another. Needs investigating.
2009-05-11 12:10:12 +03:00
Bahadir Balban
7415546410 Reimplemented space handling by introducing an address_space structure.
- Fixed potential concurrency bugs due to preemption being enabled.
- Introduced a new address space structure to better account for
  address spaces and page tables.
- Currently executes fine up to forking. Will investigate.
2009-05-08 23:35:19 +03:00
Bahadir Balban
6e1edc0aad Adding address space structure to ktcbs. Still booting until virtual memory is enabled. 2009-05-07 10:26:34 +03:00