共 11 篇文章
显示摘要每页显示  条
dmalloc的配置选项可以通过设置环境变量DMALLOC_OPTIONS来实现,例如: $ export DMALLOC_OPTIONS=log=logfile,check-fence,check-blank,check-shutdown,check-heap,check-funcs,log-stats,log-non-free,print-messages,log-nonfree-space 这些用法可参见: http://dmalloc.com/docs/latest/online/dmalloc_26.html http://dmalloc.com/docs/la...
Linux Kernel模块内存泄露的一种查找思路一. 问题描述。SLAB MEMORY TOTAL ALLOCATED FREE ffff81021927a000 ffff81021927a200 112 112 0 FREE / [ALLOCATED] [ffff81021927a200] ……[ffff81021927a760] [ffff81021927a780] [ffff81021927a7a0] ……
page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order, zonelist, high_zoneidx, ALLOC_WMARK_LOW|ALLOC_CPUSET, preferred_zone, migratetype);struct page *page;【alloc_pages--->alloc_pages_current--->__alloc_pages_nodemask--->get_page_from_freelist--->buffered_rmqueue---...
函数__find_buddy_index就一行代码page_idx ^ (1 << order),将page_idx的1 << order位取反。buddy_idx = __find_buddy_index(page_idx, order);如果page_idx的1 << order位为1,buddy_idx 与page_idx相减的结果就是负的(1 << order);如果如果page_idx的1 << order位为0,相减的结果就为正的(1 << order)...
【bootmem_init--->arm_bootmem_free--->free_area_init_node--->free_area_init_core】zone->zone_start_pfn = zone_start_pfn;static void __meminit zone_init_free_lists(struct zone *zone)static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata)void __meminit __free_pages_bootmem(struct page *page,...
在内核启动之初per_cpu机制还没有初始化,用于动态分配per_cpu变量的空间还没有分配,所以定义了一个静态的per_cpu变量boot_pageset,用以暂时管理内存域的per_cpu缓存。static DEFINE_PER_CPU(struct per_cpu_pageset, boot_pageset);setup_pageset(&per_cpu(boot_pageset, cpu), 0);struct per_cpu_pageset *pcp = per_cpu_ptr(zone->...
void __init bootmem_init(void)static void __init arm_bootmem_init(unsigned long start_pfn,unsigned long end_pfn)【bootmem_init--->arm_bootmem_init--->init_bootmem_node】unsigned long __init init_bootmem_node(pg_data_t *pgdat, unsigned long freepfn,static unsigned long __init init_bootmem_core(bootmem_data_t *bda...
struct zonelist {struct zonelist node_zonelists[MAX_ZONELISTS];在多处理器系统中MAX_ZONELISTS定义为2,node_zonelists[0]中排列本结点内存域,node_zonelists[1]中排列其他备用结点内存域。函数build_thisnode_zonelists和本函数最大的区别就在于这里取的是node_zonelists[0],而在函数build_thisnode_zonelists中取的是node_zonelists[1]...
系统启动时会启用一套临时内存管理机制,struct bootmem_data就是该机制的管理结构。unsigned long node_start_pfn;ZONE_MOVABLE,伪内存域,防止物理内存碎片机制中要使用该内存域。struct zone {unsigned long watermark[NR_WMARK];unsigned long lowmem_reserve[MAX_NR_ZONES];unsigned long min_slab_pages;unsigned lo...
在发生访问一个线性地址的时候发生了错误进入do_page_faule函数,在判断出【发生在用户空间、不在中断中】进入handle_pte_fault函数(在这里判断是进行请求调页还是写时复制)。先看一下在handle_pte_fault函数中是如何区分各种不同的情况从而去调用不同的处理函数的。可以看到do_linear_fault和do_nonlinear_fault函数共同调用__do_fault来解...
帮助 | 留言交流 | 联系我们 | 服务条款 | 下载网文摘手 | 下载手机客户端
北京六智信息技术股份有限公司 Copyright© 2005-2024 360doc.com , All Rights Reserved
京ICP证090625号 京ICP备05038915号 京网文[2016]6433-853号 京公网安备11010502030377号
返回
顶部