- 博客(16)
- 资源 (8)
- 收藏
- 关注
原创 mount过程分析之五(mount_bdev->fill_super)
sys_mount - > do_mount -> do_new_mount -> vfs_kern_mount -> mount_fs -> xfs_fs_mount -> mount_bdevmount_bdev是针对块设备挂载时使用的函数,此外还有mount_nodev, mount_single等函数,分别用于不同的挂载情况,这里以mount_bdev为例继续讲解。看一下mount_b
2014-10-15 18:36:47 7966 1
原创 mount过程分析之四(vfs_kern_mount->mount_fs->xfs_fs_mount)
sys_mount - > do_mount -> do_new_mount -> vfs_kern_mountvfs_kern_mount的作用就是准备好一个完整的mount结构,包括个别文件系统的个别信息,以及vfs层的通用信息。vfs_kern_mount(struct file_system_type *type, int flags, const char *name, vo
2014-10-14 18:01:31 6122
原创 mount过程分析之三(do_mount -> do_new_mount)
sys_mount - > do_mountdo_mount函数也在namespace.c里可以找到,如下:long do_mount(const char *dev_name, const char *dir_name, const char *type_page, unsigned long flags, void *data_page)
2014-10-13 18:40:45 5481
原创 mount过程分析之二——mount系统调用
= 引文 =上文中我们说到了file_system_type,以及一个文件系统是如何在内核中注册产生的。但是注册了一个文件系统并不代表这个文件系统被使用了,就像你注册了CSDN帐号但是你不登陆就没有使用它。同理,你不挂载文件系统,这个文件系统在内核中就以一个file_system_type的形式存在,仅仅是存在这么一个type,并没有构建到全局文件系统树中。回忆一下,注册file_sy
2014-10-11 22:41:05 9400
原创 mount过程分析之一(基于3.16.3内核)
file_system_type数据结构研究linux fs的入手点应该是哪呢?可能仁者见仁,智者见智。我一直以来也都是零零散散的翻阅着有关super block, inode, dentry, file等等内容的各种代码和资料,但是知识始终是散乱的,无法拼凑成完整的体系。现在我要试图整理顺一个整套的文件系统知识,我决定从file_system_type入手。本文是要尽力将我已经掌握的
2014-10-10 16:13:09 5991
原创 Guake terminal with mlti-monitors
一直使用Guake终端,感觉蛮好用的,快速的切入切出感觉很爽。但是由于我在工作室的时候会使用很多显示器,多屏令guake表现不尽如我意。我不能随意的把guake终端放到我正在操作的屏幕上使用。针对这个问题,有一次我和同事说起,他说能够给我一个patch让我在多显示器下切换使用guake,那个patch如下:--- /usr/bin/guake.bak 2013-05-27 14
2014-10-10 15:12:08 1038
原创 要命的编译警告——指针参数类型混乱
前两天在写程序的过程中发现一个问题,编译后运行结果总是不对,修改了很多回算法都不对。由于整个项目代码过长,所以抽出出错的模型重新写一个简单的易于表述的程序,如下: 1#include 2
2014-10-10 15:09:38 1189 2
原创 谁执行了我的main函数
接着说“调用”,前面我们提到了一点系统调用,又略微详细的说了一下函数调用,现在接着说一下程序调用,应该说是执行一个可执行程序。前面的几篇文章都在围绕着函数调用栈来说,从main函数开始到每个函数的调用和返回,那么在main函数之前和main函数之后,也就是开始执行程序的main函数之前以及main函数返回后又有什么样的动作呢?当我们在终端输入一个可执行文件的路径名时,如:lin
2014-10-10 15:07:33 1673
原创 写一个能输出自己的c程序
今天晚上和一个大一的孩子讨论C语言的问题,闲来无事又看到这个孩子很好学,就出了一个很经典的问题给她:写一个程序输出程序代码本身(不能把源程序open之后输出出来)。对于很多C语言的牛人来说这种问题简直就是糊弄小孩的,好吧,我这个题就是出给小孩纸的;) 在等她解答的过程中我也自己尝试的写了一个程序print_myself.c:#include int main(){
2014-10-10 15:07:23 1497
原创 递归函数的堆栈操作
前文我们介绍了函数调用和返回的过程,下面我们以递归为例进一步看一下函数调用的堆栈操作。我们就先用C语言写一个阶乘的简单递归程序factorial.c: 1#include 2 3int factorial(int a){ 4 int ret; 5 if (a > 1){ 6 re
2014-10-10 15:02:35 1676
原创 简单函数的返回
上文http://1386160874.spaces.eepw.com.cn/articles/article/item/101726我们说到了函数调用,有调用就要有返回,下面我们说函数的返回。首先为了方便先把代码粘贴到这里: 1#include
2014-10-10 14:54:14 1098
原创 如何调用linux系统调用
所谓调用就是让另一个子模块或子系统帮助自己干一些事,然后再返回回来。在我们的口头语中常常用“调XXXX”,这个“调”字被应用的范围太广了,执行一个API函数时我们会说调XXX,执行一个系统调用时我们也会说调XXX,甚至执行一个可执行文件时我们也会说调XXX…… 实际上仅就上述三种“调”来说,完全就是不同的三个概念。先说一下函数调用: 函数调用最常见,函数
2014-10-10 14:50:11 1055
原创 简单函数的调用原理
上文我们提到了系统调用,现在说一下函数调用。函数调用应该是一个编程者除了写if...else以外最常写的东西了,记得多年前我第一次写一个C语言函数的时候还觉得很神奇。我们的程序不能只有一个代码段,那么做将使得程序很难协同开发和维护,将程序分割为部分进行封装,每一部分都定义良好的接口,这是非常重要的,我一直觉得封装和接口是人类进步的基本方式。好吧,这里我们不讨论封装和接口,我们讨论函数是怎么调用和返
2014-10-10 14:49:18 4932
原创 AT&T汇编语言及其寻址方式简述
汇编语言早已脱离了主流编程语言的行列,可以说现在基本上没有人想用它来完成什么大的项目,但是作为一个程序员懂得汇编语言是一种修养一种底蕴。看不懂汇编的程序员就像不会画鸡蛋的达芬奇,像不会写楷书的王羲之,像不懂TCP/IP的黑客……本文为后文做铺垫,适合已经有一点汇编基础的人快速浏览阅读,如果没有这个基础请自行学习。汇编语言论风格来分主要是两类,一类是Intel汇编,一类是AT&T汇编,分
2014-10-10 14:48:28 7137 2
CCD传感器相关资料
2009-07-10
java编程思想第四版习题及解答
2009-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人