diff --git a/dap-sdk/net/core/dap_proc_thread.c b/dap-sdk/net/core/dap_proc_thread.c
index 01c90e2c6e241a64f958fdb24207cf8edda483ca..87108fc04cd7ec30dab678151b66c380615f6de7 100644
--- a/dap-sdk/net/core/dap_proc_thread.c
+++ b/dap-sdk/net/core/dap_proc_thread.c
@@ -249,25 +249,7 @@ dap_events_socket_t * dap_proc_thread_create_queue_ptr(dap_proc_thread_t * a_thr
     if(l_es == NULL)
         return NULL;
     l_es->proc_thread = a_thread;
-#ifdef DAP_EVENTS_CAPS_EPOLL
-    l_es->ev.events      = l_es->ev_base_flags ;
-    l_es->ev.data.ptr    = l_es;
-    if( epoll_ctl(a_thread->epoll_ctl, EPOLL_CTL_ADD, l_es->socket, &l_es->ev) != 0 ){
-#ifdef DAP_OS_WINDOWS
-    errno = WSAGetLastError();
-#endif
-        log_it(L_CRITICAL, "Can't add queue input on epoll ctl, err: %d", errno);
-        return NULL;
-    }
-#elif defined(DAP_EVENTS_CAPS_POLL)
-    l_es->poll_index = a_thread->poll_count;
-    a_thread->poll[a_thread->poll_count].fd = l_es->fd;
-    a_thread->poll[a_thread->poll_count].events = l_es->poll_base_flags;
-    a_thread->esockets[a_thread->poll_count] = l_es;
-    a_thread->poll_count++;
-#else
-#error "Not defined dap_proc_thread_create_queue_ptr() on your platform"
-#endif
+    dap_proc_thread_assign_esocket_unsafe (a_thread, l_es);
     return l_es;
 }
 
@@ -282,13 +264,18 @@ static void * s_proc_thread_function(void * a_arg)
     dap_proc_thread_t * l_thread = (dap_proc_thread_t*) a_arg;
     assert(l_thread);
     dap_cpu_assign_thread_on(l_thread->cpu_id);
+    
     struct sched_param l_shed_params;
     l_shed_params.sched_priority = 0;
-#ifdef DAP_OS_WINDOWS 
+#if defined(DAP_OS_WINDOWS)
 	if (!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST))
         log_it(L_ERROR, "Couldn't set thread priority, err: %d", GetLastError());
-#else
+#elif defined (DAP_OS_LINUX)
     pthread_setschedparam(pthread_self(),SCHED_BATCH ,&l_shed_params);
+#elif defined (DAP_OS_BSD)
+    pthread_setschedparam(pthread_self(),SCHED_OTHER ,&l_shed_params);
+#else
+#error "Undefined set sched param"
 #endif
     l_thread->proc_queue = dap_proc_queue_create(l_thread);
 
@@ -429,7 +416,7 @@ static void * s_proc_thread_function(void * a_arg)
     // Create kqueue fd
     l_thread->kqueue_fd = kqueue();
     l_thread->kqueue_events_count_max = DAP_EVENTS_SOCKET_MAX;
-    l_thread->kqueue_events = DAP_NEW_Z_SIZE(struct kevent, l_worker->kqueue_events_count_max *sizeof(struct kevent));
+    l_thread->kqueue_events = DAP_NEW_Z_SIZE(struct kevent, l_thread->kqueue_events_count_max *sizeof(struct kevent));
 
     dap_proc_thread_assign_esocket_unsafe(l_thread,l_thread->proc_queue->esocket);
     dap_proc_thread_assign_esocket_unsafe(l_thread,l_thread->proc_event);
@@ -522,9 +509,9 @@ static void * s_proc_thread_function(void * a_arg)
             if (!l_cur)
         	continue;
             l_cur->kqueue_event_catched = &l_thread->kqueue_events[n];
-	    u_int l_cur_flags = l_thread->kqueue_events[n].fflags;
-            l_flag_write = l_cur_flags & EVFILT_WRITE;
-            l_flag_read  = l_cur_flags & EVFILT_READ;
+	    u_int l_cur_events = l_thread->kqueue_events[n].fflags;
+            l_flag_write = l_cur_events & EVFILT_WRITE;
+            l_flag_read  = l_cur_events & EVFILT_READ;
 #else
 #error "Unimplemented fetch esocket after poll"
 #endif
@@ -616,8 +603,8 @@ static void * s_proc_thread_function(void * a_arg)
                                     break;
                                 }
                                 #elif defined (DAP_EVENTS_CAPS_QUEUE_MQUEUE)
-                                    volatile char * l_ptr = (char *) l_cur->buf_out;
-                                    volatile void *l_ptr_in;
+                                    char * l_ptr = (char *) l_cur->buf_out;
+                                    void *l_ptr_in;
                                     memcpy(&l_ptr_in,l_ptr, sizeof (l_ptr_in) );
 
                                     l_bytes_sent = mq_send(l_cur->mqd, l_ptr, sizeof (l_ptr),0);
@@ -631,6 +618,19 @@ static void * s_proc_thread_function(void * a_arg)
                                         l_errno = errno;
                                         log_it(L_WARNING,"mq_send %p errno: %d", l_ptr_in, l_errno);
                                     }
+                                #elif defined (DAP_EVENTS_CAPS_KQUEUE)
+				    struct kevent* l_event=&l_cur->kqueue_event;
+				    void * l_ptr;
+				    memcpy(l_ptr,l_cur->buf_out,sizeof(l_ptr) );
+				    
+				    EV_SET(l_event,(uintptr_t) l_ptr, l_cur->kqueue_base_filter,l_cur->kqueue_base_flags, l_cur->kqueue_base_fflags,0, l_cur);
+				    int l_n = kevent(l_thread->kqueue_fd,l_event,1,NULL,0,NULL);
+				    if (l_n == 1)
+					l_bytes_sent = sizeof(l_ptr);
+				    else{
+					l_errno = errno;
+                                        log_it(L_WARNING,"queue ptr send error: kevent %p errno: %d", l_ptr, l_errno);
+				    }
                                 #else
                                     #error "Not implemented dap_events_socket_queue_ptr_send() for this platform"
                                 #endif
@@ -679,6 +679,19 @@ static void * s_proc_thread_function(void * a_arg)
 #elif defined (DAP_EVENTS_CAPS_POLL)
                 l_thread->poll[n].fd = -1;
                 l_poll_compress = true;
+#elif defined (DAP_EVENTS_CAPS_KQUEUE)
+		if (l_cur->socket != -1 ){
+		    struct kevent * l_event = &l_cur->kqueue_event;
+		    EV_SET(l_event, l_cur->socket, 0 ,EV_DELETE, 0,0,l_cur);
+		    if ( kevent( l_thread->kqueue_fd,l_event,1,NULL,0,NULL) != 1 ) {
+			int l_errno = errno;
+			char l_errbuf[128];
+			strerror_r(l_errno, l_errbuf, sizeof (l_errbuf));
+			log_it( L_ERROR,"Can't remove event socket's handler %d from the epoll_fd %d  \"%s\" (%d)", l_cur->socket,
+				l_thread->kqueue_fd, l_errbuf, l_errno);
+    		    }
+		}
+
 #else
 #error "Unimplemented poll ctl analog for this platform"
 #endif
diff --git a/dap-sdk/net/core/dap_server.c b/dap-sdk/net/core/dap_server.c
index f50e423ea743fa87dd08ad67665d5fa4fe8df6a7..ad8fb113be0d69b162afbc7f74c01622e9a4c322 100644
--- a/dap-sdk/net/core/dap_server.c
+++ b/dap-sdk/net/core/dap_server.c
@@ -21,16 +21,23 @@
     along with any DAP SDK based project.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifdef DAP_OS_WINDOWS
+#if defined(DAP_OS_WINDOWS)
 #include "wepoll.h"
 #include <ws2tcpip.h>
-#elif defined DAP_OS_UNIX
+
+#elif defined(DAP_OS_LINUX)
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <sys/socket.h>
 #include <sys/epoll.h>
 #include <netdb.h>
 #include <sys/timerfd.h>
+#elif defined (DAP_OS_BSD)
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <sys/event.h>
+#include <netdb.h>
 #endif
 
 #include <sys/types.h>
diff --git a/dap-sdk/net/core/include/dap_proc_thread.h b/dap-sdk/net/core/include/dap_proc_thread.h
index 7c46f7805ba326e946cf32476183045c829d205e..12a7fc0ab4b5eab330a43cdfd2f6552e8f44cfbe 100644
--- a/dap-sdk/net/core/include/dap_proc_thread.h
+++ b/dap-sdk/net/core/include/dap_proc_thread.h
@@ -55,7 +55,7 @@ typedef struct dap_proc_thread{
 #elif defined (DAP_EVENTS_CAPS_KQUEUE)
     int kqueue_fd;
     struct kevent * kqueue_events;
-    int kqueue_events_count; 
+    int kqueue_events_count_max; 
 #else
 #error "No poll for proc thread for your platform"
 #endif