1*330f5a30SYanteng Si.. SPDX-License-Identifier: GPL-2.0
2*330f5a30SYanteng Si.. include:: ../disclaimer-zh_CN.rst
3*330f5a30SYanteng Si
4*330f5a30SYanteng Si:Original: Documentation/Devicetree/changesets.rst
5*330f5a30SYanteng Si
6*330f5a30SYanteng Si:翻译:
7*330f5a30SYanteng Si
8*330f5a30SYanteng Si 司延腾 Yanteng Si <siyanteng@loongson.cn>
9*330f5a30SYanteng Si
10*330f5a30SYanteng Si:校译:
11*330f5a30SYanteng Si
12*330f5a30SYanteng Si
13*330f5a30SYanteng Si============
14*330f5a30SYanteng Si设备树变更集
15*330f5a30SYanteng Si============
16*330f5a30SYanteng Si
17*330f5a30SYanteng Si设备树变更集是一种方法,它允许人们以这样一种方式在实时树中使用变化,即要么使用全部的
18*330f5a30SYanteng Si变化,要么不使用。如果在使用变更集的过程中发生错误,那么树将被回滚到之前的状态。一个
19*330f5a30SYanteng Si变更集也可以在使用后被删除。
20*330f5a30SYanteng Si
21*330f5a30SYanteng Si当一个变更集被使用时,所有的改变在发出OF_RECONFIG通知器之前被一次性使用到树上。这是
22*330f5a30SYanteng Si为了让接收者在收到通知时看到一个完整的、一致的树的状态。
23*330f5a30SYanteng Si
24*330f5a30SYanteng Si一个变化集的顺序如下。
25*330f5a30SYanteng Si
26*330f5a30SYanteng Si1. of_changeset_init() - 初始化一个变更集。
27*330f5a30SYanteng Si
28*330f5a30SYanteng Si2. 一些DT树变化的调用,of_changeset_attach_node(), of_changeset_detach_node(),
29*330f5a30SYanteng Si   of_changeset_add_property(), of_changeset_remove_property,
30*330f5a30SYanteng Si   of_changeset_update_property()来准备一组变更。此时不会对活动树做任何变更。所有
31*330f5a30SYanteng Si   的变更操作都记录在of_changeset的 `entries` 列表中。
32*330f5a30SYanteng Si
33*330f5a30SYanteng Si3. of_changeset_apply() - 将变更使用到树上。要么整个变更集被使用,要么如果有错误,
34*330f5a30SYanteng Si   树会被恢复到之前的状态。核心通过锁确保正确的顺序。如果需要的话,可以使用一个解锁的
35*330f5a30SYanteng Si   __of_changeset_apply版本。
36*330f5a30SYanteng Si
37*330f5a30SYanteng Si如果一个成功使用的变更集需要被删除,可以用of_changeset_revert()来完成。
38