Logo

Linux核心

6.16.0-rc4

快速搜尋

目錄

  • 開發過程
  • 提交補丁
  • 行為準則
  • 維護者手冊
  • 所有開發過程文件
  • 核心API
    • 核心實用程式
    • 資料結構和低階實用程式
    • 低階進入和退出
    • 併發原語
    • 低階硬體管理
    • 記憶體管理
    • 核心除錯介面
    • 其他所有內容
      • Reed-Solomon庫程式設計介面
      • 面向核心開發者的Netlink注意事項
  • 驅動API
  • 子系統
  • 鎖
  • 許可規則
  • 編寫文件
  • 開發工具
  • 測試指南
  • 破解指南
  • 追蹤
  • 故障注入
  • 熱補丁
  • Rust
  • 管理
  • 構建系統
  • 報告問題
  • 使用者空間工具
  • 使用者空間API
  • 韌體
  • 韌體和裝置樹
  • CPU架構
  • 未分類文件
  • 翻譯

本頁

  • 顯示原始檔

面向核心開發者的Netlink注意事項¶

一般指導¶

屬性列舉¶

較老的家族常定義值為0且名為unspec的“空”屬性和命令。這雖然受支援(type: unused),但在新家族中應避免使用。unspec列舉值在實踐中不被使用,因此只需將第一個屬性的值設定為1。

訊息列舉¶

對請求和回覆使用相同的命令ID。這使得它們更容易匹配,而且我們有足夠的ID空間。

對通知使用獨立的命令ID。這使得將通知與回覆分開(並透過與回覆不同的API呈現給使用者應用程式)變得更容易。

回覆請求¶

較老的家族不會回覆所有命令,特別是NEW/ADD命令。使用者只能透過ACK獲取操作是否成功的資訊。嘗試返回有用的資料。一旦命令被新增,它是否回覆完整訊息或僅回覆ACK都屬於uAPI,不能更改。寧可選擇回覆。

特別是NEW和ADD命令應回覆識別所建立物件的資訊,例如已分配物件的ID(無需訴諸於使用NLM_F_ECHO)。

NLM_F_ECHO¶

確保將請求資訊傳遞給genl_notify(),以使NLM_F_ECHO生效。這對於需要核心提供精確反饋(例如用於日誌記錄目的)的程式很有用。

支援dump一致性¶

如果在dump期間迭代物件可能會跳過物件或重複它們——請確保使用NLM_F_DUMP_INTR報告dump不一致。這通常透過為結構維護一個生成ID並將其記錄在struct netlink_callback的seq成員中來實現。

Netlink規範¶

Netlink規範中僅與核心空間相關的部分的文件。

全域性變數¶

kernel-policy¶

定義核心驗證策略是global(即對家族所有操作都相同),還是為每個操作單獨定義(per-op),或是為每個操作和操作型別(do vs dump)單獨定義(split)。新家族應使用per-op(預設)以便能夠縮小特定命令接受的屬性範圍。

檢查¶

屬性規範的checks子部分的文件。

unterminated-ok¶

接受沒有空終止符的字串(僅適用於舊版家族)。從NLA_NUL_STRING策略型別切換到NLA_STRING。

max-len¶

定義二進位制或字串屬性的最大長度(對應於struct nla_policy的len成員)。對於字串屬性,終止空字元不計入max-len。

該欄位可以是字面整數值,也可以是已定義常量的名稱。字串型別可以將常量減一(即指定max-len: CONST - 1)以保留終止字元的空間,因此實現應識別此類模式。

min-len¶

類似於max-len,但定義最小長度。

©核心開發社群。 | 由Sphinx 5.3.0 & Alabaster 0.7.16 提供支援 | 頁面原始檔