diff --git a/lib/aos/aos_rpc.c b/lib/aos/aos_rpc.c index 4a08083..69e0ac5 100644 --- a/lib/aos/aos_rpc.c +++ b/lib/aos/aos_rpc.c @@ -38,11 +38,12 @@ static errval_t do_aos_rpc( // allocate capability if we expect one and the recv slot is empty if (ret_cap != NULL && rpc->chan->endpoint->k.recv_cptr == 0){ lmp_chan_alloc_recv_slot(rpc->chan); + assert(rpc->chan->endpoint->k.recv_cptr != 0); } // Send call while (true) { - err = lmp_chan_send4(rpc->chan, LMP_FLAG_YIELD | LMP_FLAG_SYNC, arg_cap, msg_type, arg_size, arg0, arg1); + err = lmp_chan_send4(rpc->chan, LMP_FLAG_YIELD, arg_cap, msg_type, arg_size, arg0, arg1); if (!err_is_fail(err)) break; if (!lmp_err_is_transient(err)) { return err_push(err, AOS_ERR_LMP_SEND_FAILURE); @@ -77,7 +78,7 @@ aos_rpc_send_number(struct aos_rpc *rpc, uintptr_t num) { // given channel and wait until the ack gets returned. errval_t err; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); err = do_aos_rpc( rpc, RPC_MTYPE_SEND_NUMBER, NULL_CAP, 0, num, 0, @@ -96,7 +97,7 @@ aos_rpc_send_string(struct aos_rpc *rpc, const char *string) { size_t string_size = strlen(string) + 1; if (string_size > RPC_SHARED_SIZE) return AOS_ERR_RPC_ARG_TOO_BIG; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); memcpy(rpc->shared_mem, string, string_size); err = do_aos_rpc( rpc, RPC_MTYPE_SEND_STRING, @@ -123,7 +124,7 @@ aos_rpc_get_ram_cap(struct aos_rpc *rpc, size_t bytes, size_t alignment, ret_cap, NULL, ret_bytes, NULL ); thread_mutex_unlock(&rpc->lock); - + return err; } @@ -135,7 +136,7 @@ aos_rpc_serial_getchar(struct aos_rpc *rpc, char *retc) { errval_t err; uintptr_t retval; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); err = do_aos_rpc( rpc, RPC_MTYPE_SERIAL_GETCHAR, NULL_CAP, 0, 0, 0, @@ -153,7 +154,7 @@ aos_rpc_serial_putchar(struct aos_rpc *rpc, char c) { // serial port. errval_t err; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); err = do_aos_rpc( rpc, RPC_MTYPE_SERIAL_PUTCHAR, NULL_CAP, 0, c, 0, @@ -176,7 +177,7 @@ aos_rpc_serial_write(struct aos_rpc *rpc, const char *buf, size_t buf_len) { size_t chunk_len = MIN(buf_len, RPC_SHARED_SIZE); size_t written_bytes; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); memcpy(rpc->shared_mem, buf, chunk_len); err = do_aos_rpc( rpc, RPC_MTYPE_SERIAL_WRITE, @@ -217,7 +218,7 @@ aos_rpc_serial_read(struct aos_rpc *rpc, char *buf, size_t buf_len) { size_t chunk_len = MIN(buf_len, RPC_SHARED_SIZE); size_t read_bytes; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); err = do_aos_rpc( rpc, RPC_MTYPE_SERIAL_READ, NULL_CAP, 0, chunk_len, 0, @@ -253,7 +254,7 @@ aos_rpc_process_spawn(struct aos_rpc *rpc, char *cmdline, size_t cmdline_size = strlen(cmdline) + 1; if (cmdline_size > RPC_SHARED_SIZE) return AOS_ERR_RPC_ARG_TOO_BIG; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); memcpy(rpc->shared_mem, cmdline, cmdline_size); uintptr_t retval; errval_t err = do_aos_rpc( @@ -275,7 +276,7 @@ aos_rpc_process_get_name(struct aos_rpc *rpc, domainid_t pid, char **name) { size_t name_len; errval_t err; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); err = do_aos_rpc( rpc, RPC_MTYPE_PROCESS_GET_NAME, NULL_CAP, 0, pid, 0, @@ -301,7 +302,7 @@ aos_rpc_process_get_all_pids(struct aos_rpc *rpc, domainid_t **pids, size_t ret_len; errval_t err; - thread_mutex_lock_nested(&rpc->lock); + thread_mutex_lock(&rpc->lock); err = do_aos_rpc( rpc, RPC_MTYPE_PROCESS_GET_ALL_PIDS, NULL_CAP, 0, 0, 0,