一、memblock_alloc 函数分析、二、memblock_alloc_base 函数分析、三、__memblock_alloc_base 函数分析、四、memblock_alloc_base_nid 函数分析、五、memblock_alloc_range_nid 函数分析
一、memblockmemblock_type、memblock_region 结构体的关系、1、memblockmemblock_type 关系、2、memblock_type、memblock_region 关系、二、上述数据结构关系图示、
lsmod是一个命令行实用程序,用于显示有关已加载的Linux内核模块(Kernel Modules)的信息。本文介绍内核模块的概念和在Linux操作系统中使用Lsmod命令列出内核模块的方法。内核模块(Kernel modules)概念介绍内核是操作系统的核心组件,它管理操作系统的资源,并且是计算机硬件和软件之间的桥梁。Linux内核具有模块化设计,内核模块(通常称为驱动程序)是一段扩展内核功能
    源代码:int main(int argc, const char * argv[]) { int dmy = 256; int val = 10; const char *fmt = "val = %d\n"; void (^blk)(void) = ^{printf(fmt, val);}; val = 2; fmt = "These va
memblock, Logical memory blocks.管理struct memblock { bool bottom_up;  /* is bottom up direction? */ phys_ad
原创 2023-06-01 10:11:43
83阅读
memblock_reserveint __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size){ memblock_dbg("memd long long)bas
IP
原创 2023-05-30 00:15:52
109阅读
memblock_removeint __init_memblock memblock_remove(phys_addr_t base, phys_addr_t size){ return memblock_remove_range(&memblock.memory, base, size);}
原创 2023-05-30 00:16:39
118阅读
一、memblock_remove 函数分析、二、memblock_remove_range 函数分析、1、memblock_remove_range 函数执行流程、2、memblock_remove_range 函数参数介绍、3、memblock_remove_range 函数源码
一.Linux内存高,触发oom-killer问题解决1.linux的内存问题,其一是触发了oom-killer导致系统挂首先确认该系统的版本是32位,执行 uname -a2.了解一下32位Linux的内存管理结构# DMA: 0x00000000 - 0x00999999 (0 - 16 MB) # LowMem: 0x01000000 - 0x037999999 (16 - 896 MB)
转载 2024-04-06 20:49:08
30阅读
从开机加电到实行main函数之前的过程分为三步,目的是实现从启动盘加载操作系统程序,完成实现main函数的准备工作启动BLOS,准备是模式下的中断向量表和中断服务程序从启动盘加载操作系统程序到内存。加载操作系统程序就是靠第一步实现的为实现32位的main函数做过度工作  1.1启动blos,准备实模式下的中断向量表和中断服务程序由blos来加载软件操作系统的任务 1.
memblock_freeint memblock_free(phys_addr_t base, phys_addr_t size){ memblock_dbg("   memblock_free: [%#016llx-%#016llx] %ned long long)ba
IP
原创 2023-05-30 00:16:47
60阅读
RememberMe1.简介Remember这个功能非常常见,下图就是QQ邮箱登录时的“记住我”选项。提到RememberMe,一些初学者往往会有一些误解,认为RememberMe功能就是把用户名/密码用Cookie保存在浏览器中,下次登录时不用再次输入用户名/密码。这个理解显然是不对的。我们这里所说的RememberMe是一种服务器端的行为。传统的登录方式基于Session会话,一旦用户会话超时
关键词:warn_alloc()、__GFP_XXX、order、CMA等等。 在内存申请的时候经常会遇到类似“ xxx: page allocation failure: order:10...”类型的问题,这是warn_alloc()的输出。warn_alloc()被如下函数调用:__alloc_pages_slowpath()、__vmalloc_area_node()、
一、memblock_free 函数分析、二、memblock_remove_range 函数分析
缓冲区的分配在 前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了一个指定大小的数组,并把它包装为缓冲区对象。或者我们也可以直接将一个现有的数组,包装为缓冲区对象,如下示例代码所 示: public class BufferWrap { public
转载 5月前
2阅读
  前一段时间一直在看FCoE交换机方面的的代码,忽然老师让把前一段时间看过的师兄写的关于一个CNA卡的代码改一下,原来的CNA卡的驱动是一个字符设备驱动,现在要把它改成网络设备驱动,本来没有怎么在意,还是准备以交换机那边的为主,后来发现看了这么长时间的代码,真的需要好好地写一下代码了,再说以前看了很多关于网络设备的知识,很多东西都已经遗忘了,现在开始好好写一下这个驱动的代码,先把这个网
pte_t;} pmd_t;} pud_t;
原创 2024-06-06 10:47:36
172阅读
一、memblock_region 内存块区域、二、memblock_region 结构体成员分析、1、base 成员、2、size 成员、3、flags 成员、4、nid 成员、三、memblock 分配器标志枚举、1、MEMBLOCK_NONE、2、MEMBLOCK_HOTPLUG、3、MEMBLOCK_MIRROR、4、MEMBLOCK_NOMAP、
原创 2022-04-29 09:17:05
195阅读
概括来说,new和alloc/init在功能上几乎是一致的,分配内存并完成初始化。差别在于,采用new的方式只能采用默认的init方法完成初始化,采用alloc的方式可以用其他定制的初始化方法。AD: 英文详解:http://macresearch.org/difference-between-alloc-init-and-new1.在实际开发中很少会用到new,一般创建对象咱们看到的全
这里主要提供两个函数memblock_add()和memblock_add_node(),如果标记内存则调用memblock_reserve()。这些函数核心调用memblock_add_range()/** * memblo
原创 2023-06-01 10:11:57
89阅读
  • 1
  • 2
  • 3
  • 4
  • 5