This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

POSIX timer callback context


I'm using a POSIX timer in my application that I
created with timer_create().  It is configured to
generate a SIGUSR1 signal when the timer expires, and
to call a signal handler installed by my app's thread.
 I also have several different tasks running that were
all created with pthread_create().

When the timer expires, the signal handler gets
executed, but it appears to be executing in a another
thread's context (i.e. pthread_self() returns the
handle for one of my other threads).  Furthermore, the
thread that installed the handler is waiting in a
pselect() call that never gets interrupted with EINTR.

This seems like a bug to me, but I wanted to pass this
by the group before fixing it to make sure I wasn't
missing anything.  Seems like there is a bit of a grey
area in the POSIX docs about whether signals get
delivered to the "process" or one of its "threads". 
However, it seems that in eCos it would only make
sense to deliver signals to the calling thread itself.

Does anyone have any background info on the eCos
implementation of POSIX timers, or an opinion on how
POSIX timer callbacks should be processed?

--
Dan Jakubiec
Systech Corp

__________________________________
Do you Yahoo!?
Exclusive Video Premiere - Britney Spears
http://launch.yahoo.com/promos/britneyspears/

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]