logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

linux内核中从核初始化过程

linux 内核的入口函数是每个体系结构自己定义的,假设当前架构的内核入口函数是:kernel_entry(),则下面梳理了从核的初始化过程(内核版本:4.19):在从核线程中:smpboot_thread_fn() 会循环(while(1))调用 cpuhp_thread_fun(),后者在每次被调用时都会更新当前 cpu 的 state (在 cpuhp_cpu_state 结构体中),当 s

linux内核中声明一个位图的方法

在 linux 内核中可以通过 DECLARE_BITMAP 宏来声明一个位图变量,其中 name 是位图变量的名称,bits 是申请的位的数量,在置位和读取的过程中,应该判断是否超出了这个数量。以下是内核中的实现代码:#define DECLARE_BITMAP(name,bits) unsigned long name[BITS_TO_LONGS(bits)]#define BITS_PER_

Linux 4.19 内核中 spinlock 概览

Linux 4.19 内核 spinlock 相关文件梳理

#linux
使用gcc内置CAS函数实现spinlock

gcc 里提供了内置 CAS 函数:__atomic_compare_exchange_n(),它的基本用法如下:Built-in Function:bool__atomic_compare_exchange_n(type*ptr,type*expected,typedesired, bool weak, int success_memorder, int failure_memorder)Thi

git commit --amend可能带来的合并冲突

有很多场景,你可能会用到git commit --amend,比如:提交之后才发现自己忘了添加某些文件,提交之后才发现写错了提交信息,提交之后才发现代码中有处不规范的格式问题,可以快速改一下,然后再次提交,此时你如果像我一样有点洁癖的话,你可能会使用它。然而,需要意识到的是,git commit --amend 最终只是产生了一个提交,因为第二个提交命令修正了第一个提交的结果。如果你...

#git
内核编译时出现 ERROR: modpost: “some_function” [xxx.ko] undefined!

遇到该问题时,需要确认模块中引用的符号是否被 export 出来了。

使用乘法和位运算求整数除以3的结果

使用乘法和位运算求整数除以 3 的结果。

git rebase后commit id的变化

经测试发现,在执行完 git rebase 之后,1)会生成的新的 commit id2)新commit 与旧commit 的父节点不相同3)旧 commit 的父节点保持不变查看某个 commit 的父节点的方法:$ git log --pretty=%P -n 1 commit-id...

#if、#ifdef和#if defined的异同

1、#ifdef 和 #if defined 异同:相同点:都可以用来检查某个宏是否定义不同点:#ifdef 仅使用一个条件, #if defined 可以使用多个条件#ifdef 后面的条件不加括号,#if defined 后面的条件可以加括号,也可以不加括号#if defined (__vax__) || defined (__ns16000__)#if defined BUFSIZE &am

在linux C中使用unlink删除文件

在linux C中,unlink() 可以删除一个文件,该函数的定义在 unistd.h 头文件里,下面看一下使用方法:// main.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(void) {int fd;char *fname= "a.txt";if ((fd = cre

    共 35 条
  • 1
  • 2
  • 3
  • 4
  • 请选择