自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (4)
  • 收藏
  • 关注

原创 Linux内核0.11——内核体系结构

Linux内核体系结构linux内核主要由五部分组成:进程调度模块、内存管理模块、文件系统模块、进程间通信模块、网络接口模块。如上图包括了各个部分的依赖关系,也大概表明了其在内核目录中的分布,其中进程调度模块是比较重要的一部分,所有模块都和它存在着依赖关系,相当于一个计算机资源的总管家。内存管理和使用这一部分不太好理解,建议多看几遍书,这里说一些我对书上的理解。从上面这个物理内存分布中不难看出,并不

2017-08-31 11:54:04 4256

原创 Linux下socket套接字一些重要结构体

最近搞wifi小车用到socket时候发现之前好多东西搞混了都忘了,在看书的时候也是对各种长得很像的结构体一脸蒙蔽,经常要回去翻头文件里的定义(有时候还是不要太相信盗版书哈哈)。 有时候一些头文件进不去,教大家一个方法gcc -E prog.c -o prog.i程序预处理之后所有头文件都展开了,这时候你想搜索什么定义直接grep或者在vim里面搜索也可以。在这里还是整理一下这些结构体和其定义吧。

2017-07-24 14:42:02 644

原创 补充:errno变量在内核中的定义

以下是errno在linux内核源码中的/include/uapi/asm-generic/目录下的errno.h和errno-base.h中的宏定义以及一些说明,想自己看源码的话,我的是在github上clone的。#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such fil

2017-07-23 15:23:02 605

原创 Linux下各种错误处理

今天看《Unix环境高级编程》的时候,书中IO操作中有用到一个函数err_sys开始还以为这是个unix中IO操作专用的错误处理函数,后来用grep工具找了半天在这本书的源码中发现了它的定义: 当然我觉得没太大必要封装的这么完美(主要是我懒),但是该有的错误处理是一定要有的,不然你调试的时候会哭,别人改你的代码的时候会在心里骂死你的,总之想写出一个健壮的程序,一些参数检测、错误处理等等是一定一定要

2017-07-22 21:29:48 624

原创 Vim+Ctags+Cscope的使用

Vim+Ctags+Cscope注:首先看这篇文章之前最好是已经熟悉linux操作了的,因为我并没有一步一步的告诉大家怎么配置,而且有些具体用法也没有详细说明,只是分享一些配置经验 这个就是我配置好的VIM界面 相信大家最开始接触vim(或者linux?)打开一个文件之后,比如: vim test.c 出来的界面以及操作方法,用惯windows那华丽的IDE(或编辑器)可能多少都有些不爽。

2017-07-11 13:12:18 722

原创 linux内核0.11——内核编程语言和环境

内核编程语言和环境as86与GNU as汇编对于汇编这种语言,相信所有同胞们都是望而却步。然而由于操作系统许多关键代码要求很高的执行速度和效率,因此在系统源码中通常会有10%左右的起关键作用的汇编语言。linux的32位初始化代码、所有中断和异常处理、许多宏定义都是用汇编或嵌入汇编。 系统内汇编代码分为两种,一种是as86汇编器用于编译内核中的boot/bootsect.s引导山区程序和boot/

2017-05-04 21:50:07 2396

转载 全局偏移表(GOT)和过程链接表(PLT)

全局偏移表(GOT)和过程链接表(PLT) GOT 表ELF 格式的共享库使用 PIC 技术使代码和数据的引用与地址无关,程序可以被加载到地址空间的任意位置。PIC 在代码中的跳转和分支指令不使用绝对地址。PIC 在 ELF 可执行映像的数据段中建立一个存放所有全局变量指针的全局偏移量表 GOT对于模块外部引用的全局变量和全局函数,用 GOT 表的表项内容作为地址来间接寻址

2017-05-03 21:29:51 960

原创 C语言——链接的思考

对于链接的思考 静态链接 750Kb 506Kb ________________> libc.a 产生:a.out 1Kb /hello.o ----| \_________

2017-05-03 20:24:58 296

原创 C语言——内存的思考

对于内存的思考数据段和堆就像个堆栈段能够根据需要自动增长一样,数据段页包含了一个对象,用于完成这个任务,这就是堆(heap)。堆区域用于动态分配的存储,也就是通过malloc()函数获得内存,并通过指针访问。堆中所有的东西都是匿名的, 不能按照名字直接访问,只能通过指针间接访问。从堆中获取内存的唯一办法就是通过调用malloc(以及同类的calloc、realloc等)库函数。 callo

2017-05-03 20:23:47 284

原创 C语言——指针与数组区别

数组与指针的讨论数组定义并不等同于指针的外部声明!声明?定义?定义 只能出现在一个地方 确定对象的类型并分配内存,用于创建心得对象,如:int my_array[100];声明 可以多次出现 描述对象的类型,用于指代其他地方定义的对象(例如在其他文件里),如:extern int my_array[]extern对象声明告诉编译器对象的类型和名字,对象的内存分配则在别处进行

2017-05-03 20:21:01 353

原创 C语言——程序运行时数据结构

运行时的数据结构段目标文件和可执行文件有几种不同格式,在大多数Svr4实现中采用一种叫做ELF(原意位”可扩展链接器格式“、现在代表 ”可执行文件和链接格式“)。其他系统中可执行文件格式是COFF(普通目标文件格式)。所有不同格式具有一个共同概念”段(segments)“。就目标文件而言它们是二进制文件中简单的区域,里面保存了某种特 定类型(如符号表条目)相关信息。术语section是ELF

2017-05-03 20:11:14 752

原创 C语言——声明

分析C语言的声明(类)结构体struct s_tag {int a[100]};struct s_tag orange,lime,lemon;struct s_tag twofold(struct s_tag s){int j;for(j = 0;j < 100;j++)s.a[j] *= 2;return s;}void main(){int i;for(i = 0;i <

2017-05-03 20:05:40 350

原创 linux下用GPRS模块发送POST请求

GPRS模块发送POST请求    相信大家只要是80、90后都知道GPRS是什么吧(啥?不记得了!)记不记得小时候偷偷用手机上网看学(you)习(xi)资料,手机最上面一个大写的’G‘在不停的闪,那个就是GPRS网络,后来又出现了E(EGPRS)、H也就是大家常说的几G网,现在发展到4G网速比当年玩小霸王手机的时候快了......不知多少倍。    说了这么多废话,那我们到底问什么用这个

2017-05-03 18:52:11 1503

原创 Linux下读取RFID卡号(C串口编程)

RFID模块:    本次采用的是125K的RFID读卡器和标签,很容易理解的,其实就是一张卡片里面存了一串数字(这个问题有点像你问一个艺术家洛必达法则是啥咦洛必达是啥),然后有个读卡器,当你把卡片放到读卡器上时,重点来啦~~~~

2017-04-28 21:33:52 5233 1

原创 Linux下C编程学习心得

有关Linux下C的编程,以及一些C、linux内核、嵌入式的学习笔记,一些小项目源代码都在本人的github上本人小白,欢迎大家来讨论https://github.com/SwhiteDev/

2017-04-10 19:22:10 2772 1

GCC中文手册

中文的GCC手册,供大家查阅参数

2017-07-24

linux内核完全注释

如果想学内核,建议从0.11版本开始看,这本数不错的

2017-07-19

GTK+2.0中文教程

很适合入门的资料,大概300页

2017-07-19

跟我一起写Makefile-陈皓

一个不错的makefile教程

2017-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除