int dirent_size(char *fname) {
return (ALIGN(sizeof(struct dirent) - 4 + strlen(fname)));
}
dirent_fill()Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° dirent_fill() ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β ΠΏΠΎΠ»Π΅ΠΉ inode, offset ΠΈ fname) Π² ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. Π ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ΅Π΄ΡΠΎΡΡΠΈ ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π°Π΄ΡΠ΅Ρ (Ρ ΡΡΠ΅ΡΠΎΠΌ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ), Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
struct dirent* dirent_fill(struct dirent *dp, int inode,
int offset, char *fname) {
dp->d_ino = inode;
dp->d_offset = offset;
strcpy(dp->d_name, fname);
dp->d_namelen = strlen(dp->d_name);
dp->d_reclen =
ALIGN(sizeof(struct dirent) - 4 + dp->d_namelen);
return ((struct dirent*)((char*)dp + dp->d_reclen));
}
Π Π΅Π·ΡΠΌΠ΅
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² β Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅.
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² β ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ΄ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
ΠΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΡΡΠ΅ΠΉ, Ρ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ.
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°
ΠΡΠ΅Π³Π΄Π° ΡΠ»Π΅Π΄ΡΡΡ Π·Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, stat()).
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠ° ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² (ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΠΈΡ Π² Π³Π»Π°Π²Π΅ Β«ΠΡΠΎΡΠ΅ΡΡΡ ΠΈ ΠΏΠΎΡΠΎΠΊΠΈΒ») ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ.
QSSL Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΄ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ POSIX-ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ²ΠΈΠ½ΡΡ Π΄ΠΎΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ².
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ½ΠΎΡΡΡΠΈΡ ΡΡ ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:
OCB (Π±Π»ΠΎΠΊ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°)
ΠΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Β«ΠΎΡΠΊΡΡΡΠΈΠΈΒ» ΡΠ΅ΡΡΡΡΠ°; ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ lseek()).
ΠΡΡΠΈΠ±ΡΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ
ΠΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°; ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠ΅ΠΆΠΈΠΌΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈ Ρ.Π΄.).
ΠΠ°ΠΏΠΈΡΡ ΡΠΎΡΠΊΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π° Π±Π°Π·ΠΈΡΠ΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΡΠ΅ΡΡΡΡΠ° ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠ°.
ΠΠ»ΠΈΠ΅Π½Ρ ΠΎΠ±ΡΠ°Π΅ΡΡΡ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠ°Π·ΡΠ΅ΡΠΈΠ² ΠΈΠΌΡ ΠΏΡΡΠΈ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ open() ΠΈ Π΄ΡΡΠ³ΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ²) Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎΠΌΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ·Π»Π°, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠ°Π½Π°Π»Π° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ (handle).
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ Π½Π°Π΄Π΅Π»ΡΠ΅ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π²Π°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΡ, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Ρ QNX4 Π½Π° QNX/Neutrino
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Ρ QNX4 Π½Π° QNX/Neutrino
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ QSSL, QNX4, ΠΈ ΡΡΠ°Π²Π½ΠΈΠΌ Π΅Π΅ Ρ QNX/Neutrino. ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ QNX4 ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ.
β’ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π² QNX/Neutrino?
β’ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π² QNX/Neutrino?
Π° ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ (ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±Π΅ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ.
Π‘Ρ ΠΎΠ΄ΡΡΠ²Π°
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ ΡΠΎ ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡ ΡΡΠΈΡ Π΄Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ:
β’ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ;
β’ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΡΠ΅ΡΠΈ;
β’ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ;
β’ ΠΌΠΈΠΊΡΠΎΡΠ΄Π΅ΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°;
β’ Π·Π°ΡΠΈΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²;
β’ POSIX-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ;
β’ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Β«Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Β»;
β’ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Ρ ΠΎΡΡ ΡΠ°ΡΡΡ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ Π² ΡΡΠΈΡ Π΄Π²ΡΡ ΠΠ‘, Π² ΡΠ΅Π»ΠΎΠΌ QNX/Neutrino ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ POSIX Π² QNX/Neutrino Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π² QNX4, β ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΡ ΠΎΠ΄Π° QNX4 Π±ΡΠ»ΠΈ Π΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π Ρ ΠΎΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ QNX/Neutrino Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»Π°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ°Ρ ΠΈΡ ΡΠ°ΡΡΡ, ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΡΠ΅. ΠΡΠ° Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΠΈΠ³ΡΠ° Π² Π΄ΠΎΠ³ΠΎΠ½ΡΠ»ΠΊΠΈ.
Π£Π»ΡΡΡΠ΅Π½ΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ, ΡΡΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΠ‘, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΎΠ²Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° QNX/Neutrino ΠΏΠ΅ΡΠ΅Π΄ QNX4:
β’ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² POSIX;
β’ Π»ΡΡΡΠ΅ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ;
β’ ΡΠ΄ΡΠΎ Π»ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ;
β’ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ;
β’ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°;
β’ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, ΠΊΡΠΎΠΌΠ΅ x86, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ MIPS ΠΈ PPC) (Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΆΠ΅ ΠΈ ARM, StrongARM ΠΈ SuperH-4 β ΠΏΡΠΈΠΌ. ΡΠ΅Π΄.),
β’ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ SMP;
β’ Π»ΡΡΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π°.
ΠΡΠΈ ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ Β«Π²Π½Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Π΄Π»Ρ Π½ΠΈΡ Π² QNX4 Π½Π΅Ρ, Π° Π·Π½Π°ΡΠΈΡ, Π½Π΅Ρ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ POSIX Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»Π°ΡΡ Π² QNX4), Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π² ΠΠ‘ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π‘Π½Π°ΡΠ°Π»Π° Ρ Π²ΠΊΡΠ°ΡΡΠ΅ ΡΠΏΠΎΠΌΡΠ½Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠ΅ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² QNX/Neutrino (ΠΈΠ»ΠΈ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΎΠ±Π΅ΠΈΡ ΠΠ‘).
ΠΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡΠ QNX/Neutrino ΠΊΠΎΡΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ. Π ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ QNX4 Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ QNX/Neutrino, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ ΠΊΠ°ΠΊ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠ°Ρ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ΅ΠΌΠΈΠΈ, QNX4 ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ QNX/Neutrino, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ, ΡΠ΅ΠΌ ΡΠ°Π½Π΅Π΅. ΠΠ°ΠΊ Π±Ρ ΡΠ°ΠΌ Π½ΠΈ Π±ΡΠ»ΠΎ, ΠΏΠΎ ΡΠ°ΡΡΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΡΡΠΈ QNX/Neutrino ΠΈ QNX4 ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ Π΄Π΅Π½Ρ ΠΈ Π½ΠΎΡΡ. QNX4 Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ ΠΊΠ°ΠΊ:
β’ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΠ΄ΡΠ° (kernel callouts) (ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΠΉΠΌΠ΅Ρ);
β’ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°;
β’ ΠΎΠ±ΡΠ°Π·Π½Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°.
Π° Π²ΠΎΡ Π² QNX/Neutrino Π²ΡΠ΅ ΡΡΠΎ Π΅ΡΡΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ QNX/Neutrino ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΠΊΠ½ΠΈΠ³Π΅ Β«ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΒ», Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈΠ QNX4 Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ tfork(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Β«ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡΒ», ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡ Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠΎ ΠΆΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΡΠΎ ΠΈ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊ Β«ΠΏΠΎΡΠΎΠΊΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌΡΒ» Π²ΠΈΠ΄Ρ Π΄Π°Π΅Ρ ΠΈΠ»Π»ΡΠ·ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. Π Ρ ΠΎΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ QSSL ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄Π»Ρ QNX4, ΡΠ°ΠΌΠΎ ΡΠ΄ΡΠΎ ΠΏΠΎΡΠΎΠΊΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ.
Π QNX/Neutrino Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ POSIX-ΠΌΠΎΠ΄Π΅Π»Ρ Β«ΡthreadΒ». ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΌ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ (ΠΈ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅) Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΠΏΠ° pthread_create(), pthread_mutex_lock(), ΠΈ Ρ.ΠΏ.
ΠΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈΠΡΠΈ ΡΠΎΠΌ ΡΡΠΎ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π° ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ (Π½Π΅ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ SEND/RECEIVE/REPLY, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ).
Π QNX4 ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π»ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π§ΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΉΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°-Π°Π΄ΡΠ΅ΡΠ°ΡΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Send(). Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠ³ ΠΏΡΠΈΠ½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² QNX4, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» Π²ΡΠ·Π²Π°ΡΡ Receive(). ΠΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΠΎ Π΅Π³ΠΎ Π΄ΠΎ ΠΏΡΠΈΠ±ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°Π» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Reply().
Π QNX/Neutrino ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΡΡΠΎΠ΅Π½ ΡΠ°ΠΊ ΠΆΠ΅, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΉ. Π§ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ°ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ. Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠ²Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. Π ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ½ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°Π½Π°Π».
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠ°Ρ Π² QNX4 ΡΡΠ½ΠΊΡΠΈΡ Creceive(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ² Receive(), Π² QNX/Neutrino ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ. ΠΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΎΠ΄ΠΎΠ±ΡΡΠ΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ Β«ΠΎΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅Β» ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ; Π²ΠΏΡΠΎΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°ΡΡΠ°ΠΈΠ²Π°Π΅ΡΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° MsgReceive(), ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π³Π»Π°Π²Ρ Β«Π§Π°ΡΡ, ΡΠ°ΠΉΠΌΠ΅ΡΡ ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΒ», ΡΠ°Π·Π΄Π΅Π» Β«Π’Π°ΠΉΠΌ-Π°ΡΡΡ ΡΠ΄ΡΠ°Β». ΠΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡ:
TimerTimeout(CLOCK_REALTIME, _NTO_TIMEOUT_RECEIVE,