progress
This commit is contained in:
parent
fbbb2ae5b2
commit
fb5e35287d
@ -130,11 +130,6 @@ errval_t aos_rpc_process_get_name(struct aos_rpc *chan, domainid_t pid,
|
|||||||
errval_t aos_rpc_process_get_all_pids(struct aos_rpc *chan,
|
errval_t aos_rpc_process_get_all_pids(struct aos_rpc *chan,
|
||||||
domainid_t **pids, size_t *pid_count);
|
domainid_t **pids, size_t *pid_count);
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Get bootinfo from rsp core
|
|
||||||
*/
|
|
||||||
errval_t aos_rpc_get_bootinfo(struct aos_rpc * rpc, struct bootinfo_serialized ** ret);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Returns the RPC channel to init.
|
* \brief Returns the RPC channel to init.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -41,6 +41,12 @@ errval_t do_aos_urpc(
|
|||||||
struct capref *ret_cap, size_t *ret_size, uintptr_t *ret0, uintptr_t *ret1
|
struct capref *ret_cap, size_t *ret_size, uintptr_t *ret0, uintptr_t *ret1
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Get bootinfo from rsp core
|
||||||
|
*/
|
||||||
|
errval_t aos_urpc_get_bootinfo(struct aos_urpc * rpc, struct bootinfo_serialized ** ret);
|
||||||
|
|
||||||
int urpc_client_loop(void *arg);
|
int urpc_client_loop(void *arg);
|
||||||
|
|
||||||
int urpc_server(void *arg);
|
int urpc_server(void *arg);
|
||||||
|
|||||||
@ -351,27 +351,6 @@ aos_rpc_process_get_all_pids(struct aos_rpc *rpc, domainid_t **pids,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
errval_t aos_rpc_get_bootinfo(struct aos_rpc * rpc, struct bootinfo_serialized ** ret)
|
|
||||||
{
|
|
||||||
size_t ret_len;
|
|
||||||
errval_t err;
|
|
||||||
thread_mutex_lock(&rpc->shared_mem_lock);
|
|
||||||
err = do_aos_rpc(
|
|
||||||
rpc, RPC_MTYPE_GET_BOOTINFO,
|
|
||||||
NULL_CAP, 0, 0, 0,
|
|
||||||
NULL, &ret_len, NULL, NULL
|
|
||||||
);
|
|
||||||
if (err_is_fail(err)) {
|
|
||||||
thread_mutex_unlock(&rpc->shared_mem_lock);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(*ret, rpc->shared_mem, ret_len);
|
|
||||||
|
|
||||||
thread_mutex_unlock(&rpc->shared_mem_lock);
|
|
||||||
return SYS_ERR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We are allowed to change the signature for this one
|
// We are allowed to change the signature for this one
|
||||||
errval_t aos_rpc_init(struct aos_rpc *rpc, struct lmp_chan *chan, void *shared_mem)
|
errval_t aos_rpc_init(struct aos_rpc *rpc, struct lmp_chan *chan, void *shared_mem)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -137,6 +137,25 @@ static void urpc_server_handler(void *arg) {
|
|||||||
thread_sem_post(&urpc->sem);
|
thread_sem_post(&urpc->sem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
errval_t aos_urpc_get_bootinfo(struct aos_urpc * rpc, struct bootinfo_serialized ** ret)
|
||||||
|
{
|
||||||
|
size_t ret_len;
|
||||||
|
errval_t err;
|
||||||
|
err = do_aos_urpc(
|
||||||
|
rpc, RPC_MTYPE_GET_BOOTINFO,
|
||||||
|
NULL_CAP, 0, 0, 0,
|
||||||
|
NULL, &ret_len, NULL, NULL
|
||||||
|
);
|
||||||
|
if (err_is_fail(err)) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ret = malloc(ret_len);
|
||||||
|
memcpy(*ret, rpc->shared_mem, ret_len);
|
||||||
|
return SYS_ERR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int urpc_server(void *arg) {
|
int urpc_server(void *arg) {
|
||||||
struct aos_urpc_server *urpc = arg;
|
struct aos_urpc_server *urpc = arg;
|
||||||
struct waitset *default_ws = get_default_waitset();
|
struct waitset *default_ws = get_default_waitset();
|
||||||
|
|||||||
@ -169,13 +169,13 @@ static errval_t deserialize_bootinfo(struct bootinfo_serialized * serialized, st
|
|||||||
|
|
||||||
size_t bootinfo_size = sizeof(struct bootinfo) + serialized->regions_length * sizeof(struct mem_region);
|
size_t bootinfo_size = sizeof(struct bootinfo) + serialized->regions_length * sizeof(struct mem_region);
|
||||||
|
|
||||||
struct capref ret_frame;
|
// struct capref ret_frame;
|
||||||
err = frame_alloc(&ret_frame, bootinfo_size, NULL);
|
// err = frame_alloc(&ret_frame, bootinfo_size, NULL);
|
||||||
if (err_is_fail(err)) return err_push(err, LIB_ERR_FRAME_ALLOC);
|
// if (err_is_fail(err)) return err_push(err, LIB_ERR_FRAME_ALLOC);
|
||||||
|
|
||||||
err = paging_map_frame(get_current_paging_state(), (void **) ret, bootinfo_size, ret_frame);
|
// err = paging_map_frame(get_current_paging_state(), (void **) ret, bootinfo_size, ret_frame);
|
||||||
if (err_is_fail(err)) return err_push(err, LIB_ERR_PMAP_MAP);
|
// if (err_is_fail(err)) return err_push(err, LIB_ERR_PMAP_MAP);
|
||||||
// *ret = malloc(bootinfo_size);
|
*ret = malloc(bootinfo_size);
|
||||||
|
|
||||||
(*ret)->host_msg = serialized->host_msg;
|
(*ret)->host_msg = serialized->host_msg;
|
||||||
(*ret)->host_msg_bits = serialized->host_msg_bits;
|
(*ret)->host_msg_bits = serialized->host_msg_bits;
|
||||||
@ -222,15 +222,6 @@ app_main(int argc, char *argv[]) {
|
|||||||
// - grading_test_early();
|
// - grading_test_early();
|
||||||
// - grading_test_late();
|
// - grading_test_late();
|
||||||
|
|
||||||
struct bootinfo_serialized * bi_ser;
|
|
||||||
err = aos_rpc_get_bootinfo(aos_rpc_get_init_channel(), &bi_ser);
|
|
||||||
if (err_is_fail(err)) return err;
|
|
||||||
err = deserialize_bootinfo(bi_ser, &bi);
|
|
||||||
if (err_is_fail(err)) return err;
|
|
||||||
|
|
||||||
debug_printf("[app_main]: received bootinfo with %d regions\n", bi->regions_length);
|
|
||||||
|
|
||||||
|
|
||||||
// Grading
|
// Grading
|
||||||
grading_setup_app_init(bi);
|
grading_setup_app_init(bi);
|
||||||
|
|
||||||
@ -254,6 +245,14 @@ app_main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
thread_create(urpc_server, &urpc_to_app_server);
|
thread_create(urpc_server, &urpc_to_app_server);
|
||||||
|
|
||||||
|
struct bootinfo_serialized * bi_ser;
|
||||||
|
err = aos_urpc_get_bootinfo(&urpc_to_bsp, &bi_ser);
|
||||||
|
if (err_is_fail(err)) return err;
|
||||||
|
err = deserialize_bootinfo(bi_ser, &bi);
|
||||||
|
if (err_is_fail(err)) return err;
|
||||||
|
|
||||||
|
debug_printf("[app_main]: received bootinfo with %d regions\n", bi->regions_length);
|
||||||
|
|
||||||
// Grading
|
// Grading
|
||||||
grading_test_late();
|
grading_test_late();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user