- 博客(154)
- 收藏
- 关注
原创 What memory are you: PageAnon() and PageSwapBacked()(关于PG_swapbacked的一些记录)
PG_swapbacked
2022-10-13 16:50:49
370
翻译 Better active/inactive list balancing(关于kernel shadow entry和refault distance的一些记录)
Kernel shadow entry and refault distance
2022-10-13 16:34:21
136
转载 ARM32 Page Tables
/* SPDX-License-Identifier: GPL-2.0-only //linux/arch/arm/kernel/head.SCopyright © 1994-2002 Russell KingCopyright © 2003 ARM LimitedAll Rights ReservedKernel startup code for all 32-bit CPUs*/#include <linux/linkage.h>#include <linux/
2021-10-05 11:38:27
478
原创 C引用链接脚本中的symbol
位置arch/arm/boot/compressed/head.S描述代码分析:/* SPDX-License-Identifier: GPL-2.0-only *//* * linux/arch/arm/boot/compressed/head.S * * Copyright (C) 1996-2002 Russell King * Copyright (C) 2004 Hyok S. Choi (MPU support) */#include <l...
2021-09-19 12:48:48
230
原创 Vim拾遗
在使用相对行号时候,如何相对当前行号前后跳转在正常模式下,输入相对当前行的目的行号,然后按“+”向前跳转,“-”向后跳转光标回到上次的光标位置在正常模式下,Ctrl + o,到上一个位置,Ctrl + i,,到下一个位置...
2021-08-18 13:53:09
96
原创 记录 ubuntu16.04 桌面恢复
由于卸载python导致ubuntu启动后桌面侧边栏消失,恢复方法:sudo apt-get -f installsudo apt-get install ubuntu-desktop
2021-02-25 23:37:13
666
原创 C11新特性记录
/************************************************************************* > File Name: c11_attributes.c > Created Time: Mon 14 Dec 2020 09:03:49 AM CST ************************************************************************/#include <stdio.
2020-12-15 09:34:54
183
原创 gcc attribute 特性记录
记录常用的gcc attribute 属性,随时更新#include <stdio.h>#define __compiletime_object_size(obj) __builtin_object_size(obj, 0)#define __compiletime_warning(message) __attribute__((__warning__(message)))#define __compiletime_error(message) __attribu
2020-12-12 11:08:49
256
原创 gcc 泛型宏与通用预定义宏示例
#include <cstdio>#include <iostream>#define min(x, y) ({ \ typeof(x) _tempx = (x);\ typeof(y) _tempy = (y);\ (void)(&_tempx == &_tempy);\ _tempx < _tempy ? _tempx : _tempy;})int main(){ int a = 10, b = 12; double x =.
2020-12-12 10:35:56
322
原创 kernel 死锁检测,打印控制,oops分析(内核版本v4.14)
1. 死锁检测内核配置:CONFIG_LOCK_STAT=yCONFIG_PROVE_LOCKING=yCONFIG_DEBUG_LOCKDEP=y2. 打印echo 8 > /proc./sys/kernel/printk 打开所有内核打印print_hex_dump: 打印内存buffer的函数dump_stack: 打印堆栈数据BUG_ON() 函数: 调用panic 让系统宕机WARN_ON() 函数: 打印函数相关调用栈信息trace_printk:将打印信息
2020-12-05 16:44:26
1010
原创 kernel内存检测工具记录(基于kernel 4.14)
slub debug➜ cd linux-4.14/tools/vm➜ make ARCH=aarm64 CC=aarch64-linux-gnu-gcc slabinfokmemleakKernel hacking —>
2020-12-05 10:18:14
1561
原创 通过脚本记录kernel ftrace和dmesg信息的调试方法
#!/bin/bash########################################################################## File Name: debug.sh# Author: Caesar# Email: strategicfocus@163.com# Created Time: Sat 28 Nov 2020 05:50:09 PM CST###################################################
2020-11-28 18:13:45
320
原创 内核 ftrace 工具使用简介
1. 内核配置(version 4.14)修改内核配置选项挂载debug fs, 并重启echo >> “debugfs /sys/kernel/debug debugfs defaults 0 0” /etc/fstab查看ftrace支持的跟踪器cat /sys/kernel/debug/trace/available_tracers2. 操作流程# cat
2020-11-28 17:48:05
880
原创 gcc 通过宏参数传递代码编译时间小记
MakefileBUILD_STRING = $(shell date +"%x %T")__BUILD_STRING__="\"$(BUILD_STRING)\""all: gcc -D__BUILD_STRING__=$(__BUILD_STRING__) Example.cExample.c#include <stdio.h>int main(){ printf("Build time: %s\n", __BUILD_STRING__); retur
2020-11-24 09:32:29
937
原创 linux进程间互斥锁和条件变量
设置进程间共享属性互斥锁和条件变量将该互斥锁和条件变量放到共享内存中public.h#ifndef _PUBLIC_H#define _PUBLIC_H#include <pthread.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include &...
2020-02-18 20:58:46
1680
翻译 C计算机编程语言优化(Optimization of Computer Programs in C)
原著:Optimization of Computer Programs in C摘要:一个知识工作者的一生的大部分时间都花在等待计算机持续产生结果上。用户和组织通过购买更快的计算机,添加内存,使用更快的网络来控制他们的等待时间。应用程序开发者有责任去设计他们的程序,以便更好的利用他们手里有限而昂贵的资源。本文论述了一些优化(提升速度)c计算机编程语言的技术。主要聚焦在最小化CPU运行程序...
2020-01-09 09:48:33
680
原创 APM_Rover运行纲领分析,以pixhawk-fmuv2为硬件平台,ChibiOS为底层操作系统:
1. 纯抽象载具类: class AP_Vehicleclass AP_Vehicle 派生自AP_HAL::HAL::Callbacks接口类,通常从接口类派生是希望子类具有某种期望的行为,这里AP_Vehicle拥有setup和loop的行为;此类是所有具象载具(Plane,Copter,Sub,Rover,Tracker)的基类;class AP_Vehicle : public AP...
2019-12-25 08:59:53
1867
2
原创 基于pixhawk2.4.6硬件和ChibiOS系统的ardupilot启动流程:从上电到ArduCopter应用层代码
NOTE: 以 —>>> 开头的为加入的分析和注解 <<<—链接脚本common.ld./libraries/AP_HAL_ChibiOS/hwdef/common/common.ld/* this file is included by the board specific ldscript.ld which is generated f...
2019-11-18 09:45:06
1379
原创 C语言引用链接脚本中定义的符号
1. 使用ld --verbose 查看当前编译器默认的链接脚本:default.ld/* GNU ld (GNU Binutils for Ubuntu) 2.26.1 Supported emulations: elf_x86_64 elf32_x86_64 elf_i386 elf_iamcu i386linux elf_l1om elf_k...
2019-11-13 09:55:05
1319
原创 AP_HAL 再分析, 以pixhawk-fmuv2为硬件平台,ChibiOS为底层操作系统:
AP_HAL.h 分析#include <stdint.h>#include "AP_HAL_Namespace.h"#include "AP_HAL_Boards.h" --->>> 板子选择比如 HAL_BOARD_CHIBIOS#include "AP_HAL_Macros.h"#include "AP_HAL_Main.h"/**<...
2019-10-19 10:46:12
1254
20
原创 C 实现封装继承多态
0. 概述> 通过struct 实现封装> 通过函数指针实现虚表> 成员包括:属性 和 方法> 属性使用普通的数据类型,方法使用函数指针类型> 通过函数指针成员 提供 对象./-> 成员的访问形式> 通过包含父类的实例对象super 实现继承关系> 通过在子类中实现虚表中的方法,修改父类中的虚表指针指向子类实现的虚表实例来实现多态&g...
2019-10-12 17:45:02
141
原创 研磨设计模式之《观察者模式observer》
概述观察者模式主要定义对象之间的一种一对多的依赖关系,当一个对象(被观察者)的状态发生改变时,所有依赖他的对象(观察者)都得到通知并进行相应的操作;这里reader(派生自obsever)从media(派生自subject)订阅新闻,当有新闻产生时media就会调用notify通知(调用对应观察者的update方法)所有订阅该新闻的reader都拿到新闻;1. subject 定义及实现/...
2019-10-06 18:44:45
222
原创 研磨设计模式之《模板方法模式template method》
概述:模板方法本质是将既定不变的步骤,流程,方法,算法封装起来对外提供统一的接口,以复用这些流程或算法步骤;我们以登录界面为例,假设有两种用户普通用户client和管理员用户master,他们都需要登录login,即包含获取用户信息find_get_user,密码加密encrypt_pwd,匹配获得结果match这几步,只是具体的实现可能不同。我们将登录步骤抽象为统一的模板,封装为login方法...
2019-10-06 17:34:58
187
原创 AP_HAL 分析, 以pixhawk-fmuv2为硬件平台,ChibiOS为底层操作系统:
1. class AP_HAL::AP_HAL,该接口类聚合了所有提供给应用层的硬件接口class AP_HAL::HAL {public: HAL(AP_HAL::UARTDriver* _uartA, // console AP_HAL::UARTDriver* _uartB, // 1st GPS AP_HAL::UARTDriver* _uart...
2019-09-21 10:09:22
1419
2
原创 一种C语言多态的实现示例
1. 抽象的shape类/************************************************************************* > File Name: shape.h > Author: XXDK > Email: v.manstein@qq.com > Created Time: Thu 12 Sep 2019 ...
2019-09-20 20:31:01
250
原创 记录一个linux内核链表使用示例
1. 链表文件:#ifndef __ULIST_H__#define __ULIST_H__/* * Simple doubly linked list implementation. * * Some of the internal functions ("__xxx") are useful when * manipulating whole lists rather than...
2019-08-29 20:12:08
347
原创 container_of学习记录
container_of 主要用于已知某个成员的地址: ptr该成员的名称:member;包含该成员的类型:struct container{…, member,…};得到包含该成员的类型的实例的地址,简释如下:#include<stdio.h>#include <stddef.h>/**< build in macro * #define ...
2019-04-05 16:06:13
143
原创 Ubunut16.04开机挂载ext4和ntfs格式的磁盘
具体流程:打开/etc/fstab 添加UUID=511eb7e7-e285-4c3a-abc0-4d8b40169e8e /home/username/DiskA ext4 rw 0 2UUID=4b17b4b3-0bcd-47dc-93e2-0af2739662c8 /home/username/DiskB ext4 rw 0 2UUID=65DF1F195FB62AE1 /hom...
2019-04-02 10:53:24
924
原创 关于dd命令一个比较好的解释
Q: What is the difference between the following?dd bs=1M count=128 if=/dev/zero of=testdd bs=1M count=128 if=/dev/zero of=test; syncdd bs=1M count=128 if=/dev/zero of=test conv=fdatasyncdd bs=1M ...
2019-03-25 16:56:28
670
原创 python decorator 之函数装饰类
python decorator 函数装饰类函数装饰类,在每次类实例化对象之前调用:def wrapClass(cls): def inner(a): print('class name:', cls.__name__) return cls(a) return inner@wrapClassclass Foo(): def __i...
2019-02-20 16:01:56
495
原创 记录一个简单的makefile示例
编译共享库####################################### makefile shared library ####################################### set your all envrionment.CC=g++CC_FLAGS=-D_FILELINESRCS=$(wildcard *.cpp */*.cpp)#...
2018-11-21 17:51:01
180
原创 设计模式之:建造者模式(builder)
建造者模式建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。Builder着重于对象的创建过程,即复杂对象由可分离的若干步骤进行组合而成,步骤的组合过程就是...
2018-10-24 23:09:47
137
原创 XR871SDK编译框架分析
XR871SDK编译框架分析:—&gt; 从/src/project/echocloud_demo/gcc 输入make编译, 解析当前文件夹下的Makefile文件:## Rules for building application## ----------------------------------------------------------------------...
2018-10-22 23:15:43
1946
原创 从汇编代码分析: C程序调用过程
源代码int func(int a, int b);int m = 10;int main(){ int i = 4; int j = 5; m = func(i, j); return 0;}int func(int a, int b){ int c = 0; c = a + b; return c;}gcc -S test.c 得到x86-64 汇编...
2018-10-16 15:03:10
346
原创 ld --whole-archive 和 --no-whole-archive学习记录
gnu 连接器ld的操作 --whole-archive 和 --no-whole-archive --whole-archive For each archive mentioned on the command line af- ter the --whole-archive option, include every ob- ...
2018-10-14 22:26:13
3413
原创 设计模式之: 组合模式(composite)
组合模式组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构,表征了一种相似对象的树形组织形式;其特点是,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦...
2018-10-09 17:17:29
165
原创 基于pixhawk2.4.6硬件和NUTTX系统的ardupilot启动流程:从上电到ArduCopter应用层代码
摘要: ardupilot启动:从上电到ArduCopter应用层代码 从上电到执行rcS脚本的过程 两块控制板(即fmu和io)上电后分别独立启动并运行各自的code。运行过程为: (1) 2套stm32_start()分别初始化fmu和io __start-- #处理 ...
2018-10-08 17:37:59
1292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人