🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72421

Re: Połączenie jądro -> program.

#72421
From: macu
Date: Mon, 30 Jan 2012 11:06
37 lines
2508 bytes
On 01/29/2012 08:09 PM, Andrzej W. wrote:
> W dniu 2012-01-29 13:42, Krzysztof Magosa pisze:
>> Witam.
>>
>> A w jaki sposób masz rozwiązaną na tę chwilę komunikację między kernelem
>> a programem?
>>
>> Zastanów się nad utworzeniem urządzenia w /dev.
>> Program mógłby spać w oczekiwaniu na dane.
>>
>> Zrób sobie np. cat /dev/input/mice i poruszaj myszką - dopóki nie ma
>> danych cat śpi i nie żżera CPU.
>
>
> W tej chwili w moim programie, w pętli odczytuje stan licznika przerwań.
> Licznik przerwań zaś jest obsługiwany (zwiększany) przez kod modułu
> urządzenia.
> Pomyślałem sobie, żeby w kodzie modułu zamiast "count++" dać
> "kill(PID,SIGUSR1)" a w moim programie dać "pause".
> Pytanie tylko o ile dłużej od "++" będzie się wykonywał "kill" w tym module.
>
>

Zrob dokladnie tak jak napisal Krzysztof Magosa, aby modul byl dostepny
przez noda w /dev/
wtedy funkcjami poll/epoll/select uspisz swoj userspace'owy
program w oczekiwaniu na zdarzenie (w twoim przypadku inkrementacja 
licznika), a potem program odczyta dzieki ioctl stan licznika w module 
(wtedy nie "zgubisz" zadnego przerwania nawet jak czas miedzy odebraniem 
eventa a odczytem biezacej wartosci bedzie zbyt duzy)

Sygnaly maja pewna "nieprzyjemna" wlasciwosc a mianowicie w programie
wielowatkowym przerywaja wszystkie watki "czekajace" w wywolaniach jak
select(), sem_wait() itp a wtedy te zwracaja -1 i maja ustawiony errno
na EINTR co musisz sobie sprawdzic i spowrotem wywolac w/w funkcje

Mariusz
Technical Details
Message-ID: <jg5tir$hd7$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <jg1r2c$814$1@mx1.internetia.pl> <jg3es1$49a$1@news.task.gda.pl> <jg45im$9tb$1@mx1.internetia.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: macu <macu@polbox.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: Połączenie jądro -> program.
Date: Mon, 30 Jan 2012 12:06:02 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 37
Message-ID: <jg5tir$hd7$1@inews.gazeta.pl>
References: <jg1r2c$814$1@mx1.internetia.pl> <jg3es1$49a$1@news.task.gda.pl> <jg45im$9tb$1@mx1.internetia.pl>
NNTP-Posting-Host: 85.94.231.209
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1327921563 17831 85.94.231.209 (30 Jan 2012 11:06:03 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Mon, 30 Jan 2012 11:06:03 +0000 (UTC)
X-User: marcukr
In-Reply-To: <jg45im$9tb$1@mx1.internetia.pl>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100430 Fedora/3.0.4-2.fc11 Thunderbird/3.0.4
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit