測量暫存器¶
-
struct tsm_measurement_register¶
描述架構測量暫存器 (MR)
定義:
struct tsm_measurement_register {
const char *mr_name;
void *mr_value;
u32 mr_size;
u32 mr_flags;
enum hash_algo mr_hash;
};
成員
mr_nameMR 的名稱
mr_value包含 MR 當前值的緩衝區
mr_sizeMR 的大小 - 通常是 mr_hash 的摘要大小
mr_flags一個或多個標誌的按位或,詳見下文
mr_hashinclude/uapi/linux/hash_info.h 中定義的可選雜湊識別符號。
描述
CC guest 驅動程式將此結構的陣列封閉在 struct tsm_measurements 中,以詳細說明底層 CC 硬體支援的測量設施。
mr_name 和 mr_value 必須保持有效,直到不再使用此結構。
mr_flags 是零個或多個以下標誌的按位或。
TSM_MR_F_READABLE- 與此 MR 對應的 sysfs 屬性是可讀的。TSM_MR_F_WRITABLE- 與此 MR 對應的 sysfs 屬性是可寫的。 語義通常是擴充套件 MR,但可能因架構和 MR 而異。TSM_MR_F_LIVE- 此 MR 的值可能與上次寫入的值不同,因此必須從底層 CC 硬體/韌體讀取回來。TSM_MR_F_RTMR-TSM_MR_F_LIVE和TSM_MR_F_WRITABLE的按位或。TSM_MR_F_NOHASH- 此 MR 沒有相關的雜湊演算法。 設定此標誌時,將忽略 mr_hash。
-
struct tsm_measurements¶
定義 CC 架構特定的測量設施和用於更新測量暫存器 (MR) 的方法
定義:
struct tsm_measurements {
const struct tsm_measurement_register *mrs;
size_t nr_mrs;
int (*refresh)(const struct tsm_measurements *tm);
int (*write)(const struct tsm_measurements *tm, const struct tsm_measurement_register *mr, const u8 *data);
};
成員
mrsMR 定義陣列。
nr_mrsmrs 中的元素數。
重新整理回撥函式,用於將所有 MR 從 TVM 硬體/韌體載入/同步到核心快取中。
寫入回撥函式,用於寫入引數 mr 指定的 MR。 通常,寫入 MR 會將輸入緩衝區擴充套件到該 MR。
描述
當正在讀取設定了 TSM_MR_F_LIVE 的 MR 且快取已過期時,將呼叫 refresh 回撥。 它必須重新載入所有設定了 TSM_MR_F_LIVE 的 MR。 函式引數 tm 是一個指標,指向回此結構。
每當寫入 MR 時,都會呼叫 write 回撥。 除了 tm 之外,它還需要兩個額外的引數
mr - 指向正在寫入的 MR(tm->mrs 的一個元素)。
data - 包含要寫入的位元組,其大小為 mr->mr_size。
refresh 和 write 都應在成功時返回 0,並在失敗時返回適當的錯誤程式碼。
-
const struct attribute_group *tsm_mr_create_attribute_group(const struct tsm_measurements *tm)¶
為測量暫存器 (MR) 建立屬性組
引數
const struct tsm_measurements *tm指向包含 MR 定義的
struct tsm_measurements的指標。
描述
此函式建立與 tm->mrs 提供的 MR 定義相對應的屬性。
建立的屬性將引用 tm 及其成員。 在呼叫 tsm_mr_free_attribute_group() 之前,呼叫者不得釋放 tm。
上下文
程序上下文。 由於記憶體分配可能會休眠。
返回
成功時,將返回指向屬性組的指標; 否則
-EINVAL- 無效的 MR 定義。-ENOMEM- 記憶體不足。
-
void tsm_mr_free_attribute_group(const struct attribute_group *attr_grp)¶
釋放
tsm_mr_create_attribute_group()返回的屬性組