- 论坛徽章:
- 0
|
static int do_memory_mmap(struct vm_area_struct *vma,
unsigned long size, char *ptr,
u_int flags, int mode)
{
unsigned long start;
unsigned long page;
... ...
if(mode == 0) {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11))
page = vmalloc_to_pfn(ptr);
rc = remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED);
#else
page = vmalloc_to_page(ptr);
page = kvirt_to_pa(ptr);
rc = remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED);
#endif
} else if(mode == 1) {
rc = remap_pfn_range(vma, start,
__pa(ptr) >> PAGE_SHIFT,
PAGE_SIZE, PAGE_SHARED);
} else {
rc = remap_pfn_range(vma, start,
((unsigned long)ptr) >> PAGE_SHIFT,
PAGE_SIZE, PAGE_SHARED);
}
... ...
}
内核版本是linux2.4.22,编译后错误为:
ring_packet.c: In function `do_memory_mmap':
ring_packet.c:2367: warning: assignment makes integer from pointer without a cast
ring_packet.c:2368: warning: passing arg 1 of `kvirt_to_pa' makes integer from pointer without a cast
ring_packet.c:2369: warning: passing arg 1 of `remap_page_range' makes integer from pointer without a cast
ring_packet.c:2369: incompatible type for argument 4 of `remap_page_range'
ring_packet.c:2369: too many arguments to function `remap_page_range'
ring_packet.c:2372: warning: implicit declaration of function `remap_pfn_range'
有没有人熟悉2.4.22映射方式?请指教,谢谢! |
|