From 69d0c29a5a9bea01ccf2fb05f350137388ed337b Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Mon, 31 Aug 2020 12:31:57 +0700 Subject: [PATCH] [*] Some worker fixes --- dap-sdk/net/client/dap_client_pvt.c | 10 ++++++---- dap-sdk/net/core/dap_worker.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c index 8486ad41fd..eea06da029 100644 --- a/dap-sdk/net/client/dap_client_pvt.c +++ b/dap-sdk/net/client/dap_client_pvt.c @@ -479,6 +479,8 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) a_client_pvt->stream_es = dap_events_socket_wrap_no_add(a_client_pvt->events, a_client_pvt->stream_socket, &l_s_callbacks); dap_worker_t * l_worker = dap_events_worker_get_auto(); + assert(l_worker); + assert(l_worker->_inheritor); a_client_pvt->stream_worker = DAP_STREAM_WORKER(l_worker); // add to dap_worker dap_events_socket_assign_on_worker_mt(a_client_pvt->stream_es, l_worker); @@ -490,7 +492,7 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) // new added, whether it is necessary? a_client_pvt->stream->session->key = a_client_pvt->stream_key; - a_client_pvt->stream_worker = (dap_stream_worker_t*) l_worker->_inheritor; + a_client_pvt->stream->stream_worker = a_client_pvt->stream_worker; // connect @@ -511,8 +513,8 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) sizeof(struct sockaddr_in))) != -1) { a_client_pvt->stream_es->flags &= ~DAP_SOCK_SIGNAL_CLOSE; //s_set_sock_nonblock(a_client_pvt->stream_socket, false); - log_it(L_INFO, "Remote address connected (%s:%u) with sock_id %d", a_client_pvt->uplink_addr, - a_client_pvt->uplink_port, a_client_pvt->stream_socket); + log_it(L_INFO, "Remote address connected (%s:%u) with sock_id %d (assign on worker #%u)", a_client_pvt->uplink_addr, + a_client_pvt->uplink_port, a_client_pvt->stream_socket, l_worker->id); a_client_pvt->stage_status = STAGE_STATUS_DONE; } else { @@ -549,7 +551,7 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) const char *l_add_str = ""; - dap_events_socket_write_f_mt(a_client_pvt->stream_es->worker, a_client_pvt->stream_es, "GET /%s HTTP/1.1\r\n" + dap_events_socket_write_f_mt(a_client_pvt->stream_worker->worker, a_client_pvt->stream_es, "GET /%s HTTP/1.1\r\n" "Host: %s:%d%s\r\n" "\r\n", l_full_path, a_client_pvt->uplink_addr, a_client_pvt->uplink_port, l_add_str); diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c index ff88a74640..79371f667e 100644 --- a/dap-sdk/net/core/dap_worker.c +++ b/dap-sdk/net/core/dap_worker.c @@ -78,7 +78,7 @@ void *dap_worker_thread(void *arg) dap_cpu_assign_thread_on(l_worker->id); struct sched_param l_shed_params; l_shed_params.sched_priority = 0; - pthread_setschedparam(pthread_self(),SCHED_FIFO ,&l_shed_params); + pthread_setschedparam(pthread_self(),SCHED_OTHER ,&l_shed_params); l_worker->queue_es_new = dap_events_socket_create_type_queue_ptr_unsafe( l_worker, s_queue_new_es_callback); l_worker->queue_es_delete = dap_events_socket_create_type_queue_ptr_unsafe( l_worker, s_queue_delete_es_callback); -- GitLab