This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 8ee637d338ff1efdfd388b16fe13f1b3ce9459f0
Author: ouyangxiangzhen <[email protected]>
AuthorDate: Wed Jun 3 16:25:22 2026 +0800

    include/sys: Add tree_type.h to separate type definitions from tree.h
    
    Create sys/tree_type.h containing only type definitions (RB_ENTRY,
    SPLAY_ENTRY, etc.) and modify hrtimer.h to include tree_type.h instead
    of tree.h. This avoids conflicts with user-space tree.h that has
    macro redefinitions.
    
    Assisted-By: mimo-v2.6-pro
    Signed-off-by: ouyangxiangzhen <[email protected]>
---
 LICENSE                 |  1 +
 include/nuttx/hrtimer.h |  2 +-
 include/sys/tree.h      | 34 +++-------------------
 include/sys/tree_type.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++++
 sched/hrtimer/hrtimer.h |  2 ++
 5 files changed, 83 insertions(+), 31 deletions(-)

diff --git a/LICENSE b/LICENSE
index f45b03b64ce..c028bb3db78 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1598,6 +1598,7 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 include/sys/tree.h
+include/sys/tree_type.h
 ====================
 
 Copyright 2002 Niels Provos <[email protected]>
diff --git a/include/nuttx/hrtimer.h b/include/nuttx/hrtimer.h
index 94cd6f7595f..d7c42d9c449 100644
--- a/include/nuttx/hrtimer.h
+++ b/include/nuttx/hrtimer.h
@@ -33,7 +33,7 @@
 #include <nuttx/list_type.h>
 
 #include <stdint.h>
-#include <sys/tree.h>
+#include <sys/tree_type.h>
 
 /****************************************************************************
  * Pre-processor Definitions
diff --git a/include/sys/tree.h b/include/sys/tree.h
index 5daf31c2d87..8effb07a186 100644
--- a/include/sys/tree.h
+++ b/include/sys/tree.h
@@ -61,16 +61,14 @@
 #ifndef __INCLUDE_SYS_TREE_H
 #define __INCLUDE_SYS_TREE_H
 
+/* Include type definitions for backward compatibility */
+
+#include <sys/tree_type.h>
+
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
 
-#define SPLAY_HEAD(name, type) \
-  struct name \
-  { \
-    struct type *sph_root; /* root of the tree */ \
-  }
-
 #define SPLAY_INITIALIZER(root) \
   { NULL }
 
@@ -80,13 +78,6 @@
       (root)->sph_root = NULL; \
     } while (0)
 
-#define SPLAY_ENTRY(type) \
-  struct \
-  { \
-    struct type *spe_left;  /* left element */ \
-    struct type *spe_right; /* right element */ \
-  }
-
 #define SPLAY_LEFT(elm, field)         (elm)->field.spe_left
 #define SPLAY_RIGHT(elm, field)        (elm)->field.spe_right
 #define SPLAY_ROOT(head)               (head)->sph_root
@@ -385,12 +376,6 @@ while (0)
 
 /* Macros that define a red-black tree */
 
-#define RB_HEAD(name, type) \
-  struct name \
-  { \
-    struct type *rbh_root; /* root of the tree */ \
-  }
-
 #define RB_INITIALIZER(root) \
     { NULL }
 
@@ -401,17 +386,6 @@ while (0)
     } \
   while (0)
 
-#define RB_BLACK                       0
-#define RB_RED                         1
-#define RB_ENTRY(type) \
-  struct \
-  { \
-    struct type *rbe_left;    /* left element */ \
-    struct type *rbe_right;   /* right element */ \
-    struct type *rbe_parent;  /* parent element */ \
-    int rbe_color;            /* node color */ \
-  }
-
 #define RB_LEFT(elm, field)            (elm)->field.rbe_left
 #define RB_RIGHT(elm, field)           (elm)->field.rbe_right
 #define RB_PARENT(elm, field)          (elm)->field.rbe_parent
diff --git a/include/sys/tree_type.h b/include/sys/tree_type.h
new file mode 100644
index 00000000000..270b89bac69
--- /dev/null
+++ b/include/sys/tree_type.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ * include/sys/tree_type.h
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ * SPDX-FileCopyrightText: 2002 Niels Provos <[email protected]>
+ *
+ * Subset of tree.h containing only type definitions for use in headers
+ * that need RB_ENTRY/SPLAY_ENTRY without full tree implementation.
+ * This avoids conflicts with user-space tree.h.
+ *
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __INCLUDE_SYS_TREE_TYPE_H
+#define __INCLUDE_SYS_TREE_TYPE_H
+
+/****************************************************************************
+ * Splay Tree Type Definitions
+ ****************************************************************************/
+
+#define SPLAY_HEAD(name, type) \
+  struct name \
+  { \
+    struct type *sph_root; /* root of the tree */ \
+  }
+
+#define SPLAY_ENTRY(type) \
+  struct \
+  { \
+    struct type *spe_left;  /* left element */ \
+    struct type *spe_right; /* right element */ \
+  }
+
+/****************************************************************************
+ * Red-Black Tree Type Definitions
+ ****************************************************************************/
+
+#define RB_HEAD(name, type) \
+  struct name \
+  { \
+    struct type *rbh_root; /* root of the tree */ \
+  }
+
+#define RB_BLACK                       0
+#define RB_RED                         1
+
+#define RB_ENTRY(type) \
+  struct \
+  { \
+    struct type *rbe_left;    /* left element */ \
+    struct type *rbe_right;   /* right element */ \
+    struct type *rbe_parent;  /* parent element */ \
+    int rbe_color;            /* node color */ \
+  }
+
+#endif /* __INCLUDE_SYS_TREE_TYPE_H */
diff --git a/sched/hrtimer/hrtimer.h b/sched/hrtimer/hrtimer.h
index b5f68396524..b2fdadac91c 100644
--- a/sched/hrtimer/hrtimer.h
+++ b/sched/hrtimer/hrtimer.h
@@ -34,6 +34,8 @@
 #include <nuttx/list.h>
 #include <nuttx/seqlock.h>
 
+#include <sys/tree.h>
+
 #include "sched/sched.h"
 
 #ifdef CONFIG_HRTIMER

Reply via email to