1. 后缀说明 acquire操作指的是在这条语句之后的所有内存操作只准在这条语句之后,不准被提前到这条语句之前。 release操作指的是在这条语句之前的所有内存操作只准在这条语句之前,不准被延后到这条语句之后。 relaxed操作指的是不保证任何的内存顺序。 2. 读写 1atomic_read(const atomic_t *v) 2atomic_read_acquire(const atomic_t *v) 3 4atomic_set(atomic_t *v, int i) 5atomic_set_release(atomic_t *v, int i) col1 col2 (const atomic_t *v)...
ARM64 PAGE_SIZE、VA_BITS、PGTABLE_LEVELS关系
ARM64汇编宏:adr_l
1. kmalloc分配内存的大小 本文基于linux-5.15分析,linux-6.6已经删除slob,后续也会将slab移除。 kmalloc会根据申请的内存大小来决定来决定使用块分配器(slab/slub/slob)或页分配器进行内存分配。 控制kmalloc分配行为的主要有如下三个宏。 macro desc KMALLOC_MAX_SIZE kmalloc可以分配的最大内存,超过此大小时返回NULL KMALLOC_MAX_CACHE_SIZE kmalloc使用slab分配器分配的最大内存,超过此大小后会通过伙伴系统分配页 KMALLOC_MIN_SIZE kmalloc可以分配的最小内存,小于此大小时,kmalloc内...
1. 说明 根据内核文档整理而成,具体格式含义可查看内核文档,或点击如何获得正确的printk格式占位符(v6.6)或如何获得正确的printk格式占位符(latest)查看。 linux-6.6相关内核文档路径如下: Documentation/core-api/printk-formats.rst Documentation/translations/zh_CN/core-api/printk-formats.rst 2. 整数类型 内核的printk不支持%n,也不支持浮点格式(%e / %f / %g / %a)。在printk中使用任何不支持的占位符或长度限定符都会导致一个WARN并且终止vsnprintf()执行。注...
1. 串口发送sysrq 对于串口来说,sysrq本质是一个低电平脉冲,通常为100ms。 1在通用异步收发传输器(UART)中,Line Status Register(LSR)的 “Break interrupt indicator”(中断指示位)表示检测到了一个间断信号。 2一、含义 3当该位被置位时,表明 UART 接收器检测到了一个间断条件。一个间断通常是指接收线路上长时间保持为低电平状态,通常超过一个字符传输的时间。这可能是由于外部设备故意发送一个间断信号,或者由于通信线路上的异常情况导致的。 4二、用途 5信号异常检测:可以用来检测通信线路上的异常情况。例如,如果通信双方在一段时间内没有数据传输,然后突然检测到一个间...
ERR_PTR、PTR_ERR
1. 打开dynamic_debug 1CONFIG_DYNAMIC_DEBUG=y 运行时控制:/proc/dynamic_debug/control,如果开启了CONFIG_DEBUG_FS,在<debugfs>/dynamic_debug/control,两者效果是相同的。 2. 使用dynamic_debug 可以使用pr_debug或者dev_dbg来打印调试信息。 1#define pr_fmt(fmt) fmt 2 3#include <linux/kernel.h> 4#include <linux/init.h> 5#include <linux/module.h> 6 7static int __init...
idle/fair/rt/dl/stop sched_class成员值汇总
sequenceDiagram participant caller as caller participant irq as irq.c participant irqdomain as irqdomain.c participant irqdesc as irqdesc.c participant bitmap as bitmap.c activate caller caller ->> irq: irq_of_parse_and_map activate irq Note right of irq: irq_of_parse_and_map irq ->> irq: of_irq_parse_one irq ->>...