Commit graph

61048 commits

Author SHA1 Message Date
hujun5
82a218cbf3 sched_waitpid.c: HIS_metric_violation: CCM
This commit refactors nxsched_waitpid() by extracting the core waiting logic
into a separate waittcb() helper function. This change significantly reduces
the cyclomatic complexity of the main function while preserving all original
functionality and improving code maintainability with better separation of
concerns between initialization and wait handling logic.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-04 03:04:44 +08:00
hujun5
5abba4f655 sched_waitpid.c: HIS_metric_violation(HIS_GOTO)
This commit eliminates the goto statement in nxsched_waitpid() function to
improve code quality metrics compliance. The control flow has been restructured
using nested if-else statements to achieve identical functionality while
maintaining MISRA/HIS coding standard compliance and improving code readability.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-04 03:04:44 +08:00
yinshengkai
87b317f965 Documentation: Add gprof profiling tool documentation and support.
Verified on qemu-armv7a and mps2-an500 platforms with
CoreMark benchmark and system profiling examples

Signed-off-by: yinshengkai <yinshengkai@bytedance.com>
2026-02-04 03:03:45 +08:00
yinshengkai
87be79efb3 boardss: add gprof examples
Two Examples of Incorporating gprof into QEMU

Signed-off-by: yinshengkai <yinshengkai@bytedance.com>
2026-02-04 03:03:45 +08:00
yinshengkai
54040c6888 libs/libc/machine/arm: add Cortex-M0/M23 support to arch_mcount
Add support for ARMv6-M and ARMv8-M Baseline architectures
(Cortex-M0/M0+/M23) in the mcount profiling function. These cores
only support limited Thumb-1 instruction set and require different
assembly instructions compared to ARMv7-M and higher.

Changes:
- Use MOVS+BICS instead of BIC for bit clearing on M0/M23
- Separate register restore for limited push/pop instructions
- Use BX instead of direct POP to PC on M0/M23

Signed-off-by: yinshengkai <yinshengkai@bytedance.com>
2026-02-04 03:03:45 +08:00
anjiahao
871a9b3261 libc_bsd:add missing SPDX-License
Just add SPDX-License, no code changes

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2026-02-04 03:02:04 +08:00
anjiahao
4db4252a7c libc/string: Add BSD-optimized memset implementation.
Add lib_bsdmemset.c from newlib (Red Hat BSD license) which provides
an optimized memset using word-aligned writes and loop unrolling for
improved performance on larger buffers.

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2026-02-04 03:02:04 +08:00
wangmingrong1
6301af9a44 libbuitin/compiler-rt: Solve some compilation errors
1. remove_item It needs to use the full path to exclude the file, otherwise the exclusion will fail
2. No include path was added, resulting in the header file not being found

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2026-02-04 02:33:36 +08:00
wangmingrong1
5f7d4ddcad compiler-rt: Upgrade to version 18.1.3
Some files need to be included in a specific arch

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2026-02-04 02:33:36 +08:00
wangmingrong1
0832cdca1c toolchain/arm/clang:Update clang compilation specifications
Delete the specified --config, clang can automatically find the library file through the set -march, -mcpu, and -mfpu
Otherwise, different versions of clang support different special cfg settings.

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2026-02-04 02:33:36 +08:00
Bowen Wang
c4e5ac00e3 Documentation/vhost: add Vhost framework documentation
Add comprehensive documentation for the Vhost framework, which serves
as the VirtIO backend implementation in NuttX for cross-core communication.

The documentation includes:
- Overview and comparison with Linux Vhost and QEMU VirtIO Device
- Three-layer architecture (Service, Framework, Transport)
- Driver/Device registration and matching workflow
- Source code directory structure
- Complete API reference (data structures, core APIs, macro APIs)

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-02-04 02:32:02 +08:00
Bowen Wang
8d6eaae3d7 include/nuttx/virtio: allow common virtio helpers to be used by vhost
Move common virtio inline functions (virtqueue_kick_lock, virtio_malloc_buf,
virtio_zalloc_buf, etc.) from CONFIG_DRIVERS_VIRTIO guard to CONFIG_OPENAMP
guard. This allows vhost drivers to reuse these helper functions without
requiring the full virtio driver framework.

The virtio_driver structure and driver registration APIs remain under
CONFIG_DRIVERS_VIRTIO as they are specific to virtio device drivers.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-02-04 02:32:02 +08:00
wangzhi16
2274c31950 drivers/vhost: add missing SCHED_WORKQUEUE dependency
The vhost driver uses work_queue() for deferred probe but was missing
the SCHED_WORKQUEUE Kconfig dependency, causing link errors on boards
that don't enable workqueue by default.

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
2026-02-04 02:32:02 +08:00
Yongrong Wang
b3314b3813 drivers/vhost: use MSEC2TICK for deferred probe period
Convert VHOST_DEFERED_PROBE_PERIOD from a raw value to use MSEC2TICK()
macro, ensuring the delay is correctly converted from milliseconds to
system ticks regardless of the configured tick rate.

Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
2026-02-04 02:32:02 +08:00
Yongrong Wang
a286287f4e drivers/virtio and vhost: auto-select parent config from sub-drivers
Change DRIVERS_VIRTIO and DRIVERS_VHOST from menuconfig to hidden config
options. Each virtio/vhost sub-driver now automatically selects its parent
config, eliminating the need to manually enable DRIVERS_VIRTIO or
DRIVERS_VHOST in defconfig files.

This simplifies board configuration by removing redundant CONFIG_DRIVERS_VIRTIO
entries from affected defconfig files.

Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-02-04 02:32:02 +08:00
Bowen Wang
2fc2f44b61 drivers/vhost: add vhost_get_vq_buffers() to collect scatter-gather buffers
Add vhost_get_vq_buffers() API to retrieve all chained buffers from a
virtqueue in one call. This simplifies handling of scatter-gather I/O
where data spans multiple descriptors.

The function populates an array of virtqueue_buf structures with buffer
pointers and lengths, returning the descriptor head index on success.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
Signed-off-by: hongfengchen <hongfengchen@xiaomi.com>
2026-02-04 02:32:02 +08:00
Yongrong Wang
5051007bfa drivers/vhost: add vhost helper macros for feature and config access
Add vhost wrapper macros that map to the corresponding virtio helper
functions:
- vhost_has_feature: check if a feature is supported
- vhost_read_config_member: read a config structure member
- vhost_write_config_member: write a config structure member

Also include virtio-config.h header to support these macros.

Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
2026-02-04 02:32:02 +08:00
anjiahao
af0eac7a9c sched/semaphore: Add debug assert to detect mutex recursion.
Add DEBUGASSERT in nxsem_wait_slow() to catch illegal mutex
recursion attempts. This helps identify bugs where a task tries
to lock a mutex it already holds, which is not allowed.

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2026-02-03 11:56:24 -05:00
tengshuangshuang
ac36320158 arm64: Add kmalloc header for arch timer
Include nuttx/kmalloc.h in arm64_arch_timer.c to fix missing header
dependency. This ensures proper memory allocation functions are
available for the architecture timer implementation.

Signed-off-by: hongfengchen <hongfengchen@xiaomi.com>
2026-02-03 11:45:31 -05:00
anjiahao
8ecbdf9164 cmake:add lib_psa_set/getstackaddr file to CMakeLists.txt
CMake forgot to compile these two files, so add them.

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2026-02-03 14:40:00 +01:00
Ari Kimari
f126e7575e drivers/analog: fix adc ads1115 driver
Signed-off-by: Ari Kimari <ari.kimari@tii.ae>

Fix write reg to work with all platforms
Fix compile warnings
2026-02-03 08:27:59 -05:00
hujun5
fad28050f8 sched_setscheduler.c: coverity HIS_metric_violation: RETURN
Refactor nxsched_set_scheduler() to eliminate goto statements and consolidate multiple return
paths into a single exit point. Extract sporadic scheduling logic into a separate function and
restructure parameter validation for better code quality and MISRA HIS compliance.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-03 19:22:38 +08:00
hujun5
0f052df6db sem_rw.c: coverity: HIS_metric_violation(HIS_GOTO)
This change replaces goto-based control flow with structured if-else blocks
in the up_read() function to comply with MISRA HIS coding standards while
maintaining identical functional behavior.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-03 14:49:04 +08:00
Yongrong Wang
53e9c5b986 sem_rw: optimize up_read/up_write API
This change optimizes the reader-writer semaphore release process by consolidating
redundant context switch operations and improving code efficiency, reducing
unnecessary wake-ups during concurrent access scenarios.

Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
2026-02-03 14:49:04 +08:00
aviralgarg05
7113b61b1d include/cxx/cmath: Fix compatibility with external toolchains
Guard float_t, double_t, and standard math functions with FLT_EVAL_METHOD checks. This ensures compilation when external toolchain's math.h lacks C99/C++11 definitions.

Signed-off-by: aviralgarg05 <gargaviral99@gmail.com>
2026-02-03 10:20:55 +08:00
hujun5
2ec7d90eba sched_setparam.c: coverity HIS_metric_violation: RETURN
This change refactors nxsched_set_param() by extracting complex conditional logic
into dedicated helper functions and consolidating multiple return statements into
single exit points to reduce cyclomatic complexity and comply with MISRA HIS coding
standards for safety-critical embedded systems.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-03 10:20:24 +08:00
hujun5
29e514b276 clock: Correct the usage of atomic64_t atomic functions
Replace CONFIG_SYSTEM_TIME64 conditional atomic64 operations with a unified
seqlock-based approach for managing the system tick counter. This simplifies
code by eliminating architecture-specific branches and provides more robust
thread-safe access patterns.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-03 10:18:11 +08:00
simbit18
45f4e72d22 boards: Fix Kconfig style
- Remove spaces from Kconfig

Signed-off-by: simbit18 <simbit18@gmail.com>
2026-02-03 09:36:16 +08:00
simbit18
47623e5d09 sched: Fix Kconfig style
- Remove spaces from Kconfig

- Add TABs

- Replace help => ---help---

Signed-off-by: simbit18 <simbit18@gmail.com>
2026-02-03 09:36:16 +08:00
hujun5
63aefd9975 arch/armv7-r: userspace PMU access
This change enables performance monitoring unit (PMU) access from userspace
on ARMv7-R architecture by adding CONFIG_ARCH_HAVE_PERF_EVENTS_USER_ACCESS
support and building PMU code for userspace when needed.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-02 16:20:39 +01:00
cqb
cb2a3ed83e arch/x86: fixed errors in gdt_flush and idt_flush
This commit fixes logic errors in both GDT and IDT flushing mechanisms for the x86 platform.

Signed-off-by: cqb <cqb@sideways.engineering>.
2026-02-02 22:58:02 +08:00
Hyunjun Lee
8dbc3e3122 drivers/power/pm: Fix typos in comments
Fix typos in comments of drivers/power/pm/activity_governor.c and unify
comment style for consistency.

Signed-off-by: Hyunjun Lee <hyunjunk.lee@samsung.com>
2026-02-02 15:53:09 +01:00
Eren Terzioglu
16829666cb boards/risc-v/esp32c6: Add missing config for esp32c6 romfs
Add missing config for romfs on esp32c6-devkitc

Signed-off-by: Eren Terzioglu <eren.terzioglu@espressif.com>
2026-02-02 15:42:10 +01:00
hujun5
c844ecf393 sched_profil.c: coverity HIS_metric_violation: RETURN
This change consolidates multiple return statements in the profil() function
into a single exit point by inverting the parameter validation condition and
restructuring error handling to reduce cyclomatic complexity and comply with MISRA HIS.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-02 22:18:16 +08:00
wangzhi16
a06ac14988 tools/nxstyle: add phy62xx/uart.c into style white list
To skip the style issue:
Error: /home/runner/work/nuttx/nuttx/nuttx/arch/arm/src/phy62xx/irq.c:194:5: error: Mixed case identifier found
Error: /home/runner/work/nuttx/nuttx/nuttx/arch/arm/src/phy62xx/irq.c:196:5: error: Mixed case identifier found
Error: /home/runner/work/nuttx/nuttx/nuttx/arch/arm/src/phy62xx/irq.c:199:5: error: Mixed case identifier found
Error: /home/runner/work/nuttx/nuttx/nuttx/arch/arm/src/phy62xx/phyplus_wdt.c:61:28: error: Mixed case identifier found
Error: /home/runner/work/nuttx/nuttx/nuttx/arch/arm/src/phy62xx/phyplus_wdt.c:104:2: error: Mixed case identifier found
Error: /home/runner/work/nuttx/nuttx/nuttx/arch/arm/src/phy62xx/phyplus_wdt.c:162:50: error: Mixed case identifier found

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
2026-02-02 21:17:20 +08:00
wangzhi16
a2e8a5464e arch/xtensa: replace critical_section with spinlock.
The benefits of doing this are:

1. It makes the code logic clearer, with different resources protected by different locks.

2. It improves system responsiveness and avoids contention issues caused by acquiring the same large lock.

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
2026-02-02 21:17:20 +08:00
wangzhi16
4de188cbed arm64/common: Critical Section Optimization.
Replace critical_section with spinlock.
The benefits of doing this are:

1. It makes the code logic clearer, with different resources protected by different locks.

2. It improves system responsiveness and avoids contention issues caused by acquiring the same large lock.

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
2026-02-02 21:17:20 +08:00
wangzhi16
a53d58c5c3 arm/phy62xx: Critical Section Optimization.
The benefits of doing this are:

1. It makes the code logic clearer, with different resources protected by different locks.

2. It improves system responsiveness and avoids contention issues caused by acquiring the same large lock.

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
2026-02-02 21:17:20 +08:00
wangzhi16
44f2f6f8f1 arm/rtl8720c: Critical Section Optimization.
Replace critical_section with spinlock or mutex.
The benefits of doing this are:

1. It makes the code logic clearer, with different resources protected by different locks.

2. It improves system responsiveness and avoids contention issues caused by acquiring the same large lock.

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
2026-02-02 21:17:20 +08:00
fangxinyong
a724a5f4f4 sched/cancelpt: Fix MISRA C 2012 Rule 10.4 violations
Fix violations of MISRA C:2012 Rule 10.4 (operand of unsigned and signed)
in cancellation point handling code.

Changed all CANCEL_FLAG_* macro definitions and their usage to use unsigned
literals (1u instead of 1) to ensure consistent unsigned arithmetic when
performing bitwise operations. This eliminates mixed signed/unsigned operand
violations in:

- CANCEL_FLAG_NONCANCELABLE
- CANCEL_FLAG_CANCEL_ASYNC
- CANCEL_FLAG_CANCEL_PENDING

The changes affect cancellation point entry/exit logic, cancellation state
management, and cancellation type handling across both kernel and libc
implementations.

Signed-off-by: fangxinyong <fangxinyong@xiaomi.com>
2026-02-02 21:09:40 +08:00
fangpeina
35e579d2d3 Documentation/nsh: Add stderr and stdin redirection documentation
This commit updates the NSH documentation about redirection syntax.

This documentation update corresponds to the stderr redirection feature
added in nuttx-apps PR #3378.

Signed-off-by: fangpeina <fangpeina@xiaomi.com>
2026-02-02 14:01:53 +01:00
hujun5
f794238bb8 boards/boardctl.c: BOARDIOC_SPINLOCK missing some Conditional branch
Add missing else branches to handle spinlock operations when no valid spinlock
pointer is available. This fixes a regression in IRQ save/restore operations
introduced by a previous refactoring of the spinlock control logic.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-02 20:40:33 +08:00
fangxinyong
2b9506bc5d sched/spawn: Fix MISRA C 2012 Rule 10.4 violations
Fix violations of MISRA C:2012 Rule 10.4 (essential type operand of
unsigned and signed) in posix_spawn attribute handling code.

Changed all POSIX_SPAWN_* flag macro definitions to use unsigned literals
(1u instead of 1) to ensure consistent unsigned arithmetic when performing
bitwise operations. This eliminates mixed signed/unsigned operand violations
in the following flags:

- POSIX_SPAWN_RESETIDS
- POSIX_SPAWN_SETPGROUP
- POSIX_SPAWN_SETSCHEDPARAM
- POSIX_SPAWN_SETSCHEDULER
- POSIX_SPAWN_SETSIGDEF
- POSIX_SPAWN_SETSIGMASK
- POSIX_SPAWN_SETSID

Updated all flag checking comparisons in spawn_execattrs() to compare
against 0u instead of 0 for consistency.

Signed-off-by: fangxinyong <fangxinyong@xiaomi.com>
2026-02-02 20:39:36 +08:00
hujun5
9ae2fce3c1 sched_getparam.c: coverity HIS_metric_violation: RETURN
This change consolidates multiple return statements in nxsched_get_param()
into a single exit point and restructures the error handling path to reduce
cyclomatic complexity and comply with MISRA HIS coding standards.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-02-02 14:54:58 +08:00
cqb
7b1e9eb8bc arch/x86_64: replaced loop construct with rep movsb
Replaces inefficient loop construct with rep movsb string instruction.

Signed-off-by: cqb <cqb@sideways.engineering>
2026-02-02 13:58:10 +08:00
shichunma
3fb776e45c net/netdev: a valid netdev for ipv4 should have ipv4 addr configured
It's not a valid netdev if without ipv4 address.

Signed-off-by: Jerry Ma <shichunma@bestechnic.com>
2026-02-02 13:57:56 +08:00
ouyangxiangzhen
5b978a7f9b sched/hrtimer: workaround for SCHED_RR in tickless mode.
This commit provided workaround for incorrect SCHED_RR behavior in
tickless mode.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2026-02-02 13:26:22 +08:00
ouyangxiangzhen
b685d97199 sched/hrtimer: Simplify the hrtimer.
This commit simplified the hrtimer.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2026-02-02 13:26:22 +08:00
ouyangxiangzhen
dac48484ce sched/hrtimer: Update the comments.
This commit updated the comments.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2026-02-02 13:26:22 +08:00
ouyangxiangzhen
3eedf5f22b sched/wdog: Simplify timer expiration for hrtimer.
This commit simplified the timer expiration for hrtimer.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2026-02-02 13:26:22 +08:00