fsprobe: add fsprobe_Wait function 47/12747/6
authorMichael Meffie <mmeffie@sinenomine.net>
Wed, 11 Oct 2017 02:57:01 +0000 (22:57 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 4 Oct 2018 03:30:29 +0000 (23:30 -0400)
Move the lwp code to wait in the fsprobe applications down to the
fsprobe library.

This is a non-functional change in anticipation of converting the
fsprobe library and programs to pthreads.

Change-Id: I2972b13e2e3eeb691c64c91b0640bbc97e7d0b21
Reviewed-on: https://gerrit.openafs.org/12747
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/WINNT/client_creds/ipaddrchg.c
src/fsprobe/fsprobe.c
src/fsprobe/fsprobe.h
src/fsprobe/fsprobe_test.c
src/scout/scout.c

index 5bfb3c1..f2aec04 100644 (file)
@@ -146,13 +146,7 @@ pingFS(void *ping_params, struct sockaddr_in *addrp, char *namep)
         return 0;
     }
 
-    for (;;)
-    {
-        tv.tv_sec = pp->host.wait;
-        tv.tv_usec = 0;
-        if (IOMGR_Select(0, 0, 0, 0, &tv))
-            break;
-    }
+    fsprobe_Wait(0);
     probeComplete();
     return(0);
 }
index 03657eb..8ddb320 100644 (file)
@@ -831,3 +831,44 @@ fsprobe_ForceProbeNow(void)
     return (0);
 
 }                              /*fsprobe_ForceProbeNow */
+
+/*------------------------------------------------------------------------
+ * [exported] fsprobe_Wait
+ *
+ * Description:
+ *     Wait for the collection to complete.
+ *
+ * Arguments:
+ *    int sleep_secs : time to wait in seconds. 0 means sleep forever.
+ *
+ * Returns:
+ *     0 on success,
+ *     Error value otherwise.
+ *
+ * Environment:
+ *     The module must have been initialized.
+ *
+ * Side Effects:
+ *     As advertised.
+ *------------------------------------------------------------------------*/
+int
+fsprobe_Wait(int sleep_secs)
+{
+    int code;
+    struct timeval tv;
+
+    if (sleep_secs == 0) {
+       while (1) {
+           tv.tv_sec = 30;
+           tv.tv_usec = 0;
+           code = IOMGR_Select(0, 0, 0, 0, &tv);
+           if (code != 0)
+               break;
+       }
+    } else {
+       tv.tv_sec = sleep_secs;
+       tv.tv_usec = 0;
+       code = IOMGR_Select(0, 0, 0, 0, &tv);
+    }
+    return code;
+}
index 94083bf..c3588d1 100644 (file)
@@ -152,4 +152,6 @@ extern int fsprobe_Cleanup(int);
      *          with the fsprobe connection array.
      */
 
+extern int fsprobe_Wait(int);
+
 #endif /* __fsprobe_h */
index 941c8c7..7d78b6a 100644 (file)
@@ -148,7 +148,6 @@ main(int argc, char **argv)
     afs_int32 code;    /*Return code */
     struct sockaddr_in FSSktArray[3];  /*socket array */
     struct hostent *he;                /*Host entry */
-    struct timeval tv;         /*Time structure */
     int sleep_secs;            /*Number of seconds to sleep */
 
     printf("\n\nTest of the fsprobe facility.\n\n");
@@ -211,20 +210,7 @@ main(int argc, char **argv)
        ("Fsprobe service started, main thread sleeping for %d seconds...\n",
         sleep_secs);
 
-    /*
-     * Let's just fall asleep for a while, then we'll clean up.
-     */
-    tv.tv_sec = sleep_secs;
-    tv.tv_usec = 0;
-    code = IOMGR_Select(0,     /*Num fds */
-                       0,      /*Descriptors ready for reading */
-                       0,      /*Descriptors ready for writing */
-                       0,      /*Descriptors with exceptional conditions */
-                       &tv);   /*Timeout structure */
-    if (code) {
-       fprintf(stderr, "[%s] IOMGR_Select() returned non-zero value: %d\n",
-               rn, code);
-    }
+    fsprobe_Wait(sleep_secs);
 
     /*
      * We're all done.  Clean up, put the last nail in Rx, then
index 9396c50..4a38b47 100644 (file)
@@ -1635,7 +1635,6 @@ execute_scout(int a_numservers, struct cmd_item *a_srvname, int a_pkg)
     struct mini_line *curr_line;       /*Ptr to current line */
     int i;                     /*Generic loop variable */
     int mini_line_bytes;       /*Num bytes in mini_lines */
-    struct timeval tv;         /*Time structure */
     int linenum;               /*Current mini-line number */
 #if 0
     PROCESS pid;               /*Main LWP process ID */
@@ -1966,18 +1965,7 @@ execute_scout(int a_numservers, struct cmd_item *a_srvname, int a_pkg)
        scout_CleanExit(code);
     }
 
-    /*
-     * We fall into a loop, sleeping forever.
-     */
-    while (1) {
-       tv.tv_sec = 60 * 60;    /*Sleep for an hour at a time */
-       tv.tv_usec = 0;
-       select(0,       /*Num fds */
-              0,       /*Descriptors ready for reading */
-              0,       /*Descriptors ready for writing */
-              0,       /*Descriptors with exceptional conditions */
-              &tv);    /*Timeout structure */
-    }                          /*Sleep forever */
+    fsprobe_Wait(0); /* sleep forever */
 
 #if 0
     /*
@@ -1988,6 +1976,7 @@ execute_scout(int a_numservers, struct cmd_item *a_srvname, int a_pkg)
     return (0);
 #endif /* 0 */
 
+    return 0;
 }                              /*execute_scout */
 
 /*------------------------------------------------------------------------