Module: xenomai-head
Branch: master
Commit: 9431818fd4f0641e8176137c0b44cdc3efcb4109
URL:    
http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=9431818fd4f0641e8176137c0b44cdc3efcb4109

Author: Alexis Berlemont <alexis.berlem...@gmail.com>
Date:   Wed Dec 23 00:21:18 2009 +0100

analogy: fix wrong use of the type unsigned long long in time retrieval

---

 include/analogy/os_facilities.h      |    4 ++--
 ksrc/drivers/analogy/instruction.c   |   14 +++++++++-----
 ksrc/drivers/analogy/os_facilities.c |   10 +++++-----
 3 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/include/analogy/os_facilities.h b/include/analogy/os_facilities.h
index 2d882e2..efaacbd 100644
--- a/include/analogy/os_facilities.h
+++ b/include/analogy/os_facilities.h
@@ -123,13 +123,13 @@ static inline void a4l_udelay(unsigned int us)
        rtdm_task_busy_sleep(((nanosecs_rel_t) us) * 1000);
 }
 
-static inline unsigned long long a4l_get_rawtime(void)
+static inline nanosecs_abs_t a4l_get_rawtime(void)
 {
        return rtdm_clock_read();
 }
 
 /* Function which gives absolute time */
-unsigned long long a4l_get_time(void);
+nanosecs_abs_t a4l_get_time(void);
 
 /* Function for setting up the absolute time recovery */
 void a4l_init_time(void);
diff --git a/ksrc/drivers/analogy/instruction.c 
b/ksrc/drivers/analogy/instruction.c
index 5ecb366..a2fb4ce 100644
--- a/ksrc/drivers/analogy/instruction.c
+++ b/ksrc/drivers/analogy/instruction.c
@@ -35,20 +35,24 @@
 
 int a4l_do_insn_gettime(a4l_kinsn_t * dsc)
 {
-       unsigned long long ns;
-       unsigned long ns2;
+       nanosecs_abs_t ns;
+       uint32_t ns2;
+
+       uint32_t *data = (uint32_t *)dsc->data;
 
        /* Basic checkings */
-       if (dsc->data_size != 2) {
+       if (dsc->data_size != 2 * sizeof(uint32_t)) {
                __a4l_err("a4l_do_insn_gettime: data size should be 2\n");
                return -EINVAL;
        }
 
+       /* Get a timestamp */
        ns = a4l_get_time();
 
+       /* Perform the conversion */
        ns2 = do_div(ns, 1000000000);
-       dsc->data[0] = (lsampl_t) ns;
-       dsc->data[1] = (lsampl_t) ns2 / 1000;
+       data[0] = (uint32_t) ns;
+       data[1] = (uint32_t) ns2 / 1000;
 
        return 0;
 }
diff --git a/ksrc/drivers/analogy/os_facilities.c 
b/ksrc/drivers/analogy/os_facilities.c
index 1b6c554..620906e 100644
--- a/ksrc/drivers/analogy/os_facilities.c
+++ b/ksrc/drivers/analogy/os_facilities.c
@@ -31,20 +31,20 @@
 
 /* --- Time section --- */
 
-static unsigned long long a4l_clkofs;
+static nanosecs_abs_t a4l_clkofs;
 
 void a4l_init_time(void)
 {
-       unsigned long long t1, t2;
+       nanosecs_abs_t t1, t2;
        struct timeval tv;
        t1 = a4l_get_rawtime();
        do_gettimeofday(&tv);
-       t2 = 1000000000 * ((unsigned long long)tv.tv_sec) +
-               1000000 * ((unsigned long long)tv.tv_usec);
+       t2 = 1000000000 * ((nanosecs_abs_t)tv.tv_sec) +
+               1000000 * ((nanosecs_abs_t)tv.tv_usec);
        a4l_clkofs = t2 - t1;
 }
 
-unsigned long long a4l_get_time(void)
+nanosecs_abs_t a4l_get_time(void)
 {
        return a4l_clkofs + a4l_get_rawtime();
 }


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to