mincore(2) - wariua/manpages-ko GitHub Wiki
mincore - νμ΄μ§κ° λ©λͺ¨λ¦¬μ μμ£Όνκ³ μλμ§ νμΈνκΈ°
#include <unistd.h>
#include <sys/mman.h>
int mincore(void *addr, size_t length, unsigned char *vec);
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
mincore()
: -
- glibc 2.19λΆν°:
_DEFAULT_SOURCE
- glibc 2.19 λ° μ΄μ :
_BSD_SOURCE || _SVID_SOURCE
mincore()
λ νΈμΆ νλ‘μΈμ€ κ°μ λ©λͺ¨λ¦¬μ νμ΄μ§λ€μ΄ μ½μ΄(RAM)μ μμ£Όνκ³ μμ΄μ μ°Έμ‘° μ λμ€ν¬ μ κ·Ό(νμ΄μ§ ν΄νΈ)μ μ λ°νμ§ μλμ§ μ¬λΆλ₯Ό λνλ΄λ 벑ν°λ₯Ό λ°ννλ€. μ£Όμ addr
μμ μμν΄μ length
λ°μ΄νΈλ§νΌ μ΄μ΄μ§λ νμ΄μ§λ€μ λν μμ£Ό μ 보λ₯Ό 컀λμ΄ λ°ννλ€.
addr
μΈμλ μμ€ν
νμ΄μ§ ν¬κΈ°μ λ°°μμ¬μΌ νλ€. length
μΈμλ νμ΄μ§ ν¬κΈ°μ λ°°μμΌ νμκ° μλ€. νμ§λ§ νμ΄μ§ λ¨μλ‘ μμ£Ό μ 보λ₯Ό λ°ννκΈ° λλ¬Έμ μ€μ§μ μΌλ‘ length
κ° νμ΄μ§ ν¬κΈ°μ λ€μ λ°°μλ‘ μ¬λ¦Ό λλ€. sysconf(_SC_PAGESIZE)
λ‘ νμ΄μ§ ν¬κΈ°(PAGE_SIZE
)λ₯Ό μ»μ μ μλ€.
vec
μΈμλ μ μ΄λ (length+PAGE_SIZE-1) / PAGE_SIZE
λ°μ΄νΈλ₯Ό λ΄μ λ°°μ΄μ λν ν¬μΈν°μ¬μΌ νλ€. λ°ν μμ, νμ΄μ§κ° νμ¬ λ©λͺ¨λ¦¬μ μμ£Όνκ³ μμΌλ©΄ λμνλ λ°μ΄νΈμ μ΅νμ λΉνΈκ° μ€μ λκ³ , μλλ©΄ ν΄μ λλ€. (κ° λ°μ΄νΈμ λ€λ₯Έ λΉνΈλ€μ μ€μ μ κ·μ λμ΄ μμ§ μλ€. κ·Έ λΉνΈλ€μ ν₯ν μ©λλ₯Ό μν΄ μλΉλμ΄ μλ€.) λΉμ°νμ§λ§ vec
μ λ°νλ μ 보λ μ€λ
μ·μΌ λΏμ΄λ€. λ©λͺ¨λ¦¬μ κ³ μ λμ΄ μμ§ μμ νμ΄μ§λ μΈμ λ λ€μ΄μ€κ³ λκ° μ μμΌλ―λ‘ νΈμΆ λ°ν μμ μ vec
μ λ΄μ©μ΄ μ΄λ―Έ λ‘μ κ²μΌ μλ μλ€.
μ±κ³΅ μ mincore()
λ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EAGAIN
- 컀λμ μΌμμ μΌλ‘ μμμ΄ λΆμ‘±νλ€.
EFAULT
-
vec
μ΄ μ ν¨νμ§ μμ μ£Όμλ₯Ό κ°λ¦¬ν€κ³ μλ€. EINVAL
-
addr
μ΄ νμ΄μ§ ν¬κΈ°μ λ°°μκ° μλλ€. ENOMEM
-
length
κ°(TASK_SIZE - addr)
λ³΄λ€ ν¬λ€. (length
μ μμ κ°μ μ§μ νλ©΄ κ·Έ κ°μ ν° λΆνΈ μλ μ μλ‘ ν΄μνκΈ° λλ¬Έμ μ΄λ κ² λ μ μλ€.) 리λ μ€ 2.6.11 λ° μ΄μ μμλ μ΄ κ²½μ°μEINVAL
μ€λ₯λ₯Ό λ°ννλ€. ENOMEM
-
addr
μμaddr + length
κΉμ§μ λ§΅ μ λ λ©λͺ¨λ¦¬κ° ν¬ν¨λμ΄ μλ€.
리λ μ€ 2.3.99pre1 λ° glibc 2.2λΆν° μ¬μ© κ°λ₯νλ€.
mincore()
λ POSIX.1μ λͺ
μΈλμ΄ μμ§ μμΌλ©°, λͺ¨λ μ λμ€ κ΅¬νμμ μ¬μ© κ°λ₯νμ§λ μλ€.
컀λ 2.6.21 μ μμ MAP_PRIVATE
λ§€νμ΄λ (remap_file_pages(2)λ‘ μ립ν) λΉμ ν λ§€νμ λν΄ mincore()
κ° μ¬λ°λ₯Έ μ 보λ₯Ό λ°ννμ§ μμλ€.
fincore(1)
, madvise(2), mlock(2), mmap(2), posix_fadvise(2), posix_madvise(3)
2017-09-15