Yes, hrtime_t is 64bit integer. There is no format
specifier in kernel. But in linux application we can
use %ll. So i wrote two functions to convert the
hrtime_t value to a string. These are as follows.



#include <linux/malloc.h>


/*
 * ultostring converts an unsigned long integer to
string
 * and lltostring converts a lon long integer number
to a 
 * string. Thse functions work for both user level
calls 
 * as well as kernel level calls. */

char *ultostring(unsigned long arg)
{
        char *ret;
        unsigned char *temp;
        char hexchars[]="0123456789abcdef";

#ifdef __KERNEL__
        ret = (char *)kmalloc(9,GFP_KERNEL);
#else
        ret = (char *)malloc(9);
#endif /* __KERNEL__ */

        temp = (char *)&arg;

        ret[0] = hexchars[temp[3] >> 4];
        ret[1] = hexchars[temp[3] % 16];
        ret[2] = hexchars[temp[2] >> 4];
        ret[3] = hexchars[temp[2] % 16];
        ret[4] = hexchars[temp[1] >> 4];
        ret[5] = hexchars[temp[1] % 16];
        ret[6] = hexchars[temp[0] >> 4];
        ret[7] = hexchars[temp[0] % 16];

        ret[8]='\0';

        return ret;
}

static char *lltostring(long long arg)
{
        unsigned char *temp;
        char *ret;
        char hexchars[]="0123456789abcdef";

#ifdef __KERNEL__
        ret = (char *)kmalloc(18,GFP_KERNEL);
#else
        ret = (char *)malloc(18);
#endif /* __KERNEL__ */

        temp=(char *)&arg;

        ret[0]  = hexchars[temp[7] >> 4];
        ret[1]  = hexchars[temp[7] % 16];
        ret[2]  = hexchars[temp[6] >> 4];
        ret[3]  = hexchars[temp[6] % 16];
        ret[4]  = hexchars[temp[5] >> 4];
        ret[5]  = hexchars[temp[5] % 16];
        ret[6]  = hexchars[temp[4] >> 4];
        ret[7]  = hexchars[temp[4] % 16];
        ret[8]  = hexchars[temp[3] >> 4];
        ret[9]  = hexchars[temp[3] % 16];
        ret[10] = hexchars[temp[2] >> 4];
        ret[11] = hexchars[temp[2] % 16];
        ret[12] = hexchars[temp[1] >> 4];
        ret[13] = hexchars[temp[1] % 16];
        ret[14] = hexchars[temp[0] >> 4];
        ret[15] = hexchars[temp[0] % 16];

        ret[16] = '\0';

        return ret;

}

I dont have any experience of using timer functions. I
will try findout solution. If i get i will mail u.

One more way, but may not suit for u is send date from
a linux task thro a fifo. and in handler u store it in
a global data structure. And u note down the gethrtime
return value and whenever u want again call gethrtime
and find the difference and add two ur stored data.

Regards
Venkat

--- Narendra Kumar Upadhyay
<[EMAIL PROTECTED]> wrote:
> Hi Venkat,
>     Thanks for ur response for getting time and
> date, but yaar, the linux
> functions gettimeofday() and localtime() are not
> running in init_module().
> These functions can be used in main() function only,
> but i want a function
> which can be used in init_module also. Can u please
> write me a chunk of code
> in init_module(), which i could run directly.
>     Also, the function gethrtime() returns value in
> hrtime_t variable, which
> a typedef of 64-bit signed integer. Do u know any
> format specifier in
> RTLinux which can print 64-bit integer value.
> actually it is only supporting
> "%d", which is printing a 4-byte value only.
> 
> I am facing a lot of problem yaar. Please write me
> according to ur
> convinience.
> 
> Regards,
> Narendra Kumar Upadhyay
> TATA  Consultancy Services - GG2
> 
> Ph. : 91- 0124- 6439120, 6439121
> Ext. : 122, 213
> ----- Original Message -----
> From: "A V" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Saturday, April 13, 2002 12:39 PM
> Subject: Re: [rtl] Current time and date in RTLinux
> 
> 
> >
> > one trickey way is
> >
> > U get date and time in init_module where u can
> access
> > linux system calls. and record time(nenoseconds)
> with
> > gethrtime() also there.
> > Then whereever u want date and time again read
> time
> > with gethrtime and calculate elapsed time from ur
> > program startup. Then convert these nanooseconds
> to
> > seconds and add it to time. The pseudo code look
> like
> > this. I hope it will work.
> >
> >
> > hrtime_t start_time;
> >
> > ur_real_time_thread()
> > {
> >    hrtime_t current_time;
> >    hrimte_t elapsed_time;
> >    current_time = gethrtime();
> >    elapsed_time = current_time-start_time;
> >    convert elapsed time to seconds
> >    add these seconds to ur actual date and time
> > recorded in init_module.
> > }
> >
> > init_module()
> > {
> >       get date and time with linux syscalls;
> >       start_time = gethrtime();
> > }
> >
> > --- Norm Dresner <[EMAIL PROTECTED]> wrote:
> > > Have you tried
> > >     do_gettimeofday()
> > >
> > >             Norm
> > >   ----- Original Message -----
> > >   From: Narendra Kumar Upadhyay
> > >   To: [EMAIL PROTECTED]
> > >   Cc: [EMAIL PROTECTED]
> > >   Sent: Friday, April 12, 2002 8:07 AM
> > >   Subject: [rtl] Current time and date in
> RTLinux
> > >
> > >
> > >   Hi,
> > >     Is there any method to calculate the current
> > > time(in hours, minutes and seconds) and date in
> the
> > > kernel module of RTLinux.  Actually
> gettimeofday()
> > > and localtime() functions are giving correct
> time
> > > but we can execute these functions in linux
> only. I
> > > want to get time and date during execution of
> the
> > > real-time thread. gethrtime( ) function gives
> time
> > > from system bootup, which can not solve my
> purpose.
> > >
> > >       Any idea to get the current time and date
> in
> > > kernel module???
> > >
> > >
> > >   Regards,
> > >   Narendra Kumar Upadhyay
> > >
> > >   Ph. : 91- 0124- 6439120, 6439121
> > >   Ext. : 122, 213
> > >
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Yahoo! Tax Center - online filing with TurboTax
> > http://taxes.yahoo.com/
> > -- [rtl] ---
> > To unsubscribe:
> > echo "unsubscribe rtl" | mail
> [EMAIL PROTECTED] OR
> > echo "unsubscribe rtl <Your_email>" | mail
> [EMAIL PROTECTED]
> > --
> > For more information on Real-Time Linux see:
> > http://www.rtlinux.org/
> >
> 
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail [EMAIL PROTECTED]
> OR
> echo "unsubscribe rtl <Your_email>" | mail
> [EMAIL PROTECTED]
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/
> 


__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to