posix_madvise(3) - wariua/manpages-ko GitHub Wiki
posix_madvise - ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ํจํด์ ๋ํ ์กฐ์ธ ์ฃผ๊ธฐ
#include <sys/mman.h>
int posix_madvise(void *addr, size_t len, int advice);
glibc ๊ธฐ๋ฅ ํ์ธ ๋งคํฌ๋ก ์๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):
-
posix_madvise()
: _POSIX_C_SOURCE >= 200112L
์์ฉ์์ posix_madvise()
ํจ์๋ฅผ ์ฌ์ฉํด addr
์์ ์์ํด len
๋ฐ์ดํธ๋งํผ ์ด์ด์ง๋ ์ฃผ์ ๋ฒ์ ๋ด ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ฌ์ฉ ํจํด์ ๋ํด ์์คํ
์๊ฒ ์กฐ์ธํ ์ ์๋ค. ์์คํ
์์ ์์ ๋ก์ด ๊ทธ ์กฐ์ธ์ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ (๋๋ ์กฐ์ธ์ ์์ ํ ๋ฌด์ํ ์) ์๋, posix_madvise()
ํธ์ถ์ด ์ง์ ๋ฒ์ ๋ด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๋์ ๊ฒฐ๊ณผ์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
advice
์ธ์๋ ๋ค์ ์ค ํ๋์ด๋ค.
POSIX_MADV_NORMAL
- ์ง์ ํ ์ฃผ์ ๋ฒ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ํจํด์ ๊ดํด ์์ฉ์์ ํด ์ค ํน๋ณํ ์กฐ์ธ์ด ์๋ค. ๊ธฐ๋ณธ ๋์ ๋ฐฉ์์ด๋ค.
POSIX_MADV_SEQUENTIAL
- ์์ฉ์์ ์ง์ ํ ์ฃผ์ ๋ฒ์์ ์์ฐจ์ ์ผ๋ก, ๋ฎ์ ์ฃผ์๋ถํฐ ๋์ ์ฃผ์๋ก ์ ๊ทผํ ์์ ์ด๋ค.
POSIX_MADV_RANDOM
- ์์ฉ์์ ์ง์ ํ ์ฃผ์ ๋ฒ์์ ์์ ์์๋ก ์ ๊ทผํ ์์ ์ด๋ค. ๋ฐ๋ผ์ ๋ฏธ๋ฆฌ ์ฝ๊ธฐ๊ฐ ํ์์๋ณด๋ค ์ธ๋ชจ๊ฐ ์์ ์ ์๋ค.
POSIX_MADV_WILLNEED
- ์์ฉ์์ ์ง์ ํ ์ฃผ์ ๋ฒ์์ ์กฐ๋ง๊ฐ ์ ๊ทผํ ์์ ์ด๋ค. ๋ฐ๋ผ์ ๋ฏธ๋ฆฌ ์ฝ๊ธฐ๊ฐ ์ด๋์ผ ์ ์๋ค.
POSIX_MADV_DONTNEED
- ์์ฉ์์ ์ง์ ํ ์ฃผ์ ๋ฒ์์ ๋น๋ถ๊ฐ์ ์ ๊ทผํ์ง ์์ ์์ ์ด๋ค.
์ฑ๊ณต ์ posix_madvise()
๋ 0์ ๋ฐํํ๋ค. ์คํจ ์ ์์ ์ค๋ฅ ๋ฒํธ๋ฅผ ๋ฐํํ๋ค.
EINVAL
-
addr
์ด ์์คํ ํ์ด์ง ํฌ๊ธฐ์ ๋ฐฐ์๊ฐ ์๋๊ฑฐ๋len
์ด ์์์ด๋ค. EINVAL
-
advice
๊ฐ ์ ํจํ์ง ์๋ค. ENOMEM
- ์ง์ ํ ๋ฒ์ ๋ด์ ์ฃผ์ ์ผ๋ถ ๋ด์ง ์ ์ฒด๊ฐ ํธ์ถ์ ์ฃผ์ ๊ณต๊ฐ ๋ฐ์ ์๋ค.
glibc ๋ฒ์ 2.2์์ posix_madvise()
์ง์์ด ์ฒ์ ๋ฑ์ฅํ๋ค.
POSIX.1-2001.
POSIX.1์์๋ len
์ด 0์ผ ๋ ๊ตฌํ์์ ์ค๋ฅ๋ฅผ ๋ด๋๋ ๊ฒ์ ํ์ฉํ๋ค. ๋ฆฌ๋
์ค์์๋ len
์ 0์ผ๋ก ์ง์ ํ๋ ๊ฒ์ด (์ฑ๊ณต์ ๋ฐํํ๋ no-op๋ก) ํ์ฉ๋๋ค.
glibc์์๋ madvise(2)๋ฅผ ์ด์ฉํด ์ด ํจ์๋ฅผ ๊ตฌํํ๋ค. ๊ทธ๋ฐ๋ฐ glibc 2.6๋ถํฐ POSIX_MADV_DONTNEED
๋ฅผ no-op๋ก ์ฒ๋ฆฌํ๋ค. ๋์ํ๋ madvise(2) ๊ฐ MADV_DONTNEED
์ ๋์์ด ํ๊ดด์ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
2017-09-15