| 96 | } |
| 97 | |
| 98 | static rt_err_t _smp_call_handler(struct rt_smp_call_req *req, int oncpu) |
| 99 | { |
| 100 | switch (req->event.event_id) |
| 101 | { |
| 102 | case SMP_CALL_EVENT_GLOB_SYNC: |
| 103 | { |
| 104 | struct rt_smp_call_req req_local; |
| 105 | _do_glob_request(req, &req_local); |
| 106 | _mask_out_cpu(&req_local.event, oncpu); |
| 107 | break; |
| 108 | } |
| 109 | case SMP_CALL_EVENT_GLOB_ASYNC: |
| 110 | { |
| 111 | struct rt_smp_call_req req_local; |
| 112 | _do_glob_request(req, &req_local); |
| 113 | break; |
| 114 | } |
| 115 | case SMP_CALL_EVENT_REQUEST: |
| 116 | { |
| 117 | _do_request(req); |
| 118 | break; |
| 119 | } |
| 120 | default: |
| 121 | LOG_E("error event id\n"); |
| 122 | return -RT_ERROR; |
| 123 | } |
| 124 | return RT_EOK; |
| 125 | } |
| 126 | |
| 127 | void rt_smp_call_ipi_handler(int vector, void *param) |
| 128 | { |
no test coverage detected