- 博客(41)
- 资源 (19)
- 收藏
- 关注
转载 linux下core文件调试方法
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制 (1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。 (2)使用ulimit -c filesize命令,可以限
2014-04-26 16:45:48
487
转载 结构体名问题
结构体名问题问题:#include struct {char a[3]; int b;}data={"he",10}; int main(void) {printf("%c %d",data); return 0;} 输出结果是 h 10 然后我改变代码 #include struct {char a[3]; char b[3];
2014-04-23 16:44:03
731
转载 对数组名取地址是什么?
这两天有人问以下有什么代码有什么不同?1 int array[100];2 3 memset(array, 0, sizeof(array));4 memset(&array, 0, sizeof(array));第3行和第4行有什么不同吗?其实从效果上来说是一样的,但是这里要注意 array 和 &array 的类型是不同的。array 相当于 &array
2014-04-23 16:27:00
746
转载 对数组名取地址是什么?
这两天有人问以下有什么代码有什么不同?第3行和第4行有什么不同吗?其实从效果上来说是一样的,但是这里要注意 array 和 &array 的类型是不同的。array 相当于 &array[0],而 &array 是一个指向 int[100] 的指针,类型是 int(*)[100]。以下代码可以看出这个不同: 1 #include stdio.h> 2
2014-04-23 16:23:46
509
转载 python字符串定义前面加r
在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不要转意backslash '\' 。 例如,\n 在raw string中,是两个字符,\和n, 而不会转意为换行符。由于正则表达式和 \ 会有冲突,因此,当一个字符串使用了正则表达式后,最好在前面加上'r'。
2014-04-06 18:27:19
831
转载 Python文件夹与文件的操作
最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章我对原文稍做了些改动。有关文件夹与文件的查找,删除等功能 在 os 模块中实现。使用时需先导入这个模块,导入的方法是:import os一、取得当前目录s = os.getcwd()# s 中保存的是当前目录(即文件夹)比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置。
2014-04-06 17:52:01
378
转载 python和FTP
首先我们想用python写一个FTP客户端程序,基本步骤和伪代码如下:1 连接服务器2 登陆3 发出服务请求(有可能有返回信息4 退出 Python中对FTP的支持,导入ftplib模块from ftplib import FTPf=FTP(‘ftp.python.org’)f.login(‘anonymous’,’guess@who.org’).
2014-04-06 15:49:32
748
转载 del_timer和del_timer_sync
同add_timer函数相反,del_timer类的函数负责从系统的定时器管理队列中摘除一个定时器对象。del_timer和del_timer_sync的函数原型为:kernel/timer.c> int del_timer(struct timer_list *timer); int del_timer_sync(struct timer_list *timer); 对于del_t
2014-03-21 18:04:28
4308
转载 HTTP协议的学习
HTTP报文格式HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。 (1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字
2014-03-06 11:08:35
492
转载 如何在优快云博客中的所贴的代码进行【代码块】显示
笔者最近很喜欢在csdn发一些技术博客,可是看了别人的博客,有代码的地方总是可以显示出代码块,而自己贴上去的代码总是没有。刚开始还以为优快云博客里面的编辑功能有,可是找来找去都没有找到。后来才发现原来需要自己在源码上进行修改的,现在显示成功了,将这种经验与大家分享。如何将自己的代码贴上去显示这种效果?方法很简单:【1】、将优快云的博客编辑功能中找到【源代码】
2014-01-09 22:32:46
597
转载 Linux DM9000网卡驱动程序完全分析
[置顶] Linux DM9000网卡驱动程序完全分析本文转载自http://blog.youkuaiyun.com/ypoflyer/article/details/6209922说明1:本文分析基于内核源码版本为linux-2.6.31 说明2:本文在理解了linux中总线、设备和驱动模型的基础上加以分析代码 虽然Linux驱动程序应该是和具体的硬件平台分离
2014-01-09 14:12:36
772
转载 Linux网络配置 -- 各种配置文件及其作用篇
一. Linux平台下各种网络相关配置文件(RedHat Linux为例)-----------------------------------------------------------------------------------------------------------------------------------1. 文件/etc/hosts(1) 文件格式
2014-01-03 14:58:29
1978
转载 LDD3 之Makefile文件的分析
《Linux设备驱动程序(第三版)》。里面有个关于Module编译的Makefile#如果已经定义了KERNELRELEASE,则说明是从内核整体编译的Make中调用。在我的2.6.31内核的#Makefile中L357行有关于KERNELRELEASE定义:#KERNELRELEASE = $(shell cat include/config/kernel.release 2> /d
2014-01-03 13:10:50
769
转载 Linux设备驱动程序(LDD3)中snull的编译问题
本文转载自:http://blog.youkuaiyun.com/xiebiwei/article/details/6210887#snull_header_ops目录(?)[+]对LDD中snull程序,编译的时候会有许多问题,鉴于网上还没有合适的解决办法,做此总结,整理知识。本文在debian6.0上运行通过,内核版本为2.6.32。学习LDD中网络驱动程序部分,理解s
2014-01-02 20:21:01
911
转载 DM9000网卡驱动分析
原始出处:http://infohacker.blog.51cto.com/6751239/1221348Preface 内核源码版本:linux-2.6.18DM9000芯片 DM9000是一款高度集成低功耗快速以太网处理器,该芯片集成了MAC和PHY。DM9000可以和CPU直接连接,支持8位、16位和32位数据总线宽度。该芯片支持10M和100
2013-12-29 10:34:36
943
转载 网卡驱动·linux内核网络分层结构
原始出处:http://infohacker.blog.51cto.com/6751239/1221140 Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计。 Linux内核采用分层结构处理网络数据包。分层结构与网络协议的结构匹配,既能简化数据包处理流程,又便于扩展和维护。内核网络结构 在Linu
2013-12-29 10:22:38
1113
转载 Linux中IS_ERR()函数的理解
在Linux源码中的fs部分,经常会碰到这样的函数(位于kernel/include/linux/fs.h):/* * Kernel>static> retval = PTR_ERR(dir_page); >IS_ERR()有一些妙处。内核中的函数常常返回指针,问题是如果出错,也希望能够通过返回的指针体现出来。所幸的是,内核返回的指针一般是指向页面的边
2013-12-25 22:06:39
938
转载 工作队列(workqueue) create_workqueue/schedule_work/queue_work
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling>一、workqueue简介workqueue与tasklet类似,都是允许内核代码请求某个函数在将来的时间被调用(抄《ldd3》上的)每个workqueue就是一个内核进程。workqueue与tasklet的区别: 1.tasklet是通过软中断实
2013-12-25 20:26:03
1040
转载 linux工作队列和等待队列的区别
work queue是一种bottom half,中断处理的后半程,强调的是动态的概念,即work是重点,而queue是其次。wait queue是一种「任务队列」,可以把一些进程放在上面睡眠等待某个事件,强调静态多一些,重点在queue上,即它就是一个queue,这个queue如何调度,什么时候调度并不重要。对这2个容易混淆的队列做简单概念上的区别,怎么用? 等待队列
2013-12-25 19:19:14
692
原创 中断处理中不能睡眠的原因
这个问题实际上是一个老生常谈的问题,答案也很简单,Linux在软中断上下文中是不能睡眠的,原因在于Linux的软中断实现上下文有可能是中断上下文,如果在中断上下文中睡眠,那么会导致Linux无法调度,直接的反应是系统Kernel Panic,并且提示dequeue_task出错。所以,在软中断上下文中,我们不能使用信号量等可能导致睡眠的函数,这一点在编写IO回调函数时需要特别注意。在最近的一个项目
2013-12-25 14:55:44
2606
转载 C++中extern “C”含义深层探索
原文地址:http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定
2013-12-16 10:54:08
400
转载 各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n)*n,
2013-12-16 10:52:20
464
转载 ARM中断及其处理
1,关于硬件部分的介绍。1.1ARM920T的中断两种中断模式:FIQ,IRQ。1.2几个寄存器SRCPND:请求中断的中断源。可以有多个位被置为1,可读可写,用完清0。只对irq模式有效。INTPND:当前正在执行的中断服务程序。只有一个为被置为1,可读可写,用完清0只对irq模式有效。INTMOD:某一位置1,则该位的中断源被设置为FIQ模式,否则为IRQ模式。INTMSK:某
2013-12-16 10:43:22
840
转载 linux驱动开发相关头文件说明
#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include在linux-2.6.31_TX2440
2013-12-16 10:36:26
1086
转载 getaddrinfo函数
今天在看完APUE第16章:网络IPC:套接字后,就开始编写书中的示例代码,结果出现了问题:调用getaddrinfo函数时,返回错误:Servname not supported for ai_socktype,觉得很费解,就直接google之,发现下面这篇好文,不仅解决了问题,还使我更加理解了如何使用getaddrinfo来编写服务器/客户端程序。 原文地址:blog.csdn
2013-12-13 21:38:32
734
转载 linux 信号量
Linux信号量(semaphore)是一种互斥机制。即对某个互斥资源的访问会收到信号量的保护,在访问之前需要获得信号量。在操作完共享资源后,需释放信号量,以便另外的进程来获得资源。获得和释放应该成对出现。 获得信号量集,需要注意的是,获得的是一个集合,而不是一个单一的信号量。 #include #include #inclu
2013-12-11 18:45:40
716
转载 poll函数
poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 1.#include 2. 3.int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 4.
2013-12-08 20:11:30
445
转载 建议性锁和强制性锁
fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。fcntl文件锁有两种类型:建议性锁和强制性锁建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还得尊重已
2013-12-08 19:23:38
669
转载 qt 的close和系统的close冲突。close(),close(fd)
系统函数使用::来调用,所以close(fd)应该这样:::close(fd);其他函数亦然。注意,别忘了加头文件:#include /*Unix 标准函数定义*/ #include /*文件控制定义*/
2013-12-06 11:07:26
1309
转载 守护进程,setsid()函数
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进 程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。守护进程的编程本身并不复杂,复杂的是各种版本的Uni
2013-12-06 09:53:54
541
转载 dup() 和 dup2()函数的介绍
dup() 和 dup2() 2011-10-07 11:06:31| 分类:Linux学习心得 | 标签:dup dup2 linux c |字号 订阅dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。#include int dup(int newfd);int dup2(int n
2013-12-05 18:51:08
489
转载 linux线程同步--条件变量
1. 相关函数 #include pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond_
2013-11-26 15:03:34
481
转载 select,epoll,poll比较
select,poll,epoll简介selectselect本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1 单个进程可监视的fd数量被限制2 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大3 对socket进行扫描时是线性扫描
2013-11-23 09:48:51
627
转载 unix源码结构
apue.h在Fedora14下开发环境搭建学习linux有一段时间了,刚开始学Linux C 系统编程时用的书是,这本书感觉入门学习还不错,里面的程序易理解,但看了K&R的巨著,还是不太深厚(国人编书的经常犯的毛病)好像讲了什么、其实什么都没讲。这些天从网上买了一本《UNIX环境高级编程》。里面出现作者Rago自编的apue.h头文件,于是想从网上下载源码。网上搜了几篇,感觉按照参考文章
2013-11-18 18:46:35
2132
转载 setjmp和longjmp函数使用详解
非局部跳转语句---setjmp和longjmp函数。非局部指的是,这不是由普通C语言goto,语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。#include Int setjmp(jmp_buf env); 返回值:若直接调用则返回0,若从longjmp调用返回则返回非0值Void longjmp(jmp_buf env,
2013-11-18 15:56:47
556
转载 Linux内核中的进程组及会话
转自:http://shake863.javaeye.com/blog/187085 将阐述Linux内核中的如下几个概念 1) 进程组 2) 会话 3) 控制终端 1.概念: a)进程组 Shell 上的一条命令行形成一个进程组 每个进程属于一个进程组 每个进程组有一个领头进程 进程组的生命周期到组中最后一个进程终止, 或加入其他进程组为止
2013-11-14 21:42:42
500
转载 C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不
2013-11-14 11:05:12
485
转载 ARM(S3C2440 )下解决的非法指令问题(Illegal instruction)
最近在学习和做项目的时候需要搭建s3c2440的环境,遇到了一些问题(非法指令)和大家分享一下修正错误的过程。一、我先介绍一下我们的实验环境:内核版本:kernel-2.6.27-android_ok编绎器:arm-2010q1-202-arm-none-linux-gnueabi硬件:(S3C2440) 支持armv4t 指令, busybox版本:busybox-1.1
2013-11-13 20:14:43
2175
原创 yaffs2 文件系统:Kernel panic - not syncing: Attempted to kill init!
在内核挂载根文件系统时,提示Kernel panic - not syncing: Attempted to kill init!的解决方法: 方法1:Kernel Features --->[*] Use the ARM EABI to compile the kernel [*] Allow old ABI binaries to
2013-11-13 20:11:16
988
[rar文件] Ldd(linux设备驱动程序) snull修改文件
2014-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人