Linux
文章平均质量分 51
DADA2ndTIAN
这个作者很懒,什么都没留下…
展开
-
LINUX nand flash 驱动ECC说明
结构体释义struct nand_ecclayout {uint32_t eccbytes; //表示使用几个ecc字节uint32_t eccpos[128]; //表示ecc占用的位置,因为现在大页面4kbyte也就128个,所以这里写了128,以后有更大页面的,这里也要改了。uint32_t oobavail; //有几个oob可用,这个跟下面的成员有点像,一般用下面的struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];原创 2022-07-06 16:56:42 · 1120 阅读 · 0 评论 -
LINUX线程(六)生产者,消费者同步实例
消费者:一,创建并加锁phtread_mutex_t mutex;phtread_mutex_init()phtread_mutex_lockphtread_cond_wait() //等待条件满足,1)阻塞等条件变量2)解锁unlock3)加锁5. 访问共享数据6. 解锁,释放条件变量,释放锁生产者:phtread_mutext_lock生产数据,phtread_mutext_unlockphtread-cond_signal/phtread-cond_broadca原创 2021-01-09 16:31:24 · 182 阅读 · 0 评论 -
LINUX线程(五)线程同步
线程同步,指一个线程发出同一功能调用时,在没有得到结果之前,该调用不返回。同时其他线程为保证数据一致性,不能调用该功能同步方法锁的使用:建议锁,对公共数据进行保护,所有线程应该在访问公共数据前先拿锁再访问,但锁本身不具备强制性互斥量pthread_mutex_t mutexphtread_mutex_init(&mutex,NULL);phtread_mutex_destroy(&mutex,NULL);pthread_mutex_lock(&mutex)pthre原创 2021-01-09 15:51:46 · 215 阅读 · 0 评论 -
LINUX 线程 (二)控制原语
函数原型说明进程对应功能接口pthread_t pthread_self(void);返回线程ID,线程ID是进程内部,识别标志(不同进程中,线程ID允许相同)getpidint phtread_create(phtread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void ),void arg);创建新线程。参数1:传出参数,保存新线程ID;参数2:线程属性默认NULL;参数3:线程体,该函数...原创 2021-01-09 12:52:41 · 153 阅读 · 0 评论 -
LINUX 线程(四)属性设置线程分离
线程属性初始化int pthread_attr_init(phtread_attr_t *attr); 成功:0 ;失败,错误号销毁线程属性int pthread_attr_destroy(phtread_attr_t *attr); 成功:0 ;失败,错误号设置线程属性 分离状态int phtread_attr_setdetachstate(phtread_attr_t *attr,int detachstate);获取线程属性int phtread_attr_getdetachstate(原创 2021-01-09 12:47:58 · 345 阅读 · 0 评论 -
LINUX 线程(三)循环创键多个子线程
int main(){ int i ,ret; for(i = 0; i<N ;i++){ ret = pthread_create(&tid, NULL,tfn,NULL); if(ret!=0) perror(..); }}原创 2021-01-09 10:05:09 · 149 阅读 · 0 评论 -
LINUX 线程(一)概念
进程: 有独立的进程地址空间,有独立的pcb ,是分配资源的最小单位线程:有独立的PCB,没有独立的进程地址空间 ,是最小的执行单位ps -Lf 进程id : 查看对应进程下的线程数.LWP : 线程号,CPU 执行的最小单位线程ID 与LWP 不是同一概念,线程ID 用于同一进程中的线程管理线程共享.text .data. .rodata .bss heap 全局变量(除errno)线程独享栈空间(内核栈,用户栈)线程id处理器现场和栈指针errno信号屏蔽字调度原创 2020-12-28 13:16:52 · 108 阅读 · 1 评论 -
linux信号之作业控制
文章目录概述概述SIGTTIN 当一个后台进程组进程试图读其控制终端时,终端驱动程序产生此信号。(见9 . 8节中对此问题的讨论。)在下列例外情形下不产生此信号,此时读操作返回出错, e r r n o设置为E I O:( a )读进程忽略或阻塞此信号,或( b )读进程所属的进程组是孤儿进程组。...原创 2020-08-16 09:11:11 · 123 阅读 · 0 评论 -
linux信号【5】sigsetjmp和siglongjmp函数
文章目录简述简述这两个函数与 s e t j m p和l o n g j m p函数非常相似,都是用于程序的非局部转移。而在信号处理程序中,对应使用的就是sigsetjmp和siglongjmp函数。在信号处理程序中,有时需要返回到序的主循环中,而不是从该处理程序返回。为什么不直接使用 s e t j m p和l o n g j m p呢? 因为用l o n g j m p时有一个问题。当捕捉到一个信号时,进入信号捕捉函数,此时当前信号被自动地加到进程的信号屏蔽字中。这阻止了后来产生的这种信号中断此信原创 2020-08-11 19:46:54 · 512 阅读 · 0 评论 -
linux 信号【3】信号集和信号集函数
文章目录信号集信号集初始化信号集的变更信号集测试sigprocmask函数信号集数据类型s i g s e t _ t以包含一个信号集,表示多个信号的集合#include <signal.h>信号集初始化int sigemptyset(sigset_t * s e t) ;初始化由s e t指向的信号集,使排除其中所有信号int sigfillset(sigset_t * s e t) ;函数 s i g f i l l s e t初始化由s e t指向的信号集,使其包括所有信号原创 2020-08-11 19:01:40 · 185 阅读 · 0 评论 -
LINUX 信号【1】基础知识
文章目录信号是什么信号的三种处理方式信号的状态信号是什么信号是软件中断。很多比较重要的应用程序都需处理信号。信号提供了一种处理异步事件的方法:终端用户键入中断键,则会通过信号机构停止一个程序。信号的三种处理方式(1) 忽略此信号。大多数信号都可使用这种方式进行处理,但有两种信号却决不能被忽略。它们是:S I G K I L L和S I G S TO P。这两种信号不能被忽略的原因是:它们向超级用户提供一种使进程终止或停止的可靠方法。另外,如果忽略某些由硬件异常产生的信号(例如非法存储访问或除原创 2020-08-11 17:12:23 · 153 阅读 · 0 评论 -
linux信号【2】signal&sigaction
文章目录signalsigactionkillraisealarmpausesignal#include <signal.h>void (signal (int s i g n o, void ( f u n c)(int))) (int);s返回:成功则为以前的信号处理配置,若出错则为 S I G _ E R Rs i g n o参数是表1 0 - 1中的信号名。f u n c的值是:( a )常数S I G _ I G N,或( b )常数S I G _ D F L,或(原创 2020-08-11 17:09:06 · 159 阅读 · 0 评论 -
linux信号【4】相关函数kill&raise&alarm&pause
killint kill(pid_t p i d, int s i g n o) ;k i l l函数将信号发送给进程或进程组。k i l l的p i d参数有四种不同的情况:p i d > 0 将信号发送给进程I D为p i d的进程。p i d == 0 将信号发送给其进程组I D等于发送进程的进程组I D,而且发送进程有许可权向其发送信号的所有进程。这里用的术语“所有进程”不包括实现定义的系统进程集。对于大多数 U N I X系统,系统进程集包括:交换进程(pid 0),init原创 2020-08-11 16:27:56 · 172 阅读 · 0 评论 -
linux makefile 编译 问题 command not found
clean::rm -f xxx如上 报错 /bin/sh : 1:rm : not found修改为下面格式后OKclean::@rm -f xxx原创 2020-07-22 10:35:41 · 3118 阅读 · 0 评论 -
/mnt/share 下无法修改权限
/mnt/share 下无法修改权限 ,如果需要修改权限,最好把文件移动到其他目录,具体原因不清楚,请高人指点原创 2020-07-14 09:25:26 · 963 阅读 · 0 评论 -
linux 新增一个模块的kconfig&makefile 配置步骤
1.在你的源文件目录中kconfig 文件,添加config_**配置, 如下config HELLO_MODULEtristate “hello-tristate”default yhelpthis is help test这样当make menuconfig时 ,将会出现 hello-tristate选项。你可以根据需要选择不同的config类型不同类型的效果如下在源文件目录中makefile 文件中添加如下内容:obj-$(CONFIG_HELLO_MODULE) += h转载 2020-06-03 17:59:09 · 648 阅读 · 0 评论 -
shell 重定向
转自:https://blog.csdn.net/qq_31073871/article/details/80810306shell重定向介绍就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕,甚至播放设备中。而对于某些后台运行的程序,输入可能来自于外部的一些文件,运算的结果通常又写到其他的文件中...转载 2020-05-01 21:39:10 · 1824 阅读 · 0 评论 -
linux 系统时间 硬件时间 及 时区设置
系统时间 硬件时间在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。用date命令对系统时间进行设置后,并不会去修改硬...转载 2020-04-30 16:40:38 · 1113 阅读 · 0 评论 -
shell 从函数中提取 结果(标准输出) 到 变量
#!/bin/bashset -xset -efuncc(){ echo “output”}count = $(fucc)retv= $?echo $countecho $retv上面的脚本输出output0所以 $? 是函数返回值,而通过$( func) 来获取一般函数执行结果...原创 2020-04-26 16:48:51 · 2035 阅读 · 0 评论 -
hexdump format string 用法
-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:‘a/b “format1” “format2”’每个格式字符串由三部分组成,每个由空格分隔,第一个形如a/b,b表示对每b个输入字节应用format1格式,a表示对每a个输入字节应用format2格式,一般a>b,且b只能为1,2,4,另外a可以省略,省略则a=1。format1和format2中可以使用类似print...转载 2020-04-26 15:41:29 · 836 阅读 · 0 评论 -
gcc 2.95.4 deb安装
文章目录下载安装包安装多版本管理由于想调试旧版本的内核2.4.22 ,用ubuntu自带的编译器无法编译通过,所以需要该内核要求的(gcc2.95.3),从网上下载编译源码折腾了一遍,没招了,这是那篇没有成功的源码编译经过 通过deb 包安装其实更简单,记录如下下载安装包地址需要下载如下几个文件:安装sudo dpkg -i *deb 一次安装通过ls -l /usr/bin/g...原创 2020-02-21 09:48:43 · 1048 阅读 · 0 评论 -
括号中的可选、必选表示
[]:内的内容意思是:可写可不写例如:/home下就一个list 文件,使用ls --help中的 Usage: ls [OPTION]… [FILE]…{}:那就必须要在{}内给出的选择里选一个。<>:表示必选命令行语法字符在命令行语法中,某些字符与格式有着特殊的意义与含义。 本文档中的命令行语法使用以下字符格式:方括号 [ ][] 表示里面的元素(参数、值或信息)...转载 2020-02-13 09:36:08 · 4471 阅读 · 2 评论 -
openwrt 相关资料
前言 openwrt简介openwrt(一):openwrt源码下载及编译环境搭建openwrt(二) 配置openwrt及编译OpenWRT 编译过程原创 2020-02-08 09:48:41 · 183 阅读 · 0 评论 -
一次linux死锁问题的调试
系统环境内核配置:单核单cpu,禁抢占,内核版本linux4.1.15问题描述读取sys节点无法返回,系统没有报panic 等ops 信息,这个现象和死锁比较像,打开内核lockdep 配置来检测调试:如下图,打开这些检测。来进行定位好了,运行后重新操作一遍果然打印出来信息:[ 223.052568] mm ERR line = 869 mm_read_data_and_r...原创 2020-02-08 09:44:14 · 1749 阅读 · 0 评论 -
git push--解决 /etc/ssh/ssh_config: Bad configuration option: permitrootlogin 问题
git push 遇到如下错误编辑/etc/ssh/ssh_config,permitrootlogin这个配置应该 放到sshd_config(服务器段配置)中,ssh_config是客户端配置,所以直接把这行去掉就了...原创 2020-02-06 08:22:23 · 20329 阅读 · 1 评论 -
git---如何解决The authenticity of host can't be established
新生成密钥的时候,git clone或者push的时候,可能会报这样的错误:The authenticity of host 'gitee.com (xxx.xxx.xxx.xxx)' can't be established.ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxx.Google之后明白,文件夹内少了一个known_...转载 2020-02-06 08:14:43 · 15585 阅读 · 2 评论 -
YouCompleteMe 安装问题 :YouCompleteMe/third_party/ycmd/third_party/cregex" does not appear to contain CM
问题如下:CMake Error: The source directory “/home/zoei/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/cregex” does not appear to contain CMakeLists.txt.Specify --help for usage, or press the hel...转载 2020-02-03 09:21:52 · 2041 阅读 · 3 评论 -
ubuntukylin 18.04设置静态 ip
环境:虚拟机的网络连接模式为NAT那在window 下查看ip 地址,看到有个vmnet8 如下第一步:配置静态IP地址:打开/etc/network/interfaces文件,内容为以上表示默认使用DHCP分配IP,如果想指定静态IP,则需要如下的修改,注意 eth0 不是固定的,需要设置对应的网络接口...原创 2020-01-25 07:49:11 · 1928 阅读 · 0 评论 -
linux 下 使用 update-alternatives 进行版本管理
在 linux 开发中经常 会是用到不同的工具链版本,如 gcc ,这时可是使用 update-alternatives来管理不同版本的gcc命令用法update-alternatives --install link : 符号链接的绝对路径名name: 符号链接名(无路径)path : 符号指向目标的绝对路径名priority: 数字越大,优先级越高 (auto 模式下)...原创 2020-01-20 14:57:49 · 547 阅读 · 0 评论 -
如何 给 linux 系统升级 内核版本
虚拟机装的是ubuntukylin 18.04Lts 版本,自带的内核版本可以通过 cat /proc/version 查看升级步骤1.安装软件包sudo apt-get install libncurses5-dev libssl-dev build-essential openssl2. 下载解压内核源码包到网站下载升级的内核版本 https://mirrors.edge.kerne...原创 2020-01-20 13:00:31 · 4880 阅读 · 0 评论 -
vi 退格 方向键等键盘问题的解决
使用优麒麟预装的vi 编辑文件,退格 以及方向键出现怪异的东西,一开始以为是键盘布局有问题,但是在shell 中没有出现过问题,上网发现 vi 设置命令 set nocompatible,可以解决该问题,不过每次输入太麻烦,直接修改 /etc/vim/vimrc.tinyset compatible 改成set nocompatible参考:https://www.iteye.com/blo...原创 2020-01-20 09:50:34 · 427 阅读 · 1 评论 -
优麒麟18.04无法使用root ssh登录的解决
修改 /etc/ssh/sshd_config 文件 如下注释掉 usePAM yes并添加 PermitRootLogin yes原创 2020-01-19 22:33:44 · 2654 阅读 · 0 评论 -
ldd 查看程序依赖的共享库
#ldd 程序名/库名原创 2020-01-07 17:48:42 · 270 阅读 · 0 评论 -
c运行库之 c语言标准库、glibc、 gcc库
C语言标准库即ANSI C ,非常轻量,仅包含,数学函数,字符/字符串处理,io 等基本方面,处理目前的版本是c99glibc库即GNU c library,也是目前linux 平台的c 标准库,是 C语言标准库的超集,在其基础上增加了线程操作等扩展,其动态库位于/lib/libc.so.6,静态库位于/usr/lib/libc.agcc库静态库:libgcc.a动态库: libgcc...原创 2020-01-06 18:24:36 · 1833 阅读 · 0 评论 -
x86-64的调用约定,忽略__stdcall、__cdecl、__fastcall、_thiscal
在设计调用约定时,x64 体系结构利用机会清除了现有 Win32 调用约定(如 __stdcall、__cdecl、__fastcall、_thiscall 等)的混乱。在 Win64 中,只有一个本机调用约定而 __cdecl 之类的修饰符都被编译器忽略。除此之外,减少调用约定行为还为可调试性带来了好处。如下图:源文件声明调用约定,可以是编译时出现如下警告参考::x86 x64下调用...原创 2020-01-04 17:48:03 · 1548 阅读 · 0 评论 -
usb 驱动学习笔记
基本概念配置(configuration)&设置(setting)配置代表USB 的一种功能设置 是具体属性或参数的设置(如音量)。一个设备可能有多种配置,如一个手机既可以做u盘,也可以摄像;配置代表一种功能。一种配置可能使用多种接口,接口可以有多种设置。更准确的说是设备可以有多个配置,配置里可以包含一个或更多的接口,而接口通常又具有一个或更多的设置四种 usb 描述符设备描...原创 2020-01-03 18:44:13 · 379 阅读 · 0 评论 -
RCU操作
基本RCU操作对于reader,RCU的操作包括:(1)rcu_read_lock,用来标识RCU read side临界区的开始。(2)rcu_dereference,该接口用来获取RCU protected pointer。reader要访问RCU保护的共享数据,当然要获取RCU protected pointer,然后通过该指针进行dereference的操作。(3)rcu_read...原创 2020-01-03 18:40:19 · 614 阅读 · 0 评论 -
Read/Write spinlock工作原理
加锁的逻辑:(1)假设临界区内没有任何的thread,这时候任何read thread或者write thread可以进入,但是只能是其一。(2)假设临界区内有一个read thread,这时候新来的read thread可以任意进入,但是write thread不可以进入(3)假设临界区内有一个write thread,这时候任何的read thread或者write thread都不可以...原创 2020-01-03 18:38:30 · 194 阅读 · 0 评论 -
down,down_interruptible与down_trylock区别
不可获得信号时,down_interruptible会进入休眠状态,而down_trylock永不会休眠,而是立即返回非零值,down则一直等待原创 2020-01-03 18:37:14 · 1180 阅读 · 0 评论 -
什么是可重入函数
什么是可重入函数?可以被中断的函数,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误...原创 2020-01-03 18:36:02 · 391 阅读 · 0 评论