Cgroup 核心 API

裝置記憶體 Cgroup API (dmemcg)

bool dmem_cgroup_state_evict_valuable(struct dmem_cgroup_pool_state *limit_pool, struct dmem_cgroup_pool_state *test_pool, bool ignore_low, bool *ret_hit_low)

檢查是否應從 test_pool 中驅逐

引數

struct dmem_cgroup_pool_state *limit_pool

達到限制的池

struct dmem_cgroup_pool_state *test_pool

要測試的池

bool ignore_low

是否必須遵守低水位線。

bool *ret_hit_low

指向是否考慮低水位線的指標。

描述

如果可以從 test_pool 中驅逐,此函式返回 true,否則返回 false。當返回 false 且 ignore_low 為 false 時,ret_hit_low 可能會被設定為 true,表示此函式可以重新嘗試,並將 ignore_low 設定為 true。

返回

bool

void dmem_cgroup_unregister_region(struct dmem_cgroup_region *region)

登出之前註冊的區域。

引數

struct dmem_cgroup_region *region

要登出的區域。

描述

此函式撤銷 dmem_cgroup_register_region 的效果。

struct dmem_cgroup_region *dmem_cgroup_register_region(u64 size, const char *fmt, ...)

為裝置 cgroup 註冊區域。

引數

u64 size

要註冊區域的大小,以位元組為單位。

const char *fmt

要註冊的區域引數

...

可變引數

描述

此函式在 dmem cgroup 中註冊一個具有給定名稱的節點。呼叫此函式後,該區域可用於分配。

返回

成功時返回 NULL 或結構體,失敗時返回 PTR_ERR。

void dmem_cgroup_pool_state_put(struct dmem_cgroup_pool_state *pool)

丟棄對 dmem_cgroup_pool_state 的引用

引數

struct dmem_cgroup_pool_state *pool

dmem_cgroup_pool_state

描述

呼叫此函式以丟棄對 dmem_cgroup_try_charge() 返回的限制池的引用。

void dmem_cgroup_uncharge(struct dmem_cgroup_pool_state *pool, u64 size)

解除池的費用。

引數

struct dmem_cgroup_pool_state *pool

要解除費用的池。

u64 size

要解除費用的大小。

描述

撤銷 dmem_cgroup_try_charge 的效果。必須以返回的池作為引數呼叫,並且 **index** 和 **size** 相同。

int dmem_cgroup_try_charge(struct dmem_cgroup_region *region, u64 size, struct dmem_cgroup_pool_state **ret_pool, struct dmem_cgroup_pool_state **ret_limit_pool)

嘗試對區域進行新的分配計費。

引數

struct dmem_cgroup_region *region

要計費的 dmem 區域

u64 size

要計費的大小(位元組)。

struct dmem_cgroup_pool_state **ret_pool

成功分配後,被計費的池。

struct dmem_cgroup_pool_state **ret_limit_pool

分配失敗時,限制池。

描述

此函式對 **region** 區域按 **size** 位元組大小進行計費。

如果函式成功,將設定 **ret_pool**,在撤銷分配時必須將其傳遞給 dmem_cgroup_uncharge()

當此函式因 -EAGAIN 失敗且 **ret_limit_pool** 不為空時,它將被設定為達到限制的池。這可以用作 dmem_cgroup_evict_valuable() 的引數進行驅逐。此引用必須使用 **dmem_cgroup_pool_state_put()** 釋放。

返回

成功時返回 0,達到限制時返回 -EAGAIN,失敗時返回負錯誤碼。