diff --git a/lib/spawn/rpc_server.c b/lib/spawn/rpc_server.c index 904cd9a..fce00b1 100644 --- a/lib/spawn/rpc_server.c +++ b/lib/spawn/rpc_server.c @@ -383,11 +383,13 @@ static errval_t serialize_bootinfo(struct bootinfo * bootinfo, struct bootinfo_s struct capability elf_frame_id; err = cap_direct_identify(elf_frame_cap, &elf_frame_id); - if (err_is_fail(err)) return err; - assert(elf_frame_id.type == ObjType_Frame); + if (err_is_fail(err)) return err_push(err, LIB_ERR_CAP_IDENTIFY); - serialized_bootinfo->regions[i].mrmod_frame_base = elf_frame_id.u.frame.base; - serialized_bootinfo->regions[i].mrmod_frame_bytes = elf_frame_id.u.frame.bytes; + // debug_printf("[serialize_bootinfo] elf_frame_id.type = %d\n", elf_frame_id.type); + assert(elf_frame_id.type == ObjType_DevFrame); + + serialized_bootinfo->regions[i].mrmod_frame_base = elf_frame_id.u.devframe.base; + serialized_bootinfo->regions[i].mrmod_frame_bytes = elf_frame_id.u.devframe.bytes; } return SYS_ERR_OK; diff --git a/usr/init/main.c b/usr/init/main.c index 85ceb7a..8651e46 100644 --- a/usr/init/main.c +++ b/usr/init/main.c @@ -201,8 +201,7 @@ static errval_t deserialize_bootinfo(struct bootinfo_serialized * serialized, st .cnode = cnode_module, .slot = serialized->regions[i].mrmod_slot, }; - - err = frame_forge(forge_destination, serialized->regions[i].mrmod_frame_base, serialized->regions[i].mrmod_frame_bytes, my_core_id); + err = devframe_forge(forge_destination, serialized->regions[i].mrmod_frame_base, serialized->regions[i].mrmod_frame_bytes, my_core_id); if (err_is_fail(err)) return err; } @@ -250,6 +249,7 @@ app_main(int argc, char *argv[]) { if (err_is_fail(err)) return err; err = deserialize_bootinfo(bi_ser, &bi); if (err_is_fail(err)) return err; + free(bi_ser); debug_printf("[app_main]: received bootinfo with %d regions\n", bi->regions_length);