[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
API modification request
- Date: Sat, 01 Feb 2003 11:55:58 +0100
- From: eric.valette at free.fr (Eric Valette)
- Subject: API modification request
Till Straumann wrote:
> typedef void (*rtems_irq_hdl)(void*);
Not that years ago, I even submitted a patch to at least get the irq number.
> I'm positive we can identify some superfluous instructions in the
> ISR calling code to trade in for the handler argument ;-)
Try just for fun. I spend quite some time already to tune and retune
this code :-). We had application were CPU is doing IRQ 80% of its time...
> As far as I can see, the new semantics would be backwards
> compatible (getting compiler warnings at most).
> Joel, Eric, what's your position on this?
Again, I already submitted a patch years ago to at least get the irq
index (which is faster as usually already computed to get the table
index for handlers) for ix86. A void* while surely more pleasant and
more powerfull has to be found in a table and therefore stored when you
register the handler. So I think it is not just one instruction. If you
store the handler and its argument in the same table, you need to do
some extra computation to get both the handler and the argument, if you
store them in two different table then you need to fetch extra base address.
NB : the global function for manipuation the total irq table prototype
have to be updated too.
Now concerning your quetion and the trend of CPU to double speed each
year, I think time has come to offer a richer API at the cost of around
6 to 10 instructions on most processors. As you point out, not doing it
for application requiring it leads to even more code and complexity. It
just penalize application not using it and (at least agree with that)
can be implemenred with current API using a trampoline function.
/ ` Eric Valette
/-- __ o _. 6 rue Paul Le Flem
(___, / (_(_(__ 35740 Pace
Tel: +33 (0)2 99 85 26 76 Fax: +33 (0)2 99 85 26 76
E-mail: eric.valette at free.fr