xarray
眼见为实
xarray->xa_head = xa_node0
+-------------------------------+
|parent = NULL |
|shift = 8 |
|max_index= (1 << (8 + 4)) - 1 |
|offset |
| |
|slots[XA_CHUNK_SIZE] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|f|e|d|c|b|a|9|8|7|6|5|4|3|2|1|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| |
v v
xa_node2 xa_node1
+-------------------------------+ +-------------------------------+
|parent = xa_node0 | |parent = xa_node0 |
|shift = 4 | |shift = 4 |
|max_index= (1 << (4 + 4)) - 1 | |max_index= (1 << (4 + 4)) - 1 |
|offset = d | |offset = 0 |
| | | |
|slots[XA_CHUNK_SIZE] | |slots[XA_CHUNK_SIZE] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|f|e|d|c|b|a|9|8|7|6|5|4|3|2|1|0| |f|e|d|c|b|a|9|8|7|6|5|4|3|2|1|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| +--> [0x090, 0x09f]
v
xa_node3
+-------------------------------+
|parent = xa_node2 |
|shift = 0 |
|max_index= (1 << 4) - 1 |
|offset = 1 |
| |
|slots[XA_CHUNK_SIZE] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|f|e|d|c|b|a|9|8|7|6|5|4|3|2|1|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| +--> 0xd15
+--> 0xd1e眼花缭乱的状态判断
entry的种类
判断entry
判断xas
代码分析
xas_create
xas_store
xa_store_order
shift/sibs
举个例子
代码细节
xa_store_range/xas_set_range
特例
默认不改变当前order
order降级
任意指针
XA_FLAGS_ALLOC1
删除到只剩0号索引有值
测试
Last updated