自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 问答 (1)
  • 收藏
  • 关注

原创 对比寄存器解决千兆丢包问题

记一次对比寄存器解决千兆丢包的排查过程

2024-03-18 13:49:02 1124

原创 记录一次适配phy芯片过程

记录一次高版本内核适配phy芯片的调试过程

2024-03-13 07:00:00 1150 1

原创 记一次无vmcore内存死机问题分析过程

记录一次没有生成vmcore的内存类死机问题

2024-03-12 10:38:48 1141

原创 phy环回测试方法(以芯片Atheros8035为例)

以ar8035芯片为例,测试phy环回

2024-03-06 23:10:05 2051

原创 linux常用指令(定期更新)

linux下常用指令,定期更新

2024-03-06 17:33:19 1079

原创 CPU架构对比——飞腾鲲鹏英特尔

通过指令lstopo与lscpu来对比三种CPU架构lstopo指令解析numa节点由cpu簇cluser组成,一个numa=2个簇,1个簇4个物理核。物理核独自共享L1,簇内物理核共享L2,numa内的簇间共享L3,numa间共享内存。鲲鹏lscpu指令解析lstopo指令解析每个簇里一个物理核参考:

2024-03-05 16:53:17 873

原创 Linux系统网卡所属numa节点信息查询方法

linux系统下获取网卡所属numa节点信息的查询方法

2024-03-05 16:42:29 1231

原创 linux内核网络子系统初探2---socket层

接着上文,从这章开始,将按照五层网络模型的顺序逐层分析内核代码。socket部分主要看net/inet/sock.c、net/inet/protocol.c、net/socket.c这几个文件。我个人的理解,在严格意义上,应用层指的应该是各类网络通信模块(例如ftp、http等),socket应该是介于应用层与内核间的接口层,本质不属于应用层。但按功能来讲它是属于应用层的核内接口部分。

2023-05-11 17:14:32 957

原创 linux内核网络子系统初探---概述

linux内核网络子系统初探系列,将会对照着最原始版本V1.0的内核代码,按网络模型一层层的学习内核中的各个网络模块。

2023-05-04 23:12:08 744

原创 单网口ubuntu主机配置virt-manager传统桥接bridge网络

单网口主机配置virt-manager桥接bridge网络

2023-01-18 14:08:19 3748

原创 ubuntu22.04搭建qemu环境测试内核

ubuntu22.04搭建qemu环境测试内核

2023-01-03 18:37:08 3335 3

原创 linux内核协议栈接收数据流程(二)

linux网络接收数据第二站——内核协议栈之网络协议接口层

2022-10-19 20:48:05 753 1

原创 linux内核协议栈接收数据流程(一)

linux网络接收数据流程的第一站——网卡驱动

2022-10-10 16:40:16 1459 1

原创 查询网卡属性小tips

查询网卡属性的相关指令tips~

2022-09-21 23:45:16 1275

原创 wireshark简易抓包分析——ping指定大小包长多28Byte

测试ping时会发现一个现象:在指定ping包长度后,实际发出的包总长=指定ping包长度+28。

2022-09-21 23:23:37 5130

原创 操作系统启动流程

操作系统启动流程——自学知识点汇总

2022-04-11 15:54:17 2725

原创 物理/逻辑CPU、Core、Thread等概念

物理/逻辑CPU、Core、Thread等概念本篇为自己学习用,转载下。翻译的太好了。differences-between-physical-cpu-vs-logical-cpu-vs-core-vs-thread-vs-socket

2022-02-12 15:43:08 1007

原创 DPDK初始化过程之中断相关

DPDK初始化过程之中断相关rte_eal_intr_initTAILQ_*系列函数及intr_sources链表intr_sources链表节点的添加——rte_intr_callback_registerrte_ctrl_thread_create——创建主控线程eal_intr_thread_main——主控线程入口函数rte_eal_intr_initDPDK的中断部分初始化从rte_eal_intr_init开始,由主初始化函数rte_eal_init调用。rte_eal_intr_init

2022-01-25 00:13:55 656

原创 Debug信息分级别输出

Debug信息分级别输出简介代码实现运行效果简介驱动需要实现一个功能:将输出信息根据重要程度分成三个级别,INFO < DEBUG < ERROR,有一个全局变量debug_level控制当前驱动允许输出信息的级别,要做到能实时修改这个debug_level,从而控制驱动输出的级别(级别>=debug_level的信息才可输出)。代码实现首先,在头文件test.h里定义下三种级别:#define INFO_LEVEL 2#define DEBUG_LEVEL 1#defi

2021-08-31 19:38:00 1866

原创 linux驱动之debugfs使用

linux驱动的debugfs代码运行效果TIPS代码linux系统对系统内驱动提供一个调试功能——debugfs。debugfs是一种通过对用户空间文件进行读写操作来实现驱动和用户空间交互的调试方式。驱动需要在系统debugfs根目录下创建一个文件,再实现对该文件的读写操作函数。这样在用户空间读写文件时,会调用驱动中的操作函数,就可进行相关的驱动内部操作了,一般用于修改驱动某个变量值或是内部消息的传递。这个debugfs根目录地址是系统分配的,默认情况下,debugfs会被挂载在目录/sys/k

2021-08-30 16:21:26 3927

原创 WHQL之无需HLK结果就可获得微软驱动数字签名+Cannot specify [ClassInstall32] section解决

WHQL之无需HLK结果就可获得微软驱动数字签名+Cannot specify [ClassInstall32] section解决简介正文简介Windows驱动无需通过HLK测试就可先获得微软数字签名Microsoft Windows Hardware Compatibility Publisher。亲测成功截图:起因是,公司最近开始研究windows驱动,也购买了EV证书,以为剩下的事有了证书就轻轻松松了,却得知如果想要驱动能在正常模式下的Windows系统上安装运行而不报错,需要让驱动获得微

2021-08-26 17:38:11 1328 1

原创 wpa_supplicant2.9之sae握手流程(续)

wpa_supplicant2.9之sae握手流程(续)本文延续上一篇wpa_supplicant2.9之sae握手流程,继续分析wpa_supplicant代码中sae auth的另一种方式:external auth(文中若涉及到与上篇重复的函数流程不会再次细说,可看上篇)wpa_supplicant_associate判定当前wifi驱动是否走external_auth流程,主要是看wpa_s->drv_flags 里WPA_DRIVER_FLAGS_SME比特位是否置1。置1,会在w

2021-07-15 16:43:00 2352 2

原创 wpa_supplicant2.9之sae握手流程

wpa_supplicant2.9之sae握手流程SME介绍wpa_supplicant_connectsme_authenticatesme_auth_start_cbsme_send_authenticationwpa_drv_authenticatewpa_driver_nl80211_authenticatedo_process_drv_eventmlme_event_authsme_event_authsme_sae_authWPA3-Personal采用了新的加密方式,SAE算法。WPA2的

2021-07-09 19:37:19 3310 2

原创 hostapd启动流程(二)

hostapd启动流程(二)继续上篇:https://blog.csdn.net/krokodil98/article/details/116601818。上篇写了不需要acs扫描,固定信道启动的流程,本篇分析另一条路径,即acs扫描信道流程。hostapd_setup_interface -》 setup_interface-》 setup_interface2-》 1. hostapd_select_hw_mode -》hostapd_check_chans -》acs_

2021-06-17 23:01:27 2217

原创 tasklet+kthread+workqueue使用记录

tasklet+kthread+workqueue使用记录taskletkthreadworkqueuelinux的任务调度机制太高深了,目前只能做到会用这三种结构。但具体什么情况哪种性能更高却没法详细的总结下来,还需多做项目多积累啊。。。。linux是个坑。。。本篇仅记录下tasklet结构体定义struct my_bus { ... ... struct tasklet_struct run_tasklet; };tasklet待执行的函数void exec_taskl

2021-05-19 17:24:01 308

原创 hostapd启动流程(一)

hostapd启动流程(一)总述... -> setup_interface2hostapd_select_hw_modehostapd_check_chanshostapd_is_usable_chanshostapd_is_usable_chanhostapd_check_ht_capabieee80211n_check_40mhzieee80211n_scan_channels_2g4hostapd_setup_interface_complete总述最近花了很多时间学习hostapd 2.

2021-05-10 19:55:56 4893

原创 脚本实现登录服务器执行命令+上传下载文件自动化

脚本实现登录服务器执行命令+上传下载文件自动化winscp的上传下载脚本python脚本前期准备python脚本最近一直在调试一个客户的平台,但是每次的调试流程都是:通过winscp上传本地文件到服务器上某个固定路径,在xshell上输入make指令编译系统代码,编译成功后再通过winscp将新生成的烧录文件下载到本地。整个流程重复性极强而且涉及到的文件夹路径也很固定,耗时也非常的长,故而想到用脚本来将这些操作实现自动化,不需要我守在电脑前面等着。winscp的上传下载脚本winscp这种ssh软件

2021-03-22 19:11:52 1577 1

原创 container_of源码分析

container_of源码分析container_of宏定义分析BUILD_BUG_ON_MSG分析offsetof在linux/android代码中经常能看到container_of这个函数,这次抽时间去学了下它具体的实现机制。本文代码基于android10,rk3399平台代码。container_of宏定义定义位于:rk3399-android-10/kernel/include/linux/kernel.h/** * container_of - cast a member of a s

2021-02-20 19:27:21 333 1

原创 ubuntu下更改应用调用名称(ack-grep为例)

ubuntu下更改应用调用名称(ack-grep为例ubuntu下安装了个ack-grep来替换系统自带的grep。但调用时总是需要在终端中输入完整的ack-grep -[options]才行,需要搜很多次的时候输入起来有点麻烦。故想把它的调用名字改成ack -[options],这样搜索时调用起来更方便。需要改下系统中调用ack-grep时用的名称。先看下ack-grep可执行文件的位置:test@test-Vostro-3268:~$ which ack-grep /usr/bin/ack-g

2021-02-20 11:08:49 373

原创 编译安装wpa_supplicant

编译安装wpa_supplicant下载指定wpa_supplicant包下载指定openssl包编译安装openssl编译安装wpa_supplicant本文记录了编译安装wpa_supplicant2.6的详细流程。系统ubuntu 12.04,内核3.4.111。由于wpa_supplicant需要使用到openssl的库,故编译安装wpas还需先安装匹配版本的openssl下载指定wpa_supplicant包1.下载指定版本的wpa_supplicant源码包:访问网址 w1.fi/rel

2021-02-07 17:26:01 2458 1

转载 ubuntu设置默认gcc版本

ubuntu设置默认gcc版本想看精简版的直接看大佬的这篇,本文在这篇命令基础上贴了每一步的操作,可和我的截图对比步骤:https://blog.csdn.net/uniqueyyc/article/details/85407693先查看下update-alternatives config:发现暂时未添加任何gcc软链接test@test-Vostro-3268:~$ sudo update-alternatives --config gcc update-alt

2021-01-29 16:27:26 6533

原创 升降级Ubuntu的linux内核

升降级Ubuntu的linux内核因工作需要,在电脑上装多个版本的linux内核。环境ubuntu 20.04。访问:http://kernel.ubuntu.com/~kernel-ppa/mainline选择自己需要的指定版本这里会列出很多很多版本,建议直接搜索需要安装的版本号。点进去后,见以下界面。因uname -m显示系统cpu架构是x86_64,故而应下载amd64.deb后缀的文件。需要下载:amd64/linux-headers-5.10.1-051001

2021-01-29 15:12:24 754 1

原创 驱动与用户层通信之ioctl的使用

驱动与用户层通信之ioctl的使用一、 驱动中注册netdev二、 驱动中的处理ioctl通信的函数三、 内核中相关定义规范四、 驱动中存取ifreq中数据五、 用户层的软件代码:总结一、 驱动中注册netdev驱动中注册net_device_ops全局变量结构体:static const struct net_device_ops myNetDeviceOptions = { .ndo_open = ..., .ndo_stop

2021-01-28 15:23:48 2687

原创 c编译成可执行文件在linux上运行

平台是ubuntu20.04。还是那个超级简单的例子,在android上的编译和运行可看之前文章:c交叉编译成可执行文件在android上运行因为突然想到android那篇忘记涉及到执行C程序时传命令行参数这部分,又想到linux和android上的C程序编译和运行又并不完全一样,故而有了这篇。实验步骤:新建文件夹hello:创建hello.c和makefile。test@test-Vostro-3268:~/wahaha/hello$ lsMakefile hello.chello.

2021-01-21 19:30:49 754 3

原创 c交叉编译成可执行文件在android上运行

平台用的是rk3399-android-10。以下是一个超级简单的例子:本文是不需要用makefile编译的例子,有时小工具只涉及到一个或极少的c文件时,一条指令编译即可。单独建一个文件夹名为hello_world,里面就一个c文件。test@ubuntu-07:~/workspace$ ls hello_world/hello.cc文件代码:#include<stdio.h>int main(void){ printf("hello world\n");

2021-01-08 16:46:54 1848

原创 Android10 insmod源码分析

rk3399-android-10/frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cppstatic int insmod(const char *filename, const char *args) {int ret;int fd;fd = TEMP_FAILURE_RETRY(open(filename, O_RDONLY | O_CLOEXEC | O_NOFOLLOW));printf(“insmod filename = %s\

2021-01-06 15:34:13 3088 2

原创 分析wpa_supplicant起始函数main源码

wpa_supplicant初始化main函数wpa_supplicant的目录及文件maincheck_wifi_chip_type_stringread_wpa_param_configwpa_supplicant的目录及文件本篇blog的源码来源于安卓10,对应的wpa_supplicant版本为8。先来看下wpa_supplicant代码的目录结构源码目录:xxx@ubuntu-07:~/workspace/rk3399-android-10/external/wpa_supplicant

2020-12-21 19:05:56 901

原创 Android linux firmware下载——续request_firmware之fw_path_para方式

安卓10固件下载——续正文开始之前有写过一篇blog来分析安卓代码里固件下载部分的实现,链接:android8 linux内核下载固件函数request_firmware流程分析但是最近在工作中,遇到了一种情况,在安卓文件系统的同一个目录,有时自己编写的固件下载函数能够成功,有时再重新烧录一遍系统以后就不成功了,总显示打开文件失败(至今不知为何,忘有大佬能指出可能存在的问题)。在这种情况下,需要暂时使用安卓系统自带的request_firmware来下载固件,但代码自带的fw_path中的路径不包含

2020-12-14 20:37:52 2010 4

原创 linux源码中spin_lock函数分析

spin_lock代码分析spin_lockraw_spin_lock系列函数spin_lock代码位置:/kernel/include/linux/spinlock.hstatic __always_inline void spin_lock(spinlock_t *lock){ raw_spin_lock(&lock->rlock);}可见,spin_lock的实现主要是通过raw_spin_lock实现的。看一下spinlock和raw_spinlock的

2020-11-26 16:37:09 728 1

原创 搬迁声明:博客以后会同步到OSCHINA啦~

博客以后会同步到OSCHINA啦~以下是开源中国的个人主页链接:我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:krokodil98,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply

2020-11-25 22:26:08 134

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除