2013-03-05 76 views
0

我在做兩個系統調用(linux 3.2)。我創建了這兩個系統調用,並且編譯了內核。這兩個系統調用需要在文件上寫入和讀取。我將修改兩個系統調用,讀取和寫入以讀取此文件。所以這個文件需要被這四個系統調用訪問(讀,寫和我的兩個系統調用)。我的問題是,我在哪裏以及如何創建該文件,以及如何訪問並修改它。我只會將這個文件用於這些系統調用。系統調用修改

+0

那麼,你想讀取和寫入系統調用中的文件? – 2013-03-06 00:25:47

+0

是的,我的系統調用的任務是將一個或分區(標識分區的字符串)添加到文件中。當系統調用讀/寫被調用時,他們將驗證分區是否被阻塞(如果分區在文件中),如果分區被阻塞,則不應執行讀/寫。 – 2013-03-06 02:30:49

回答

0

在Linux內核中讀取或寫入文件被認爲是「不好的」。

添加一個系統調用,在列表中添加/刪除一個名稱(不一定是Linux內核List,但這也不是一個可怕的想法 - 可能是一個數組等),然後使用用戶模式程序從文件中設置列表中的名稱。

接下來,我認爲將一個讀/寫系統調用綁定到一個分區並不那麼容易。在open可能更容易處理?

+0

謝謝你的回答。我同意,處理開放會更容易,但我的老師指定閱讀和寫作。我的疑問是,我把這個文件放在哪裏,以及如何從我的系統調用中訪問這個文件。 – 2013-03-06 13:16:26

+0

你不應該。如果您的老師要求您這樣做,那麼他會要求您以FAR的方式從事Linux事業。這不是你如何解決這些問題。如果您從系統調用中調用其他系統調用(或支持此類系統調用的內部函數),遲早會導致某種類型的死鎖。 – 2013-03-06 14:06:32

1

這實際上是一個非常好的教育問題 - 在這裏的答案顯示出它在哪裏/爲什麼是一個難以置信的困難和危險的事情。但是,如果您有一個用戶空間守護進程等待事件/信號/ IO來指示它應該對內核進行讀/寫操作,則「解決方案」很容易。這可以像/ proc條目一樣簡單,只需要用戶空間進程讀/ polls/select的某個計數/信號量。

解決這個問題是理解任何/許多解決方案之間權衡的良好實踐。