Mercurial > ecos-v3_0-branch
changeset 1850:ab3832848094
* tests/intr.c: Make the ISR call the DSR to make sure this works
correctly.
| author | asl |
|---|---|
| date | Sat, 20 Nov 2004 15:23:08 +0000 |
| parents | 96dbe76109eb |
| children | a10cfd6a2ddc |
| files | packages/hal/common/current/ChangeLog packages/hal/common/current/tests/intr.c |
| diffstat | 2 files changed, 19 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/common/current/ChangeLog +++ b/packages/hal/common/current/ChangeLog @@ -1,3 +1,8 @@ +2004-11-20 Andrew Lunn <andrew.lunn@ascom.ch> + + * tests/intr.c: Make the ISR call the DSR to make sure this works + correctly. + 2004-08-22 Gary Thomas <gary@mlbassoc.com> * doc/porting.sgml: Replace [very misleading dated] comments
--- a/packages/hal/common/current/tests/intr.c +++ b/packages/hal/common/current/tests/intr.c @@ -74,6 +74,7 @@ // ------------------------------------------------------------------------- volatile cyg_count32 ticks = 0; +volatile cyg_count32 dsr_ticks = 0; static cyg_interrupt intr; static cyg_handle_t intr_handle; @@ -91,18 +92,26 @@ cyg_uint32 isr( cyg_uint32 vector, CYG_A ticks++; - return CYG_ISR_HANDLED; + return CYG_ISR_CALL_DSR; } // ------------------------------------------------------------------------- +void dsr( cyg_uint32 vector, cyg_ucount32 count, CYG_ADDRWORD data ) +{ + CYG_TEST_CHECK( ISR_DATA == data , "Bad data passed to DSR"); + CYG_TEST_CHECK( CYGNUM_HAL_INTERRUPT_RTC == vector , + "Bad vector passed to DSR"); + + dsr_ticks += count; +} void intr_main( void ) { CYG_INTERRUPT_STATE oldints; cyg_drv_interrupt_create(CYGNUM_HAL_INTERRUPT_RTC, 1, - ISR_DATA, isr, NULL, &intr_handle, &intr); + ISR_DATA, isr, dsr, &intr_handle, &intr); cyg_drv_interrupt_attach(intr_handle); HAL_CLOCK_INITIALIZE( CYGNUM_HAL_RTC_PERIOD ); cyg_drv_interrupt_unmask(CYGNUM_HAL_INTERRUPT_RTC); @@ -114,6 +123,9 @@ void intr_main( void ) } + + CYG_TEST_CHECK( dsr_ticks == 10, "DSR not called sufficient times"); + HAL_DISABLE_INTERRUPTS(oldints); CYG_TEST_PASS_FINISH("HAL interrupt test");
