Skip to content

Commit

Permalink
spinlock: add __cplusplus check to avoid build break with C++
Browse files Browse the repository at this point in the history
stdatomic.h is incompatible with C++

Signed-off-by: chao an <[email protected]>
  • Loading branch information
anchao committed Nov 12, 2023
1 parent d999deb commit d7fdb84
Showing 1 changed file with 22 additions and 7 deletions.
29 changes: 22 additions & 7 deletions include/nuttx/spinlock.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,21 @@

#include <nuttx/irq.h>

#ifdef CONFIG_RW_SPINLOCK
#include <stdatomic.h>
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif

#if defined(CONFIG_RW_SPINLOCK) && !defined(__cplusplus)
# include <stdatomic.h>
typedef atomic_int rwlock_t;
#define RW_SP_UNLOCKED 0
#define RW_SP_READ_LOCKED 1
#define RW_SP_WRITE_LOCKED -1
# define RW_SP_UNLOCKED 0
# define RW_SP_READ_LOCKED 1
# define RW_SP_WRITE_LOCKED -1
#endif

#ifndef CONFIG_SPINLOCK
Expand Down Expand Up @@ -500,7 +509,7 @@ void spin_unlock_irqrestore_wo_note(FAR spinlock_t *lock, irqstate_t flags);
# define spin_unlock_irqrestore_wo_note(l, f) up_irq_restore(f)
#endif

#ifdef CONFIG_RW_SPINLOCK
#if defined(CONFIG_RW_SPINLOCK) && !defined(__cplusplus)

/****************************************************************************
* Name: rwlock_init
Expand Down Expand Up @@ -808,5 +817,11 @@ void write_unlock_irqrestore(FAR rwlock_t *lock, irqstate_t flags);
# define write_unlock_irqrestore(l, f) up_irq_restore(f)
#endif

#endif /* CONFIG_RW_SPINLOCK */
#endif /* CONFIG_RW_SPINLOCK && !__cplusplus */

#undef EXTERN
#if defined(__cplusplus)
}
#endif

#endif /* __INCLUDE_NUTTX_SPINLOCK_H */

0 comments on commit d7fdb84

Please sign in to comment.