}
ΠΡΠΌΠ΅ΡΡΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠ΅ΠΉ.
Π ΡΡΠ½ΠΊΡΠΈΠΈ io_msg() Π΄Π»Ρ Β«ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈΒ» ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Β«msgΒ») Π² ΡΡΡΡΠΊΡΡΡΡ io_message ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° IOV.
Π‘ΡΡΡΠΊΡΡΡΠ° io_message Π±ΡΠ»Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΡΠ»Π΅Π½Π°, ΠΈ Π² Π½Π΅ΠΉ Π±ΡΠ» Π·Π°Π΄Π°Π½ ΡΠΈΠΏ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (_IO_MSG), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠ»Π΅ cmd (ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ ΡΠ΅ΡΡΡΡΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΏΠΎΡΡΠ»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ).
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ io_msg() ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ MsgSendv().
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Β«Π·Π°Π±Π°Π²Π½Π°ΡΒ» Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΡΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ, ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»Ρ mgrid. QSSL ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅Ρ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ΄Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ Π΄Π»Ρ Β«Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Β» Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ². ΠΡΠΎΡ ΠΏΠΎΠ΄Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ _IOMGR_PRIVATE_BASE Π΄ΠΎ IOMGR_PRIVATE_MAX ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ Π³Π»ΡΠ±ΠΎΠΊΠΎ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Π²Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΡΠΎ ΡΠΌΠ΅Π»ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Β«Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡΒ» ΠΈΠ»ΠΈ Β«ΠΎΠ±ΡΡΠ½ΡΡΒ» ΡΠΈΡΡΠ΅ΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Ρ ΠΎΡΠ΅ΡΡ ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ, Π±ΡΠ΄ΡΡ Π»ΠΈ Π²Π°ΡΠ΅ΠΌΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΡΠ΅ΡΡΡΡΠ° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π² QSSL Π·Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ mgrid, Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π²Π°Ρ β Π½ΠΈΠΊΡΠΎ, ΠΊΡΠΎΠΌΠ΅ Π²Π°Ρ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π½ΠΎΠΌΠ΅Ρ. ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» <sys/iomgr.h>, ΡΠ°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ. Π Π½Π°ΡΠ΅ΠΌ Π²ΡΡΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ COMMAND_XYZ Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½Π° Π½Π° _IOMGR_PRIVATE_BASE:
#define COMMAND_XYZ (_IOMGR_PRIVATE_BASE + 0x0007)
ΠΈΠ»ΠΈ QSSL Π½Π°Π·Π½Π°ΡΠΈΠ»Π° Π½Π°ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½:
#define COMMAND_XYZ ( IOMGR_ACME_CORP + 0x0007)
Β«ΠΠ»ΠΈΠ΅Π½Ρ/ΡΠ΅ΡΠ²Π΅ΡΒ» Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°Π ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°? ΠΠ°ΠΊ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ QNX/ Neutrino? ΠΡΠ²Π΅Ρ ΠΏΡΠΎΡΡ: ΠΌΡ ΡΠΆΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ², ΠΌΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ°. Π QNX/Neutrino Π²Π°ΠΌ ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Β«ΡΡΡΡΡ Β» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΡΠ΅ΠΌΡ?
1. ΠΠ°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΠ°ΠΌΠΈΠΌ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ _IO_CONNECT, ΠΏΠΎΡΡΡΠΏΠΈΠ²ΡΠΈΠΌ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ open(), ΠΈΠ»ΠΈ ΠΈΡΠΊΠ°ΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠΈΡΠΊΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ°, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ open().
2. ΠΠ°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΠΈΡΠΊΠ°ΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π² Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ΅ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΠ°ΠΊΠ΅ΡΠ½Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°, Π½ΠΎ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ.
3. ΠΠ°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΡΡΡΠ½ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ POSIX-ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π° Π²Π°Ρ.
4. ΠΠ°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ stdin/stdout. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π°ΡΠ΄ΠΈΠΎΠ΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ Π²Ρ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ mp3_decode spud.mp3 >/dev/audio, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ open(), ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»Π° Π±Ρ (Π° Π΅ΡΠ»ΠΈ Π±Ρ ΠΈ ΡΡΠ°Π±ΠΎΡΠ°Π»Π°, ΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»Π° Π±Ρ write(), ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅).
ΠΡΠΎΠΊΡΠΈΠ QNX4 Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΊΡΠΈ β ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΎΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ qnx_proxy_attach(). ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ (proxy ID), (ΠΎΠ½ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π½ΠΎΠΌΠ΅ΡΠΎΠ², ΡΡΠΎ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²), ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ Trigger() ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ Π΅Π³ΠΎ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ (ΡΠΌ. Π½ΠΈΠΆΠ΅).
Π QNX/Neutrino Π²Ρ Π±Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ struct sigevent Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Β«ΠΈΠΌΠΏΡΠ»ΡΡΠ°Β», Π° ΠΏΠΎΡΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±Ρ ΡΡΠ½ΠΊΡΠΈΡ MsgDeliverEvent() Π΄Π»Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΡ, Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°Π»ΠΈ Π±Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ QNX4 (ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Receive() ΠΈΠ»ΠΈ Creceive()) β ΡΡΠ°Π²Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΊΡΠΈ. ΠΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ β Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΎΠΊΡΠΈ. ΠΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Β«ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅Β». Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΊΡΠΈ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΡΠ»ΠΈ Π²Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΡΠΎΠΊΡΠΈ, ΠΎΠ±ΡΡΠ½ΠΎ Π²Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠΊΡΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΊΠΎΠ»Ρ ΡΠΊΠΎΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠΊΡΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠΊ Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π°ΡΠΈΡ ΠΏΡΠΎΠΊΡΠΈ? ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΠ·ΡΠ°Π·ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° β ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΠΏΡΠΎΠΊΡΠΈ Π½ΡΠΆΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠΎΠΌ. ΠΡΠ»ΠΈ ΡΡΠΎ Π²Π°Ρ ΡΠ»ΡΡΠ°ΠΉ, ΡΠΌ. Π½ΠΈΠΆΠ΅ Β«ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΊΡΠΈ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡΒ».
ΠΠΎΡΡΠΎΠΌΡ, Π² QNX4 Π²Π°Ρ ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄Π΅Π» Π±Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
pid = Receive(0, &msg, sizeof(msg));
if (pid == proxyPidTimer) {
// Π‘ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°Ρ ΡΠ°ΠΉΠΌΠ΅Ρ, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ
} else if (pid == proxyPidISR) {
// Π‘ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°Ρ ISR, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ
} else {
// ΠΠ΅ Π½Π°ΡΠ° ΠΏΡΠΎΠΊΡΠΈ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ±ΡΡΠ½ΠΎΠ΅
// ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ.
}
Π QNX/Neutrino ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΡΡ Π±Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
rcvid = MsgReceive(chid, &msg, sizeof(msg), NULL);
if (rcvid == 0) { // 0 Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠΎ ΠΈΠΌΠΏΡΠ»ΡΡ
switch (msg.pulse.code) {
case MyCodeTimer:
// Π‘ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°Ρ ΡΠ°ΠΉΠΌΠ΅Ρ, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ
break;
case MyCodeISR:
// Π‘ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°Ρ ISR, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ
break;
default:
// ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠΌΠΏΡΠ»ΡΡΠ°
break;
}
} else {
// rcvid - Π½Π΅ Π½ΡΠ»Ρ, Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ΅
// ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ.
}
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ², Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° Π±Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
int main(int argc, char **argv) {
...
// ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
pulse_attach(dpp, 0, MyCodeTimer, my_timer_pulse_handler,
NULL);
pulse_attach(dpp, 0, MyCodeISR, my_isr_pulse_handler,
NULL);
...
}
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π²Π²Π΅ΡΡΠΈ Π΄Π²Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΄Π²Π΅ Π½Π°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (my_timer_pulse_handler() ΠΈ my_isr_pulse_handler()) Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΊΠΎΠ΄Ρ. ΠΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅.
ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΊΡΠΈ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡΠΡΠ»ΠΈ Π²Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠΊΡΠΈ (ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΊΡΠΈ, ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ), ΡΠΎ Π²Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄Π΅Π»ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π² QNX4 Π½Π° ΠΏΡΠΎΠΊΡΠΈ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ. Π QNX/Neutrino ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΈΠΌΠΏΡΠ»ΡΡ ΡΠΎΠΆΠ΅ Π½Π΅Π»ΡΠ·Ρ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΠΈΠ±ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ΅ΠΌΠ°, ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΊΡΠΈ, ΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π΅ Π½Π°Π΄ΠΎ, Π»ΠΈΠ±ΠΎ ΡΠΌΠΎΡΡΠΈΡ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎ Π½Π΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π½Π°Π΄ΠΎ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Π² QNX/Neutrino ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΈΠΌΠΏΡΠ»ΡΡ Π½Π΅ Π·Π°ΠΏΠΈΡ Π½Π΅ΡΡ. ΠΠΌΠΏΡΠ»ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΈ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ. Π£ΠΌΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π΄Π΅ΡΡ Π±ΡΠ»ΠΎ Π±Ρ Β«ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡΒ» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΠΊΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠΌΠΏΡΠ»ΡΡΠ° ΠΈ ΡΠ°Π±Π»ΠΈΡΡ. Π’Π°Π±Π»ΠΈΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»Π° Π±Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠΊΡΠΈ. ΠΠΎΠ»ΡΡΠΈΠ² ΠΈΠΌΠΏΡΠ»ΡΡ, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±Ρ ΠΏΠΎΠ»Π΅ value Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΊ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, Π²ΡΠ±ΡΠ°Π»ΠΈ Π±Ρ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Β«ΠΏΡΠΈΡΠ²ΠΎΡΠΈΠ»ΠΈΡΡΒ», ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΎ.
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ Π² QNX4 ΠΌΠΎΠ³Π»ΠΈ Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ (ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΡΠΈΠΌ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΠΊΡΠΈ ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΡ Π΅Π΅ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΈ), Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ Π½ΡΠ»Ρ (ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ, ΡΡΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ). Π QNX/Neutrino ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ β Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΎΠΊΡΠΈ Π²Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° struct sigevent. ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠΌ (Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ ΠΏΡΠΎΠΊΡΠΈ), Π»ΠΈΠ±ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ° β ΠΊΠ°ΠΊ Π²ΡΠ±Π΅ΡΠ΅ΡΠ΅, ΡΠ°ΠΊ ΠΈ Π±ΡΠ΄Π΅Ρ.
Π’Π°ΠΊΠΆΠ΅ Π² QNX4 Π²Ρ ΠΎΠ±ΡΠ·Π°Π½Ρ Π±ΡΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ β Π΄Π°ΠΆΠ΅ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ. Π QNX/Neutrino Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ struct sigevent ΠΊ Π²Π΅ΠΊΡΠΎΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ InterruptAttachEvent(), ΠΈ ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ°.
Π Π΅Π·ΡΠΌΠ΅
ΠΠ΅ΡΠ΅Π½ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· QNX4 Π² QNX/Neutrino ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΡΡΠ΅ΠΉ Π² ΠΎΠ±Π΅ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , β ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»: