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