[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: static class member as interrupt handler works, but not if class is
From: |
David Brown |
Subject: |
Re: static class member as interrupt handler works, but not if class is templated |
Date: |
Sun, 11 Apr 2021 14:21:36 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
On 10/04/2021 22:11, Klaus via Gcc-help wrote:
> Hi,
>
>
>
> Am 10.04.21 um 17:26 schrieb Jonathan Wakely:
>
>>
>> Dummy<1> d1;
>>
>>
>> This doesn't cause the instantiation of the member function.
>>
>> Have you tried an explicit instantiation?
>>
>> template class Dummy<1>;
>
> Did not change anything.
>
> If I use my original code, I get the instantiation of the function:
>
> 0000007e <Dummy<1>::Handler()>:
> 7e: 18 95 reti
>
> But it is simply not named as "__vector_10" which is the problem. The
> member function is instantiated but still with wrong name even with my
> or your code.
>
> Klaus
>
>
To my knowledge, there isn't a better way than to make specific
dedicated stand-alone functions:
static void Handler_1() __asm__("__vector_10")
__attribute__((__signal__, __used__, __externally_visibile__))
{
Dummy<1>::Handler();
}
For device drivers like that, you have a specific number of
instantiations that match the number of peripherals on the particular
microcontroller. And they each have different vectors. There really
isn't any other better way, to my knowledge. (You can use a bit of
pre-processing macros and conditional compilation to automate it a bit,
generating as many of these functions as there are UARTs or whatever
defined in the device header files for the microcontroller.)
- Re: static class member as interrupt handler works, but not if class is templated, (continued)
- Re: static class member as interrupt handler works, but not if class is templated, Trampas Stern, 2021/04/11
- Re: static class member as interrupt handler works, but not if class is templated, Anton Staaf, 2021/04/11
- Re: static class member as interrupt handler works, but not if class is templated, David Brown, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Klaus Rudolph, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, David Brown, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, David Kelly, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Russell Shaw, 2021/04/10
- Re: static class member as interrupt handler works, but not if class is templated, Anton Staaf, 2021/04/10
- Re: static class member as interrupt handler works, but not if class is templated, Trampas Stern, 2021/04/11
Re: static class member as interrupt handler works, but not if class is templated, Klaus, 2021/04/10
Re: static class member as interrupt handler works, but not if class is templated, Peter Sommerlad (C++), 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Klaus Rudolph, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Matthijs Kooijman, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Klaus Rudolph, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, David Brown, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Klaus Rudolph, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Anton Staaf, 2021/04/12
- Re: static class member as interrupt handler works, but not if class is templated, Klaus Rudolph, 2021/04/12