ã®
activate( ):
const char wakeMessage(WAKE_MESSAGE);
write(mWritePipeFd, &wakeMessage, 1);
pollEvents( ):
if (mPollFds[wake].revents & POLLIN) {
read(mPollFds[wake].fd, &msg, 1);
}
ã«ã€ããŠãªã®ã§ããã
ãªãpipeãã€ãã£ãŠã¡ãã»ãŒãžã®Write/Read
ããããªãå¿
èŠãããã®ã§ããããïŒ
ãã®ã¡ãã»ãŒãžã®ãããšãã«ãã£ãŠãã£ããäœãè¡ãããã®ã§ããããïŒ
ãæç€ºã®ã»ã©ãããããé¡ãããŸãã
以äž
On 12æ7æ¥, åå3:23, èµè±ããã <kuraba...@gmail.com> wrote:
> ãªãpipeãã€ãã£ãŠã¡ãã»ãŒãžã®Write/Read
> ããããªãå¿
èŠãããã®ã§ããããïŒ
èµè±ãããããã ã£ããpipeã䜿ããã«ã©ã®ããã«å®è£
ããŸããïŒ
ãããšpipeã䜿ã£ãå Žåã®æ¯èŒãããããšã§çè§£ãæ·±ãŸããšæããŸãã
> ãã®ã¡ãã»ãŒãžã®ãããšãã«ãã£ãŠãã£ããäœãè¡ãããã®ã§ããããïŒ
èµè±ããããããªãã®ä»®èª¬ãæžããŠã¿ãŠãã ãããããããã°ãããæ€èšŒããããã®ã¢ã€ãã£ã¢ããããããããããŸããã
ãªããäžæãªè³ªåãããããã«ä»¥äžã®ããŒãžãåèã«ãªããŸãã
æè¡ç³»ã¡ãŒãªã³ã°ãªã¹ãã§è³ªåãããšãã®ãã¿ãŒã³ã»ã©ã³ã²ãŒãž
ãåé¡ã®è§£æ±ºããããæ
å ±ã®å
±æãã«è³ãããã«
http://www.hyuki.com/writing/techask.html
ç§ã¯ãã®write/readã¯å¿
èŠãªããšèããŠããŸãã
ãã£ãŠãpipe()ãªã©äœ¿çšããå¿
èŠæ§ã¯ãŸã£ãããããŸããã
poll(mPollFds, numFds, nbEvents ? 0 : -1);
ã§ç£èŠããã®ã¯ãã»ã³ãµãŒçšã«çšæãããã¡ã€ã«ãã£ã¹ã¯ãªãã¿ã ã
ç£èŠããã°ãããšèããŠããŸãã
ãã ããããã®ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ã«ããŒã¿ãæ¥ãªãã£ãå Žåã
poll()ã¯åŸ
æ©ç¶æ
ã«ãªã£ãŠããŸãå±éºæ§ããããŸãã
ããã§ãpoll()ã®ç¬¬3åŒæ°ã¯ã-1(timeout ã«è² ã®å€ãæå®ãããšãã¿ã€ã ã¢ãŠãæéãç¡é)ã§ã¯ãªãã
0以äžã®ã¿ã€ã ã¢ãŠãæéãèšå®ããã°ããã®ã§ã¯ãªãããšãããã®ã§ããã
ãªããããªå±éºãªä»æ§ã«ããã®ãæ€èšãã€ããŸããã
activate( ) ãšpollEvents( ) ã¯å¥ã
ã®ã¹ã¬ããã§åŒã°ããã®ã§ã¯ãªãããªã
ããããã°ãpoll()ã§ã¿ã€ã ã¢ãŠããç¡éã«ããŠããŠãåé¡ããªãã
æä»å¶åŸ¡ãèæ
®ããã¹ã¬ããéã®ããŒã¿ã®ãããšãã®ããã«pipeã䜿ã£ãŠããã®ã ãšæããŸãã
static const char WAKE_MESSAGE = 'W';
const char wakeMessage(WAKE_MESSAGE);
int result = write(mWritePipeFd, &wakeMessage, 1);
"W"ãšããã¡ãã»ãŒãžãããã£ãŠããã ãã§ããã以å€ã®
ããŒã¿ãããã£ãŠããŸããã
ããã ãã®ããã«pipeãã€ãã£ãŠããã®ã§ããããïŒ
ãããæä»å¶åŸ¡ã«é¢é£ããŠãããšã¯æããŸããã
ç§ã¯ãããããã®ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ã«ããŒã¿ãæ¥ãªãã£ãå Žåã
poll()ã¯åŸ
æ©ç¶æ
ã«ãªã£ãŠããŸãå±éºæ§ããããŸãã
ãšæžããŸãããããã®å±éºãåé¿ããããã«ååšããã®ã§ã¯
ãªãã§ããããïŒ
ããªãã¡ãactivate()ãcallããããšã§ã確å®ã«ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ã«ã¯
æžã蟌ã¿ãè¡ãã,pollEvents()ã«ãŠèªã¿èŸŒã¿ãè¡ããã
ç¡éã«åŸ
æ©ãããšããç¶æ
ãåé¿ããããšãã§ããŸãã
On 12æ7æ¥, ååŸ10:20, koba <tetsu.k...@gmail.com> wrote:
> kobaã§ãã
>
> activate( ) ãšpollEvents( ) ã¯å¥ã
ã®ã¹ã¬ããã§åŒã°ããã®ã§ã¯ãªãããªã
> ããããã°ãpoll()ã§ã¿ã€ã ã¢ãŠããç¡éã«ããŠããŠãåé¡ããªãã
>
ãã®ãsensor以å€ã®ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ããçšæããªããšãããªãããã§ããã
ãªããå€éšã«ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ãçšæããã®ã§ã¯ãªããå
éšã®ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿
ïŒpipe()çšïŒãçšæããã®ã§ããããïŒ
ããã¯ãéæŸãããšãã ããäžæçã«ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ãçšæãããã
ããã§ããã¡ã€ã«ãå©çšãããã¡ã¢ãªãŒäžã®ãããã¡ãå©çšããã°ããã®ã§ã¯
ãšããã£ãã®ã§ã¯ïŒããã«ã¯pipe()çšã®ãã¡ã€ã«ãã£ã¹ã¯ãªãã¿ãäžçªãããšã