linux
蜗牛逐日
这个作者很懒,什么都没留下…
展开
-
__attribute__((format(printf, a, b)))
最近,在看lspci源码,第一次看到__attribute__((format(printf, a, b)))这种写法。因此,在这里记录下用法。功能:attribute format属性可以给被声明的函数加上类似printf或者scanf的特征,它可以使编译器检查函数声明和函数实际调用参数之间的格式化字符串是否匹配。format属性告诉编译器,按照printf, scanf等标准C函数参数格式规则对该函数的参数进行检查。这在我们自己封装调试信息的接口时非常的有用。format的语法格式为:format原创 2020-06-22 00:05:07 · 861 阅读 · 0 评论 -
vim配置
一、基础知识Vim 的全局配置一般在/etc/vim/vimrc或者/etc/vimrc,对所有用户生效。用户个人的配置在~/.vimrc。如果只对单次编辑启用某个配置项,可以在命令模式下,先输入一个冒号,再输入配置。举例来说,set number这个配置可以写在.vimrc里面,也可以在命令模式输入。:set number配置项一般都有"打开"和"关闭"两个设置。“关闭"就是在"打开"前...原创 2018-12-18 13:21:38 · 218 阅读 · 0 评论 -
内核风格代码管理clang-format checkpatch.pl
一、代码提交格式检查:1、tar zxvfp tool.tar.gz2、把解压的tool目录放到你的工程目录根目录3、把pre-commit这个文件cpcopy到repo的.git/hooks/目录下.4、执行git commit时就会执行格式检查了,如果格式不符合就会终止提交二、代码格式化1、//应为配置文件支持的语法是clang-format-5以上版本sudo apt-get install clang-format-5.02、把tool文件中的 .clang-format 到工程目录原创 2020-05-28 19:13:12 · 846 阅读 · 0 评论 -
ssh连接慢解决
connect to ssh too slownever fullfill the speed, faster, stronger.show the verboseuse -vvv option to show which step you stuck.$ ssh -vvv root@192.168.100.11OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017debug1: Reading configuration data原创 2020-05-12 09:20:55 · 322 阅读 · 0 评论 -
memcpy.S分析
/* SPDX-License-Identifier: GPL-2.0-only *//* * Copyright (C) 2013 Regents of the University of California */#include <linux/linkage.h>#include <asm/asm.h>/* void *memcpy(void *, c...原创 2019-12-13 17:39:47 · 304 阅读 · 0 评论 -
LInux串口编程
最近突然要测试串口,做一下简单的记录:https://www.cmrr.umn.edu/~strupp/serial.html上面是一个POSIX标准的serial编成说明,很详细;http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/这是一个串口编成的实例说明;https://blog.csdn.net/wooin/article/det...原创 2019-11-12 10:56:25 · 151 阅读 · 0 评论 -
C语言中嵌入汇编
在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly。本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 _)。注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因...转载 2019-10-17 20:58:05 · 10898 阅读 · 0 评论 -
vim 快捷键记录
vim -d FILE_LEFT FILE_RIGHT屏 幕被垂直分割,左右两侧分别显示被比较的两个文件。两个文件中连续的相同的行被折叠了起来,以便使用者能 把注意力集中在两个文件的差异上。只在某一文件中存在的行的背景色被设置为蓝色,而在另一文件中的对应位置被显示为绿色。两个文件中都存在,但是包含差异 的行显示为粉色背景,引起差异的文字用红色背景加以突出。除了用这种方法启动vim的diff...原创 2019-06-03 14:49:26 · 142 阅读 · 0 评论 -
解决linux根目录磁盘空间满
根目录磁盘写满,往往都是.log日志造成的,首先想到的是查找大的日志文件1、find查找根下大于800M的文件find / -size +800M -exec ls -lh {} ;1find / -size +800M -exec ls -lh {} ;找到大的日志文件关闭掉,或者更改到其他磁盘。2、如果查找后,发现没有大文件,可能有占用文件的相关进程没有关闭可以通过下面命令(如果...原创 2019-08-07 15:14:37 · 2374 阅读 · 0 评论 -
ubuntu更改环境变量的几种方式
Ubuntu设置环境变量的几种方法 1.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.1 永久的:需要修改配置文件,变量永久生效。 1.2 临时的:使用export命令声明即可,变量在关闭shell时失效。2.设置变量的三种方法2.1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】 用VI在文原创 2018-01-14 15:10:20 · 6694 阅读 · 1 评论 -
can't open /dev/ttys0: No such file or directory
buildroot编译的rootfs开机启动显示can’t open /dev/ttys0: No such file or directory修改/etc/inittab# Put a getty on the serial portttyS0::sysinit:/bin/shttys0::respawn:/sbin/getty -L ttys0 0 vt100 # GENERIC_...原创 2019-09-12 14:37:03 · 3976 阅读 · 0 评论 -
dynamic_debugfs使用
内核开启模块:CONFIG_DYNAMIC_DEBUG文件系统挂载:mount -t debugfs none /sys/kernel/debug/查看log的过滤格式:在语法层面上,一个命令由一系列的规格匹配组成,随后由一个标记来改变这规格。command ::= match-spec* flags-specmatch-spec常用来选择一个已知的dprintk()调用点的子集来套...原创 2019-09-14 00:01:16 · 344 阅读 · 0 评论 -
Linux驱动开发错误:module license 'unspecified' taints kernel
如果我们由多个C文件来构造一个模块,那么C文件的名字不能和模块名字一样。例如:hello_main.c,file1.c file2.c在Makefile:obj-m := hello.ohello-objs = file1.o file2.o hello_main.o。...原创 2019-09-14 02:11:13 · 575 阅读 · 0 评论 -
内核打印不分行
static void hex_dump_buffer(const char *s, int linenum, char *buf, int len){ int i = 0; char *tmpbuf = buf; pr_debug("%s line num: %d len 0x%x \n", s, linenum, len); for(...原创 2019-09-20 16:58:25 · 940 阅读 · 0 评论 -
使用debugfs
在進行Linux驅動開發時經常見到使用pr_debug和dev_dbg打印驅動的log,如果在內核配置時選擇了CONFIG_DYNAMIC_DEBUG宏,那麼就可以利用類似下面的命令打開對應文件的log:echo -n “file xxx.c +p” > /sys/kernel/debug/dynamic_debug/control但是有時候我們需要看到這個文件在內核啓動階段的log,那...转载 2019-09-23 11:25:02 · 971 阅读 · 0 评论 -
vim常用操作快捷键
移动word w删除光标到行结束 d$移动光标 2w 3e删除几个word d2w重新执行快捷键ctrl+R撤销整行操作U替换单个字符r删除单个字符x删除一个字符并进入插入模式cw ce c2w直接切换到哪一行 123G反向查找?x查找匹配的括号%替换命令:整行s/old/new/g 行与行:#,#s/old/new/g整个文件%s/old/new/g执行外部命令 ...原创 2019-05-13 10:25:25 · 125 阅读 · 0 评论 -
win10 使用linux子系统
系统升级到一周年正式版及以上(1607)依次在 设置 - 更新与安全 - 针对开发人员 选项中,启用”开发人员模式”在资源管理器中打开 控制面板\所有控制面板项\程序和功能 , 打开 启用或关闭 Windows功能 , 勾选 适用于Linux的Windows子系统(Beta)重启电脑命令行运行 lxrun /install /y 开始安装 安装速度取决于网络情况,下载的文件在 %...原创 2018-02-28 18:54:49 · 665 阅读 · 0 评论 -
ubuntu 创建samba服务器
一、安装Ubuntu samba服务器$ sudo apt-get install samba$ sudo apt-get install smbclient # Linux客户端测试用二、创建samba配置文件备份原配置文件$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak创建共享目录$ sudo mkd...原创 2018-07-03 15:24:50 · 429 阅读 · 0 评论 -
Linux查看文件和文件夹大小
查看目前所有文件系统的可用空间及使用情形df -h查看文件或文件夹的磁盘使用空间du -h --max-depth=1 your_dest_dir注意,du -h --max-depth=1 your_dest_dir 只会返回目标文件夹和目标文件夹下首层文件夹的大小,不会返回更深层的文件夹的大小,也不会返回文件的大小。要想返回更深层的文件夹的大小,可以设置–max-depth为...原创 2018-11-02 16:03:18 · 165 阅读 · 0 评论 -
linux 下获取公网IP
命令1.使用wgetwget http://ipecho.net/plain -O - -q ; echo命令2:使用curlcurl ipecho.net/plain; echo命令3:使用wgetwget http://observebox.com/ip -O - -q ; echo命令4:使用curlcurl icanhazip.com命令5:使用curlcurl ifco...转载 2019-02-25 11:12:14 · 5724 阅读 · 0 评论 -
ARM Linux设备树-DTS
通常所在目录kernel/arch/arm/boot/dtsdtc工具将test.dts文件,生成test.dtb文件;fdtdump工具可以将test.dtb文件,解析成test.dts文件参考链接:https://elinux.org/Device_Tree_Usage语法说明name<name>[@<unit-address>]name描述设备类型,比如...转载 2019-04-12 09:56:14 · 644 阅读 · 0 评论 -
ELF 符号表使用
ELF 符号表2018-01-06 Saturday linux , program-rdynamic VS. -g如果通过 readelf -s 查看,可以发现,使用 -rdynamic 选项后,在 .dynsym 段中增加了很多符号,包括本程序内定义的符号。-g 会添加调试信息(.debug_xxx),通常被 gdb 使用,可以通过 strip 删除。-rdynamic 是...转载 2019-04-09 11:37:28 · 1113 阅读 · 0 评论 -
交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别自己之前一直没搞清楚这两个交叉编译器到底有什么问题,特意google一番,总结如下,希望能帮到道上和我有同样困惑的兄弟……一. 什么是ABI和EABIABI: 二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architect...原创 2019-04-03 16:28:29 · 233 阅读 · 0 评论 -
Linux 3.10 ARM Device Tree 的初始化
[转] Linux 3.10 ARM Device Tree 的初始化本文代码均来自标准 linux kernel 3.10,可以到这里下载 https://www.kernel.org/以 arch/arm/mach-msm/board-dt-8960.c 为例,在该文件中的 msm_dt_init 函数的作用就是利用 dt(device tree)结构初始化 platform device...转载 2019-04-03 16:30:50 · 154 阅读 · 0 评论 -
linux 代码统计
wc -l file例如:homer@ubuntu:~/workspace/android/game$ wc -l LGameAndroid2DActivity.java 906 LGameAndroid2DActivity.java统计目录所有文件行数(全部目录):find . -name *.java | xargs wc -l例如:homer@ubuntu:~/wor...原创 2019-04-17 10:23:56 · 208 阅读 · 0 评论 -
source命令
source命令用法source FileName1source命令作用在当前bash环境下读取并执行FileName中的命令。*注:该命令通常用命令“.”来替代。使用范例:source filename. filename(中间有空格)123source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来...转载 2019-04-17 10:27:11 · 2054 阅读 · 0 评论 -
Shell脚本调试技术
一. 前言shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言相比,shell解释器缺乏相应的调试机制...转载 2019-04-17 10:32:21 · 180 阅读 · 0 评论 -
qemu实验一X86test
编译内核# 建一个目录$ mkdir build$ wget https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.10.104.tar.xz解压$ tar xvf linux-3.10.104.tar.xz$ cd linux-3.10.104$ make menuconfig$ make -j...原创 2019-04-17 15:17:47 · 401 阅读 · 0 评论 -
如何使用 objdump 查看源代码
在编译时必须使用-g选项,-g意为debug,一般可以修改源代码的 Makefile来实现 如:CC =(CROSSCOMPILE)gcc为CC=(CROSSCOM_PILE)gcc 为 CC =(CROSSCOMPILE)gcc为CC=(CROSSCOM_PILE)gcc -g使成生的vmlinux中含有debug信息所有生成 .o 的 rule 中再加一条 ...原创 2019-04-22 12:31:26 · 2249 阅读 · 0 评论 -
BOOTROM的理解
Bootrom(或Boot ROM)是嵌入处理器芯片内的一小块掩模ROM或写保护闪存。它包含处理器在上电或复位时执行的第一个代码。根据某些带式引脚或内部保险丝的配置,它可以决定从哪里加载要执行的代码的下一部分以及如何或是否验证其正确性或有效性。有时它可能包含其他功能,可能在引导期间或之后由用户代码使用。一些例子:iPhone启动ROM。嵌入在掩模ROM中并且无法修改。从闪存或USB(在DFU模式...原创 2019-04-15 10:55:36 · 37405 阅读 · 0 评论 -
grep 命令使用
检索某个目录树下的某类文件的关键字:grep -wrin chinaunix `find -name "*.tcl"`grep -Hwrin chinaunix `find -name "*.tcl"`(H表示列出文件,是默认选项)原创 2019-05-08 11:10:16 · 290 阅读 · 0 评论 -
LINUX总结第13篇:LINUX下动态库及版本号控制
感觉讲得挺详细 注: ln 命令用法 ln –s 源文件 目标文件 (目标文件即为软链接文件) 可用ls -l查看软链接文件具体指向哪个文件目录[-]1. File libhello.c2. File libhello.h3. File main.c前言针对同一动态组件的不同版本链接和加载。一、概念转载 2017-02-27 22:24:42 · 430 阅读 · 0 评论