This is the mail archive of the ecos-bugs@sourceware.org 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]

[Bug 1001456] HAL misses Interrupt Clear-Pending Registers handling:wasted processing power


Please do not reply to this email. Use the web interface provided at:
http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001456

--- Comment #2 from Bernard Fouchà <bernard.fouche@kuantic.com> 2012-01-24 16:10:54 GMT ---
Some ASCII art to try to better explain the issue:

HW |  E1      E2
---|----------------------------
ISR|    I1          I2
---|----------------------------
DSR|              D1          D2

E1: a 1st event occurs

I1: ISR related to E1 triggered, ISR masks interrupt and asks
for a DSR run.

E2: a 2nd event occurs but since interrupt is masked, pending
interrupt register bit is set and ISR is not run.

D1: DSR processes everything it can (for instance it empties a RX
FIFO). DSR unmasks interrupt at the end of processing.

I2: because E2 occurred while interrupt was masked and since
pending interrupt bit is set, I2 now occurs.

D2: DSR runs, and find no work to do because D1 did all the work.

In this example, there were 1 ISR (I2) and 1 DSR (D2) that ran for
nothing.

-- 
Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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