linux pages

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

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.