Add application option to suppress lockfile
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Thu, 26 Nov 2015 10:10:58 +0000 (11:10 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Thu, 26 Nov 2015 10:12:32 +0000 (11:12 +0100)
Add clock API to get timestamp in nanoseconds

src-api/core/oonf_appdata.h
src-api/core/oonf_main.c
src-plugins/subsystems/os_clock.h
src-plugins/subsystems/os_linux/os_clock_linux.c
src/app_data.c.in
src/dlep-radio/CMakeLists.txt
src/dlep-router/CMakeLists.txt
src/olsrd2/CMakeLists.txt
src/oonf/CMakeLists.txt

index cb92671..f6b396a 100644 (file)
@@ -72,6 +72,9 @@ struct oonf_appdata {
 
   /*! true if application needs root access */
   const bool need_root;
+
+  /*! true if application requires a system wide lock*/
+  const bool need_lock;
 };
 
 #endif /* OONF_APPDATA_H_ */
index 852b50c..8974f85 100644 (file)
@@ -237,7 +237,8 @@ oonf_main(int argc, char **argv, const struct oonf_appdata *appdata) {
     }
   }
 
-  if (config_global.lockfile != NULL && *config_global.lockfile != 0) {
+  if (appdata->need_lock
+      && config_global.lockfile != NULL && *config_global.lockfile != 0) {
     /* create application lock */
     if (os_core_create_lockfile(config_global.lockfile)) {
       OONF_WARN(LOG_MAIN, "Could not acquire application lock '%s'",
index d55c206..77992c0 100644 (file)
@@ -66,6 +66,7 @@
 #endif
 
 /* prototypes for all os_system functions */
+EXPORT int os_clock_gettime64_ns(uint64_t *t64);
 EXPORT int os_clock_gettime64(uint64_t *t64);
 
 #endif /* OS_CLOCK_H_ */
index 6669b7f..f254bac 100644 (file)
@@ -87,7 +87,31 @@ _init(void) {
 }
 
 /**
- * Reads the current time as a monotonic timestamp
+ * Reads the current time in nanoseconds as a monotonic timestamp
+ * @param t64 pointer to timestamp
+ * @return 0 if valid timestamp was read, negative otherwise
+ */
+int
+os_clock_gettime64_ns(uint64_t *t64) {
+  int error;
+
+#if defined(CLOCK_MONOTONIC_RAW) || defined (CLOCK_MONOTONIC)
+  if (_clock_source) {
+    struct timespec ts;
+
+    if ((error = clock_gettime(_clock_source, &ts)) != 0) {
+      return error;
+    }
+
+    *t64 = 1000000000ull * ts.tv_sec + ts.tv_nsec;
+    return 0;
+  }
+#endif
+  return -1;
+}
+
+/**
+ * Reads the current time in milliseconds as a monotonic timestamp
  * @param t64 pointer to timestamp
  * @return 0 if valid timestamp was read, negative otherwise
  */
@@ -105,7 +129,7 @@ os_clock_gettime64(uint64_t *t64) {
       return error;
     }
 
-    *t64 = 1000ull * ts.tv_sec + ts.tv_nsec / 1000000;
+    *t64 = 1000ull * ts.tv_sec + ts.tv_nsec / 1000000ull;
     return 0;
   }
 #endif
@@ -123,6 +147,6 @@ os_clock_gettime64(uint64_t *t64) {
   }
   last_sec = tv.tv_sec;
 
-  *t64 = 1000ull * tv.tv_sec + tv.tv_usec/ 1000;
+  *t64 = 1000ull * tv.tv_sec + tv.tv_usec / 1000ull;
   return 0;
 }
index b876635..bd5cc74 100644 (file)
@@ -52,7 +52,8 @@ static struct oonf_appdata _appdata = {
   .default_lockfile = OS_CORE_LOCKFILE_FOLDER "${OONF_APP}.lock",
   .default_cfg_handler = "${OONF_APP_DEFAULT_CFG_HANDLER}",
 
-  .need_root = ${OONF_NEED_ROOT}
+  .need_root = ${OONF_NEED_ROOT},
+  .need_lock = ${OONF_NEED_LOCK},
 };
 
 const struct oonf_appdata *
index 7af1fb5..decbccf 100644 (file)
@@ -16,6 +16,9 @@ set (OONF_VERSION_TRAILER "Visit http://www.olsr.org\\n")
 # set to true to stop application running without root privileges (true/false)
 set (OONF_NEED_ROOT true)
 
+# set to true to require a lock for the application to run
+set (OONF_NEED_LOCK true)
+
 # name of default configuration handler
 set (OONF_APP_DEFAULT_CFG_HANDLER Compact)
 
index 7d17b96..1e7faf6 100644 (file)
@@ -16,6 +16,9 @@ set (OONF_VERSION_TRAILER "Visit http://www.olsr.org\\n")
 # set to true to stop application running without root privileges (true/false)
 set (OONF_NEED_ROOT false)
 
+# set to true to require a lock for the application to run
+set (OONF_NEED_LOCK true)
+
 # name of default configuration handler
 set (OONF_APP_DEFAULT_CFG_HANDLER Compact)
 
index c6f0475..4d1064c 100644 (file)
@@ -16,6 +16,9 @@ set (OONF_VERSION_TRAILER "Visit http://www.olsr.org\\n")
 # set to true to stop application running without root privileges (true/false)
 set (OONF_NEED_ROOT true)
 
+# set to true to require a lock for the application to run
+set (OONF_NEED_LOCK true)
+
 # name of default configuration handler
 set (OONF_APP_DEFAULT_CFG_HANDLER Compact)
 
index 3d20450..394a634 100644 (file)
@@ -16,6 +16,9 @@ set (OONF_VERSION_TRAILER "Visit http://www.olsr.org\\n")
 # set to true to stop application running without root privileges (true/false)
 set (OONF_NEED_ROOT false)
 
+# set to true to require a lock for the application to run
+set (OONF_NEED_LOCK false)
+
 # name of default configuration handler
 set (OONF_APP_DEFAULT_CFG_HANDLER Compact)