It is desired to move the debug macros out of fcoemon_debug.h
and into fcoemon.h. Since fcoemon_utils is a utility library
that could be used for other applications it can provide a
logging facility, but the specific macros for each application
should be in each applications header files.

This means that any of the fcoemon_utils.[ch] helper functions
should not do any logging themselves, becuase they are part of
the utility library and not the application.

sa_select_loop() is the only example of a helper function that
does logging too. It logs when select() fails.

This patch has sa_select_loop() return 1 when it fails so the
caller can log the error message and exit. It will return 0
on success.

Signed-off-by: Robert Love <[email protected]>
---

 fcoemon.c       |    6 +++++-
 fcoemon_utils.c |    6 +++---
 fcoemon_utils.h |    2 +-
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/fcoemon.c b/fcoemon.c
index 6937571..0e278a4 100644
--- a/fcoemon.c
+++ b/fcoemon.c
@@ -2100,7 +2100,11 @@ int main(int argc, char **argv)
        fcm_link_init();        /* NETLINK_ROUTE protocol */
        fcm_dcbd_init();
 
-       sa_select_loop();
+       rc = sa_select_loop();
+       if (rc < 0) {
+               SA_LOG_ERR(rc, "select error\n");
+               exit(EXIT_FAILURE);
+       }
        fcm_dcbd_shutdown();
        return 0;
 }
diff --git a/fcoemon_utils.c b/fcoemon_utils.c
index e98d259..ab36240 100644
--- a/fcoemon_utils.c
+++ b/fcoemon_utils.c
@@ -498,8 +498,7 @@ sa_select_call_deferred_funcs(void)
        }
 }
 
-void
-sa_select_loop(void)
+int sa_select_loop(void)
 {
        struct sa_sel_state *ss = &sa_sel_state;
        struct sa_sel_fd *fp;
@@ -533,7 +532,7 @@ sa_select_loop(void)
                if (rv == -1) {
                        if (errno == EINTR)
                                continue;
-                       SA_LOG_ERR_EXIT(errno, "select error");
+                       return errno;
                }
 
                fp = ss->ts_fd;
@@ -568,6 +567,7 @@ sa_select_loop(void)
                if (ss->ts_defer_list.tqh_first != NULL)
                        sa_select_call_deferred_funcs();
        }
+       return 0;
 }
 
 void
diff --git a/fcoemon_utils.h b/fcoemon_utils.h
index e8c5de9..f154c77 100644
--- a/fcoemon_utils.h
+++ b/fcoemon_utils.h
@@ -256,7 +256,7 @@ u_int sa_timer_get_secs(void);
 /*
  * Enter the polling loop which never exits.
  */
-void sa_select_loop(void);
+int sa_select_loop(void);
 
 /*
  * Set callback for every time through the select loop.

_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to