Thread View: pl.comp.os.linux.programowanie
5 messages
5 total messages
Started by Borneq
Sun, 20 May 2012 13:04
setjmp/longjmp
Author: Borneq
Date: Sun, 20 May 2012 13:04
Date: Sun, 20 May 2012 13:04
4 lines
1118 bytes
1118 bytes
http://www.mkssoftware.com/docs/man3/setjmp.3.asp "The setjmp() function does not save the calling thread's signal mask; refer to sigsetjmp()" Co się dzieje gdy nie zachowa maski sygnału, do czego jest potrzebna?
Re: setjmp/longjmp
Author: Michoo
Date: Sun, 20 May 2012 16:15
Date: Sun, 20 May 2012 16:15
31 lines
1578 bytes
1578 bytes
On 20.05.2012 15:04, Borneq wrote:
> http://www.mkssoftware.com/docs/man3/setjmp.3.asp
> "The setjmp() function does not save the calling thread's signal mask;
> refer to sigsetjmp()"
> Co się dzieje gdy nie zachowa maski sygnału,
Nie zostanie przywrócona w przypadku modyfikacji.
extern int foo=0;
disable_interrupt();//sekcja krytyczna
if(setjmp() == 0)
bar();
...
enable_interrupt();//koniec sekcji krytycznej
bar(){
...
enable_interrupt();
...
if(...)
longjmp();
}
Jak teraz bar wykona skok to w sekcji krytycznej będziesz miał
odblokowane przerwania.
> do czego jest potrzebna?
Do obsługi przerwań.
--
Pozdrawiam
Michoo
Re: setjmp/longjmp
Author: Borneq
Date: Sun, 20 May 2012 17:11
Date: Sun, 20 May 2012 17:11
14 lines
1517 bytes
1517 bytes
Użytkownik "Michoo" <michoo_news@vp.pl> napisał w wiadomości news:jpb5fm$83n$1@mx1.internetia.pl... > Jak teraz bar wykona skok to w sekcji krytycznej będziesz miał odblokowane > przerwania. > >> do czego jest potrzebna? > Do obsługi przerwań. Czy przerwania można obsługiwać tylko w kodzie systemowym jak kernek i może sterowniki? A zwykły program nie będzie miał dostępu do przerwań tak jak do portów? Gdyby wykonał disable_interrupt() wtedy proces mógłby zablokować cały system? Pozdrawiam
Re: setjmp/longjmp
Author: Michoo
Date: Sun, 20 May 2012 22:24
Date: Sun, 20 May 2012 22:24
27 lines
1808 bytes
1808 bytes
On 20.05.2012 19:11, Borneq wrote: > Użytkownik "Michoo" <michoo_news@vp.pl> napisał w wiadomości > news:jpb5fm$83n$1@mx1.internetia.pl... >> Jak teraz bar wykona skok to w sekcji krytycznej będziesz miał >> odblokowane przerwania. >> >>> do czego jest potrzebna? >> Do obsługi przerwań. > > Czy przerwania można obsługiwać tylko w kodzie systemowym jak kernek i > może sterowniki? Nie. Kwestia tego jakie przerwania masz do dyspozycji. man 2 signal > A zwykły program nie będzie miał dostępu do przerwań Do przerwań programowych będzie miał. Do błędów obliczeniowych cpu/fpu może mieć. > tak jak do portów? Gdyby wykonał disable_interrupt() wtedy proces mógłby > zablokować cały system? Jeżeli by działał w dość wysokim (czy właściwie niskim) ringu. -- Pozdrawiam Michoo
Re: setjmp/longjmp
Author: Kicer
Date: Fri, 25 May 2012 05:11
Date: Fri, 25 May 2012 05:11
37 lines
1649 bytes
1649 bytes
Michoo wrote:
> On 20.05.2012 15:04, Borneq wrote:
>> http://www.mkssoftware.com/docs/man3/setjmp.3.asp
>> "The setjmp() function does not save the calling thread's signal mask;
>> refer to sigsetjmp()"
>> Co się dzieje gdy nie zachowa maski sygnału,
> Nie zostanie przywrócona w przypadku modyfikacji.
>
> extern int foo=0;
>
> disable_interrupt();//sekcja krytyczna
> if(setjmp() == 0)
> bar();
> ...
> enable_interrupt();//koniec sekcji krytycznej
> bar(){
> ...
> enable_interrupt();
> ...
> if(...)
> longjmp();
> }
>
> Jak teraz bar wykona skok to w sekcji krytycznej będziesz miał
> odblokowane przerwania.
co także warte uwagi, nie wywołają się destruktory obiektów stworzonych
przed longjmp (o ile powinny w związku ze zmianą scopu)
pozdrawiam
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads