int io_space(resmgr_context_t *ctp, io_space_t *msg,
RESMGR_OCB_T *ocb)
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Π€ΡΠ½ΠΊΡΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: ΠΠ΅Ρ
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: iofunc_space_verify()
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ: chsize(), fcntl(), ftruncate(), ltrunc()
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ _IO_SPACE
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ :
struct _io_space {
uint16_t type;
uint16_t combine_len;
uint16_t subtype;
short whence;
uint64_t start;
uint64_t len;
};
typedef union {
struct _io_space i;
uint64_t o;
} io_space_t;
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅: ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ subtype (Β«ΠΏΠΎΠ΄ΡΠΈΠΏΒ») ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΡΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ (Π΅ΡΠ»ΠΈ ΡΠ°Π²Π΅Π½ F_ALLOCSP) ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ (Π΅ΡΠ»ΠΈ ΡΠ°Π²Π΅Π½ F_FREESP). ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² whence (Β«ΠΎΡΠΊΡΠ΄Π°Β») ΠΈ start (Β«Π½Π°ΡΠ°Π»ΠΎΒ») ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π³Π΄Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΡΠ°ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅/ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅; ΡΠ»Π΅ΠΌΠ΅Π½Ρ len ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ: Π§ΠΈΡΠ»ΠΎ Π±Π°ΠΉΡΠΎΠ² (ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΡΡΡΡΠ°), ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° _RESMGR_STATUS.
io_stat()int io_stat(resmgr_context_t *ctp, io_stat_t *msg,
RESMGR_OCB_T *ocb)
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Π€ΡΠ½ΠΊΡΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: iofunc_stat_default()
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: iofunc_stat()
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ: stat(), lstat(), fstat()
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ: _IO_STAT
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ :
struct _io_stat {
uint16_t type;
uint16_t combine_len;
uint32_t zero;
};
typedef union (
struct _io_stat i;
struct stat o;
} io_stat_t;
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅: ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΠ΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΡΡΡΡΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ OCB. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° stat(). ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ iofunc_stat() Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ struct stat, Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠ° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ dev/rdev ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π° (ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² stat() Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΡΠ΅ΡΠΈ). ΠΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° Π½Π΅Ρ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ: ΠΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° _RESMGR_STATUS, ΠΈ ΡΡΡΡΠΊΡΡΡΡ struct stat β Π² ΠΎΡΠ²Π΅ΡΠ½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ.
io_sync()int io_sync(resmgr_context_t *ctp, io_sync_t *msg,
RESMGR_OCB_T *ocb)
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Π€ΡΠ½ΠΊΡΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: iofunc_sync_default()
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: iofunc_sync_verify(), iofunc_sync()
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ: fsync(), fdatasync()
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ: _IO_SYNC
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ :
struct _io_sync {
uint16_t type;
uint16_t Ρombine_len;
uint32_t flag;
};
typedef union {
struct _io_sync i;
} io_sync_t;
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅: ΠΡΠΎ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ flush (ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½ΠΎΡΠΈΡΠ΅Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ Π±ΡΡΠ΅ΡΠ°ΠΌΠΈ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΡΠΊΠ° Ρ Π΄ΠΈΡΠΊΠΎΠ²ΡΠΌ ΠΊΡΡΠ΅ΠΌ β ΠΏΡΠΈΠΌ. ΡΠ΅Π΄.). ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ iofunc_sync() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΠ»Π΅ flag Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ:
β’ 0 β Π½Π΅ Π΄Π΅Π»Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ;
β’ O_SYNC β Π²ΡΠ΅, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π°, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ (inodes), ΠΈ Ρ.Π΄.) Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° Π½ΠΎΡΠΈΡΠ΅Π»Π΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΌ Ρ Π½Π΅Π³ΠΎ.
β’ O_DSYNC β ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° Π½ΠΎΡΠΈΡΠ΅Π»Π΅ ΠΈ Π±ΡΡΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Π°.
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ³Π»Π°ΡΠΈΠ»ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ sync, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ»Π°Π³ Π² Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΡΠΊΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ: ΠΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° _RESMGR_STATUS.
io_umount()int io_umount(resmgr_context_t *ctp, void *msg,
RESMGR_OCB_T *ocb)
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π° QSSL Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ iofunc_func_init(), ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π°.
io_unblock() [ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ]int io_unblock(resmgr_context_t *ctp, io_pulse_t *msg,
RESMGR_HANDLE_T *handle, void* reserved)
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Π€ΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ)
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: ΠΠ΅Ρ
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: iofunc_unblock()
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ: ΠΠ΅Ρ (Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π° ΠΈΠ»ΠΈ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ°)
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ: ΠΠ΅Ρ (ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ)
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ : (ΡΠΌ. Π²Π°ΡΠΈΠ°Π½Ρ io_unblock() Π΄Π»Ρ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, Π½ΠΈΠΆΠ΅)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅: ΠΡΠΎ Π²Π΅ΡΡΠΈΡ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π² ΡΠΎΡΠΌΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΠΈΠΌΠΏΡΠ»ΡΡ ΠΎΡ ΡΠ΄ΡΠ°, Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π‘ΠΌ. Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π½ΠΈΠΆΠ΅.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ: ΠΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° _RESMGR_STATUS.
Π‘ΠΌ. ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π³Π»Π°Π²Π΅ Β«ΠΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈΒ», ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ Β«ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° _NTO_MI_UNBLOCK_REQΒ».
io_unblock() [Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄]int io_unblock(resmgr_context_t *ctp, io_pulse_t *msg,
RESMGR_OCB_T *ocb)
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Π€ΡΠ½ΠΊΡΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° (ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ)
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: iofunc_unblock_default()
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: iofunc_unblock()
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ: ΠΠ΅Ρ (ΡΠ΅Π°ΠΊΡΠΈΡ ΡΠ΄ΡΠ° Π½Π° ΡΠΈΠ³Π½Π°Π» ΠΈΠ»ΠΈ ΡΠ°ΠΉΠΌ-Π°ΡΡ)
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ: ΠΠ΅Ρ (ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ)
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ : ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½Π° ΡΡΡΡΠΊΡΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅: ΠΡΠΎ Π²Π΅ΡΡΠΈΡ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΠΌΠΏΡΠ»ΡΡΠ° ΠΎΡ ΡΠ΄ΡΠ°, Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅Π³ΠΎ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ io_unblock() Π΄Π»Ρ ΡΠ°Π·Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ (ΡΠΌ. ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ).
ΠΠ±ΡΠΈΠΌ Π΄Π»Ρ ΠΎΠ±Π΅ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΎΠ±ΡΠ·Π°Π½ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. (ΠΡ ΡΡΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π² Π³Π»Π°Π²Π΅ Β«ΠΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈΒ», ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠ»Π°Π³Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ChannelCreate() β Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎ ΡΠ»Π°Π³Π΅ _NTO_CHF_UNBLOCK).
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ: ΠΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° _RESMGR_STATUS.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° _NTO_MI_UNBLOCK_REQΒ» Π² Π³Π»Π°Π²Π΅ Β«ΠΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈΒ».
io_unlink()int io_unlink(resmgr_context_t *ctp, io_unlink_t *msg,
RESMGR_HANDLE_T* handle, void* reserved)
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Π€ΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: ΠΠ΅Ρ
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: iofunc_unlink()
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ: unlink()
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: _IO_CONNECT, ΠΏΠΎΠ΄ΡΠΈΠΏ _IO_CONNECT_UNLINK
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ :
struct _io_connect {
// ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ (ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅)
uint16_t path_len;
uint8_t extra_type;
uint16_t extra_len;
char path[1];
};
struct _io_connect_link_reply {
uint32_t reserved1[2];
uint8_t eflag;
uint8_t reserved2[3];