On Mon, Feb 16, 2009 at 8:48 PM, henry.lon...@gmail.com <
henry.lon...@gmail.com> wrote:

>
> That's great. I found similar problem for SIGEV_SIGNAL. Could you
> please let me know when the fix is released?
>

I think I nailed that one too. All fixes are in
bionic/libc/bionic/pthread-timers.c, essentially:

- in timer_settime() replace the call to __timer_gettime() to
__timer_settime() with proper parameters (silly typo)
- in the worker thread implementation, a subtraction reversal when computing
the timeout (should be "expires - now" instead of "now - expires")



>
> Thanks!
>
> On Feb 16, 1:49 am, David Turner <di...@android.com> wrote:
> > ok, I found the bug in the timer implementation, a fix is coming soon.
> >
> > On Mon, Feb 16, 2009 at 10:27 AM, David Turner <di...@android.com>
> wrote:
> > > this one's for me :-)
> >
> > > Can you send me a small compilable test program to reproduce this (it'd
> be
> > > much better for me since
> > > I don't know what your timer_handler function is doing there).
> >
> > > It might be a bug in the SIGEV_THREAD timer implementation, I checked
> and
> > > tested it for correctness but didn't look at CPU usage, I admit.
> >
> > > By the way, sigev_signo isn't used with SIGEV_THREAD timers.
> >
> > > On Mon, Feb 16, 2009 at 4:13 AM, henry.lon...@gmail.com <
> > > henry.lon...@gmail.com> wrote:
> >
> > >> hi,
> >
> > >> i played with timer_create routine with the following code. it seems
> > >> the timer is working, but the cpu utilization is really high(over 90%)
> > >> if i run "top". Any idea what's going on on G1?
> >
> > >> Thanks!
> >
> > >>
> -----------------------------------------------------------------------------------------------------
> > >>        se.sigev_notify = SIGEV_THREAD;
> > >>        se.sigev_notify_function = timer_handler;
> > >>        se.sigev_signo = SIGUSR1;
> > >>        timer_create(CLOCK_REALTIME, &se, &tid);
> >
> > >>        memset(&ts, 0, sizeof(struct itimerspec));
> > >>        ts.it_value.tv_sec = 0;
> > >>        ts.it_value.tv_nsec = 30000000;
> > >>        ts.it_interval.tv_sec = 0;
> > >>        ts.it_interval.tv_nsec = 30000000;
> > >>        result = timer_settime(tid, 0, &ts, 0);
> >
>

--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---

Reply via email to