This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: On RTC's isr!
- From: "Robert Cragie" <rcc at jennic dot com>
- To: "zhlg_shuhan" <zhlg_shuhan at sina dot com>, <ecos-discuss at sources dot redhat dot com>
- Date: Mon, 15 Jul 2002 10:16:37 +0100
- Subject: RE: [ECOS] On RTC's isr!
Returning from the ISR with the Cyg_Interrupt::CALL_DSR flag set schedules
the DSR to be called. There is no need to explicitly call or schedule the
DSR.
I'm not sure about your second question, but there have been numerous posts
to this mailing list regarding real time clock ticks not working as expected
on certain platforms.
Robert Cragie, Design Engineer
________________________________________________________
Jennic Ltd, Furnival Street, Sheffield, S1 4QT, UK
www.jennic.com Tel: +44 (0) 114 281 2655
> -----Original Message-----
> From: ecos-discuss-owner@sources.redhat.com
> [mailto:ecos-discuss-owner@sources.redhat.com]On Behalf Of zhlg_shuhan
> Sent: 15 July 2002 04:14
> To: ecos-discuss@sources.redhat.com
> Subject: [ECOS] On RTC's isr!
>
>
> hi,all.
> why not RTC's isr call dsr_post()?
> then,how rtc's dsr() was called?
>
> cyg_uint32 Cyg_RealTimeClock::isr(cyg_vector vector, CYG_ADDRWORD data)
> {
> // CYG_REPORT_FUNCTION();
>
> #if defined(CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY) &&
> defined(HAL_CLOCK_LATENCY)
> if (measure_clock_latency) {
> cyg_int32 delta;
> HAL_CLOCK_LATENCY(&delta);
> // Note: Ignore a latency of 0 when finding min_clock_latency.
> if (delta > 0) {
> // Valid delta measured
> total_clock_latency += delta;
> total_clock_interrupts++;
> if (min_clock_latency > delta) min_clock_latency = delta;
> if (max_clock_latency < delta) max_clock_latency = delta;
> }
> }
> #endif
>
> CYG_INSTRUMENT_CLOCK( ISR, 0, 0);
>
> HAL_CLOCK_RESET( CYGNUM_HAL_INTERRUPT_RTC,
> CYGNUM_KERNEL_COUNTERS_RTC_PERIOD );
>
> Cyg_Interrupt::acknowledge_interrupt(CYGNUM_HAL_INTERRUPT_RTC);
>
> #if defined(CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY)
> HAL_CLOCK_READ(&clock_dsr_start);
> #endif
> return Cyg_Interrupt::CALL_DSR|Cyg_Interrupt::HANDLED;
> }
>
>
> and in rtc's dsr(),parameter count maybe >1,but when i check
> call_pending_DSRS(),i found count=1! why?
>
>
> zhlg
> ______________________________________
>
> ===================================================================
> 新浪免费电子邮箱 (http://mail.sina.com.cn)
> 新浪分类信息:二手市场走一走,该出手时就出手!
> (http://classad.sina.com.cn/2shou/)
>
> --
> Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
> and search the list archive: http://sources.redhat.com/ml/ecos-discuss
>
>
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss