3737#include < rdma/rdma_cma.h>
3838#include < vma/dev/net_device_table_mgr.h>
3939#include " vma/dev/ring_allocation_logic.h"
40+ #include " vma/sock/fd_collection.h"
4041#include " vma/sock/sock-redirect.h" // calling orig_os_api.epoll()
4142#include " vma/util/verbs_extra.h"
4243
4344#include " timer_handler.h"
4445#include " event_handler_ibverbs.h"
4546#include " event_handler_rdma_cm.h"
46- #include " event_handler_poll_os.h"
4747
4848#include " vma/util/instrumentation.h"
4949
@@ -178,28 +178,6 @@ void event_handler_manager::unregister_ibverbs_event(int fd, event_handler_ibver
178178 post_new_reg_action (reg_action);
179179}
180180
181- void event_handler_manager::register_poll_os_event (int fd, event_handler_poll_os* poll_os_fd)
182- {
183- reg_action_t reg_action;
184- memset (®_action, 0 , sizeof (reg_action));
185- reg_action.type = REGISTER_POLL_OS;
186- reg_action.info .poll_os .fd = fd;
187- reg_action.info .poll_os .poll_os_fd = poll_os_fd;
188- update_epfd (fd, EPOLL_CTL_ADD, EPOLLIN | EPOLLPRI | EPOLLONESHOT);
189- post_new_reg_action (reg_action);
190- }
191-
192- void event_handler_manager::unregister_poll_os_event (int fd, event_handler_poll_os* poll_os_fd)
193- {
194- reg_action_t reg_action;
195- memset (®_action, 0 , sizeof (reg_action));
196- reg_action.type = UNREGISTER_POLL_OS;
197- reg_action.info .poll_os .fd = fd;
198- reg_action.info .poll_os .poll_os_fd = poll_os_fd;
199- update_epfd (fd, EPOLL_CTL_DEL, EPOLLIN | EPOLLPRI | EPOLLONESHOT);
200- post_new_reg_action (reg_action);
201- }
202-
203181void event_handler_manager::register_rdma_cm_event (int fd, void * id, void * cma_channel, event_handler_rdma_cm* handler)
204182{
205183 reg_action_t reg_action;
@@ -445,8 +423,6 @@ const char* event_handler_manager::reg_action_str(event_action_type_e reg_action
445423 case UNREGISTER_RDMA_CM: return " UNREGISTER_RDMA_CM" ;
446424 case REGISTER_COMMAND: return " REGISTER_COMMAND" ;
447425 case UNREGISTER_COMMAND: return " UNREGISTER_COMMAND" ;
448- case REGISTER_POLL_OS: return " REGISTER_POLL_OS" ;
449- case UNREGISTER_POLL_OS: return " UNREGISTER_POLL_OS" ;
450426 BULLSEYE_EXCLUDE_BLOCK_START
451427 default : return " UNKNOWN" ;
452428 BULLSEYE_EXCLUDE_BLOCK_END
@@ -656,42 +632,6 @@ void event_handler_manager::priv_register_rdma_cm_events(rdma_cm_reg_info_t& inf
656632 }
657633}
658634
659- void event_handler_manager::priv_register_poll_os (command_poll_os_info_t & info)
660- {
661- evh_logfunc_entry (" fd=%d" , info.fd );
662-
663- event_handler_map_t ::iterator iter_fd = m_event_handler_map.find (info.fd );
664- if (iter_fd == m_event_handler_map.end ()) {
665- evh_logdbg (" Adding poll_os fd event (fd %d)" , info.fd );
666- event_data_t map_value;
667-
668- map_value.type = EV_POLL_FD;
669- map_value.poll_os_cmd .fd = info.fd ;
670- map_value.poll_os_cmd .poll_os_fd = info.poll_os_fd ;
671-
672- /* coverity[uninit_use_in_call] */
673- /* cppcheck-suppress uninitStructMember */
674- m_event_handler_map[info.fd ] = map_value;
675- }
676- }
677-
678- void event_handler_manager::priv_unregister_poll_os (command_poll_os_info_t & info)
679- {
680- evh_logfunc_entry (" fd=%d" , info.fd );
681-
682- event_handler_map_t ::iterator iter_fd = m_event_handler_map.find (info.fd );
683- if (iter_fd != m_event_handler_map.end ()) {
684- if (iter_fd->second .type != EV_POLL_FD){
685- evh_logerr (" fd=%d: is already handling events of different type" , info.fd );
686- return ;
687- }
688- iter_fd->second .poll_os_cmd .poll_os_fd ->event_handler_poll_os_unregister_cb ();
689- m_event_handler_map.erase (iter_fd);
690- } else {
691- evh_logdbg (" POLL_OS event wasn't found (fd %d)" , info.fd );
692- }
693- }
694-
695635void event_handler_manager::priv_unregister_rdma_cm_events (rdma_cm_reg_info_t & info)
696636{
697637 evh_logfunc_entry (" fd=%d, id=%p" , info.fd , info.id );
@@ -795,12 +735,6 @@ void event_handler_manager::handle_registration_action(reg_action_t& reg_action)
795735 case UNREGISTER_COMMAND:
796736 priv_unregister_command_events (reg_action.info .cmd );
797737 break ;
798- case REGISTER_POLL_OS:
799- priv_register_poll_os (reg_action.info .poll_os );
800- break ;
801- case UNREGISTER_POLL_OS:
802- priv_unregister_poll_os (reg_action.info .poll_os );
803- break ;
804738 case UNREGISTER_TIMERS_AND_DELETE:
805739 priv_unregister_all_handler_timers (reg_action.info .timer );
806740 delete reg_action.info .timer .handler ;
@@ -1021,7 +955,10 @@ void* event_handler_manager::thread_loop()
1021955
1022956 event_handler_map_t ::iterator i = m_event_handler_map.find (fd);
1023957 if (i == m_event_handler_map.end ()) {
1024- evh_logdbg (" No event handler (fd=%d)" , fd);
958+ // No event handler - this is probably a poll_os event!
959+ if (!g_p_fd_collection->set_immediate_os_sample (fd)) {
960+ evh_logdbg (" No event handler (fd=%d)" , fd);
961+ }
1025962 continue ;
1026963 }
1027964
@@ -1042,9 +979,6 @@ void* event_handler_manager::thread_loop()
1042979 case EV_COMMAND:
1043980 i->second .command_ev .cmd ->execute ();
1044981 break ;
1045- case EV_POLL_FD:
1046- i->second .poll_os_cmd .poll_os_fd ->event_handler_poll_os_ready_cb ();
1047- break ;
1048982 BULLSEYE_EXCLUDE_BLOCK_START
1049983 default :
1050984 evh_logerr (" Unknow event on fd=%d" , fd);
0 commit comments