Added some schetces for threadless operation
authorAndreas Tonnesen <andreto@olsr.org>
Fri, 12 Nov 2004 20:48:19 +0000 (20:48 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Fri, 12 Nov 2004 20:48:19 +0000 (20:48 +0000)
src/cfgparser/olsrd.conf.example
src/cfgparser/olsrd_conf.c
src/main.c
src/olsr_cfg.h
src/socket_parser.c
src/socket_parser.h

index ad4d3bb..dc2a7f1 100644 (file)
@@ -103,9 +103,9 @@ UseHysteresis       yes
 
 
 # Polling rate in seconds(float). 
-# Default value 0.1 sec
+# Default value 0.05 sec
 
-Pollrate       0.1
+Pollrate       0.05
 
 
 # TC redundancy
index c899dde..0b8e78a 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsrd_conf.c,v 1.17 2004/11/12 16:33:13 kattemat Exp $
+ * $Id: olsrd_conf.c,v 1.18 2004/11/12 20:48:19 kattemat Exp $
  *
  */
 
@@ -432,7 +432,7 @@ olsrd_write_cnf(struct olsrd_config *cnf, char *fname)
   fprintf(fd, "\n\n");
 
   /* Pollrate */
-  fprintf(fd, "# Polling rate in seconds(float).\n# Auto uses default value 0.1 sec\n\n");
+  fprintf(fd, "# Polling rate in seconds(float).\n# Auto uses default value 0.05 sec\n\n");
   fprintf(fd, "Pollrate\t%0.2f\n", cnf->pollrate);
 
   /* TC redundancy */
index d8dc993..1bdcba2 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: main.c,v 1.35 2004/11/11 21:14:17 kattemat Exp $
+ * $Id: main.c,v 1.36 2004/11/12 20:48:19 kattemat Exp $
  *
  */
 
@@ -641,6 +641,11 @@ main(int argc, char *argv[])
   signal(SIGTERM, olsr_shutdown);  
 #endif
 
+  /* Register socket poll event */
+#if 0
+  olsr_register_timeout_function(&poll_sockets);
+#endif
+
   /* Go into listenloop */
   listen_loop();
 
index d9c05dc..6edded7 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: olsr_cfg.h,v 1.8 2004/11/11 21:14:17 kattemat Exp $
+ * $Id: olsr_cfg.h,v 1.9 2004/11/12 20:48:19 kattemat Exp $
  *
  */
 
@@ -30,7 +30,7 @@
 #include "olsr_protocol.h"
 
 /* Default valuse not declared in olsr_protocol.h */
-#define DEF_POLLRATE        0.1
+#define DEF_POLLRATE        0.05
 #define DEF_WILL_AUTO       OLSR_TRUE
 #define DEF_ALLOW_NO_INTS   OLSR_TRUE
 #define DEF_TOS             16
index 269cbc3..8b6d2eb 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: socket_parser.c,v 1.12 2004/11/12 20:17:59 kattemat Exp $
+ * $Id: socket_parser.c,v 1.13 2004/11/12 20:48:19 kattemat Exp $
  *
  */
 
@@ -40,6 +40,9 @@
 
 static int hfd = 0;
 
+static struct timeval tvp = {0, 0};
+static fd_set ibits;
+
 #warning highest FD for select is now set in socket add/remove functions
 
 /**
@@ -217,3 +220,54 @@ listen_loop()
 
 
 
+
+void
+poll_sockets()
+{
+  int n;
+  struct olsr_socket_entry *olsr_sockets;
+
+
+  /* If there are no registered sockets we
+   * do not call select(2)
+   */
+  if(hfd == 0)
+    return;
+  
+  FD_ZERO(&ibits);
+  
+  /* Adding file-descriptors to FD set */
+  olsr_sockets = olsr_socket_entries;
+  while(olsr_sockets)
+    {
+      FD_SET(olsr_sockets->fd, &ibits);
+      olsr_sockets = olsr_sockets->next;
+    }
+      
+  /* Runnig select on the FD set */
+  n = select(hfd, &ibits, 0, 0, &tvp);
+  
+  if(n == 0)
+    return;
+  /* Did somethig go wrong? */
+  if ((n < 0) && errno != EINTR) 
+    {
+      olsr_syslog(OLSR_LOG_ERR, "select: %m");
+      olsr_printf(1, "Error select: %s", strerror(errno));
+      return;
+    }
+
+  gettimeofday(&now, NULL);      
+  
+  olsr_sockets = olsr_socket_entries;
+  while(olsr_sockets)
+    {
+      if(FD_ISSET(olsr_sockets->fd, &ibits))
+       {
+         olsr_sockets->process_function(olsr_sockets->fd);
+       }
+      olsr_sockets = olsr_sockets->next;
+    }
+       
+}
+
index d408856..bc65828 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: socket_parser.h,v 1.6 2004/10/09 22:32:47 kattemat Exp $
+ * $Id: socket_parser.h,v 1.7 2004/11/12 20:48:19 kattemat Exp $
  *
  */
 
@@ -51,4 +51,7 @@ remove_olsr_socket(int, void(*)(int));
 void
 listen_loop(void);
 
+void
+poll_sockets(void);
+
 #endif