QNXã·ã¹ãã ããã°ã©ãã«ã¯ãã¡ãã»ãŒãžã³ã°ã®åçãç解ããããšãå¿ èŠã§ãã ãã®ã¡ã«ããºã ã¯RTOSã§åºæ¬çãªåœ¹å²ãæãããŸãã éçºè ã«éŠŽæã¿ã®ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®å€ãã®æ©èœã¯ã¢ããªã³ã«éãããã¡ãã»ãŒãžã³ã°ã䜿çšããŠå®è£ ãã
read()
ããšãã°ã
read()
ããã³
write()
ïŒã
QNX RTOS InterTaskingãã©ãŒã
äžèšã®ããã«ãã¡ãã»ãŒãžã³ã°ã¯ââQNXã®ã¿ã¹ã¯éçžäºäœçšã®åºæ¬çãªã¡ã«ããºã ã§ãããä»ã®ã¡ã«ããºã ã®åºç€ãšãªã£ãŠããŸãã ãã®ããŒãã§èª¬æãããŠãããã¹ãŠã®åœ¢åŒã®ã¿ã¹ã¯éçžäºäœçšã以äžã®è¡šã«ãªã¹ããããã®ã¡ã«ããºã ãŸãã¯ãã®ã¡ã«ããºã ãå®è£ ãã責任è ã瀺ããŸãã
è¡š1.ã¿ã¹ã¯éçžäºäœçšã®åœ¢åŒã
ã¡ã«ããºã | å®æœåé |
---|---|
ã¡ãã»ãŒãžã³ã° | å°æ ž |
ä¿¡å· | å°æ ž |
å ±æã¡ã¢ãª | procnto
ããã»ã¹ procnto
|
POSIXã¡ãã»ãŒãžãã¥ãŒ | mqueue
manager |
ååãªãïŒãã€ãïŒããã³ååä»ãïŒFIFOïŒããã°ã©ã ãã£ãã« | pipe
ãããŒãžã£ãŒ |
QNX 6.5.0 RTOSã§ã¯ãå¥ã®åœ¢åŒã®ã¿ã¹ã¯é察話ãç»å ŽããŸãã-æ°žç¶ãããªãã·ã¥/ãµãã¹ã¯ã©ã€ãïŒPPSïŒã ããã¯ããªãèå³æ·±ãæè¡ã§ãããããã«ã€ããŠã¯å¥ã®æ©äŒã«æžããŸãã èå³ã®ããæ¹ã¯ããQNX Neutruno System Architectureã ã®PPSã»ã¯ã·ã§ã³ã®ç¿»èš³ãèªãããšãã§ããŸãã
ã¡ãã»ãŒãžã³ã°
ããã¯ãQNX Neutrinoãã€ã¯ãã«ãŒãã«ã«å®è£ ãããåæã¿ã¹ã¯éã¡ã«ããºã ã§ãã RTOSãéçºããéããã®åœ¢åŒã®ã¿ã¹ã¯éçžäºäœçšã誀ã£ãŠã¡ã€ã³ã®çžäºäœçšãšããŠéžæãããããšã¯ãããŸããã§ããã ãŸããã¡ã«ããºã èªäœã¯éåžžã«åçŽã§ãã 第äºã«ãã¡ãã»ãŒãžã®éä¿¡ãšåä¿¡ã®åæã¯ãããã°ã容æã«ããŸãã 第äžã«ãQNX Neutrinoã¡ãã»ãŒãžã³ã°ã«åºã¥ããŠã¢ããªã·ãã¯ã«ãŒãã«ã«å®è£ ãããé«ã¬ãã«ã®çžäºäœçšïŒãœãããŠã§ã¢ãã£ãã«ãªã©ïŒã®ãã¹ãã§ã¯ãã»ãŒåãããã©ãŒãã³ã¹ç¹æ§ãæããã«ãªããŸããã
QNXã¡ãã»ãŒãžã³ã°ãšã³ãžã³ã¯ãã¡ãã»ãŒãžã³ã°ã§äœ¿çšããã3ã€ã®äž»èŠæ©èœã®æåã®æåã«åºã¥ããŠãSRRãšã³ãžã³ãšãåŒã°ããŸã1 ã
MsgSend()
ã¯ã¡ãã»ãŒãžã®éä¿¡ã«äœ¿çšããã
MsgReceive()
ã¯ã¡ãã»ãŒãžã®åä¿¡ã«äœ¿çšããã
MsgReceive()
ã¯åŒã³åºãå ãžã®å¿çã®éä¿¡ã«äœ¿çšãããŸãã æåã«ãåæ©èœãåå¥ã«èŠãŠãã©ã®ããã«æ©èœããããç解ããŠããããããã1ã€ã®äŸã§çµã¿åãããŸãã é¢æ°ã®ãã¹ãŠã®åŒæ°ã¯ã泚æããããããæäœã®ååãæåã«ç解ããããã«ãæå³çã«äžããããŸããã
MsgSend()
ã¯ã ã¯ã©ã€ã¢ã³ããããµãŒããŒã«ã¡ãã»ãŒãžãéä¿¡ããå¿çãåä¿¡ããããã«äœ¿çšãããŸãã ããã§ã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®æŠå¿µã¯ããªãarbitraryæçã§ãã åãããã°ã©ã ãããã€ãã®ã¿ã¹ã¯ã®ãµãŒããŒã«ãªããšåæã«ãä»ã®ã¿ã¹ã¯ã®ã¯ã©ã€ã¢ã³ãã«ãªãããšãã§ããŸãã ããšãã°ãããŒã¿ããŒã¹ãµãŒããŒã¯ãããŒã¿ããŒã¹ã¯ã©ã€ã¢ã³ã2ã®ãµãŒããŒã§ãã åæã«ãããŒã¿ããŒã¹ãµãŒããŒããã¡ã€ã«ã·ã¹ãã ãããŒãžã£ãŒã®ã¯ã©ã€ã¢ã³ãã«ãªããŸãã
MsgSend()
é¢æ°ã
MsgSend()
ã¯ã©ã€ã¢ã³ãã¯
SEND
ãŸãã¯
REPLY
2ã€ã®ç¶æ ã®ããããã§ãããã¯ãããŸãã
SEND
ã¹ããŒã¿ã¹ã¯ã ã¯ã©ã€ã¢ã³ããã¡ãã»ãŒãžãéä¿¡ãã ãµãŒããŒããŸã åä¿¡ããŠããªãããšãæå³ããŸãã ãµãŒããŒãã¡ãã»ãŒãžãåä¿¡ãããšã ã¯ã©ã€ã¢ã³ãã¯
REPLY
ç¶æ ã«å ¥ããŸã ã ãµãŒããŒãå¿çã¡ãã»ãŒãžãè¿ããšã ã¯ã©ã€ã¢ã³ãã¯ããã¯è§£é€ãããŸãã
MsgReceive()
ã¯ã ã¯ã©ã€ã¢ã³ãããã¡ãã»ãŒãžãåä¿¡ããããã«äœ¿çšãããŸã ã ãµãŒããŒã¯
MsgReceive()
ãåŒã³åºãã ã¯ã©ã€ã¢ã³ãããŸã ã¡ãã»ãŒãžãéä¿¡ããŠããªãå Žåãã€ãŸã
RECEIVE
ç¶æ ã§ãããã¯ããŸã ã
MsgSend()
é¢æ°ãåŒã³åºããŸããã§ããã ãã®åŸïŒã¡ãã»ãŒãžããµãŒããŒã«éä¿¡ãããŸããïŒã ãµãŒããŒã¯ããã¯è§£é€ãããå®è¡ãç¶ç¶ããŸãã ãµãŒããŒã¯éåžžãåä¿¡ããã¡ãã»ãŒãžãåŠçããæ°ããã¡ãã»ãŒãžãåä¿¡ããæºåãããããã«ããã€ãã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠããããŸãã ãµãŒããŒãè€æ°ã®ã¹ã¬ããã§å®è¡ãããŠããå Žåãå¥ã®ã¹ã¬ãããã¡ãã»ãŒãžãåŠçããŠã¯ã©ã€ã¢ã³ãã«å¿çããå ŽåããããŸã ã ã»ãšãã©ã®å Žåãã¡ãã»ãŒãžãåä¿¡ããã¹ããªãŒã ã¯ãæ°žé ã®ããµã€ã¯ã«ã§æ©èœããåä¿¡ããã¡ãã»ãŒãžãåŠçããåŸã
MsgReceive()
å床åŒã³åºããŸãã
MsgReply()
ãå¿çã¡ãã»ãŒãžãã¯ã©ã€ã¢ã³ã 3ã«éä¿¡ããããã«äœ¿çšãããŸãã
MsgReply()
é¢æ°ã
MsgReply()
ããã¯ã¯çºçããŸããã ãµãŒããŒã¯ããã«åäœãç¶ããŸã ã ããã¯ã ã¯ã©ã€ã¢ã³ãããã§ã«ããã¯ç¶æ ïŒ
REPLY
ïŒã«ãããè¿œå ã®åæãå¿ èŠãªãããã§ãã
ç§ãã¡ãæã£ãŠããç¥èããªãã¯ããQNXã¡ãã»ãŒãžã³ã°ã¡ã«ããºã ãç解ããããã®æ©æž¡ããããããã«ãä»ã«äœãåŠã¶å¿ èŠããããŸããïŒ ãããªã«ãªãã èŸæ±åŒ·ããä»ãåçã圢ã«ãªãå§ããŸãã
QNX Neutrinoãã€ã¯ãã«ãŒãã«ã¯ãéä¿¡ãããã¡ãã»ãŒãžã®å 容ãæ°ã«ããŸããã ã¡ãã»ãŒãžã«ã¯åœ¢åŒããããŸããã ã¡ãã»ãŒãžã¯ã ã¯ã©ã€ã¢ã³ããšãµãŒããŒã«å¯ŸããŠã®ã¿æå³ããããŸã ã ãã€ã¯ãã«ãŒãã«ã¯ã ã¯ã©ã€ã¢ã³ãã¢ãã¬ã¹ç©ºéãããµãŒããŒã¢ãã¬ã¹ç©ºéã«ã¡ãã»ãŒãžïŒã€ãŸããããŒã¿ãããã¡ïŒã®ã¿ãã³ããŒãïŒå¿çããå Žåã¯ãã®éïŒãã¡ãã»ãŒãžãä¿åããããã®äžéãããã¡ã¯ãããŸããã ãããŠãããã¯äžéã³ããŒããªãããšãæå³ããŸãããªããªã ãã€ã¯ãã«ãŒãã«ã¯ã ã¯ã©ã€ã¢ã³ãã¡ã¢ãªãããµãŒããŒã¡ã¢ãªã«ããŒã¿ãçŽæ¥ã³ããŒããŸã ïŒå¿çããå Žåã¯ãã®éïŒã ãã®çµæãã¡ãã»ãŒãžã³ã°ãšã³ãžã³ã®ããã©ãŒãã³ã¹ãåäžããŸãã
ã¡ãã»ãŒãžãžã®éä¿¡ãåä¿¡ãããã³å¿çãåæããããã«ããã€ã¯ãã«ãŒãã«ã¯ãã¡ãã»ãŒãžäº€æã«åå ããŠããã¹ã¬ããã
SEND
ã
RECIEVE
ãããã³
REPLY
3ã€ã®ç¶æ ã®ããããã§ãããã¯ããŸãã ãµãŒããŒãã¡ãã»ãŒãžãåä¿¡ãããŸã§ã ã¯ã©ã€ã¢ã³ãã¯
SEND
ç¶æ ã§ãããã¯ãããŸãã ã¯ã©ã€ã¢ã³ããã¡ãã»ãŒãžãéä¿¡ããŠããªãå Žåã ãµãŒããŒã¯
RECEIVE
ç¶æ ã§ãããã¯ãããŸã ã ãµãŒããŒã¯ã¡ãã»ãŒãžãåä¿¡ãããšãããã¯ã解é€ããã ã¯ã©ã€ã¢ã³ãã¯
REPLY
ãããã¯ç¶æ ã«ãªããŸãã ãµãŒããŒãã¯ã©ã€ã¢ã³ãã«å¿çãè¿ããåŸã ã¯ã©ã€ã¢ã³ãã®ããã¯ã解é€ãããŸãã 以äžã§ãã
ããã§ãQNXã®ã¡ãã»ãŒãžã³ã°ãšã³ãžã³ãã©ã®ããã«æ©èœããããèŠã€ããŸããã å³ 1ã¯åã«äžèšã瀺ããŠããŸãã
å³ 1. QNX Neutrinoã§ã®ã¡ãã»ãŒãžã³ã°ã
ã¯ã©ã€ã¢ã³ãã¯ã©ã®ããã«ããŠãµãŒããŒãèŠã€ããŸããïŒ
QNX RTOSã®ã¡ãã»ãŒãžã³ã°ãšã³ãžã³ã®åçãç解ããŠããã°ãå ã«é²ãããšãã§ããŸãã ãããããQNXã§ã¡ãã»ãŒãžã亀æããããšã¯ã§ããŸããã決å®ããããšãªãã1ã€ã®è³ªåãããã¯ãã§ãã ã¯ã©ã€ã¢ã³ãã¯ã©ã®ããã«ããŠãµãŒããŒãèŠã€ããŸããïŒ
ã¡ãã»ãŒãžã¯ã¹ã¬ããéã§çŽæ¥éä¿¡ãããŸããã 代ããã«ããã£ãã«ãšæ¥ç¶ã䜿çšãããŸãã ãµãŒããŒã¯
ChannelCreate()
é¢æ°ã䜿çšããŠãã£ãã«ãäœæããŸãã ããŠãæåŸã«ã ãµãŒããŒã¯æ確ãªè¯å¿ããã£ãŠã
MsgReceive()
ããã³
MsgReply()
åŒã³åºãããšãã§ããŸã ã 以äžã®ã³ãŒãã¯ã ãµãŒããŒã®åäœã瀺ããŠããŸã ã
chid = ChannelCreate( flags ); /* chid -1 */ for (;;) { rid = MsgReceive( chid, &msg, sizeof( msg ), NULL ); /* rid -1 */ switch ( msg.type ) { /* */ } MsgReply( rid, EOK, NULL, 0 ); /* , */ }
次ã«ã ã¯ã©ã€ã¢ã³ãã¯
ConnectAttach()
ã䜿çšããŠãµãŒããŒãã£ãã«ãžã®æ¥ç¶ãäœæãã
ConnectAttach()
ãåŒã³åºããŸãã ã¯ã©ã€ã¢ã³ãã³ãŒãã¯éåžžã«ç°¡åã§ãã
coid = ConnectAttach( nd, pid, chid, _NTO_SIDE_CHANNEL, 0 ); /* coid -1 */ /* */ MsgSend( coid, smsg, sizeof( smsg ), rmsg, sizeof( rmsg ) ); /* , */ /* */
ä»ãæåŸã®è³ªåãæ®ã£ãŠããŸãã
chid
ã©ã®ããã«
chid
ãµãŒããŒãã©ã¡ãŒã¿ã
chid
ïŒ
nd
ã
pid
ã
chid
ïŒ ãããã®ãã©ã¡ãŒã¿ãŒã¯ã ãµãŒããŒã¢ãã¬ã¹ããŸãã¯éœåžã³ãŒããšå ç·çªå·ãå«ãé»è©±çªå·ãè¡šããŸã ã ãã®è³ªåã«å¯Ÿããçãã®ååã¯ã ãµãŒããŒèªäœãããããã¹ãŠã®ãã©ã¡ãŒã¿ãŒãç¥ã£ãŠãããšããããšã§ãã ãããã ãµãŒããŒã¯ã©ã®ããã«ããŠããããã¯ã©ã€ã¢ã³ãã«äŒããããšãã§ããŸããïŒ
ãµãŒããŒãããã®æ å ±ãååŸããã«ã¯ãããŸããŸãªæ¹æ³ããããŸã ã
.pid
ãã¡ã€ã«ãŸãã¯ã°ããŒãã«å€æ°ã䜿çšã§ããŸãã ããããå°ããªã¢ããªã±ãŒã·ã§ã³ã®æ£ããæ¹æ³ã¯ã ãµãŒããŒã§
name_attach()
é¢æ°ã䜿çšãã ã¯ã©ã€ã¢ã³ãã§
name_open()
ã䜿çšããããšã§ã ã ããã«æ£ããæ¹æ³ã¯ãåå空éèŠçŽ ãæ åœããå Žåã ãµãŒããŒããªãœãŒã¹ãããŒãžã£ãŒ 4ãšããŠå®è£ ããããšã§ãã
è€åã¡ãã»ãŒãž
ãã§ã«è¿°ã¹ãããã«ãQNX Neutrinoã®ã¡ãã»ãŒãžã³ã°ãšã³ãžã³ã®äž»ãªå©ç¹ã®1ã€ã¯ããã®é«ãããã©ãŒãã³ã¹ã§ãã ããã¯ãããŒã¿ã®äžéã³ããŒããªããšããäºå®ã«ãã£ãŠéæãããŸãã ã¡ãã»ãŒãžã¯ã¯ã©ã€ã¢ã³ãã®ã¡ã¢ãªãããµãŒããŒã®ã¡ã¢ãªã«çŽæ¥ã³ããŒãããŸãã ãããã®ã¡ãã»ãŒãžã¯ç°ãªãå Žæã«ããããšããããããŸãã å žåçãªã±ãŒã¹ã¯ãããŒã¿ãæ©åšããåä¿¡ããçã®ãããã¡ã§ãããããŒã¿æ å ±ïŒã¡ãã»ãŒãžããããŒïŒãæã€æ§é ã§ããå Žåã§ãã çããŒã¿èªäœã¯ããªã³ã°ãããã¡ã«ããå ŽåããããŸãã ãã®å Žåãå¥ã®ãããã¡ãäºåã«æºåããããã«ãããªã³ã°ãããã¡ããããããšããŒã¿ãã³ããŒããããšãæ¬åœã«å¿ èŠã§ããïŒ äœåãªã³ããŒã«ãªããŸããïŒ è€åã¡ãã»ãŒãžã䜿çšãããŠããå ŽåãQNX RTOSã§ã¯ãã¡ãã»ãŒãžãéä¿¡ããåã«ãã®ããŒã¿ãäžå¿ èŠã«ã³ããŒããããšãåé¿ã§ããŸãã
QNX Neutrinoã§è€åã¡ãã»ãŒãžã
iov_t
ããã«ã¯ãã¡ãã»ãŒãžæ°ãšçããïŒãŸãã¯å€§ããïŒèŠçŽ æ°ãæã€
iov_t
åã®é åã宣èšãã
SETIOV()
ãã¯ãã䜿çšããŠåèŠçŽ ãåæåããå¿ èŠããããŸãã åãããã¡ã®ã¢ãã¬ã¹ãšãµã€ãºãæå®ããŸãã å³ å³2ã¯ãè€åã¡ãã»ãŒãžã®åçã瀺ããŠããŸãã
å³ 2.è€åã¡ãã»ãŒãžã®äŸã
è€åã¡ãã»ãŒãžãåŠçããã«ã¯ãããç¥ãããŠããé¢æ°
MsgReceive()
ããã³
MsgReply()
ãvã®çµãããã€ãŸã
MsgReceivev()
ããã³
MsgReplyv()
ã¡ãã»ãŒãžéä¿¡é¢æ°
MsgSend()
ãçµæãåãå ¥ããããã
MsgSendv()
ã
MsgSendsv()
ããã³
MsgSendvs()
ãã¡ããªãŒå šäœã«
MsgSendv()
ãŠããŸãã ããã§ããã€ã¯ãã«ãŒãã«ããã¹ãŠã®è¿œå äœæ¥ãè¡ããè¿œå ã®ã³ããŒãšã¡ãã»ãŒãžå šäœã®ãããã¡ãªã³ã°ã¯è¡ãããŸããã ç§ã¯ããã奜ãã§ãïŒ
ã€ã³ãã«ã¹
æã«ã¯ãä»ã®ã¹ã¬ããã«äœããèµ·ãã£ãããšãç¥ãããã ãã§ãããçãã¯å¿ èŠãããŸããã ãããã£ãŠã
MsgSend()
ãããã¯ãå¿ èŠ
MsgSend()
ãŸããã ãã®å Žåã
MsgSendPulse()
é¢æ°ã
MsgSendPulse()
ãŸãã ãã«ã¹ã«ã¯ã8ãããã®ã³ãŒããš32ãããã®ããŒã¿ãå«ãŸããŸãã éåžžã«é »ç¹ã«ãå²ã蟌ã¿ãã³ãã©ã§ãã«ã¹ã䜿çšãããŸãã ãã«ã¹ã®å Žåããã¥ãŒã䜿çšãããŸãã ã¹ããªãŒã ããã°ãããã«ã¹ãåä¿¡ããŠââããªããŠãããã«ã¹ã¯å€±ãããŸããã ãã ããèªã¿åãæéããªãã¹ããªãŒã ã«ãã«ã¹ãéä¿¡ããå Žåã¯ãé ããæ©ãã
EAGAIN
ãšã©ãŒãåãåãæºåãããŠãã ããã
ä¿¡å·
QNX Neutrino RTOSã¯ãUNIXéçºè ã«ãªãã¿ã®ããã·ã°ããªã³ã°ã¡ã«ããºã ããµããŒãããŠããŸãã æšæºã®POSIXä¿¡å·ãšPOSIXãªã¢ã«ã¿ã€ã ä¿¡å·ã®äž¡æ¹ããµããŒããããŠããŸãã äž¡æ¹ã®ã¿ã€ãã®ä¿¡å·ãåŠçããã«ã¯ãåããã€ã¯ãã«ãŒãã«ã³ãŒãã䜿çšãããŸãã ãã®çµæããã€ã¯ãã«ãŒãã«èªäœãããã³ã³ãã¯ãã«ãªããPOSIXãªã¢ã«ã¿ã€ã ã·ã°ãã«ã°ã«ãŒãã®ååã®ããã«ãïŒã¢ããªã±ãŒã·ã§ã³ã®èŠæ±ã«å¿ããŠïŒPOSIXã·ã°ãã«ããã¥ãŒã«å ¥ããããšãã§ããŸãã ç¹ã«ãQNX Neutrinoã¯POSIXæšæºãæ¡åŒµããç¹å®ã®ã¹ããªãŒã ã«ä¿¡å·ãéä¿¡ã§ããããã«ããŸãã ãããŠãããã¯æã éåžžã«äŸ¿å©ã§ãã
ãšããã§ãPOSIXãªã¢ã«ã¿ã€ã ä¿¡å·ã«ã¯ã8ãããã®ã³ãŒããš32ãããã®ããŒã¿ãå«ãŸããŠããŸãã äœã«ã䌌ãŠããŸãããïŒ æ£ç¢ºã«ã¯ãä¿¡å·ã¡ã«ããºã ãå®è£ ããåãã³ãŒãããã«ã¹ã®éä¿¡ã«ã䜿çšãããŸãã 䟿å©ã§ä¿¡é Œã§ããã
ã·ã°ãã«ãåŠçããã«ã¯ãããªãã¿ã®é¢æ°
kill()
ã
sigaction()
ã
sigprocmask()
ãªã©ãããã³ããèå³æ·±ãé¢æ°ãäŸãã°
pthread_kill()
ããã³
pthread_sigmask()
ãŸãã
çªçµãã£ã³ãã«
ãœãããŠã§ã¢ãã£ãã«ã¯ãUNIXãŠãŒã¶ãŒããã³éçºè ã«ãªãã¿ãããå¿ èŠããããŸãã QNXã«ã¯ãããç¥ãããŠãããã¹ãŠã®ã³ãã³ããæ©èœãããã³ããªãã¯ããããŸãã ããšãã°ãããã¯ååã®ãªãããã°ã©ã ãã€ãïŒãã€ãïŒãã³ãã³ãã©ã€ã³ã§äœæãããæ¹æ³ã§ãã
# ls -l | less
ååä»ããã€ãïŒFIFOïŒãäœæããã«ã¯ã
mkfifo
ã³ãã³ããŸãã¯
mkfifo()
é¢æ°ã䜿çšããå¿ èŠããããŸãã
æ©èœã¯1ã€ã ãã§ãã QNX Neutrinoãããã°ã©ã ãã£ãã«ã§åäœããã«ã¯ã
pipe
ãããŒãžã£ãŒãå®è¡ããå¿ èŠããããŸãã
POSIXã¡ãã»ãŒãžãã¥ãŒ
ã¡ãã»ãŒãžãã¥ãŒã¯ååä»ãããã°ã©ã ãã€ãïŒFIFOïŒã«äŒŒãŠããŸãããããè€éãªã¡ã«ããºã ã§ãã ã¡ãã»ãŒãžã®åªå é äœä»ãããµããŒãããŸãã QNX Neutrinoã§POSIXã¡ãã»ãŒãžãã¥ãŒã䜿çšããã«ã¯ã
mqueue
ãããŒãžã£ãŒãå®è¡ããå¿ èŠããããŸãã
QNX RTOSã®ã¡ãã»ãŒãžãã¥ãŒã«ã¯è€æ°ã®ã¹ã©ãã·ã¥æåã/ããå«ããããšãã§ããŸããããã¯ããã£ã¬ã¯ããªãäœæã§ããããšãæå³ããŸãã ãããã£ãŠãPOSIXæšæºã¯æ¡åŒµããããã¥ãŒåãã¹ã©ãã·ã¥ã§å§ãŸãããã®æåãå«ãŸãªãããšãèŠæ±ãããŸãã ãšããŠéåžžã«äŸ¿å©ãªæ©èœ 1ã€ã®ãœãããŠã§ã¢ããã±ãŒãžãŸãã¯1ã€ã®äŒç€Ÿã®ãã¥ãŒã1ã€ã®ãã£ã¬ã¯ããªã«ã°ã«ãŒãåã§ããŸãã
å ±æã¡ã¢ãª
QNX Neutrinoã§ã®å ±æã¡ã¢ãªã®æäœã¯ãä»ã®UNIXã·ã¹ãã ãšåãã§ãã å ±æã¡ã¢ãªã¡ã«ããºã ã¯ããã€ã¯ãã«ãŒãã«ãå«ã
procnto
ããã»ã¹
procnto
å®è£ ãããŠãããããä»ã«äœãå®è¡ããå¿ èŠã¯ãããŸããã
shm_open()
ããã³
mmap()
é¢æ°ã®ããã¥ã¡ã³ãã§è©³çŽ°ãèªãããšãã§ããŸãã
ãããšã¯å¥ã«ãå ±æã¡ã¢ãªèªäœã¯ã¿ã¹ã¯éçžäºäœçšã«é©ããŠããªãããšã«æ³šæãã䟡å€ããããŸãã ãµãŒããŒãå ±æã¡ã¢ãªã«ã®ã¿æžã蟌ã¿ãè¡ãã ã¯ã©ã€ã¢ã³ããå ±æã¡ã¢ãªããã®èªã¿åãã®ã¿ãè¡ãå Žåã§ããã¯ã©ã€ã¢ã³ããéšåçã«å€æŽãããããŒã¿ãèªã¿åãå ŽåããããŸãã ãã®ãããªééãã¯åŸã§èŠã€ããã®ãé£ããå ŽåãããããããŸã£ããè¡ããªãæ¹ãè¯ãã§ãããã ãã®ãããªç¶æ³ãæé€ããã«ã¯ããã¥ãŒããã¯ã¹ãã»ããã©ãªã©ã®åæããªããã£ãã®ããããã䜿çšããå¿ èŠããããŸãã
ã¡ãã»ãŒãžã³ã°ãšã³ãžã³ãšå ±æã¡ã¢ãªã䜿çšããªãããã¿ã¹ã¯éã®çžäºäœçšãè¡ãæ¹æ³ããŸãèå³æ·±ããã®ã§ãã ããã¯ãåæ£ã·ã¹ãã ã®æ§ç¯ãèšç»ããŠããå Žåã«ç¹ã«äŸ¿å©ã§ãã å ±æã¡ã¢ãªã¯ãããã¯ãŒã¯çµç±ã§ã¯å©çšã§ããŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãå ±æã¡ã¢ãªã䜿çšããŠããããéåžžã«é«ãããã©ãŒãã³ã¹ãçºæ®ããã¡ãã»ãŒãžã³ã°ãä»ããåææ©èœãšãããã¯ãŒã¯ééæ§ãåããŠããŸãã
ãããæéã®æ¹æ³ã§ãããšããäºå®ã«åºã¥ããŠãå ±æã¡ã¢ãªã䜿çšããŠå¯Ÿè©±ãæ§ç¯ããããšããªãã§ãã ããã åæããªããã£ãã䜿çšããå Žåãé床ã¯ã¡ãã»ãŒãžã³ã°ãšã³ãžã³ã®é床ã«å¹æµããå¯èœæ§ããããŸãã éèŠãªå©ç¹ã¯ãéåžžã«å€§å®¹éã®ããŒã¿ã®äº€æã®ã¿ã§ãã
çŽæã®ãã³
ç§ã¯ãã³ããããšçŽæããã®ã§ãããã§ãã ç§ã¯å šãå¿ããŸããã§ããããããŠãç§ã¯æ°ã«ããŸããã æåã®ãã³ã¯ãã¡ãã»ãŒãžãéä¿¡ãããšãã«ãã¡ãã»ãŒãžèªäœã«åããããã¡ã䜿çšããŠè¿ä¿¡ã§ããããšã§ãã ç§ã¯åœŒãããããããªãé »ç¹ã«è¡ããšããèšãã§ãããã ãã䟿å©ã«ããããã«ãããŸããŸãªã¡ãã»ãŒãžãšããããžã®å¿çãèšè¿°ãããã¹ãŠã®æ§é ã1ã€ã®çµåã«ã°ã«ãŒãåãããŸãã éåžžã ãµãŒããŒããå¿çãåä¿¡ããåŸãã¡ãã»ãŒãžã¯ã¯ã©ã€ã¢ã³ãã«éä¿¡ãããŸããã ãããã£ãŠããããã¡ãç¯çŽã§ããŸãã
2ã€ç®ã¯ãQNX Neutrinoã®POSIXãã¡ã€ã«èšè¿°åãæ¥ç¶ïŒã¡ãã»ãŒãžéä¿¡çšïŒãšåãã§ããããšã§ãã ãããŠãããã¯ããã¡ã€ã«èšè¿°åïŒ
write()
ã
read()
ãªã©ïŒã䜿çšããé¢æ°ããåŒæ°ããµãŒããŒãžã®ã¡ãã»ãŒãžã«å€æããããããªãªãŒããŒããããæã€åãªãã©ãããŒã§ããããšãæå³ããŸã ã ååãªæ·±å»ãªæé©åã ãããã£ãŠãQNXçšã®ã·ã¹ãã ãœãããŠã§ã¢ãéçºããå Žåã¯ããªãœãŒã¹ãããŒãžã£ãŒã®äœææ¹æ³ãåŠãã§ãã ããã
åç §è³æ
- ãªã¢ã«ã¿ã€ã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã QNX Neutrino 6.3ã ã·ã¹ãã ã¢ãŒããã¯ãã£ã ISBN 5-94157-827-X
- ãªã¢ã«ã¿ã€ã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã QNX Neutrino 6.3ã ãŠãŒã¶ãŒããã¥ã¢ã«ã ISBN 978-5-9775-0370-9
- Rob KrtenããQNX Neutrinoã®çŽ¹ä»2.ãªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³éçºè åãã¬ã€ããã第2çã ISBN 978-5-9775-0681-6
1é¢æ°
MsgSend()
ãªã©ã®ååã®ãã¬ãã£ãã¯ã¹
Msg
ã¯QNX Neutrinoã«ã®ã¿ç»å ŽããQNX4ã§ã¯ãããã®é¢æ°ã¯åã«
Send()
ã
Receive()
ãããã³
Reply()
ãšåŒã°ããŠããŸããã ãããã£ãŠãååã¯SRRã§ãã
2ãã®äŸã§ã¯ãããŒã¿ããŒã¹ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã¯ã¡ãã»ãŒãžã³ã°æ©èœãçŽæ¥äœ¿çšããŠããŸããããQNXã§ã¯ãå
read()
ã
write()
ã
sendto()
ãªã©ã®äžã§ãSRRã¡ã«ããºã ãé衚瀺ã«ãªã£ãŠããããšããã§ã«ããã£ãŠããŸãã
3ãµãŒããŒããšã©ãŒã³ãŒãã®ã¿ãè¿ãå¿ èŠãããå Žåãããšãã°ã¡ãã»ãŒãžããµããŒããããŠããªãå Žåã
MsgError()
é¢æ°ã䜿çšããæ¹ã䟿å©ã§ãã
4ãªãœãŒã¹ãããŒãžã£ãŒã®èª¬æã¯ããã®èšäºã®ç¯å²å€ã§ãã ãã€ãããã«ã€ããŠæžãããšã¯å¯èœã§ãã