이광우
1.3. kmemleak ¶
1.4. mmap ¶
static struct cachepolicy cache_policies[] __initdata = {
{
.policy = "uncached",
.cr_mask = CR_W|CR_C,
.pmd = PMD_SECT_UNCACHED,
.pte = 0,
}, {
.policy = "buffered",
.cr_mask = CR_C,
.pmd = PMD_SECT_BUFFERED,
.pte = PTE_BUFFERABLE,
}, {
.policy = "writethrough",
.cr_mask = 0,
.pmd = PMD_SECT_WT,
.pte = PTE_CACHEABLE,
}, {
.policy = "writeback",
.cr_mask = 0,
.pmd = PMD_SECT_WB,
.pte = PTE_BUFFERABLE|PTE_CACHEABLE,
}, {
.policy = "writealloc",
.cr_mask = 0,
.pmd = PMD_SECT_WBWA,
.pte = PTE_BUFFERABLE|PTE_CACHEABLE,
}
};
dma_alloc_coherent()와 dma_alloc_writecombine() 차이는 내부적으로 __dma_alloc()을 호출할 때 마지막 인자인 pgprot_t 타입의 prot에 넘기는 값이 다르다. dma_alloc_coherent()는 pgprot_noncached() 매크로를 사용하고, dma_alloc_writecombine()은 pgprot_writecombine() 매크로를 사용한다.
#define pgprot_noncached(prot) __pgprot(pgprot_val(prot) & ~(L_PTE_CACHEABLE | L_PTE_BUFFERABLE)) #define pgprot_writecombine(prot) __pgprot(pgprot_val(prot) & ~L_PTE_CACHEABLE) 즉, cache를 사용하지 않도록 설정하는 것은 같지만, 내부적으로 cache와 main memory 사이의 write buffer의 사용 여부를 결정하는 것으로 생각된다.
dma_mmap_coherent()와 dma_mmap_writecombine()도 같은 맥락으로 보인다.
dma_free_writecombine()은 다른 함수들과는 다르게 dma_free_coherent()로 매크로를 사용해 정의되어 있다.
7.1. Perl의 암호 같은 기본 변수 ¶
7.2. Pattern ¶
|
Courage is your greatest present need. |











![[http]](/imgs/http.png)