osaf/libs/core/mds/mds_c_sndrcv.c |   9 +---
 osaf/libs/core/mds/mds_main.c     |   7 +--
 tests/mds/mdstipc_conf.c          |  78 ++++++++++++++------------------------
 3 files changed, 35 insertions(+), 59 deletions(-)


The select() function cannot handle file descriptors larger than 1023. To avoid
this limitation, we replace all usages of select() with poll().

diff --git a/osaf/libs/core/mds/mds_c_sndrcv.c 
b/osaf/libs/core/mds/mds_c_sndrcv.c
--- a/osaf/libs/core/mds/mds_c_sndrcv.c
+++ b/osaf/libs/core/mds/mds_c_sndrcv.c
@@ -45,6 +45,7 @@
 #include "mds_log.h"
 #include "ncssysf_mem.h"
 #include "osaf_utility.h"
+#include "osaf_poll.h"
 
 uint32_t mds_mcm_global_exchange_id = 0;
 
@@ -2558,12 +2559,8 @@ static uint32_t mds_await_active_tbl_del
 static uint32_t mds_mcm_time_wait(NCS_SEL_OBJ sel_obj, uint32_t time_val)
 {
        /* Now wait for the response to come */
-       uint32_t count = 0;
-
-       if (time_val == 0) {
-               count = m_NCS_SEL_OBJ_POLL_SINGLE_OBJ(sel_obj, NULL);
-       } else
-               count = m_NCS_SEL_OBJ_POLL_SINGLE_OBJ(sel_obj, &time_val);
+       int count = osaf_poll_one_fd(m_GET_FD_FROM_SEL_OBJ(sel_obj),
+               time_val == 0 ? -1 : (time_val * 10));
 
        if ((count == 0) || (count == -1)) {
                /* Both for Timeout and Error Case */
diff --git a/osaf/libs/core/mds/mds_main.c b/osaf/libs/core/mds/mds_main.c
--- a/osaf/libs/core/mds/mds_main.c
+++ b/osaf/libs/core/mds/mds_main.c
@@ -44,6 +44,7 @@
 #include <netdb.h>
 #include <config.h>
 #include "osaf_utility.h"
+#include "osaf_poll.h"
 #ifdef ENABLE_TIPC_TRANSPORT
 #include "mds_dt_tipc.h"
 #include <configmake.h>
@@ -122,7 +123,6 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
        char *p_field = NULL;
        uint32_t node_id = 0, cluster_id, mds_tipc_ref = 0;     /* this mds 
tipc ref is random num part of the TIPC id */
        uint32_t status = NCSCC_RC_SUCCESS;
-       uint32_t destroy_ack_tmout;
        NCS_SEL_OBJ destroy_ack_obj;
        char *ptr;
 
@@ -312,9 +312,8 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
                        return NCSCC_RC_FAILURE;
                }
                /* Wait for indication from MDS thread that it is ok to kill it 
*/
-               destroy_ack_tmout = 7000;       /* 70seconds */
-               m_NCS_SEL_OBJ_POLL_SINGLE_OBJ(destroy_ack_obj, 
&destroy_ack_tmout);
-               m_MDS_LOG_DBG("LIB_DESTROY:Destroy ack from MDS thread in %d 
ms", destroy_ack_tmout * 10);
+               osaf_poll_one_fd(m_GET_FD_FROM_SEL_OBJ(destroy_ack_obj), 
70000); /* 70 seconds */
+               m_MDS_LOG_DBG("LIB_DESTROY:Destroy ack from MDS thread in 70 
s");
 
                /* Take the lock before killing the thread */
                osaf_mutex_lock_ordie(&gl_mds_library_mutex);
diff --git a/tests/mds/mdstipc_conf.c b/tests/mds/mdstipc_conf.c
--- a/tests/mds/mdstipc_conf.c
+++ b/tests/mds/mdstipc_conf.c
@@ -19,6 +19,7 @@
 #include "ncs_mda_papi.h"
 #include "ncssysf_tsk.h"
 #include "mdstipc.h"
+#include "osaf_poll.h"
 extern int fill_syncparameters(int);
 /****************** ADEST WRAPPERS ***********************/
 uint32_t adest_get_handle(void)
@@ -1517,58 +1518,37 @@ int is_sel_obj_found(int indx)
 #endif
 int is_vdest_sel_obj_found(int vi,int si)
 {
-  uint32_t count=0;
-  /*int count=0;*/
-  NCS_SEL_OBJ numfds;
-  NCS_SEL_OBJ_SET readfd;
-  
-  numfds.raise_obj=0;
-  numfds.rmv_obj=0;
-  
-  m_NCS_SEL_OBJ_ZERO(&readfd);
-  m_NCS_SEL_OBJ_SET(gl_tet_vdest[vi].svc[si].sel_obj,&readfd);
-  numfds=m_GET_HIGHER_SEL_OBJ(gl_tet_vdest[vi].svc[si].sel_obj,numfds);
-  count=m_NCS_SEL_OBJ_SELECT(numfds,&readfd,NULL,NULL,0);
-  switch(count)
-    {
-    case 0: printf("                       TIMED OUT                  \n");
-      break;
-    case -1:printf("......................couldn't select..............\n");
-      return count;
-      break;
-    }
-  if( m_NCS_SEL_OBJ_ISSET(gl_tet_vdest[vi].svc[si].sel_obj,&readfd) )
-    return gl_tet_vdest[vi].svc[si].svc_id;
-  else
-    return 0; 
-  
+  struct pollfd sel;
+  unsigned count;
+  sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_vdest[vi].svc[si].sel_obj);
+  sel.events = POLLIN;
+  count = osaf_poll(&sel, 1, -1);
+  switch (count) {
+  case 0:
+    printf("                       TIMED OUT                  \n");
+    break;
+  case 1:
+    if ((sel.revents & POLLIN) != 0) return gl_tet_vdest[vi].svc[si].svc_id;
+    break;
+  }
+  return 0;
 }
 int is_adest_sel_obj_found(int si)
 {
-  uint32_t count=0;
-  /*  int count=0;*/
-  NCS_SEL_OBJ numfds;
-  NCS_SEL_OBJ_SET readfd;
-  
-  numfds.raise_obj=0;
-  numfds.rmv_obj=0;
-  
-  m_NCS_SEL_OBJ_ZERO(&readfd);
-  m_NCS_SEL_OBJ_SET(gl_tet_adest.svc[si].sel_obj,&readfd);
-  numfds=m_GET_HIGHER_SEL_OBJ(gl_tet_adest.svc[si].sel_obj,numfds);
-  count=m_NCS_SEL_OBJ_SELECT(numfds,&readfd,NULL,NULL,0);
-  switch(count)
-    {
-    case 0: printf("                       TIMED OUT                  \n");
-      break;
-    case -1:printf("......................couldn't select..............\n");
-      return count;
-      break;
-    }
-  if( m_NCS_SEL_OBJ_ISSET(gl_tet_adest.svc[si].sel_obj,&readfd) )
-    return gl_tet_adest.svc[si].svc_id;
-  else
-    return 0; 
+  struct pollfd sel;
+  unsigned count;
+  sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_adest.svc[si].sel_obj);
+  sel.events = POLLIN;
+  count = osaf_poll(&sel, 1, -1);
+  switch (count) {
+  case 0:
+    printf("                       TIMED OUT                  \n");
+    break;
+  case 1:
+    if ((sel.revents & POLLIN) != 0) return gl_tet_adest.svc[si].svc_id;
+    break;
+  }
+  return 0;
 }
 uint32_t tet_create_task(NCS_OS_CB task_startup,
                       NCSCONTEXT t_handle)

------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to