io_setup(2) - wariua/manpages-ko GitHub Wiki
io_setup - λΉλκΈ° I/O λ¬Έλ§₯ λ§λ€κΈ°
#include <linux/aio_abi.h> /* νμν νμ
μ μ */
int io_setup(unsigned nr_events, aio_context_t *ctx_idp);
μ£Όμ: μ΄ μμ€ν νΈμΆμ λν glibc λνΌκ° μλ€. NOTES μ°Έκ³ .
io_setup()
μμ€ν
νΈμΆμ nr_events
κ° λμμ λμμ μ²λ¦¬νκΈ°μ μ ν©ν λΉλκΈ° I/O λ¬Έλ§₯μ μμ±νλ€. ctx_idp
μΈμκ° μ΄λ―Έ μ‘΄μ¬νλ AIO λ¬Έλ§₯μ κ°λ¦¬μΌμ μ λλ©° νΈμΆ μ μ λ¬Έλ§₯μ 0μΌλ‘ μ΄κΈ°ν ν΄μΌ νλ€. AIO λ¬Έλ§₯μ μ±κ³΅μ μΌλ‘ μμ±νμ λ *ctx_idp
μ μ νΈλ€μ΄ λ€μ΄κ°λ€.
μ±κ³΅ μ io_setup()
μ 0μ λ°ννλ€. μ€ν¨ λ°νμ λν΄μ NOTESλ₯Ό 보λΌ.
EAGAIN
- μ§μ ν
nr_events
κ°/proc/sys/fs/aio-max-nr
μ κ·μ λ μ¬μ©μμ κ°μ© μ΄λ²€νΈ μ νμ μ΄κ³Όνλ€. EFAULT
-
ctx_idp
μ μ ν¨νμ§ μμ ν¬μΈν°λ₯Ό μ λ¬νλ€. EINVAL
-
ctx_idp
κ° μ΄κΈ°ν λμ§ μμλ€. μ§μ νnr_events
κ° λ΄λΆ μ νμ μ΄κ³Όνλ€.nr_events
κ° 0λ³΄λ€ μ»€μΌ νλ€. ENOMEM
- μ¬μ© κ°λ₯ν 컀λ μμμ΄ μΆ©λΆμΉ μλ€.
ENOSYS
- μ΄ μν€ν
μ²μ
io_setup()
μ΄ κ΅¬νλΌ μμ§ μλ€.
리λ μ€ 2.5μμ λΉλκΈ° I/O μμ€ν νΈμΆλ€μ΄ μ²μ λ±μ₯νλ€.
io_setup()
μ 리λ
μ€ μ μ©μ΄λ―λ‘ μ΄μμ±μ΄ μμ΄μΌ νλ νλ‘κ·Έλ¨μμλ μ¬μ©νμ§ λ§μμΌ νλ€.
glibcμμ μ΄ μμ€ν
νΈμΆμ λνΌλ₯Ό μ 곡νμ§ μλλ€. syscall(2)μ μ΄μ©ν΄ νΈμΆν μλ μλ€. νμ§λ§ μλ§ κ·Έλ³΄λ€λ libaio
μμ μ 곡νλ io_setup()
λνΌ ν¨μλ₯Ό μ°κ³ μΆμ κ²μ΄λ€.
μ°Έκ³ λ‘ libaio
λνΌ ν¨μμμλ ctx_idp
μΈμμ λ€λ₯Έ νμ
(io_context_t *
)μ μ΄λ€. λν libaio
λνΌμμλ μΌλ°μ μΈ C λΌμ΄λΈλ¬λ¦¬ μ€λ₯ νμ κ΄νμ λ°λ₯΄μ§ μλλ€. μ¦ μ€λ₯ μμ μμ μ€λ₯ λ²νΈλ₯Ό (ERRORSμ λμ΄λ κ°λ€ μ€ νλμ μμ κ°μ) λ°ννλ€. syscall(2)μ ν΅ν΄ μμ€ν
νΈμΆμ λΆλ₯΄λ κ²½μ°μλ λ°ν κ°μ΄ μΌλ°μ μΈ μ€λ₯ νμ κ΄νμ λ°λ₯Έλ€. μ¦ -1μ΄κ³ errno
μ μ€λ₯λ₯Ό λνλ΄λ (μμ) κ°μ΄ μ€μ λλ€.
io_cancel(2), io_destroy(2), io_getevents(2), io_submit(2), aio(7)
2017-09-15