
linux c
TheMoonRiver
流水线 流水线
展开
-
KMALLOC PK VMALLOC
KMALLOC PK VMALLOC kmalloc是基于slab的,所以速度比较快。 vmalloc的内部会调用到kmalloc,但是只是分配vm_struct描述符,和分配nr_pages指针数组,这个数组里的每个元素指向vm_struct对应的非连续内存区域的每一个页描述符结构。真正的分页是通过alloc_page一页一页的从buddy system分配。所以物理地址是不连续的,一页一页分配物理地址不一定啥地方了。 kmalloc分配的页已经映射好了,而vmalloc分配后一级一级建立页表很是麻烦。原创 2020-12-15 20:16:29 · 300 阅读 · 0 评论 -
驱动文章集锦
宋宝华微信公众号系列文章 宋宝华csdn关于driver的文章 wowo科技原创 2021-01-08 15:29:37 · 124 阅读 · 0 评论 -
对ip blocks的理解
case CHIP_POLARIS10: case CHIP_POLARIS11: case CHIP_POLARIS12: case CHIP_VEGAM: 这系列的ip_blocks注册的有: amdgpu_device_ip_block_add(adev, &vi_common_ip_block); amdgpu_device_ip_block_add(adev, &gmc_v8_1_ip_block); amdgpu_device_ip_bloc原创 2020-09-01 11:58:05 · 1766 阅读 · 0 评论 -
Amdgpu device ip early init
ip的意思是 Intellectual Property , 是知识产权,可以理解成不同的架构有不同的设计方式.所以抽象出来,通过宏去访问.在初始化时,按照asic的形式注册(在radeon的代码中是用的asic. 猜测全称是application specific integrated circuit, 目的是给不同框架使用对应api.) 我们以CHIP_POLARIS10进行分析, POLARISI10还属于VEGA之前的架构,分析起来没那么累 在函数入口,POLARISI10的family设置成AMD原创 2020-09-01 11:54:34 · 740 阅读 · 0 评论 -
c语言可变长数组带来的好处
#include <stdlib.h> #include <stdio.h> #include <string.h> typedef struct msg_info_s{ char name[16]; char msg_info[32]; }msg_info_t; typedef struct msg_s{ int id; char data[0]; }msg_...原创 2019-04-17 17:12:04 · 1180 阅读 · 0 评论