ts-7000
[Top] [All Lists]

Re: [ts-7000] Re: Fast usleep

To:
Subject: Re: [ts-7000] Re: Fast usleep
From: Christian Gagneraud <>
Date: Tue, 24 Mar 2009 11:02:54 +0000
D V wrote:
> Hi Charlie!
> 
> Thanks for the answer. Your suggestion could be right, because in the 
> serial communication thread I use signal handler to catch the incoming 
> data from device. But I don't understand why this action wakes up the 
> other thread earlier from usleep? And how can I eliminate this? I have 
> no error, so I can't check the error code you've mentioned. do you think 
> the nanosleep could be better in this case?

$ man 3 usleep
...
        The interaction of this function with  the  SIGALRM  signal, 
and  with
        other   timer   functions   such   as  alarm(),  sleep(), 
nanosleep(),
        setitimer(),   timer_create(),   timer_delete(), 
timer_getoverrun(),
        timer_gettime(), timer_settime(), ualarm() is unspecified.
...

This simply means that you can't use sleep, usleep in a multi-threaded 
context or you have to make sure there's only one and only thread at a 
time that use SIGALRM.

Better use clock_nanosleep, use it with CLOCK_REALTIME if you are 
waiting for a date/time, use it with CLOCK_MONOTONIC if you want to 
wait an amount of time.

I don't know about you're application, but you can use read() in 
blocking mode with a timeout so that you don't need any (u)sleep().

cheers,
Chris

> 
> cheers, denx
> 
> ------------------------------------------------------------------------
> *From:* charliem_1216 <>
> *To:* 
> *Sent:* Monday, 23 March, 2009 21:05:30
> *Subject:* [ts-7000] Re: Fast usleep
> 
> Hi --
> 
> --- In  .com <ts-7000%40yahoogroups.com>, 
> "denx_ts" <> wrote:
>  >
>  > Hi All!
>  >
>  > I'm developing a complex system based on TS-7250 SBC. The program is 
> written in gnu c (by myself). I have 5 threads in the system and I 
> recognize a strange influence between thees. When my serial 
> communication thread works - I mean it communicates with an external 
> peripheral - the usleep() function getting extremely fast in another 
> (the main) thread. I know the resolution of the usleep() is 10 ms, but I 
> use it with 2.0-5.0 sec timings, but more precisely than a sec.
>  >
>  > The strangest part of the situation is the faster behavior of 
> usleep() instead of slower. I mean I could imagine that the usleep() is 
> getting slower because of high load, but I don't understand how can it 
> be faster than normal! (Actually the system isn't at high load, it was 
> just an idea.)
>  >
>  > Any suggestions is appreciated!
> 
> On an early wakeup, check the error code to see if it was woken by a 
> signal. You could also try nanosleep instead of usleep.
> 
> What kernel, and what threading library?
> 
> regards, ......... Charlie
>  >
>  > BR:
>  > denx
>  >
> 
> 
> 
> 
> 



------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/ts-7000/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/ts-7000/join
    (Yahoo! ID required)

<*> To change settings via email:
     
    

<*> To unsubscribe from this group, send an email to:
    

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

<Prev in Thread] Current Thread [Next in Thread>
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU