[질문] vmalloc() 함수 사용은 어떻게 하나요?
글쓴이: cs010101 / 작성시간: 화, 2007/04/17 - 3:45오전
안녕하세요.
링크드 리스트를 만드는데 vmalloc을 사용할려고 합니다.
예를들어,
struct __data{
int a;
struct __data *next;
}data;
data *head;
data *tail;
void init_list(void)
{
head = (node*)malloc(sizeof(node));
tail = (node*)malloc(sizeof(node));
head->next=tail;
tail->next=tail;
}
이럴때,
head = (node*)malloc(sizeof(node));
tail = (node*)malloc(sizeof(node));
이것을, vmalloc 함수를 사용해서 표현하고 싶습니다.
어떻게 하면 되나요?
감사합니다.
Forums:
말씀하신 그대로,
말씀하신 그대로, malloc() 대신 vmalloc() 사용하면 되고요.
리스트는 include/linux/list.h 사용하세요.
안전하고 안락합니다.
vmalloc로 할당한
vmalloc로 할당한 메모리는 swap-out 될수 있는걸로 알고있습니다.
작은 크기의 자료구조는 kmalloc로 할당하는게 좋을 듯 합니다... vmalloc을 사용할 이유가 없어보이는데...
kmalloc() 에 대한
kmalloc() 에 대한 편견을 버리세요.
구현상 크기에 제한이 붙었다 뿐이지, 큰 것은 vmalloc() 작은 것은 kmalloc() 식의 구분은 없습니다.
아시는대로, kmalloc()의 장점은 zone 을 선택할 수 있다는 겁니다.
어쨌거나, vmalloc() 을 사용할 필요가 없다면 kmalloc() 을 사용할 필요는 더 없습니다.
질문자가 게제한 소스만 보고 판단하긴 섣부르군요.
댓글 달기