liblor / advanced_operating_systems_2020 Goto Github PK
View Code? Open in Web Editor NEWAdvanced Operating System Course at ETHZ
License: MIT License
Advanced Operating System Course at ETHZ
License: MIT License
https://github.com/Liblor/advanced_operating_systems_2020/tree/bug/destination-slot-occupied
System counter frequency is 8000000Hz.
Timeslice interrupt every 640000 ticks (80ms).
kernel 0: ARMv8-A: Setting coreboot spawn handler
kernel 0: ARMv8-A: Calling arm_kernel_startup
kernel 0: ARMv8-A: Doing BSP related bootup
start_free_ram = 0x80201000
kernel 0: ARMv8-A: spawning 'armv8/sbin/init' on BSP core
kernel 0: ARMv8-A: spawn_init_common armv8/sbin/init
spawn module: armv8/sbin/init
kernel 0: init page tables: l0=0xffff000080520000, l1=0xffff000080521000, l2=0xffff000080522000, l3=0xffff000080532000
load_init_image 0xffff0000fbfdd000 0008451f
kernel 0: ARMv8-A: init loaded with entry=0x400974 and GOT=0x45ad18
kernel 0: ARMv8-A: Calling dispatch from arm_kernel_startup, entry point 0x400974
init.0.0: initializing static heap
init.0.0: init: on core 0, invoked as:init.0.0: Added 1958 MB of physical memory.
init.0.0: processserver_init()
init.0.0: name is: /armv8/sbin/dummy
kernel 0: ARMv8-A: Timer interrupt received!
dummy.0.0: initializing static heap
init.0.0: name is: /armv8/sbin/dummy
dummy.0.0: initializing static heap
dummy.0.0: A transient error occured 10 times, retries exceeded
dummy.0.0: lmp_chan_send0() failed: Destination slot is occupied for cap transfer
dummy.0.0: Error while setting up channel for init
dummy.0.0: aos_rpc_lmp_setup_channel() failed
init.0.0: name is: /armv8/sbin/dummy
-> /usr/init/processserver.c
We currently set num_proc
in the server's state to 0
initially, and increment for each process that is registered.
We should handle overflows, so the same PID cannot be assigned to two different processes. Instead of incrementing once only, we could increment until the first "free" PID is reached, i.e., num_proc
is not currently used for any other dispatcher that is still alive.
Changes introduced by #71 break processserver code on master branch.
aos_rpc_process_spawn
tests implemented in hello.c don't receive the proper name anymore. There is an issue with the unmarshalling on the server.
init.0.0: processserver service_recv_cb()
init.0.0: name is: /armv8/sbin/ᆳ�
init.0.0: multiboot_find_module() failed
init.0.0: initializing static heap
init.0.0: init: on core 0, invoked as: init 2097152
init.0.0: Added 1960 MB of physical memory.
init.0.0: processserver_init()
init.0.0: name is: /armv8/sbin/hello
init.0.0: Message handler loop
hello.0.0: initializing static heap
hello.0.0: Setting up a new channel to init.
init.0.0: open_recv_cb()
hello.0.0: Setting up a new channel to memory.
init.0.0: open_recv_cb()
kernel 0: ARMv8-A: Timer interrupt received!
hello.0.0: Setting up a new channel to serial.
init.0.0: open_recv_cb()
Hello, world! from userspace
argv[0]='hello'
argv[1]='123456'
argv[2]='654321'
argv[3]='hello world'
init.0.0: Received number 2
init.0.0: Received string hello world hello world whhhhhhhhh
hello.0.0: calling aos_rpc_process_spawn
hello.0.0: Setting up a new channel to process.
init.0.0: open_recv_cb()
init.0.0: processserver service_recv_cb()
init.0.0: name is: /armv8/sbin/ᆳ�
init.0.0: multiboot_find_module() failed
ERROR: init.0 in spawn_cb() /source//usr/init/main.c:117
ERROR:
Failure: ( spawn) Didn't find module to be spawned [SPAWN_ERR_FIND_MODULE]
ERROR: init.0 in spawn_cb() /source//usr/init/main.c:118
ERROR: spawn_load_by_name()
Failure: ( spawn) Didn't find module to be spawned [SPAWN_ERR_FIND_MODULE]
ERROR: init.0 in handle_spawn_process() /source//usr/init/processserver.c:141
ERROR:
Failure: ( spawn) Didn't find module to be spawned [SPAWN_ERR_FIND_MODULE]
hello.0.0: client_spawn_cb(...)
ERROR: hello.0 in client_spawn_cb() /source//lib/aos/aos_rpc_lmp.c:356
ERROR: status not ok
Failure: ( libaos) Invalid LMP response [LIB_ERR_LMP_INVALID_RESPONSE]
ERROR: hello.0 in aos_rpc_lmp_process_spawn() /source//lib/aos/aos_rpc_lmp.c:403
ERROR:
Failure: ( libaos) Invalid LMP response [LIB_ERR_LMP_INVALID_RESPONSE]
ERROR: hello.0 in test_rpc() /source//usr/hello/hello.c:80
ERROR:
Failure: ( libaos) Invalid LMP response [LIB_ERR_LMP_INVALID_RESPONSE]
ERROR: hello.0 in test_rpc() /source//usr/hello/hello.c:81
ERROR: aos_rpc_process_spawn()
Failure: ( libaos) Invalid LMP response [LIB_ERR_LMP_INVALID_RESPONSE]
hello.0.0: libc exit NYI!
Several allocations are made for setting up the new dispatcher in the spawning module. We should free those resources after the new dispatcher was invoked.
The mandatory tasks are the following.
morecore
to allow for unlimited dynamic allocations. #83SELF_PAGING_WORKS
in lib/aos/threads.c
.USE_STATIC_HEAP
in morecore.c
.We should be testing the malloc()
and free()
implementations thoroughly. Also, we need to pay attention to concurrency, which means we need to figure out how the threading system works.
advanced_operating_systems_2020/usr/init/serialserver.c
Lines 17 to 23 in 4179c99
msg.msg.payload[0] = c;
Integer overflow in mm_alloc_aligned
The unmapping functionality has not yet been tested.
In the paging code as well as other places, we need to allocate memory.
In the script it's says we can use malloc/free, but need to be aware that we have a static heap size of 16Mb. Once it is full we may use slabs.
I can think of two options how to tackle this:
A dynamic heap is part of milestone 4. However,
allocating memory with slabs wherever we need memory is cumbersome and needs boilerplate to bootstrap/ maintain free slabs.
Also the blocksize of requestable slabs is fixed.
For the hashmap implementation I initially wanted to provide function pointers for malloc/free such that the caller can set how
memory is requested (ie. via a slab_alloc function or malloc), but considering upcoming milestone, I think It makes sense to use malloc/free everywhere and tackle refilling with slabs at a central point in morecore.c
static heap:
advanced_operating_systems_2020/lib/aos/morecore.c
Lines 27 to 39 in add9e18
dynamic heap:
advanced_operating_systems_2020/lib/aos/morecore.c
Lines 92 to 107 in add9e18
We must call the grading functions https://github.com/Liblor/advanced_operating_systems_2020/blob/master/lib/grading/rpc.c
spawning 1 'networking'
init.0.0: name is: /armv8/sbin/networking
init.0.0: multiboot_find_module() failed
init.0.0: spawn_cb in local task failed: Didn't find module to be spawnedSUCCESS: processserver.0 in processserver_send_spawn_local() /source//usr/processserver/processserver.c:89
SUCCESS: response status of local task request indicates an error
ERROR: processserver.0 in spawn_cb() /source//usr/processserver/processserver.c:207
ERROR: spawn_load_by_name()
ERROR: processserver.0 in handle_spawn_process() /source//usr/processserver/processserver.c:245
ERROR: spawn_cb()
Failure: ( libaos) functionality not implemented yet [LIB_ERR_NOT_IMPLEMENTED]
aosh >>> Failure: ( libaos) functionality not implemented yet [LIB_ERR_NOT_IMPLEMENTED]
advanced_operating_systems_2020/usr/init/memoryserver.c
Lines 70 to 80 in 8854ff7
Nothing is done with these returned errors. @leopoldsedev you wrote this.
We should print these errors or even better provide a function to notify the server implementation that there was an error in the callback. As the callback cannot return something.
We used a bad name at the beginning.
rename once everything is merged
According to the book, our paging system should be able to translate from virtual to physical addresses and the inverse. We should provide an efficient lookup in both directions. #73
usage: oncore [-c coreId] [-t times] name
aosh >>> oncore -c 1 -t 1 dummyprocessserver.0.1: Looking up monitor service of core 1.
init.0.1: Service 'servermonitor1' not registered.
processserver.0.1: aos_rpc_ns_lookup() failed: Invalid LMP response
processserver.0.1: nameservice_lookup() failed: Invalid LMP response
processserver.0.1: Failed to get monitor service for core 1.
ERROR: processserver.0 in spawn_cb() /source//usr/processserver/processserver.c:196
ERROR: spawn_load_by_name()
ERROR: processserver.0 in handle_spawn_process() /source//usr/processserver/processserver.c:234
ERROR: spawn_cb()
Failure: ( libaos) functionality not implemented yet [LIB_ERR_NOT_IMPLEMENTED]
optind:5
Failure: ( libaos) functionality not implemented yet [LIB_ERR_NOT_IMPLEMENTED]
spawning 'dummy' on core '1' 1 time(s)
spawning 1 'dummy'
We merged master with faults-handling-master:
https://github.com/Liblor/advanced_operating_systems_2020/tree/paging/faults-handling-master-merge
This result occurs with const uint64_t process_number = 5;
.
rpc-test.0.0: Testing serial RPC...
init.0.0: Assertion failed: (dp->lmp_poll_list == ep), function lmp_endpoints_poll_disabled, file /source//lib/aos/lmp_endpoints.c, line 209.
Aborted
init.0.0: libc exit NYI!
Dispatcher assertion failed in init: disp->disabled == 0, function disp_disable, file /source//lib/aos/dispatch.c, line 225.
dummy.0.0: initializing static heap
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:438
ERROR: transient
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:438
ERROR: transient
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:438
ERROR: transient
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:438
ERROR: transient
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:438
ERROR: transient
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:438
We could measure RPC performance by measuring the time it takes to call the send_number or send_string RPC a fixed number of times or something similar.
Avoid fragmentation by enforcing alignment to be a multiple of the page size
We must be able spawn child processes, which should print a message upon starting.
Originally posted by @abertschi in #73 (comment)
Overview about Pending Tasks
commit with test: 3a67c04
to very on master once rpc/client_framework branch merged
hello.0.0: spawned child: pid 80
Dummy spawned
dummy.0.0: libc exit NYI!
init.0.0: name is: /armv8/sbin/dummy
dummy.0.0: initializing static heap
init.0.0: new pid is 81
hello.0.0: spawned child: pid 81
Dummy spawned
dummy.0.0: libc exit NYI!
init.0.0: name is: /armv8/sbin/dummy
dummy.0.0: initializing static heap
init.0.0: new pid is 82
hello.0.0: spawned child: pid 82
Dummy spawned
dummy.0.0: libc exit NYI!
init.0.0: name is: /armv8/sbin/dummy
dummy.0.0: initializing static heap
Error: key 224 already present in hash table 224
init.0.0: Assertion failed: (0), function collections_hash_insert, file /source//lib/collections/hash_table.c, line 134.
Aborted
init.0.0: libc exit NYI!
When using locks be careful:
Division by 0 in mm_alloc_aligned
We currently use a worst-fit model. If we encounter problems regarding the performance of allocation, we might want to consider switching to a buddy system.
More information on how this works algorithmically can be found in "Operating Systems - Internals and Design Principles" by William Stallings, page 317ff in the seventh edition.
aosh >>> oncore -c 100 dummy
spawning 'dummy' on core 100
init.0.0: Assertion failed: (rpc != NULL), function aos_rpc_ump_send_and_wait_recv, file /source//lib/aos/aos_rpc_ump.c, line 230.
Aborted
init.0.0: libc exit NYI!
As of handin of milestone 6 we do not free memory. free
rather returns immediately. There seems to be a bug in morecore which is triggered if multiple threads are involved.
hello.0.0: client_spawn_cb(...)
hello.0.0: spawned child: pid 9
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient)
This sometimes happens on 396e7ee.
dummy.0.0: Setting up a new channel to serial.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
init.0.0: new pid is 81
rpc-test.0.0: client_spawn_cb(...)
Dinit.0.0: open_recv_cb()
init.0.0: open_recv_cb()
dummy.0.0: Setting up a new channel to serial.
miinit.0.0: open_recv_cb()
dummy.0.0: Setting up a new channel to memory.
aupinit.0.0: processserver service_recv_cb()
init.0.0: name is: /armv8/sbin/dummy
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:786
ERROR: transient
dummy.0.0: Setting up a new channel to serial.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
ERROR: init.0 in paging_map_fixed_single_pt3() /source//lib/aos/paging.c:525
ERROR:
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
init.0.0: vnode_map failed: Capability not found (empty slot encountered)
ERROR: init.0 in paging_map_fixed_attr() /source//lib/aos/paging.c:609
ERROR:
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in paging_map_fixed_attr() /source//lib/aos/paging.c:610
ERROR: paging_map_fixed_single_pt3 failed
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in slab_refill_pages() /source//lib/aos/slab.c:193
ERROR:
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in slab_ensure_threshold() /source//lib/aos/slab.c:230
ERROR:
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in mm_alloc_aligned() /source//lib/mm/mm.c:240
ERROR:
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in vnode_create() /source//lib/aos/capabilities.c:680
ERROR:
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in pt_alloc() /source//lib/aos/paging.c:44
ERROR:
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
init.0.0: vnode_create failed: Failure in ram_alloc()
ERROR: init.0 in paging_create_vnode() /source//lib/aos/paging.c:342
ERROR:
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
init.0.0: pt_alloc failed: Failure in ram_alloc()
ERROR: init.0 in paging_create_pd() /source//lib/aos/paging.c:486
ERROR:
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
init.0.0: paging_create_vnode ObjType_VNode_AARCH64_l3 failed: Failure in ram_alloc()
ERROR: init.0 in paging_map_fixed_single_pt3() /source//lib/aos/paging.c:508
ERROR:
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
init.0.0: paging_create_pd failed: Failure in ram_alloc()
ERROR: init.0 in paging_map_fixed_attr() /source//lib/aos/paging.c:609
ERROR:
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in paging_map_fixed_attr() /source//lib/aos/paging.c:610
ERROR: paging_map_fixed_single_pt3 failed
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
ERROR: init.0 in elf_allocator_cb() /source//lib/spawn/spawn.c:90
ERROR:
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
init.0.0: paging_map_frame_attr() failed: Failure in ram_alloc()
ERROR: init.0 in parse_elf() /source//lib/spawn/spawn.c:263
ERROR:
Failure: ( libelf) Nested failure in allocator function [ELF_ERR_ALLOCATE]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( kernel) Capability not found (empty slot encountered) [SYS_ERR_CAP_NOT_FOUND]
init.0.0: elf_load() failed: Nested failure in allocator function
ERROR: init.0 in spawn_load_argv() /source//lib/spawn/spawn.c:576
ERROR:
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( libelf) Nested failure in allocator function [ELF_ERR_ALLOCATE]
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
init.0.0: parse_elf() failed: Failure in spawn_elf_map
ERROR: init.0 in spawn_load_by_name() /source//lib/spawn/spawn.c:649
ERROR:
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( libelf) Nested failure in allocator function [ELF_ERR_ALLOCATE]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
Failure: ( libaos) Refilling slab allocator failed [LIB_ERR_SLAB_REFILL]
init.0.0: spawn_load_argv() failed: Failure in spawn_elf_map
ERROR: init.0 in spawn_cb() /source//usr/init/main.c:117
ERROR:
Failure: ( spawn) Failure while loading [SPAWN_ERR_LOAD]
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( libelf) Nested failure in allocator function [ELF_ERR_ALLOCATE]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
ERROR: init.0 in spawn_cb() /source//usr/init/main.c:118
ERROR: spawn_load_by_name()
Failure: ( spawn) Failure while loading [SPAWN_ERR_LOAD]
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( libelf) Nested failure in allocator function [ELF_ERR_ALLOCATE]
ERROR: dummy.0 in aos_rpc_lmp_setup_channel() /source//lib/aos/aos_rpc_lmp.c:786
ERROR: transient
dummy.0.0: Setting up a new channel to serial.
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
ERROR: init.0 in handle_spawn_process() /source//usr/init/processserver.c:141
ERROR:
Failure: ( spawn) Failure while loading [SPAWN_ERR_LOAD]
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( spawn) Failure in spawn_elf_map [SPAWN_ERR_ELF_MAP]
Failure: ( libelf) Nested failure in allocator function [ELF_ERR_ALLOCATE]
Failure: ( libaos) Failure in vspace_map() wrapper function [LIB_ERR_VSPACE_MAP]
Failure: ( libaos) Failure in ram_alloc() [LIB_ERR_RAM_ALLOC]
rpc-test.0.0: client_spawn_cb(...)
ERROR: rpc-test.0 in client_spawn_cb() /source//lib/aos/aos_rpc_lmp.c:356
ERROR: Dinit.0.0: open_recv_cb()
init.0.0: open_recv_cb()
dummy.0.0: Setting up a new channel to serial.
Do that once #71 is merged.
Master@ d175284 is broken for me
hello.0.0: aos_rpc_lmp_process_get_name: dummy
init.0.0: processserver service_recv_cb()
hello.0.0: client_process_get_name_cb()
hello.0.0: aos_rpc_lmp_process_get_name: dummy
init.0.0: processserver service_recv_cb()
hello.0.0: client_process_get_name_cb()
hello.0.0: aos_rpc_lmp_process_get_name: dummy
minit.0.0: processserver service_recv_cb()
hello.0.0: client_process_get_name_cb()
hello.0.0: aos_rpc_lmp_process_get_name: dummy
init.0.0: processserver service_recv_cb()
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
dummy.0.0: initializing static heap
dummy.0.0: Setting up a new channel to init.
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient), The endpoint buffer is full
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
ERROR: lmp_chan_send4 failed (transient), The endpoint buffer is full
ERROR: dummy.0 in aos_rpc_lmp_send_message() /source//lib/aos/aos_rpc_lmp.c:65
We should add a process that automatically evaluates all RPC calls.
Fix multiple memory leaks in memory manager
According to David worst-fit leads to less fragmentation in general, so we should use that or find another, even better allocation strategy.
TODO
We would need some data on how many pages are going to be mapped in barrelfish
We do not have yet any tests for the spawning module.
To test properly, we must figure out how to detect a success when spawning a new dispatcher. One way could be using the RPC that will be implemented in future milestones.
See old test.c tests and migrate to grading test framework.
The code was originally moved from the libmm implementation, and the error codes have not been adjusted.
We should probably introduce new error codes for the range tracker.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.