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
