/*! @brief Handle messages received by the CPIO file server. @param s The global file server state. (No ownership transfer) @param msg The received message. (No ownership transfer) @return DISPATCH_SUCCESS if message dispatched, DISPATCH_ERROR if unknown message. */ static int fileserv_handle_message(struct fs_state *s, srv_msg_t *msg) { int result; int label = seL4_GetMR(0); void *userptr; (void) result; if (dispatch_notification(msg) == DISPATCH_SUCCESS) { return DISPATCH_SUCCESS; } if (check_dispatch_serv(msg, &userptr) == DISPATCH_SUCCESS) { result = rpc_sv_serv_dispatcher(userptr, label); assert(result == DISPATCH_SUCCESS); return DISPATCH_SUCCESS; } if (check_dispatch_data(msg, &userptr) == DISPATCH_SUCCESS) { result = rpc_sv_data_dispatcher(userptr, label); assert(result == DISPATCH_SUCCESS); return DISPATCH_SUCCESS; } dprintf("Unknown message (badge = %d msgInfo = %d label = %d (0x%x)).\n", msg->badge, seL4_MessageInfo_get_label(msg->message), label, label); ROS_ERROR("File server unknown message."); assert(!"File server unknown message."); return DISPATCH_ERROR; }
/*! @brief Handle messages recieved by the timer server. @param s The global timer server state. (No ownership transfer) @param msg The recieved message. (No ownership transfer) @return DISPATCH_SUCCESS if message dispatched, DISPATCH_ERROR if unknown message. */ static int timer_server_handle_message(struct timeserv_state *s, srv_msg_t *msg) { int result = DISPATCH_PASS; int label = seL4_GetMR(0); void *userptr; //printf("====In timer_server_handle_message====\n"); if (dispatch_client_watch(msg) == DISPATCH_SUCCESS) { result = DISPATCH_SUCCESS; } if (dev_dispatch_interrupt(&timeServ.irqState, msg) == DISPATCH_SUCCESS) { result = DISPATCH_SUCCESS; } if (result == DISPATCH_SUCCESS) { //printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"); //printf("will return result\n"); return result; } if (check_dispatch_data(msg, &userptr) == DISPATCH_SUCCESS) { result = rpc_sv_data_dispatcher(userptr, label); assert(result == DISPATCH_SUCCESS); return DISPATCH_SUCCESS; } if (check_dispatch_serv(msg, &userptr) == DISPATCH_SUCCESS) { result = rpc_sv_serv_dispatcher(userptr, label); assert(result == DISPATCH_SUCCESS); return DISPATCH_SUCCESS; } dprintf("Unknown message (badge = %d msgInfo = %d label = %d).\n", msg->badge, seL4_MessageInfo_get_label(msg->message), label); ROS_ERROR("timer server unknown message."); assert(!"timer server unknown message."); return DISPATCH_ERROR; }