aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_db_catree.h
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2018-10-16 21:51:34 +0200
committerSverker Eriksson <[email protected]>2018-10-19 19:44:51 +0200
commitc45856710651882d16686be82626ae6058590005 (patch)
tree8aea5b69efd1141c2d521812221419d4e173aa5a /erts/emulator/beam/erl_db_catree.h
parentc7ea2f9bde2cc3125a12d820cca36582ee1046c5 (diff)
downloadotp-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.h19
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