linux c
TheMoonRiver
流水线 流水线
展开
-
KMALLOC PK VMALLOC
KMALLOC PK VMALLOCkmalloc是基于slab的,所以速度比较快。vmalloc的内部会调用到kmalloc,但是只是分配vm_struct描述符,和分配nr_pages指针数组,这个数组里的每个元素指向vm_struct对应的非连续内存区域的每一个页描述符结构。真正的分页是通过alloc_page一页一页的从buddy system分配。所以物理地址是不连续的,一页一页分配物理地址不一定啥地方了。kmalloc分配的页已经映射好了,而vmalloc分配后一级一级建立页表很是麻烦。原创 2020-12-15 20:16:29 · 198 阅读 · 0 评论 -
驱动文章集锦
宋宝华微信公众号系列文章宋宝华csdn关于driver的文章wowo科技原创 2021-01-08 15:29:37 · 72 阅读 · 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 · 1569 阅读 · 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 · 576 阅读 · 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 · 1130 阅读 · 0 评论