msync(2) - wariua/manpages-ko GitHub Wiki
msync - νμΌμ λ©λͺ¨λ¦¬ λ§΅κ³Ό λκΈ°ν νκΈ°
#include <sys/mman.h>
int msync(void *addr, size_t length, int flags);msync()λ mmap(2)μΌλ‘ λ©λͺ¨λ¦¬λ‘ λ§΅ ν νμΌμ μ½μ΄ λ΄ μ¬λ³Έμ μ΄λ€μ§ λ³κ²½ λ΄μ©μ νμΌ μμ€ν
μΌλ‘ λ΄λ¦°λ€. μ΄ νΈμΆμ μ°μ§ μμΌλ©΄ munmap(2)μ νΈμΆνκΈ° μ μλ λ³κ²½ λ΄μ©μ΄ κΈ°λ‘λλ€λ 보μ₯μ΄ μλ€. λ μ ννκ²λ addrμμ μμνκ³ κΈΈμ΄κ° lengthμΈ λ©λͺ¨λ¦¬ μμμ λμνλ νμΌ λΆλΆμ κ°±μ νλ€.
flags μΈμμλ MS_ASYNCμ MS_SYNC μ€ λ± νλλ₯Ό μ§μ ν΄μΌ νλ©°, μ νμ μΌλ‘ MS_INVALIDATE λΉνΈκΉμ§ ν¬ν¨μν¬ μ μλ€. μ΄ λΉνΈλ€μ μλ―Έλ λ€μκ³Ό κ°λ€.
MS_ASYNC- κ°±μ μ μμ½νκ² νκ³ νΈμΆμ μ¦μ λ°ννλ€.
MS_SYNC- κ°±μ μ μμ²νκ³ μλ£λκΈ°λ₯Ό κΈ°λ€λ¦°λ€.
MS_INVALIDATE- κ°μ νμΌμ λ€λ₯Έ λ§€νλ€μ 무ν¨ννλλ‘ μμ²νλ€. (κ·Έλμ λ°©κΈ μ¨λ£μ μ΅μ κ°λ€λ‘ κ°±μ λ μ μκ² νλ€.)
μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errnoλ₯Ό μ μ ν μ€μ νλ€.
EBUSY-
flagsμMS_INVALIDATEλ₯Ό μ§μ νλλ° μ§μ ν μ£Όμ λ²μμ λ©λͺ¨λ¦¬ μ κΈμ΄ μ‘΄μ¬νλ€. EINVAL-
addrμ΄PAGESIZEμ λ°°μκ° μλλ€.flagsμMS_ASYNC | MS_INVALIDATE | MS_SYNCμΈμ λΉνΈκ° μ€μ λΌ μλ€.flagsμMS_SYNCμMS_ASYNCκ° ν¨κ» μ€μ λΌ μλ€. ENOMEM- μ§μ ν λ©λͺ¨λ¦¬κ° (λλ κ·Έ μΌλΆκ°) λ§΅ λμ΄ μμ§ μλ€.
POSIX.1-2001, POSIX.1-2008.
리λ
μ€ 1.3.21μμ μ΄ νΈμΆμ΄ λμ
νμ λλ ENOMEM λμ EFAULTλ₯Ό μΌλ€. 리λ
μ€ 2.4.19μμ POSIX κ°μΈ ENOMEMμΌλ‘ λ°λμλ€.
msync()κ° μ¬μ© κ°λ₯ν POSIX μμ€ν
μλ <unistd.h>μ _POSIX_MAPPED_FILESμ _POSIX_SYNCHRONIZED_IOκ° 0λ³΄λ€ ν° κ°μΌλ‘ μ μλμ΄ μλ€. (sysconf(3)λ μ°Έκ³ .)
POSIXμ λ°λ₯΄λ©΄ flagsμ MS_SYNCμ MS_ASYNC μ€ νλλ₯Ό μ§μ ν΄μΌ νλ©° μ€μ λ‘ μΌλΆ μμ€ν
μμλ κ·Έ νλκ·Έλ€ μ€ νλλ₯Ό ν¬ν¨μν€μ§ μμΌλ©΄ msync()κ° μ€ν¨νκ² λλ€. νμ§λ§ 리λ
μ€μμλ λ μ€ μ΄λ μͺ½λ μ§μ νμ§ μμ msync() νΈμΆμ νμ©νλ©°, κ·Έ (νμ¬) μλ―Έλ MS_ASYNCλ₯Ό μ§μ ν κ²κ³Ό λλ±νλ€. (리λ
μ€ 2.6.19λΆν°λ 컀λμμ λ³κ²½ νμ΄μ§λ€μ μ¬λ°λ‘ μΆμ ν΄μ νμνλ©΄ μ μ₯μλ‘ λ΄λ € μ£ΌκΈ° λλ¬Έμ MS_ASYNCκ° μ€μ λ‘λ no-opμ΄λ€.) κ·Έλ° λ¦¬λ
μ€μ λμ λ°©μμλ λΆκ΅¬νκ³ , μ΄μ κ°λ₯νκ³ λ―Έλλ₯Ό λλΉνλ μμ©μμλ flagsμ MS_SYNCμ MS_ASYNC μ€ νλλ₯Ό κΌ μ§μ ν΄μΌ ν κ²μ΄λ€.
B.O. Gallmeister, POSIX.4, O.Reilly, 128-129μͺ½ λ° 389-391μͺ½.
2017-09-15