-
Data: 2009-09-29 21:04:24
Temat: Re: printf i wielozadaniowosc (MicroC/OS-II)
Od: Jerry1111 <j...@w...pl.pl.wp> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Pszemol wrote:
> W systemie MicroC/OS-II wszystkie wątki uszeregowane są według swoich
> priorytetów i wątek o niższym priorytecie dostaje procesor TYLKO WTEDY
> gdy wątek o wyższym priorytecie nie ma nic do roboty i czeka na zdarzenie.
>
> W swoim programie wielowątkowym dorobiłem na szybkiego logowanie
> zdarzeń w celach debugging i używam "zakazanej" funkcji printf, jako że
> jest
> ona bardzo wygodna zwłaszcza z parsingiem argumentów typu %d lub %x
> w tekście... :-)
Wcale nie jest zakazana.
> Spodziewałem się jakichś efektów związanych z niereentrantnością tej
> funkcji, ale to co dostałem trochę mnie zaskoczyło...
Bo tu nie chodzi o printf, tylko o reentrancje calej biblioteki newlib.
Z drugiej strony Altera ma to zalatwione, wiec nie rozumiem czemu problem?
> Otóż co widzę, to że na wyjściu generowanym przez tą funkcję fprintf
> (strumień znaków RS232, "plikiem" dla fprintf jest port szeregowy)
> widzę że wątek o niższym priorytecie wchodzi z butami w linię tekstu
> wątka o wyższym priorytecie i wcięcie jest tam, gdzie fprintf robi ten
> parsing argumentów %d.
Bo nie masz tego jako atomic operation. Jestem na 99% pewny ze jako
atomic jest tylko zrobione wysylanie pojedynczych znakow.
Ma to sens, bo inaczej blokowalbys system na dosc dlugi czas (chyba ze
masz duze fifo - wtedy mozna sie o to pokusic).
> Task o priorytecie 3 schodki niżej, wciął się w środek fprintf'a od tasku
> o prawie najwyższym priorytecie i to w miejscu, gdzie skończyło się
> parsowanie argumentu %x i zaczął text printf'a.
Bo w miedzyczasie byla zmiana kontekstu. Czemu? Bo wyzszy watek czekal
na wyslanie znaku...
> Rozumiem, że skoro wywołania fprintf'a z tasków dotyczą tego samego
> portu szeregowego, przekazanego fprintf'owi jako argument nazwy pliku
> (globalna zmienna) to może się coś kiepścić, i linie się będa przeplatać,
> ale nie rozumiem jak taski o niższym priorytecie mogły się wstrzelić
> z TRZEMA OSOBNYMI WYWOŁANIAMI fprintf'a w jedną linię tasku
> o wyższym priorytecie? Przecież według filozofii MicroC/OS-II task
> bariery 0, w czasie chodzenia sobie po kodzie fprintfa nie powinien być
> przerwany i taski o priorytetach 4 czy tym bardziej 8 powinny grzecznie
> czekać aż fprintf wywołany przez task o priorytecie 1 ukończy zadanie
> i odda sterowanie systemowi operacyjnemu (nie ma tu wywłaszczania).
>
> Czy ktoś mógłby mi to wytłumaczyć?
A jak w priority 0 wstawic OSTimeDly(10), to tez nic innego sie nie
uruchomi? AFAIR driver usart Altery czeka na signal jak ma pelny bufor,
wiec w miedzyczasie inny watek idzie.
--
Jerry1111
Następne wpisy z tego wątku
- 29.09.09 22:06 Pszemol
- 30.09.09 13:25 Zbych
- 30.09.09 14:20 Pszemol
- 30.09.09 14:45 jotefka
- 30.09.09 15:25 Pszemol
- 30.09.09 18:43 Pszemol
- 30.09.09 20:35 DJ
- 30.09.09 21:09 Pszemol
- 01.10.09 18:10 J.F.
- 02.10.09 06:11 Artur M. Piwko
- 13.10.09 21:06 AK
- 13.10.09 21:34 Jerry1111
- 13.10.09 21:47 Pszemol
Najnowsze wątki z tej grupy
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-18 Poznań => MLOps Engineer <=
- 2025-06-18 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-06-18 Wrocław => SAP ABAP Developer <=
- 2025-06-18 Łódź => Account Manager <=
- 2025-06-18 Warszawa => MLOps Engineer <=
- 2025-06-18 Warszawa => Software Engineer .Net <=
- 2025-06-18 Zakaz używania Kreta
- 2025-06-18 Gdańsk => Controlling systems Consultant <=
- 2025-06-18 Warszawa => Senior Programmer C <=
- 2025-06-18 W państwie tuskiego "prawa" obywatel/poseł ma obowiązek planować pod kątem że będzie aresztowany [Urbaniak]
- 2025-06-18 Warszawa => Mid/Senior IT Recruiter <=
- 2025-06-18 Lublin => Programista Delphi <=
- 2025-06-18 Warszawa => NMS System Administrator <=
- 2025-06-18 Re: Auto miało pozostać na wstecznym biegu z włączonym silnikiem. Kiedy kobieta ponownie wsiadła do pojazdu, mogło dojść do tragicznej pomyłki - zamiast wcisnąć hamulec, niefortunnie nacisnęła pedał gazu.
- 2025-06-17 Re: Auto miało pozostać na wstecznym biegu zwłączonym silnikiem. Kiedy kobieta ponownie wsiadła do pojazdu, mogło dojść do tragicznej pomyłki - zamiast wcisnąć hamulec, niefortunnie nacisnęła pedał gazu.