一天的学习成果:hash输出,dcache工作原理,include的home directory,fist optype的含义...

最先获得突破的是解决了下午的崩溃问题。其实原因很简单,我声明了一个unsigned int型指针,但是没有给它分配空间……

解决了这个问题之后就很简单了,调用定义在linux/dcache.c文件中的full_name_hash函数对文件名进行hash计算。这里发现了一个很久以来的问题:举例#include<linux/fs.h>,这个文件夹的根目录并不是通常所想的/usr/include,而应该是/usr/src/linux/include。to 猪头:这可能是你编译失败的原因。

之后通过ls观察了full_name_hash的输出结果,为32位unsigned int,与预想的一样(这是废话)。之后要检验输出的结果是否与dcache中hash表中的结果一样。结果发现这又是多此一举,这牵涉到了dcache的运行机制(花了近两个小时搞明白了,汗)。full_name_hash存放的结果位于name.hash中(name是一个qstr结构,qstr.name就是通常使用的unsigned char *name)。而dcache中hash表中使用的是struct list_head *d_hash(之后有个函数名也叫d_hash,不要混淆)。list_head就是我们数据结构中讲到的双向链表,不用管它。d_hash的获得过程就是使用函数d_hash将full_name_hash的结果(也就是name.hash)与其父节点一起再次进行hash运算(算法是否与full_name_hash一样我就没有深究了)。这么做的理由是为了允许在不同目录下能够存在同名目录(这样尽管full_name_hash的结果是一样的,但是parent值不同,所以不会冲突)。函数d_hash返回的是一个list_head的结构。list_head通过一个名叫list_entry的宏进行访问。(幸好有source insight啊,不然就累死了……)。全部过程在/usr/src/linux/fs/dcache.c中进行描述。

fist的optype对应的是file数据结构中file_operation结构所描述的一系列函数(其实只是个函数跳转表,因为这些操作绝大部分情况下都要交给FS完成的)。定义位于<linux/fs.h>

TO DO:解决mkdir的问题。原本是想改进算法使hash计算的结果能够直接在d_cache中进行查找。现在看来不大可能。还是按照原来的算法进行。接下来要做的是确定mkdir的用法以及相应的嵌入位置。顺利的话半天应该可以解决。


感想:第一次使用blog记录进度。感觉blog的好处除了信息共享之外还能象日记一样逼着你记下一天的进程。这样不会在荒废了一天之后随便找个理由蒙混过关然后第二天重复无所事事的生活。对我这种人而言很适合。


另外,TO 猪头:你什么时候才能加进来!

转载于:https://www.cnblogs.com/acesyp/archive/2005/04/24/144185.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux显示fio为非法指令,FORTRAN运行错误消息列表中英对照.doc

FORTRAN运行错误消息列表中英对照Fortran的运行时错误消息列表本节列出了英特尔Fortran运行时库(RTL)处理的错误。对于每一个错误&#xff0c;该表提供了错误号&#xff0c;严重性代码&#xff0c;错误信息文本&#xff0c;条件符号名称&#xff0c;而错误的详细说明。在程序中…

各种证书

软考高级信息系统项目管理师https://www.zhihu.com/question/29904891 转载于:https://www.cnblogs.com/trumbull/p/11154514.html

linux面试题中的简答题,[计算机]linux面试题简答题部分.doc

[计算机]linux面试题简答题部分linux面试题(简答题部分)2 简述进程的启动、终止的方式以及如何查看进程&#xff1f;答&#xff1a;启动进程的方式分为手动启动和自动启动两种方式,其中手动启动的方法用services 服务名 start;或者是./脚本名称,自动启动进程的方法有将进程服务…

const用法

const的用法很让人荤菜&#xff0c;现在总结以下&#xff1a;1&#xff0c;必须初始化2&#xff0c;作为函数的参数是个好习惯&#xff0c;const在*号左边所指常量值&#xff0c;在右边所指的是常量指针3&#xff0c;const成员函数的目的是指明该函数可以在const对象上调用,也就…

Multiverse: Revolutionary Backend for Alembic // Multiverse: 下一代Alembic后端

J CUBE&#xff0c;日本最大的动画公司Polygon Picture&#xff08;以下简称PPI&#xff09;公司成立的专职R&D公司隆重推出Multiverse&#xff0c;下一代Alembic存储后端。 我们还开发了针对Autodesk Maya的工具&#xff0c;运用Multiverse在流程中。 "multiverse&qu…

c语言 程序延时 校准,c语言实现系统时间校正工具代码分享

//*******************************************************************//Time Protocol是一种非常简单的应用层协议。它返回一个未格式化的32位二进制数字,//这个数字描述了从1900年1月1日午夜到现在的秒数。服务器在端口37监听协议请求&#xff0c;以//TCP/IP或者UDP/IP格式…

近半年能力没进步原因分析与求助

2019独角兽企业重金招聘Python工程师标准>>> 20180907 思维方式有缺陷&#xff0c;想到的解决方法经常不是最有效率的。导致工作时间内基本没自由学习的时间。 业余时间不够专注&#xff0c;学习方向经常变&#xff0c;没能坚持搞透一个点就换书看&#xff0c;没有总…

疑问:关于Microsoft Office InfoPath 2003 Toolkit for Visual Studio 2005 Beta 2

因开发急须这个东西&#xff0c;但我不是msdn的subscriber用户不能单独下载&#xff0c;但微软这样提示http://blogs.msdn.com/vsto2/archive/2005/05/05/415003.aspxIf you need the Toolkit, but you are not an MSDN Universal subscriber, if you go to http://msdn.micros…

windows下安装Redis并部署成服务

文章来源&#xff1a;https://www.cnblogs.com/weiqinl/p/6490372.html windows下安装Redis并部署成服务 Redis 是一个开源&#xff08;BSD许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。 一&#xff1a;下载 下载地…

c语言编写程序计算行列式值,新手作品:行列式计算C语言版

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼对话 ControlHeightDecrease ShiftUp Arrow 向上调整选定的控件或对话一个对话单位对话 ControlHeightIncrease ShiftDown Arrow 向下调整选定的控件或对话一个对话单位对话 ControlMoveDown Dow…

.net core高性能通讯开源组件BeetleX

BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件&#xff0c;使用方便、性能高效和安全可靠是组件设计的出发点&#xff01;开发人员可以在Beetlx组件的支持下快带地构建高性能的TCP通讯服务程序&#xff0c;在安全通讯方面只需要简单地设置一下SSL信息即可实…

按组排名

rank() over,dense_rank() over,row_number() over的区别 1.rank() over&#xff1a;查出指定条件后的进行排名。特点是&#xff0c;加入是对学生排名&#xff0c;使用这个函数&#xff0c;成绩相同的两名是并列&#xff0c;下一位同学空出所占的名次。 select name,subject,sc…

《Excel与VBA程序设计》第一章

点击下载&#xff1a;http://files.cnblogs.com/maweifeng/Excel_VBA_001.rar转载于:https://www.cnblogs.com/maweifeng/archive/2005/06/23/179729.html

linux java环境变量设置

JAVA环境变量设置&#xff1a; #vi /etc/profile#在文件最后添加以下内容&#xff1a; export JAVA_HOME/usr/java/jdk1.8.0_91 export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar 执行如下命令使环境变量生效&#xff1a; s…

win7 磁盘分区

右键点击“我的电脑”&#xff0c;选择“管理”命令。在打开的“计算机管理”窗口中&#xff0c;依次展开“计算机管理”→“存储”→“磁盘管理”项。之后&#xff0c;在右侧窗格中即可看到当前硬盘的分区情况。 在“未指派”的磁盘空间上点击右键&#xff0c;选择“新建磁盘…

[FxCop.设计规则]13. 定义自定义属性参数的访问属性

13. 定义自定义属性参数的访问属性 翻译概述&#xff1a; 一个比较无聊的规则&#xff0c;实在看不出在什么情况下&#xff0c;一个开发者会做出违反这条规则的设计。没有别的内容&#xff0c;只是说应该为自定义特性的构造函数中的参数提供一个相关的属性去读取它们的值。…

C语言程序设计实验最短路径,7最短路径C语言程序设计.pdf

最短路径旅行家的困扰第4章 图结构 解放军理工大学旅行家的困扰新疆特克斯县“八卦城”第4章 图结构 解放军理工大学旅行家的困扰特克斯县怎么样帮助困扰的旅行家找到去各个地点的最短路线呢&#xff1f;旅行家居住的旅馆旅行家想去的地点第4章 图结构 解放军理工大学问题建模使…

centos7安装Cloudera Manager

第一部分&#xff1a;准备工作一&#xff0c;修改hostname $vim /etc/sysconfig/network $source /etc/sysconfig/network例如&#xff1a; NETWORKINGyes HOSTNAMEspark01reboot重启服务器 二&#xff0c;关闭selinux查看SELinux状态1&#xff0c;/usr/sbin/sestatus -v #如果…

He Fei ,First ,Good Luck

Tonight, I will go to HeFei.something as follows:1) speciality 2) sincerely3) valueHope i can bring customer some ideas .But i will throw my 100% energy to face it.Good Luck.First HeFei转载于:https://www.cnblogs.com/boriscao/archive/2005/08/31/227199.html…

在C#中使用代理的方式触发事件 的简单习作

程序简单就 不再作说明了.在学习IssueVision的OBSERVER(观察者)模式时由于对代理和事件不是很熟悉,遇到了一些问题,所以就有了这个简单习作.TestEvent.cs using System; namespace ConsoleApplication2{ /// <summary> /// Class1 的摘要说明。 /// </summar…