[Xenomai-git] Philippe Gerum : lib/cobalt: output sync delay fit in a regular integer

2015-07-27 Thread git repository hosting
Module: xenomai-3
Branch: master
Commit: 2dd50c880950fc9a93c0f76fbe1f7c202a46092b
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=2dd50c880950fc9a93c0f76fbe1f7c202a46092b

Author: Philippe Gerum r...@xenomai.org
Date:   Sun Jul 26 11:25:24 2015 +0200

lib/cobalt: output sync delay fit in a regular integer

---

 include/cobalt/tunables.h |8 
 lib/cobalt/init.c |   29 +++--
 lib/cobalt/printf.c   |6 +++---
 3 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/include/cobalt/tunables.h b/include/cobalt/tunables.h
index 67953c2..67ac77a 100644
--- a/include/cobalt/tunables.h
+++ b/include/cobalt/tunables.h
@@ -31,7 +31,7 @@ extern int __cobalt_print_bufsz;
 
 extern int __cobalt_print_bufcount;
 
-extern unsigned long long __cobalt_print_syncdelay;
+extern int __cobalt_print_syncdelay;
 
 static inline define_config_tunable(main_prio, int, prio)
 {
@@ -63,12 +63,12 @@ static inline read_config_tunable(print_buffer_count, int)
return __cobalt_print_bufcount;
 }
 
-static inline define_config_tunable(print_sync_delay, unsigned long long, 
delay)
+static inline define_config_tunable(print_sync_delay, int, delay_ms)
 {
-   __cobalt_print_syncdelay = delay;
+   __cobalt_print_syncdelay = delay_ms;
 }
 
-static inline read_config_tunable(print_sync_delay, unsigned long long)
+static inline read_config_tunable(print_sync_delay, int)
 {
return __cobalt_print_syncdelay;
 }
diff --git a/lib/cobalt/init.c b/lib/cobalt/init.c
index 85dd590..2a81814 100644
--- a/lib/cobalt/init.c
+++ b/lib/cobalt/init.c
@@ -26,6 +26,7 @@
 #include getopt.h
 #include limits.h
 #include unistd.h
+#include stdint.h
 #include semaphore.h
 #include boilerplate/setup.h
 #include cobalt/uapi/kernel/heap.h
@@ -230,16 +231,17 @@ int cobalt_init(void)
 }
 
 static int get_int_arg(const char *name, const char *arg,
-  unsigned long long *valp)
+  int *valp, int min)
 {
-   unsigned long long value;
+   int value, ret;
char *p;

errno = 0;
-   value = strtoll(arg, p, 10);
-   if (errno || *p) {
+   value = (int)strtol(arg, p, 10);
+   if (errno || *p || value  min) {
+   ret = -errno ?: -EINVAL;
early_warning(invalid value for %s: %s, name, arg);
-   return -errno;
+   return ret;
}
 
*valp = value;
@@ -249,30 +251,29 @@ static int get_int_arg(const char *name, const char *arg,
 
 static int cobalt_parse_option(int optnum, const char *optarg)
 {
-   unsigned long long value;
-   int ret;
+   int value, ret;
 
switch (optnum) {
case main_prio_opt:
-   ret = get_int_arg(--main-prio, optarg, value);
+   ret = get_int_arg(--main-prio, optarg, value, INT32_MIN);
if (ret)
return ret;
-   __cobalt_main_prio = (int)value;
+   __cobalt_main_prio = value;
break;
case print_bufsz_opt:
-   ret = get_int_arg(--print-buffer-size, optarg, value);
+   ret = get_int_arg(--print-buffer-size, optarg, value, 0);
if (ret)
return ret;
-   __cobalt_print_bufsz = (int)value;
+   __cobalt_print_bufsz = value;
break;
case print_bufcnt_opt:
-   ret = get_int_arg(--print-buffer-count, optarg, value);
+   ret = get_int_arg(--print-buffer-count, optarg, value, 0);
if (ret)
return ret;
-   __cobalt_print_bufcount = (int)value;
+   __cobalt_print_bufcount = value;
break;
case print_syncdelay_opt:
-   ret = get_int_arg(--print-sync-delay, optarg, value);
+   ret = get_int_arg(--print-sync-delay, optarg, value, 0);
if (ret)
return ret;
__cobalt_print_syncdelay = value;
diff --git a/lib/cobalt/printf.c b/lib/cobalt/printf.c
index e7ff120..c016fb2 100644
--- a/lib/cobalt/printf.c
+++ b/lib/cobalt/printf.c
@@ -72,7 +72,7 @@ __weak int __cobalt_print_bufsz = RT_PRINT_DEFAULT_BUFFER;
 
 __weak int __cobalt_print_bufcount = RT_PRINT_DEFAULT_BUFFERS_COUNT;
 
-__weak unsigned long long __cobalt_print_syncdelay = 
RT_PRINT_DEFAULT_SYNCDELAY;
+__weak int __cobalt_print_syncdelay = RT_PRINT_DEFAULT_SYNCDELAY;
 
 static struct print_buffer *first_buffer;
 static int buffers;
@@ -693,8 +693,8 @@ void cobalt_print_init(void)
first_buffer = NULL;
seq_no = 0;
 
-   syncdelay.tv_sec  = __cobalt_print_syncdelay / 1000ULL;
-   syncdelay.tv_nsec = (__cobalt_print_syncdelay % 1000ULL) * 100;
+   syncdelay.tv_sec  = __cobalt_print_syncdelay / 1000;
+   syncdelay.tv_nsec = (__cobalt_print_syncdelay % 1000) * 100;
 
/* Fill the buffer pool */
pool_bitmap_len = 

[Xenomai-git] Philippe Gerum : lib/cobalt: output sync delay fit in a regular integer

2015-07-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 2dd50c880950fc9a93c0f76fbe1f7c202a46092b
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=2dd50c880950fc9a93c0f76fbe1f7c202a46092b

Author: Philippe Gerum r...@xenomai.org
Date:   Sun Jul 26 11:25:24 2015 +0200

lib/cobalt: output sync delay fit in a regular integer

---

 include/cobalt/tunables.h |8 
 lib/cobalt/init.c |   29 +++--
 lib/cobalt/printf.c   |6 +++---
 3 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/include/cobalt/tunables.h b/include/cobalt/tunables.h
index 67953c2..67ac77a 100644
--- a/include/cobalt/tunables.h
+++ b/include/cobalt/tunables.h
@@ -31,7 +31,7 @@ extern int __cobalt_print_bufsz;
 
 extern int __cobalt_print_bufcount;
 
-extern unsigned long long __cobalt_print_syncdelay;
+extern int __cobalt_print_syncdelay;
 
 static inline define_config_tunable(main_prio, int, prio)
 {
@@ -63,12 +63,12 @@ static inline read_config_tunable(print_buffer_count, int)
return __cobalt_print_bufcount;
 }
 
-static inline define_config_tunable(print_sync_delay, unsigned long long, 
delay)
+static inline define_config_tunable(print_sync_delay, int, delay_ms)
 {
-   __cobalt_print_syncdelay = delay;
+   __cobalt_print_syncdelay = delay_ms;
 }
 
-static inline read_config_tunable(print_sync_delay, unsigned long long)
+static inline read_config_tunable(print_sync_delay, int)
 {
return __cobalt_print_syncdelay;
 }
diff --git a/lib/cobalt/init.c b/lib/cobalt/init.c
index 85dd590..2a81814 100644
--- a/lib/cobalt/init.c
+++ b/lib/cobalt/init.c
@@ -26,6 +26,7 @@
 #include getopt.h
 #include limits.h
 #include unistd.h
+#include stdint.h
 #include semaphore.h
 #include boilerplate/setup.h
 #include cobalt/uapi/kernel/heap.h
@@ -230,16 +231,17 @@ int cobalt_init(void)
 }
 
 static int get_int_arg(const char *name, const char *arg,
-  unsigned long long *valp)
+  int *valp, int min)
 {
-   unsigned long long value;
+   int value, ret;
char *p;

errno = 0;
-   value = strtoll(arg, p, 10);
-   if (errno || *p) {
+   value = (int)strtol(arg, p, 10);
+   if (errno || *p || value  min) {
+   ret = -errno ?: -EINVAL;
early_warning(invalid value for %s: %s, name, arg);
-   return -errno;
+   return ret;
}
 
*valp = value;
@@ -249,30 +251,29 @@ static int get_int_arg(const char *name, const char *arg,
 
 static int cobalt_parse_option(int optnum, const char *optarg)
 {
-   unsigned long long value;
-   int ret;
+   int value, ret;
 
switch (optnum) {
case main_prio_opt:
-   ret = get_int_arg(--main-prio, optarg, value);
+   ret = get_int_arg(--main-prio, optarg, value, INT32_MIN);
if (ret)
return ret;
-   __cobalt_main_prio = (int)value;
+   __cobalt_main_prio = value;
break;
case print_bufsz_opt:
-   ret = get_int_arg(--print-buffer-size, optarg, value);
+   ret = get_int_arg(--print-buffer-size, optarg, value, 0);
if (ret)
return ret;
-   __cobalt_print_bufsz = (int)value;
+   __cobalt_print_bufsz = value;
break;
case print_bufcnt_opt:
-   ret = get_int_arg(--print-buffer-count, optarg, value);
+   ret = get_int_arg(--print-buffer-count, optarg, value, 0);
if (ret)
return ret;
-   __cobalt_print_bufcount = (int)value;
+   __cobalt_print_bufcount = value;
break;
case print_syncdelay_opt:
-   ret = get_int_arg(--print-sync-delay, optarg, value);
+   ret = get_int_arg(--print-sync-delay, optarg, value, 0);
if (ret)
return ret;
__cobalt_print_syncdelay = value;
diff --git a/lib/cobalt/printf.c b/lib/cobalt/printf.c
index e7ff120..c016fb2 100644
--- a/lib/cobalt/printf.c
+++ b/lib/cobalt/printf.c
@@ -72,7 +72,7 @@ __weak int __cobalt_print_bufsz = RT_PRINT_DEFAULT_BUFFER;
 
 __weak int __cobalt_print_bufcount = RT_PRINT_DEFAULT_BUFFERS_COUNT;
 
-__weak unsigned long long __cobalt_print_syncdelay = 
RT_PRINT_DEFAULT_SYNCDELAY;
+__weak int __cobalt_print_syncdelay = RT_PRINT_DEFAULT_SYNCDELAY;
 
 static struct print_buffer *first_buffer;
 static int buffers;
@@ -693,8 +693,8 @@ void cobalt_print_init(void)
first_buffer = NULL;
seq_no = 0;
 
-   syncdelay.tv_sec  = __cobalt_print_syncdelay / 1000ULL;
-   syncdelay.tv_nsec = (__cobalt_print_syncdelay % 1000ULL) * 100;
+   syncdelay.tv_sec  = __cobalt_print_syncdelay / 1000;
+   syncdelay.tv_nsec = (__cobalt_print_syncdelay % 1000) * 100;
 
/* Fill the buffer pool */
pool_bitmap_len =