草庐IT

x5内核

全部标签

从module_init看内核模块

开篇module_init是linux内核提供的一个宏,可以用来在编写内核模块时注册一个初始化函数,当模块被加载的时候,内核负责执行这个初始化函数.在编写设备驱动程序时,使用这个宏看起来理所应当,没什么特别的,但毕竟我还是一个有点追求的程序员嘛:P,这篇文章是我学习module_init相关源码的一个记录,主要就回答了下面的3个问题,篇幅略长,做好准备.Q1:内核模块是什么?Q2:内核模块是怎么被加载的?Q3:内核怎么获取到module_init注册的初始化函数?注:以下回答是个人学习总结,仅供参考.A1:编译好内核模块的代码,会得到一个".ko"文件,这个就是内核模块了.实际上,".ko"就

基于内核链表和JSON的MQTT的使用

一、内核链表1.回顾单链表的插入和遍历假设学生结构体信息如下,封装一个单链表的插入接口和遍历输出的接口,在主函数中利用封装的接口生成一个学生链表,并遍历输出链表的学生信息。#include#include#includestructstudent{ intage; charname[64];};structlist_node{ structstudentnode; structlist_node*next;};staticstructlist_nodehead;intinsert_head(structstudentdata){ structlist_node*new_node=(struct

OpenHarmony内核编程接口—介绍定时器管理两种定时器以及案例演示

想了解更多关于开源的内容,请访问:51CTO 开源基础软件社区https://ost.51cto.com前言本文介绍了内核编程接口之软定时器软定时器软定时器含义软件定时器(Timer),是基于系统时钟tick且由软件来模拟的定时器,当经过设定的tick计数值后会触发用户定义的回调函数。ps1:定时器触发函数的执行,不是线程。ps2:当定时器到期时,将执行回调函数以运行特定的代码。ps3:定时精度与时钟周期有关。ps4:所有定时器都可以启动、重新启动或停止。ps5:每个定时器都可以配置为一次性或周期性定时器。一次性定时器一次性定时器指仅执行一次操作即停止,不会自动重新启动。【OpenHarmon

《安富莱嵌入式周报》第315期:开源USB高速分析仪,8GHz示波器开发, 600行C编写RISC-V内核,英特尔推出用于开发人员等宽字体,便携物联网监测器

周报汇总地址:嵌入式周报-uCOS&uCGUI&emWin&embOS&TouchGFX&ThreadX-硬汉嵌入式论坛-PoweredbyDiscuz! 视频版:https://www.bilibili.com/video/BV1gV4y117UD/《安富莱嵌入式周报》第315期:开源USB高速分析仪,8GHz示波器开发,600行C编写RISC-V内核,英特尔推出用于开发人员等宽字体,便携物联网监测器1、开源USB2.0高速分析仪GitHub-ataradov/usb-sniffer:Low-costLS/FS/HSUSBsnifferwithWiresharkinterfaceusb-sn

linux 内核资源配置--cgroups详解以及在docker中的应用

一、Cgroup概述1.1、cgroups是什么Linuxcgroup(ControlGroups)是Linux内核提供的一种机制,用于限制进程组使用的资源(如CPU、内存、磁盘I/O等)。通过将进程组划分为层次结构,并将资源限制应用于不同层次的组,可以实现对系统资源的统一管理和限制。cgroup提供了一套API,用于创建、管理和监控进程组。通过这些API,可以将进程组划分为不同的层次结构,并为每个层次结构设置不同的资源限制。在实际使用中,可以使用cgroup来限制某些进程组的资源使用,以确保系统资源的公平分配和有效使用。1.2、cgroup四大功能资源限制(ResourceLimiting)

内核模块(编译方法)

目录一、向内核添加新功能1.1静态加载法:1.2动态加载法:a、新功能源码与Linux内核源码在同一目录结构下时b、新功能源码与Linux内核源码不在同一目录结构下时c、主机ubuntu下使用ko文件d、开发板Linux下使用ko文件二、内核模块基础代码解析Linux内核的插件机制——内核模块三、内核模块的多源文件编程四、内核模块信息宏一、向内核添加新功能1.1静态加载法:即新功能源码与内核其它代码一起编译进uImage文件内1.新功能源码与Linux内核源码在同一目录结构下  在linux-3.14/driver/char/目录下编写myhello.c,文件内容如下:#include#inc

PVE7.3 切换内核版本

目录 一、前言:二、更新步骤:1、首先更换LXC为国内源2、更新PVE内核:三、问题:四、解决方法:1、查看服务器启动内核的顺序2、查找我们需要的信息3、具体修改方法:一、前言:     今天将PVE从7.2更新到了7.3,顺便想更新了下内核版本,但参考了各种文章后都无法正确升级内核版本。最后无意间发现PVE下/etc/default/grub.d/proxmox-kernel-pin.cfg中也有内核版本配置项,自己测试了下,还真成功了。怕忘记,记录下。二、PVE7.2之前的更新步骤:1、首先更换LXC为国内源//(非常好用)更换PVE7软件仓库源和CT模板(LXC)源为国内源更换PVE7软

PVE7.3 切换内核版本

目录 一、前言:二、更新步骤:1、首先更换LXC为国内源2、更新PVE内核:三、问题:四、解决方法:1、查看服务器启动内核的顺序2、查找我们需要的信息3、具体修改方法:一、前言:     今天将PVE从7.2更新到了7.3,顺便想更新了下内核版本,但参考了各种文章后都无法正确升级内核版本。最后无意间发现PVE下/etc/default/grub.d/proxmox-kernel-pin.cfg中也有内核版本配置项,自己测试了下,还真成功了。怕忘记,记录下。二、PVE7.2之前的更新步骤:1、首先更换LXC为国内源//(非常好用)更换PVE7软件仓库源和CT模板(LXC)源为国内源更换PVE7软

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>

目录一、bootloader、kernel、rootfs联系二、内核移植1.内核源码获取2.内核配置与编译🍍基础配置与编译🍍TF卡分区🍍内核烧录三、参考内容一、bootloader、kernel、rootfs联系kernel可以理解为一个庞大的裸机程序,和uboot以及其他比如点灯类似的裸机程序没有本质区别,只是kernel分为用户态和内核态,内存和设备操作与裸机程序不同。kernel是最底层,负责各种外设硬件的驱动,kernel类似于黑盒子,从外面只能看到接口,无法看到具体功能是如何实现的,内核初始化提供的接口后,将控制权通过init程序交给根文件系统。详见:一文讲解Linux内核中根文件系

内核源码中版本号详解(KERNEL_VERSION & KERNEL_VERSION)

1、内核源码中版本的定义VERSION=2 #主版本号PATCHLEVEL=6 #主版本号SUBLEVEL=35 #更次的版本号EXTRAVERSION=.7 #更更次的版本号NAME=Yokohama(1)内核的版本信息定义在内核源码顶层Makefile的开头;(2)内核的版本号是分级的,分为主版本号、次版本号、更次的版本号······,越靠后的版本号代表内核的改变越小;2、version.h文件#defineLINUX_VERSION_CODE132643#defineKERNEL_VERSION(a,b,c)(((a)16)+((b)8)+(c))(1)version.h在include