
linux
文章平均质量分 55
西伯浪人
这个作者很懒,什么都没留下…
展开
-
u盘只读挂载解决
Ubuntu下挂载了一个U盘,进入U盘路径后,显示该U盘是只读文件系统,不能在里面进行新建,复制,删除等写操作。- 运行df 命令,查看U盘的挂载点(我的挂载点是 /media/kevin/disk)- 运行 fdisk -l 命令查看u盘的设备节点( 我的是 /dev/sdb1)- 此时运行 dosfsck -v -a /dev/sdb1 进行u盘的修复。- 卸载u盘 umount /media/kevin/disk。- 最后再重新挂载U盘,就会发现U盘可以进行写操作了。原创 2023-10-08 20:15:23 · 726 阅读 · 0 评论 -
timer_create使用问题
timer_create使用问题原创 2022-08-23 20:32:55 · 698 阅读 · 1 评论 -
ubuntu 64上的GCC如何编译32位程序
运行命令gcc -v显示:Target: x86_64-linux-gnu所以,我这里的gcc默认生成64位的程序。如果想编出32位的程序,就要加 -m32选项。可是我尝试了,还是不行。原来,需要安装东西。$sudoapt-getinstallbuild-essentialmodule-assistant $sudoapt-getinstallgcc-multilibg++-multilib 装好之后,就OK了。比如:gcc ...转载 2021-08-06 13:42:31 · 1423 阅读 · 1 评论 -
Linux系统时间获取处理
查了一些手册及blog(如:https://www.cnblogs.com/zxc2man/p/7660240.html)获取系统时间,在服务器验证OK,但在嵌入式单板时间会少时区校正。如#include "time.h"void main (){time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( "\007The current原创 2020-10-22 15:49:50 · 200 阅读 · 0 评论 -
linux Oops和Panic关系 .
常在河边走,哪能不湿鞋。用Linux,总有死机的时候,如果运气好,会看到一些所谓”Oops”信息(在屏幕上或系统日志中),比如:Unable to handle kernel paging request at virtual address f899b670printing eip:c01de48c*pde = 00737067Oops: 0002 [#1]Modules转载 2015-09-06 10:06:29 · 3424 阅读 · 0 评论 -
expected declaration specifiers or '...' before string constant编译告警
原因是内核模块使用MODULE_DESCRIPTION("xxx");MODULE_AUTHOR("xxx");MODULE_LICENSE("GPL");时没有包含module.h#include原创 2015-11-12 08:58:00 · 9228 阅读 · 0 评论 -
信号实现父子进程之间的同步--sigsuspend的作用
函数原型: #include int sigsuspend(const sigset_t *mask);作用: 用于在接收到某个信号之前,临时用mask替换进程的信号掩码,并暂停进程执行,直到收到信号为止。 The sigsuspend() function replaces the current signal mask of the转载 2016-10-31 10:17:50 · 447 阅读 · 0 评论 -
内存映射操作
http://blog.youkuaiyun.com/zhanglei4214/article/details/6653568如果想在用户态处理kernel分配的地址可以这么做。 首先用virt_addr = get_free_pages(GFP_KERNEL, order)分配内存,通过phy_addr = __pa(virt_addr)得到物理地址,然后在用户态将/dev/mem用mmap 映射出转载 2015-08-31 18:56:03 · 341 阅读 · 0 评论 -
ARM上的浮点运算
这篇文章对最近遇到上的 ARM上浮点运算的问题做一个总结。 首先,我们先看一下ARM处理器是如何处理浮点运算的。 交叉编译器在编译的时候,对于浮点运行会预设硬浮点运算FPA(Float Point Architecture),而没有FPA的CPU,比如SAMSUNG S3C2410/S3C2440,会使用FPE(Float Point Emulation 即软浮点),这样在速度上就会遇到极转载 2015-07-24 08:45:05 · 933 阅读 · 0 评论 -
Linux tmpfs的使用问题解析
Linux tmpfs的使用问题解析在不同的版本系统查看tmpfs分区的情况,有的可以查询到,有的则不行且不报错。如df命令,对于正常的结果如下:tmpfs 15360 96 15264 1% /var异常情况,则不会有该条目。尝试编译测试程序利用statfs获取挂载点的空间使用情况,在异常的情况下空间数据为0。测试程序过程为:1)stat获取挂载点文件类型原创 2015-08-04 15:07:50 · 1100 阅读 · 0 评论 -
linux kernel的中断子系统之(八):softirq
讲的蛮好的,对于锁的使用结合起来易于理解。一、前言对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那么紧急需要处理的事情。在执行bottom half的时候,是开中断的。有多种bottom half的机制,例如:softirq、tasklet、转载 2015-08-12 09:38:18 · 599 阅读 · 0 评论 -
nice() getpriority() setpriority()
(源:http://blog.sina.com.cn/s/blog_596f35310100aukf.html)nice函数 功能描述: 改变进程优先级。在调用进程的nice值上添加参数指定的值。较高的nice值意味值较低的优先级,只有超级用户才可指定负增量--即提升优先级。nice的取值范围可参考getpriority的描述。用法: #incl转载 2015-06-15 18:58:37 · 1643 阅读 · 0 评论 -
USB设备访问管理
主题是面向某一用户空间的设备访问管理。大家都知道通常的设备访问流程是:内核设备驱动,包括usb驱动,一般情况下是通过kobject_uevent接口上报uevent消息到用户空间,由用户管理进程,如udevd、ueventd等接收uevent消息,然后解析,创建设备文件节点。之后,设备访问程序才能通过设备文件节点访问操作设备。管理方法讨论如果不希望用户空间访问某设备,最直接的方法是不提原创 2015-11-24 14:01:27 · 853 阅读 · 0 评论 -
煮饺子与mesos之间妙不可言的关系
这篇原文文章转载自:http://www.aiweibang.com/yuedu/69570354.html.原文作者:小黑羊JoinWings一直想写一篇介绍mesos的文章,文章可以不讲技术细节,但一定可以让一个外行一下子就明白什么是mesos.mesos能干什么.很荣幸看到了,这样的一篇文章《煮饺子与mesos之间妙不可言的关系》,佩服的五体投地!此乃神人也!我觉得怎么样也不会比转载 2016-06-08 15:49:13 · 576 阅读 · 0 评论 -
sigsuspend 函数使用 及与 pause 区别
sigsuspend函数 :sigsuspend函数接受一个信号集指针,将信号屏蔽字设置为信号集中的值,在进程接受到一个信号之前,进程会挂起,当捕捉一个信号,首先执行信号处理程序,然后从sigsuspend返回,最后将信号屏蔽字恢复为调用sigsuspend之前的值。#include int sigsuspend(const sigset_t *sigmask);转载 2016-10-31 09:54:18 · 714 阅读 · 0 评论 -
协程
协程从事软件开发的同学,一般都对进程和线程有一些认识。但协程可能很少遇到或讲到,当然有些语言天生就有协程的使用概念,比如lua。 有人讲,历史上是先有协程的,是OS用来模拟多任务并发。这一点学过OS的应该都能领悟。概念上讲,它是非抢占式的,所以存在多任务时间片使用不公平的问题。就个人理解而言,现在人们通常将,用户态的调度单位称为“协程”,也称作“用户态线程”。进程它与进程、线程的显著差异就是,1)原创 2017-04-16 10:29:10 · 435 阅读 · 0 评论 -
编译出现File name too long问题
今天编译1个libffi时,出现了File name too long问题,make[7]: stat: ffitarget.h: File name too longmake[7]: *** No rule to make target `ffitarget.h', needed by `all-am'. Stop.刚开始以为是编译路径过长,调整后,依然相同错误。经过搜索了解,原创 2017-05-12 16:12:57 · 9292 阅读 · 0 评论 -
Linux内核模块编译注意事项
今天一位同事讲,编译内核以外的模块时遇到了一个问题:aarch64-buildroot-linux-gnu-gcc.br_real: error: unrecognized argument in option ‘-mabi=apcs-gnu’aarch64-buildroot-linux-gnu-gcc.br_real: note: valid arguments to ‘-mabi=’原创 2018-01-04 11:26:30 · 5003 阅读 · 1 评论 -
linux多线程的cpu绑定及继承
最近遇到一个问题,在子线程中修改main的cpu绑定成功,然后,fork子进程,观察新fork出来的子进程cpu绑定与父进程的修改后的cpu绑定不一致。经过一番分析,找到了原因:1)我们使用的线程库是nptl库;2)在子线程中修改main的cpu绑定,只会修改main线程的cpu绑定,子线程本身的cpu绑定不会发生变化;3)子线程中fork子进程,子进程继承到的cpu绑定关系来自于...原创 2019-04-08 11:45:37 · 1160 阅读 · 1 评论 -
ARMLinux启动过程分析
摘 要: 嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不 同体系结构的处理器来说Linux的启动过程也有所不同。本文以S3C2410 ARM处理器为例, 详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。 关键词:ARM Linux bootloader 启动过程 中图分类号:TP31转载 2014-07-21 14:29:06 · 539 阅读 · 0 评论 -
Android APP线程是由谁创建的
通过老罗的《Dalvik虚拟机进程和线程的创建过程分析》知道Android APP线程是通过pthread_create创建的。这就意味着新创建线程的父亲是pthread_create的调用者,而非zygote。我以前一直以为所有APP进程或线程都是通过zygote创建出来的,因为通过ps或proc文件可以看到所有APP的父亲都是zygote,这怎么解释呢?搜索了好久,没有找到相应原创 2015-06-16 20:52:43 · 1039 阅读 · 0 评论 -
闰秒对linux的影响分析及解决
大概了解了下闰秒及其如何让linux kernel panic:闰秒的产生:日常所用时间UTC,是根据地球自转计时,跟精确的原子时钟存在偏差,为了保持一致,每偏差1s就进行1次同步,就产生了闰秒。即如人们所讲的,在今年6月30号出现23:59:60。开源的NTPD在同步服务器时间时,直接调用系统调用adjtimex到达内核的ntp处理逻辑,内核的do_adjtimex经过一系列处理逻辑,判原创 2015-06-16 19:43:21 · 3472 阅读 · 0 评论 -
linux free命令中buffer与cache的区别
~$ free total used free shared buffers cachedMem: 1025204 981636 43568 0 38244 387808-/+ buffers/cache:转载 2015-02-12 19:52:18 · 517 阅读 · 0 评论 -
Oprofile交叉编译实战
完成交叉编译前,查看了不少资料,实践过程不是太顺利。现将原创 2014-08-26 16:40:09 · 1742 阅读 · 0 评论 -
bget说明
http://www.eetop.cn/blog/html/52/51552-19056.html转载 2014-08-11 10:19:02 · 924 阅读 · 0 评论 -
perfbook 读书笔记:ACCESS_ONCE()
如果你看过 Linux 内核中的 RCU 的实现,你应该注意到了这个叫做 ACCESS_ONCE() 宏,但是并没有很多人真正理解它的含义。网上有的地方甚至对此有错误的解释,所以特写此文来澄清一下。虽然我早在读 perfbook 之前就了解了 ACCESS_ONCE() 的含义(通过询问大牛 Paul),但这本书中正好也没有很详细地介绍这个宏,所以就当是此书的读书笔记了。定义它的定义很转载 2014-08-01 10:31:47 · 666 阅读 · 0 评论 -
oProfile的安装与使用
0.引言基于DPDK的发包工具的性能今天已经达到双向1900Wpps了,比昨天又高了200Wpps,正是得益于oProfile检测与调优的结果,而且今天还只是很简单的用了一下(类似于下面的示例),跟踪出对几个结构体字段的访问比较缓慢,于是对结构体字段进行了仔细的顺序调整与Cache对齐(之前急于功能实现,没顾及这些字段的排布),结果性能马上飙升了200Wpps,开心死我了。后天(明天外出办理其转载 2014-08-19 09:02:13 · 712 阅读 · 0 评论 -
linux线程调度函数调用
pthread_setschedparam()是修改现在正在执行中的线程,具体地说,就是在pthread_create之后才能使用。pthread_attr_setschedparam是修改将要创建的线程的参数,在pthread_create就要使用了。原创 2014-05-08 19:06:23 · 626 阅读 · 0 评论 -
用 OProfile 彻底了解性能
用 OProfile 彻底了解性能识别现实系统中的性能瓶颈PrPrasanna S. Panchamukhi, 开发工程师, Linux Technology Center, IBM India Software LabsPrPrasanna S. Panchamukhi 作为一个开发人员,在印度班加罗尔的 IBM Linux 技术中心工作。他当前的工作是改进 Linux转载 2014-05-08 19:13:12 · 489 阅读 · 0 评论 -
BogoMips mini-Howto
zz:http://www.tldp.org/HOWTO/BogoMips/bogo-faq.html 3. The frequently asked questions about BogoMipsSeveral authors have contributed to my knowledge of BogoMips. In this place, I would like to转载 2014-04-03 11:21:58 · 843 阅读 · 0 评论 -
linux查看文件依赖的库
一般使用ldd命令查看文件所依赖的库(.so)ldd file工具链还提供了另外2个命令可以使用xx-linux-readelf -a "your binary" | grep "Shared"xx-linux-objdump -x "your binary" | grep "NEEDED"曲线方式启动可执行文件,获取其pidcat /proc/pid/maps获取其所原创 2014-02-13 18:44:38 · 1845 阅读 · 0 评论 -
目标文件格式分析工具: ar,nm,objdump,objcopy,readelf
zz http://www.cnblogs.com/hnrainll/archive/2012/02/24/2366550.html如果普通编程不需要了解这些东西,如果想精确控制你的目标文件的格式或者你想查看一下文件里的内容以便作出某种判断,那么你可以看一下下面的工具:ar,nm,objdump,objcopy。具体用法请参考man在线手册。ar基本用法a转载 2014-02-22 17:34:25 · 769 阅读 · 0 评论 -
jffs2文件系统删除文件不释放空间
最近在调试时发现对jffs2文件系统下的文件执行删除动作时,不释放空间。翻阅了原创 2014-09-12 15:29:15 · 3576 阅读 · 1 评论 -
free命令中的buffers和cached
最近有好几位同事问我关于free(1)结果中buffers和cached的区别,一直很佩服@淘宝褚霸 对知识的无私分享,所以今天就以这个话题开始我的blog吧,但愿有机会时常更新它,争取2012年能够做到至少一个月一篇吧,呵呵!闲话少说,进入正题。 free命令大家都经常使用, taotaoma@tma-laptop1:~/kernel/linux-2.6$ free转载 2015-01-23 16:24:22 · 778 阅读 · 0 评论 -
Linux Kernel: buffers和cached的区别
The page cache caches pages of files to optimize file I/O. The buffer cache caches disk blocks to optimize block I/O. Page Cache缓存文件内容以优化文件I/O,Buffer Cache缓存磁盘blocks以优化block I/O。 注释:Block 块是用来管理磁盘转载 2015-01-23 16:27:10 · 799 阅读 · 0 评论 -
为AM335x移植Linux内核主线代码——了解dts
问题一:以前的Linux Kernel如何描述硬件,现在又如何描述呢?在以前的内核版本中:1)内核包含了对硬件的全部描述;2)bootloader会加载一个二进制的内核镜像,并执行它,比如uImage或者zImage;3)bootloader会提供一些额外的信息,成为ATAGS,它的地址会通过r2寄存器传给内核; ATAGS包含了内存大小和地址,kernel comm转载 2015-01-10 16:05:48 · 3174 阅读 · 1 评论 -
防止内存泄露 Linux下用Valgrind, MALLOC_CHECK做检查
Q: 在执行一个程序时,出现如下错误:*** glibc detected *** double free or corruption : 0x0937d008 ***是怎么回事?A: 设置MALLOC_CHECK_环境变量再运行程序,呵呵,错误信息消失MALLOC_CHECK_=0 ./myprogram红 帽企业 Linux 4 提供的 glibc 可以执行转载 2014-11-06 16:08:46 · 1482 阅读 · 0 评论 -
浅谈dbus udev udisks
浅谈dbus udev udisksudevthe workflow of udev:启动初始化时, /dev目录使用tmpfs挂载.然后, Udev拷贝/lib/udev/devices 的静态设备节点到 /dev 目录.Udev守护进程开始运行,为所有连接到系统的设备收集来自内核的uevents.Udev守护进程解析uevent数转载 2014-10-31 15:58:28 · 1265 阅读 · 0 评论 -
解读udev的几个作用
解读udev的几个作用zz: udev是一种工具,它能够根据系统中的硬件设备的状况动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下,使用udev后,在/dev下面只包含系统中真实存在的设备。它于硬件平台无关的,位于用户空间,需要内核sysfs和tmpfs的支持,sysfs为udev提供设备入口和uevent通道,tmpfs为udev设备文件提转载 2014-10-31 15:24:55 · 612 阅读 · 0 评论 -
交叉编译器的信息查询
作者:Sam(甄峰) sam_code@hotmail.com Sam常使用各种不同的交叉编译器编译同一份程序。发现不同的编译器在使用同样的Makefile时,会有不同的反应。一直搞不清是怎么回事。现在学习之: 1. 如何查看交叉编译器信息:#gcc -v#arm-linux-gcc -v#mipsel-linux-gcc -v转载 2014-11-25 16:29:15 · 2001 阅读 · 0 评论