一天的學習成果: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.pswp.cn/news/277330.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277330.shtml
英文地址,請注明出處:http://en.pswp.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…