函数逻辑报告 |
Source Code:lib\rbtree.c |
Create Date:2022-07-27 07:10:00 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:Inline version for rb_erase() use - we want to be able to inline* and eliminate the dummy_rotate callback there
函数原型:static __always_inline void ____rb_erase_color(struct rb_node *parent, struct rb_root *root, void (*augment_rotate)(struct rb_node *old, struct rb_node *new))
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct rb_node * | parent | |
| struct rb_root * | root | |
| void (* | augment_rotate |
| 232 | 当(true)循环 |
| 253 | WRITE_ONCE(rb_right, tmp1) |
| 254 | WRITE_ONCE(rb_left, parent) |
| 255 | rb_set_parent_color(tmp1, parent, RB_BLACK) |
| 258 | augment_rotate(parent, sibling) |
| 262 | 如果非tmp1或rb_is_black(tmp1)则 |
| 264 | 如果非tmp2或rb_is_black(tmp2)则 |
| 280 | rb_set_parent_color(sibling, parent, RB_RED) |
| 282 | 如果rb_is_red(parent)则Notes on lockless lookups:* All stores to the tree structure (rb_left and rb_right) must be done using* WRITE_ONCE() |
| 284 | 否则 |
| 290 | 退出 |
| 320 | WRITE_ONCE(rb_left, tmp1) |
| 321 | WRITE_ONCE(rb_right, sibling) |
| 322 | WRITE_ONCE(rb_right, tmp2) |
| 323 | 如果tmp1则rb_set_parent_color(tmp1, sibling, RB_BLACK) |
| 326 | augment_rotate(sibling, tmp2) |
| 343 | WRITE_ONCE(rb_right, tmp2) |
| 344 | WRITE_ONCE(rb_left, parent) |
| 345 | rb_set_parent_color(tmp1, sibling, RB_BLACK) |
| 346 | 如果tmp2则rb_set_parent(tmp2, parent) |
| 350 | augment_rotate(parent, sibling) |
| 351 | 退出 |
| 352 | 否则 |
| 357 | WRITE_ONCE(rb_left, tmp1) |
| 358 | WRITE_ONCE(rb_right, parent) |
| 359 | rb_set_parent_color(tmp1, parent, RB_BLACK) |
| 362 | augment_rotate(parent, sibling) |
| 366 | 如果非tmp1或rb_is_black(tmp1)则 |
| 368 | 如果非tmp2或rb_is_black(tmp2)则 |
| 370 | rb_set_parent_color(sibling, parent, RB_RED) |
| 372 | 如果rb_is_red(parent)则Notes on lockless lookups:* All stores to the tree structure (rb_left and rb_right) must be done using* WRITE_ONCE() |
| 374 | 否则 |
| 380 | 退出 |
| 384 | WRITE_ONCE(rb_right, tmp1) |
| 385 | WRITE_ONCE(rb_left, sibling) |
| 386 | WRITE_ONCE(rb_left, tmp2) |
| 387 | 如果tmp1则rb_set_parent_color(tmp1, sibling, RB_BLACK) |
| 390 | augment_rotate(sibling, tmp2) |
| 396 | WRITE_ONCE(rb_left, tmp2) |
| 397 | WRITE_ONCE(rb_right, parent) |
| 398 | rb_set_parent_color(tmp1, sibling, RB_BLACK) |
| 399 | 如果tmp2则rb_set_parent(tmp2, parent) |
| 403 | augment_rotate(parent, sibling) |
| 404 | 退出 |
| 名称 | 描述 |
|---|---|
| __rb_erase_color | Non-inline version for rb_erase_augmented() use |
| rb_erase |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |