07 2013 档案

Linux下的pread和pwrite(转)
摘要:当对同一文件句柄(在Windows下)或是文件描述符(在Linux下)进行随机读写操作时,会存在文件指针的定位与读/写俩个步骤,但由于这不是一个原子操作,就可能产生如下问题:进程A对某文件先定位到 f1 处,然后被中断,然后进程B对同一文件定位到 f2 处,然后被中断,进程A再次执行,从文件的当前指针处开始读或是写,于是这便产生了不是期望的结果了。(这里要注意,对同一文件的俩次打开,得到的将是俩个不同的句柄或是描述符,所以不用担心这种情况会出问题)解决办法: 在Linux下,pread函数就好像是专门为上面的问题服务的,它本身就是原子性的操作,定位文件指针与读操作一气呵成,而且读操作并不... 阅读全文

posted @ 2013-07-30 20:23 Brill 阅读(15224) 评论(0) 推荐(0)

Linux嵌入式汇编(转)
摘要:在Linux的源代码中,有很多C语言的函数中嵌入一段汇编语言程序段,这就是gcc提供的“asm”功能,例如在include/asm-i386/system.h中定义的,读控制寄存器CR0的一个宏read_cr0(): #define read_cr0() ({ \unsignedint __dummy; \__asm__( \"movl %%cr0,%0\n\t" \:"=r" (__dummy)); \__dummy; \}) 这种形式看起来比较陌生,这是因为这不是标准C所定义的形式,而是gcc对C语言的扩充。其中__dummy为C函数所定义的变量;关 阅读全文

posted @ 2013-07-29 21:28 Brill 阅读(1057) 评论(0) 推荐(0)

导航