-
Data: 2014-05-30 10:11:52
Temat: Re: [Laik] C przerwanie dzia?ania funkcji.
Od: g...@s...invalid (Adam Wysocki) szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Andrzej W. <a...@w...pl> wrote:
> Ja chciałbym mieć coś co pozbędzie się funkcji F bez jej wiedzy i zgody.
> Czyli z funkcji obsługi przerwania wrócimy nie w miejsce w którym główny
> program został zatrzymany ale do punktu B.
> Problemem jest posprzątanie po F.
Jeśli naprawdę bardzo chcesz, to możesz użyć setjmp i longjmp, ale ja
osobiście nie podjąłbym się używania longjmp w ISR (to może spowodować
problemy, które ciężko będzie przewidzieć). W assemblerze to mooooże
jeszcze (analogicznym mechanizmem - skokami), ale w C nie...
Coś takiego:
jmp_buf b;
...
if (setjmp(b) == 0)
{
// tu jesteśmy pierwszy raz
A();
F();
B();
}
else
{
// tu jesteśmy po longjmp
// należałoby przywrócić to, co zostało zmienione w prologu
// funkcji obsługi przerwania (przywrócić przerwania,
// rejestry, zdjąć ze stosu adres powrotu i zignorować go)
B();
}
...
ISR()
{
longjmp(b, 1);
}
A potem jak dodasz coś do ISR przed longjmp i kompilator odłoży na stos
jakiś rejestr, to będziesz musiał pamiętać o zdjęciu go tam, gdzie jest
komentarz "tu jesteśmy po longjmp"...
Poczytaj:
http://pl.wikipedia.org/wiki/Longjmp
http://en.wikipedia.org/wiki/Setjmp.h
> Wygląda na to, że ten pomysł może przynieść więcej problemów niż ich
> rozwiązać.
A to na pewno.
--
SELECT finger FROM hand WHERE id = 3;
http://www.chmurka.net/
Następne wpisy z tego wątku
- 30.05.14 10:21 Adam Wysocki
- 30.05.14 10:27 Stachu 'Dozzie' K.
- 30.05.14 10:29 Adam Wysocki
- 30.05.14 18:01 Edek
- 30.05.14 20:54 A.L.
- 30.05.14 22:23 Andrzej W.
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-06 Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- 2025-01-06 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-01-06 Do IO i innych elektrooszolomow, tu macie prawdziwe smrody
- 2025-01-06 Białystok => Full Stack .Net Engineer <=
- 2025-01-06 Kraków => Business Development Manager - Network and Network Security
- 2025-01-06 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-06 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-06 Lublin => Programista Delphi <=
- 2025-01-06 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-06 śnieg
- 2025-01-05 Żarówka do lampy z czujnikiem ruchu
- 2025-01-05 Rozkręcają się
- 2025-01-04 pozew za naprawę sprzętu na youtube
- 2025-01-04 gasik
- 2025-01-04 13. Raport Totaliztyczny: Powszechna Deklaracja Praw Człowieka Nie Chroni Przed Wyzyskiem Ani Przed Eksploatacją