- 博客(15)
- 资源 (1)
- 收藏
- 关注
转载 关于epoll的用法的说明
以下文章转在网络,对epoll说明比较详细epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epol
2011-07-20 17:47:03
389
转载 关于洗牌算法的一点思考
最近在做梭哈这个游戏,于是自然而然会用到洗牌算法。洗牌算法网上讲的也不少了,归结起来有如下两种形式。第一种是每次找一个随机的位置,将54个数依次放到找到的位置中,其思路大概这样的:1、用一个Bool型数组记录各个位置是否已经放置了数,如果放置则置true,没有则为false。在算法开始时数组初始化为false。2、每次产生一个0~53的随机数,看这个位置是否已经放置了数,如果已经放置了,则继续用同样的方法找一个随机位置判断;如果这个位置还未放置,则设置此位置,并标记其已经放置。3、反复执行(2)直到所有的位
2011-06-01 10:59:00
554
转载 面向对象编程中的继承和组合的简单比较
<br /><br />继承(inheritance),是类 D 的对象可以使用仅对类C的对象有效的方法或者属性的特性,它使得这些方法和属性就好像是由类 D 定义的。这时,C 是 D 的父类,D 是 C 的子类。在继承结构中,父类的内部细节对于子类是可见的。所以我们通常也可以说通过继承的代码复用是一种“白盒式代码复用”。<br />组合(composition),是通过对现有的对象进行拼装(组合)产生新的、更复杂的功能。因为在对象之间,各自的内部细节是不可见的,所以我们也说这种方式的代码复用是“黑盒式代码复
2011-05-19 16:24:00
368
原创 关于bss段的疑问
<br />最近在看程序员的自我修养,关于bss发现了一点疑问<br />bss段存放的是未初始化的全局变量和局部静态变量。<br />但是我用readelf -s SimpleSection.o查看elf文件时发现已经初始化的全局变量被放在了BBS段,不解<br />可执行程序中并没有为BBS段分配空间,那初始化的信息岂不是丢失了?
2011-04-15 11:24:00
441
1
原创 sd卡虚拟化函数跟踪记录
dump_stack();打印调用堆栈 mmc_blk_probe-->add_disk-->register_disk-->device_add-->put_device /-->blkdev_get-->__blkdev_get-->rescan_pa
2011-03-28 17:38:00
1184
原创 sd卡读文件过程分析(二)(内核2.6.29,驱动goldfish)
<br /> <br /> <br />块设备部分现在还没有涉及,先来分析goldfish驱动吧。<br />goldfish驱动MMC设备的代码在driver/mmc/下,一共有三个层次:host,core,card。<br />card层:对应具体的设备驱动,如MMC/SD卡块设备驱动,SDIO UART<br />core层:为上次设备驱动实现提供操作接口,和下层host注册提供机制<br />host层:具体MMC/SD/SDIO控制器驱动层。如S3C2440 MMC/SD控制器驱动<br />这里
2011-03-28 17:11:00
1098
转载 More Effective C++:自增和自减
<br /> <br />从你开始做C程序员那天开始,你就记住increment的前缀形式有时叫做“增加然后取回”,后缀形式叫做“取回然后增加”。这两句话非常重要,因为它们是increment前缀与后缀的形式上的规范。 <br />// 前缀形式:增加然后取回值<br /><br />UPInt& UPInt::operator++()<br />{<br /> *this += 1; // 增加<br /> return *this; // 取回值<br />}<br /><br />
2011-03-27 09:33:00
341
原创 Linux 驱动相关文件系统
<br />1. /dev 设备文件目录,存放所有系统中device(设备)的相关信息。<br /> /dev/snd:声卡设备<br />2. /etc 系统配置文件<br />3. /opt 表示可选择,自定义软件安装的地方<br />4. /proc 操作系统运行时,进程相关信息,由系统动态生成。<br /> /proc/ioports:可以查看I/O端口使用情况。<br /> /proc/modules:系统加载的模块。<br />5. /sys Linux 2.6内核支持的sys
2011-03-02 11:10:00
347
转载 解密module_init幕后的故事
<br />在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。<br />1.在MODULE没有定义这种情况下,module_init定义如下:<br /><br />#define module_init(x) __initcall(x);<br />因为<br />#define __initcall(fn)
2011-03-01 10:43:00
592
原创 GIT使用笔记
分布式的工作流程假设Alice现在开始了一个新项目,在/home/alice/project建了一个新的git 仓库(repository);另一个叫Bob的工作目录也在同一台机器,他要提交代码。Bob 执行了这样的命令:$ git clone /home/alice/project myrepo这就建了一个新的叫"myrepo"的目录,这个目录里包含了一份Alice的仓库的 克隆(clone). 这份克隆和原始的项目一模一样,并且拥有原始项目的历史记 录。Bob 做了一些修改并且提交(commit)它们
2011-01-12 10:31:00
1681
转载 free内存大小的问题
<br /><br />我们知道malloc的调用形式如:type* p = (type *)malloc(n*sizeof(type))<br />free的调用形式如:free(p)<br />好了,问题来了,free函数,我们只给传入一个指针,没有传入内存块的大小n,那么编译器怎么知道要释放多少字节的内存,如果让你来实<br />现怎么实现?<br />当时,蒙了,郁闷(丢人)。。。<br />之前自己都看过类似的代码的。。。<br />无非就是当申请内存的时候,p指向的内存的起始字节有几个存放着这块
2011-01-10 18:04:00
1885
1
转载 c文件操作函数
<br /><br />c文件操作函数<br /> <br /> <br />clearerr(清除文件流的错误旗标) <br />相关函数 feof<br />表头文件 #include<stdio.h> <br />定义函数 void clearerr(FILE * stream); <br />函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 <br />返回值 <br /> <br /> <br />fclose(关闭文件) <br />相关函数 c
2011-01-10 10:23:00
365
原创 sd卡读文件过程分析(一)(内核2.6.29,驱动goldfish)
这段时间想弄懂mmc驱动的读写原理,一直在goldfish的驱动代码中乱撞。某天突然灵光一闪,要从文件系统开始分析。眼前一篇豁然开朗。跟踪过程记录如下:首先是file的读操作。因为sd卡是fat32文件系统,找到fat32的file_operations:const struct file_operations fat_file_operations = { .llseek = generic_file_llseek, .read = do
2010-11-12 16:03:00
1075
转载 关于struct device_driver结构中的probe探测函数的调用(内核版本:2.6.29)
<br />最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用。但从来就没有想过具体的驱动注册并调用probe的过程。<br /><br />于是
2010-11-11 14:56:00
641
原创 domain create分析
<br />struct domain *domain_create(domid_t dom_id, unsigned int cpu)<br />分配一个struct domain空间,并初始化此空间<br />之后执行construct_dom0<br /><br />int construct_dom0(struct domain *d,<br /> unsigned long guest_start, unsigned long guest_size,<br /
2010-08-20 10:14:00
1000
1
Golang 代码规范
2018-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人