diff options
author | Sverker Eriksson <[email protected]> | 2018-10-16 21:51:34 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2018-10-19 19:44:51 +0200 |
commit | c45856710651882d16686be82626ae6058590005 (patch) | |
tree | 8aea5b69efd1141c2d521812221419d4e173aa5a /erts/emulator/beam/erl_db_catree.h | |
parent | c7ea2f9bde2cc3125a12d820cca36582ee1046c5 (diff) | |
download | otp-c45856710651882d16686be82626ae6058590005.tar.gz otp-c45856710651882d16686be82626ae6058590005.tar.bz2 otp-c45856710651882d16686be82626ae6058590005.zip |
erts: Remove tree merging for ets:select*
Diffstat (limited to 'erts/emulator/beam/erl_db_catree.h')
-rw-r--r-- | erts/emulator/beam/erl_db_catree.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_db_catree.h b/erts/emulator/beam/erl_db_catree.h index f9c0784289..510a9e81d3 100644 --- a/erts/emulator/beam/erl_db_catree.h +++ b/erts/emulator/beam/erl_db_catree.h @@ -92,11 +92,30 @@ typedef struct db_table_catree { int is_routing_nodes_freed; } DbTableCATree; +typedef struct { + DbTableCATree* tb; + Eterm next_route_key; + DbTableCATreeBaseNode* locked_bnode; + int read_only; +} CATreeRootIterator; + + void db_initialize_catree(void); int db_create_catree(Process *p, DbTable *tbl); +TreeDbTerm** catree_find_root(Eterm key, CATreeRootIterator*); + +TreeDbTerm** catree_find_next_from_pb_key_root(Eterm key, CATreeRootIterator*); +TreeDbTerm** catree_find_prev_from_pb_key_root(Eterm key, CATreeRootIterator*); +TreeDbTerm** catree_find_nextprev_root(CATreeRootIterator*, int next); +TreeDbTerm** catree_find_next_root(CATreeRootIterator*); +TreeDbTerm** catree_find_prev_root(CATreeRootIterator*); +TreeDbTerm** catree_find_first_root(CATreeRootIterator*); +TreeDbTerm** catree_find_last_root(CATreeRootIterator*); + + #ifdef ERTS_ENABLE_LOCK_COUNT void erts_lcnt_enable_db_catree_lock_count(DbTableCATree *tb, int enable); #endif |