[질문] vmalloc() 함수 사용은 어떻게 하나요?

cs010101의 이미지

안녕하세요.
링크드 리스트를 만드는데 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 함수를 사용해서 표현하고 싶습니다.

어떻게 하면 되나요?

감사합니다.

bushi의 이미지

말씀하신 그대로, malloc() 대신 vmalloc() 사용하면 되고요.
리스트는 include/linux/list.h 사용하세요.
안전하고 안락합니다.

Hyun의 이미지

vmalloc로 할당한 메모리는 swap-out 될수 있는걸로 알고있습니다.
작은 크기의 자료구조는 kmalloc로 할당하는게 좋을 듯 합니다... vmalloc을 사용할 이유가 없어보이는데...

익명사용자의 이미지

kmalloc() 에 대한 편견을 버리세요.
구현상 크기에 제한이 붙었다 뿐이지, 큰 것은 vmalloc() 작은 것은 kmalloc() 식의 구분은 없습니다.
아시는대로, kmalloc()의 장점은 zone 을 선택할 수 있다는 겁니다.
어쨌거나, vmalloc() 을 사용할 필요가 없다면 kmalloc() 을 사용할 필요는 더 없습니다.
질문자가 게제한 소스만 보고 판단하긴 섣부르군요.