Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² QNX/Neutrino 2. Руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² QNX Realtime PlatformΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 66

Автор Π ΠΎΠ± ΠšΡ‘Ρ€Ρ‚Π΅Π½

РСально это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для клиСнтских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ mkfifo() ΠΈ mkdir().

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ макроса _RESMGR_STATUS.

io_mmap()

int io_mmap(resmgr_context_t *ctp, io_mmap_t *msg,

 RESMGR_OCB_T *ocb)

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ: Ѐункция Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: iofunc_mmap_default()

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: iofunc_mmap()

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ функция: mmap(), munmap(), mmap_device_io(), mmap_device_memory()

БообщСния: _IO_MMAP

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…:

struct _io_mmap {

 uint16_t         type;

 uint16_t         combine_len;

 uint32_t         prot;

 uint64_t         offset;

 struct _msg_info info;

 uint32_t         zero[6];

};


struct _io_mmap_reply {

 uint32_t zero;

 uint32_t flags;

 uint64_t offset;

 int32_t  coid;

 int32_t  fd;

};


typedef union {

struct _io_mmap       i;

struct _io_mmap_reply o;

} io_mmap_t;

ОписаниС: ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ администратору процСссов ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ вашСго администратора рСсурсов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ mmap(). Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π΅ слСдуСт (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, прСдоставляСмый iofunc_func_init()), Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π΅ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ³ Π±Ρ‹ запросто Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ENOSYS, поэтому для Π½Π΅Π³ΠΎ эта опСрация Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла).

Π”Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ администратора рСсурсов ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ администратор процСссов

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ администратором процСссов являСтся созданиС OCB (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° функция iofunc_ocb_calloc(), Π½ΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ спроСктированного администратора рСсурсов это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… послСдствий.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ макроса _RESMGR_STATUS.

io_mount()

int io_mount(resmgr_context_t *ctp, io_mount_t *msg,

 RESMGR_HANDLE_T* handle, io_mount_extra_t* extra)

Данная функция Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π° QSSL для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ использования. Π’Π°ΠΌ слСдуСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ iofunc_func_init(), ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π°.

io_msg()

int io_msg(resmgr_context_t *ctp, io_msg_t *msg,

 RESMGR_OCB_T *ocb)

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ: Ѐункция Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: НСт

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: НСт

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ функция: НСт (создаСтся Β«Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΒ» ΠΈ пСрСдаСтся посрСдством MsgSend())

БообщСния: _IO_MSG

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…:

struct _io_msg {

 uint16_t type;

 uint16_t combine_len;

 uint16_t mgrid;

 uint16_t subtype;

};


typedef union {

 struct _io_msg i;

} io_msg_t;

ОписаниС: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ _IO_MSG являСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΉ, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ пСрСносимой Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠ΅ΠΉ Π½Π° Ρ‚Π΅ΠΌΡƒ ioctl() ΠΈ devctl(). ПолС mgrid ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ администратор β€” Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий ΠΏΠΎ запросам, Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ вашСго администратора. ПолС subtype фактичСски Π·Π°Π΄Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Π›ΡŽΠ±Ρ‹Π΅ нСявно ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π·Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ структурой. Π”Π°Π½Π½Ρ‹Π΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ сами ΠΏΠΎ сСбС; ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ возвращаСтся Ρ‡Π΅Ρ€Π΅Π· макрос _RESMGR_STATUS. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Β«ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ администратора» (manager ID) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² QSSL.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ макроса _RESMGR_STATUS.

io_notify()

int io_notify(resmgr_context_t *ctp, io_notify_t *msg,

 RESMGR_OCB_T *ocb)

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ: Ѐункция Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: НСт

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: iofunc_notify(), iofunc_notify_remove(), iofunc_notify_trigger()

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ функция: select(), ionotify()

БообщСния: _IO_NOTIFY

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…:

struct _io_notify {

 uint16_t        type;

 uint16_t        combine_len;

 int32_t         action;

 int32_t         flags;

 struct sigevent event;

};


struct _io_notify_reply {

 uint32_t zero;

 uint32_t flags;

};


typedef union {

 struct _io_notify       i;

 struct _io_notify_reply o;

} io_notify_t;

ОписаниС: Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° установку, опрос ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ action (дСйствиС) ΠΈ flags (Ρ„Π»Π°Π³ΠΈ) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ увСдомлСния ΠΈ условия; ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ event (событиС) являСтся структурой Ρ‚ΠΈΠΏΠ° struct sigevent, которая опрСдСляСт событиС увСдомлСния (Ссли ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ event ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ доставляСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ MsgDeliverEvent() ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ iofunc_notify_trigger().

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ макроса _RESMGR_STATUS; Ρ„Π»Π°Π³ΠΈ возвращаСтся ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹ΠΌ сообщСниСм.

io_open()

int io_open(resmgr_context_t *ctp, io_open_t *msg,

 RESMGR_HANDLE_T *handle, void *extra)

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ: Ѐункция установлСния соСдинСния

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: iofunc_open_default()

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: iofunc_open(), iofunc_ocb_attach()

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ функция: open(), fopen(), sopen() ΠΈ Π΄Ρ€.

БообщСния: _IO_CONNECT, ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹ _IO_CONNECT_COMBINE, _IO_CONNECT_COMBINE_CLOSE ΠΈ _IO_CONNECT_OPEN.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…:

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];

 uint32_t umask;

 uint16_t nentries;

 uint16_t path_len;

};


typedef union {

 struct _io_connect            connect;

 struct _io_connect_link_reply link_reply;

} io_open_t;

ОписаниС: Π­Ρ‚ΠΎ основная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² администратор рСсурсов. Она выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²Π° Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, привязываСт OCB ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ структурам Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (посрСдством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ resmgr_bind_ocb() ΠΈΠ»ΠΈ iofunc_ocb_attach()) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ errno. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ для Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ Π½Π΅ всС поля структур Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ макроса _IO_SET_CONNECT_RET.

io_openfd()

int io_openfd(resmgx_context_t *ctp, io_openfd_t *msg,

 RESMGR_OCB_T *ocb)

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ: Ѐункция Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: iofunc_openfd_default()

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: iofunc_openfd()

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ функция: openfd()

БообщСния: _IO_OPENFD

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…:

struct _io_openfd {

 uint16_t         type;

 uint16_t         combine_len;

 uint32_t         ioflag;

 uint16_t         sflag;

 uint16_t         reserved1;

 struct _msg_info info;

 uint32_t         reserved2;

 uint32_t         key;

};


typedef union {

 struct _io_openfd i;

} io_openfd_t;

ОписаниС: Данная функция Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° прСдоставляСмому ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ io_open() β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ вмСсто ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ пСрСдаСтся дСскриптор ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (Π² силу ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π²Π°ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ocb Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).