
linux
文章平均质量分 68
进行中
这个作者很懒,什么都没留下…
展开
-
linux 字符设备驱动
字符设备驱动有两个重要的数据结构1.dev_t 用于描述设备的主从设备号 2.struct cdev用于描述字符设备的结构体 1.在内核中,dev_t裂隙用来保存设备的编号——包括主设备号和次设备号。dev_t是一个32位的结构体,其中12位是一个主设备号,20位是一个次设备号。我同可以从dev_t中获取主从设备号: MAJOR(dev_t dev);原创 2013-03-16 21:26:43 · 546 阅读 · 0 评论 -
线程死锁
死锁栈信息:__lll_lock_wait() from_L_lock_1008pthread_mutex_lock()死锁可能情况有两种:1、自己持有锁再去获取锁2、两个线程分别持有锁再去获取另一把锁解决方法步骤:1、查看所有加锁的地方是否释放锁,防止低级错误2、查看持有锁后的流程,是否加锁了再去获取锁,特别是有回调函数的时候。可能被忽略。 gdb调试死锁原创 2015-08-11 14:21:28 · 1940 阅读 · 0 评论 -
Linux 网络编程——select
select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for转载 2013-11-24 20:43:04 · 589 阅读 · 0 评论 -
linux 中skb结构
sk_buff是内核网络机构的基础,下面是通过看代码划出的大概的指针指向;原创 2013-10-07 22:25:20 · 1299 阅读 · 0 评论 -
linux僵尸进程
比较形象的比喻:进程在退出后就立刻变成了僵尸,然后等父进程收尸;如果这时它的父进程已经死了,也就是说这个进程是个孤儿,也没问题,它的父进程临死前”托孤“的init进程,也就是它的养父,会帮它收尸。如果这里它的父进程还没死,就要看这个父进程在做什么了?如果这个父进程对正在调用wait或waitpid操作,则表示这个父进程有准备棺材纸钱,这个 进程就可以入土为安了。或者这个父进程设置了SI原创 2013-10-28 21:27:10 · 656 阅读 · 0 评论 -
Linux 应用程序多线程编程
#include int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg);、创建线程,其中:th原创 2013-11-24 15:43:27 · 1030 阅读 · 0 评论 -
手动释放linux系统缓存
linux的内存查看:[root@localhost 0.1.0]# free -m total used free shared buffers cachedMem: 4032 694 3337 0 0转载 2013-10-17 09:18:43 · 616 阅读 · 0 评论 -
非阻塞socket编程
socket编程中可能出现阻塞的情况有原创 2014-08-06 12:49:15 · 799 阅读 · 0 评论 -
linux下core文件调试方法
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制 (1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。 (2)使用ulimit -c filesize命令,可以限原创 2013-10-28 12:41:40 · 513 阅读 · 0 评论 -
内核缓冲区slab的管理
刚了下Linux内核情景分析中的内核缓冲区管理,做个小总结。在Linux内核中,对于大块的内存的管理是用伙伴系统算法(buddy )管理。对于小块的内存则用slab管理。在slab方法中,每种重要的数据结构都有自己专用的缓冲区队列。每个队列中的“对象”的个数是动态变化的,不够时可以增添,空闲的时候可以释放,给系统回收。slab中,每种对象的缓冲区队列并非由各种各个对象直接构成,而是由一原创 2014-02-23 09:05:34 · 1029 阅读 · 0 评论 -
关于linux内存的管理
最近又稍微看了linux内存的管理,又稍微有一点shou原创 2014-06-14 10:10:57 · 532 阅读 · 0 评论 -
Linux 等待队列
内核中为每个CPU分配了不同的进程链表:原创 2014-06-15 22:30:20 · 530 阅读 · 0 评论 -
linux核内外通信——ioctl
ioctl可以通过对内核设备的控制达到核内外通信的目的,即在用户态控制内核动作。从ioctl这个名称上看,本意是针对I/O设备进行的控制操作,但实际并不限制是真正的I/O设备,可以是任何一个内核设备即可。 使用ioctl通信一般是通过字符设备实现的。所以首先要向内核注册一个字符设备,设置字符设备属性:STATIC struct miscdevice test_char_dev={原创 2014-08-10 21:54:31 · 1182 阅读 · 0 评论 -
虚拟机网络调试
今天要在虚拟机要用yum安装软件,发现一直安装失败,Temporary failure in name resolution网上查询发现是DNS配置错误导致域名解析错误(网址-->ip地址)。然后在虚拟机中ping www.baidu.com,unknown host,还是DNS有问题!!!换了几个DNS还是同样问题,然后在宿主机上ping www.baidu.com,是可以原创 2015-10-12 23:27:28 · 1043 阅读 · 0 评论 -
linux文件操作函数
linux常见文件及目录操作函数 1、open原型:#include sys/types.h>#include sys/stat.h>#include fcntl.h>int open(const char *pathname, int flags);作用:用flags指定的操作打开pathname指定的文件。成转载 2014-02-28 14:23:40 · 599 阅读 · 0 评论 -
linux用户程序调用栈打印backtrace
在调试程序的时候,有时候程序跑到一个分支不知道怎么调用到的/在走到不应该走的分支后希望把整个调用栈打印出现,在linux用户程序里面有一个glibc库函数backtrace可以打印出当前进程栈信息:int backtrace(void **buffer, int size);该函数用于获取当前现场的调用堆栈。函数返回值是指针数组中指针的个数,buffer是用来存放指针的指针数组,size是原创 2015-10-14 22:36:57 · 5515 阅读 · 0 评论