Pages
연속된 메모리를 할당을 테스트 했다. dmes로 보면 어느 정도 출력하다 끊어 버린다. 마지막 데이터를 확인 했다.
#include<linux/kernel.h> #include<linux/init.h> #include<linux/module.h> #include <linux/slab.h> #include <linux/mempool.h> #define PAGES_ORDER 2 char* data; static int __init hello_world_init(void) /* Constructor */ { printk(KERN_INFO "hello, pages\n"); /* memory 할당*/ data = (char*)__get_free_pages(GFP_KERNEL, PAGES_ORDER); if (!data){ printk("no pages allocated\n"); return ENOMEM; } /* 0으로 초기화*/ memset(data, 'c', PAGE_SIZE << PAGES_ORDER); printk(KERN_INFO "data: pos:%p, size: %0xd, %d\n", data, (int)(PAGE_SIZE << PAGES_ORDER), data[(PAGE_SIZE << PAGES_ORDER)-1]); return 0; } void __exit hello_world_exit(void) { printk(KERN_INFO "good bye, pages\n"); free_pages((unsigned long)data, PAGES_ORDER); } module_init(hello_world_init); module_exit(hello_world_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("now0930"); MODULE_DESCRIPTION("pages test");
pi@raspberrypi:~/rasp/advancedMemory/pages $ dmesg | tail -10 [ 1104.594762] hello, pages [ 1104.594802] data: pos:c32289cc, size: 4000d, 99 [ 1122.403587] good bye, pages