Re: [PATCH 26/94] Maple Tree: Add new data structure
From: Peter Zijlstra <peterz@infradead.org>
Date: 2021-05-14 15:33:19
Also in:
lkml
On Wed, Apr 28, 2021 at 03:36:02PM +0000, Liam Howlett wrote:
+enum maple_type {
+ maple_dense,
+ maple_leaf_64,
+ maple_range_64,
+ maple_arange_64,
+};+static inline unsigned long *ma_pivots(struct maple_node *node,
+ enum maple_type type)
+{
+ switch (type) {
+ case maple_arange_64:
+ return node->ma64.pivot;
+ case maple_range_64:
+ case maple_leaf_64:
+ return node->mr64.pivot;
+ case maple_dense:
+ default:
+ return NULL;
+ }
+}+static inline unsigned long *ma_gaps(struct maple_node *node,
+ enum maple_type type)
+{
+ switch (type) {
+ case maple_arange_64:
+ return node->ma64.gap;
+ case maple_range_64:
+ case maple_leaf_64:
+ case maple_dense:
+ default:
+ return NULL;
+ }
+}+static inline unsigned long mte_pivot(const struct maple_enode *mn,
+ unsigned char piv)
+{
+ struct maple_node *node = mte_to_node(mn);
+
+ switch (mte_node_type(mn)) {
+ case maple_arange_64:
+ return node->ma64.pivot[piv];
+ case maple_range_64:
+ case maple_leaf_64:
+ return node->mr64.pivot[piv];
+ case maple_dense:
+ default:
+ return 0;
+ }
+}I would suggest removing the default: case. Without it the cases are complete and the compiler should not complain. Then if you extend the enum and forget to add a case, the switch is no longer complete and will trigger a warning, forcing you to update it (hopefully correct). If you have the default, you'll not get a warning and it'll do whatever.