摘要:linux内核中内存相关的操作函数1、kmalloc()/kfree()static __always_inline void *kmalloc(size_t size, gfp_t flags)内核空间申请指定大小的内存区域,返回内核空间虚拟地址。在函数实现中,如果申请的内存空间较大的话,会从bu...
阅读全文
摘要:几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:(1)I/O映射方式(I/O-mapped)典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I...
阅读全文
摘要:背景:很多学linux的人都会使用ps查看进程状态,却一直不清楚如何查看线程的状态。方法:可使用ps -a 或 ps -T命令查看一、使用ps -a命令查看比如拿我的测试进程./lc300-led-test举例,进程号为522,下一个进程/bin/sh的进程号为526,而522~525就是./lc3...
阅读全文
摘要:在使用线程时,使用gcc或arm-linux-gcc编译时,会出现错误:undefined reference to 'pthread_create'主要是以下两种原因:1、#include 请确认头文件是否添加2、-lpthread 编译选项,即在编译时需添加额外的编译选项,如使用arm-lin...
阅读全文
摘要:进程:进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程:线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的...
阅读全文
摘要:在编写应用层程序时,有时需要延时一下,这个时候该怎么办呢?在内核代码中,我们经常会看到这样的头文件使用#include ,心想着直接调用这个就可以了吧!可是在编译时发现,压根通不过,提示错误如下:error: No such file or directory.是不是觉得很奇怪,明明文件是存在的,怎...
阅读全文
摘要:1.内核修改涉及到的内核文件包括driver/char/tty_ioctl.c和arch/xx/include/asm/termbits.h在linux内核中,struct ktermios结构的c_cflags共有5个位用来标注波特率,其中位CBAUDEX表明使用的是POSIX标准波特率还是扩展波...
阅读全文
摘要:在linux系统下安装软件或复制文件的时候,复制不成功,出现错误如下:error: failed to stat /home/dade/.gvfs: Permission denied.表面上看:好像是权限不够,于是准备使用chmod -R 777 .gvfs 修改权限,可让你惊讶的是,root用户...
阅读全文
摘要:linux设备驱动--LED驱动最近正在学习设备驱动开发,因此打算写一个系列博客,即是对自己学习的一个总结,也是对自己的一个督促,有不对,不足,需要改正的地方还望大家指出,而且希望结识志同道合的朋友一起学习技术,共同进步。作者:liufei_learning(转载请注明出处)email:flying...
阅读全文
摘要:1.top使用权限:所有使用者使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]说明:即时显示process的动态d :改变显示的更新速度,或是在交谈式指令列( interactive command)按sq :没有任何延迟的显示速度,如果使用者是有...
阅读全文