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 6969bf6bc1e4448ed38257bc264a1c8e9cb476d7
Author: Junbo Zheng <[email protected]>
AuthorDate: Sat Oct 3 23:37:25 2026 +0800

    misc: Convert the remaining sizeof(arr)/sizeof(arr[0]) to nitems
    
    nitems() from <sys/param.h> is the preferred way to express the number
    of elements of an array in NuttX.  Convert the remaining open-coded
    sizeof(arr) / sizeof(arr[0]) occurrences across arch, boards, drivers,
    net and tools, and drop the now-unused local ARRAY_SIZE define in
    bt_slip.c.
    
    Assisted-by: Claude Code (glm-5.3) <[email protected]>
    Signed-off-by: Junbo Zheng <[email protected]>
---
 arch/arm/src/cxd56xx/cxd56_cisif.c                      |  3 ++-
 arch/arm/src/cxd56xx/cxd56_dmac.c                       |  4 +---
 arch/arm/src/cxd56xx/cxd56_gnss.c                       |  3 ++-
 arch/arm/src/cxd56xx/cxd56_pwm.c                        |  8 +++-----
 arch/arm/src/cxd56xx/cxd56_sdhci.c                      |  2 +-
 arch/arm/src/ht32f491x3/ht32f491x3_serial.c             |  3 ++-
 arch/arm/src/imxrt/imxrt117x_daisy.c                    |  2 +-
 arch/arm/src/imxrt/imxrt_daisy.c                        |  1 +
 arch/arm/src/kinetis/kinetis_lpserial.c                 | 11 ++++++-----
 arch/arm/src/kinetis/kinetis_serial.c                   | 13 +++++++------
 arch/arm/src/lc823450/lc823450_ipl2.c                   |  3 ++-
 .../src/lpc43xx/spifi/src/spifilib_fam_standard_cmd.c   |  7 ++++---
 arch/arm/src/n32h7/n32_serial.c                         | 11 ++++++-----
 arch/arm/src/ra8m1/ra_gpt.c                             |  3 ++-
 arch/arm/src/stm32f7/stm32_lse.c                        |  3 ++-
 arch/arm/src/stm32h5/stm32_lse.c                        |  3 ++-
 arch/arm/src/stm32h7/stm32_lse.c                        |  3 ++-
 arch/arm/src/stm32l5/stm32l5_lse.c                      |  3 ++-
 arch/arm/src/stm32u5/stm32_lse.c                        |  3 ++-
 arch/arm/src/stm32wl5/stm32wl5_lse.c                    |  3 ++-
 arch/arm/src/tiva/common/tiva_hciuart.c                 |  3 ++-
 arch/arm64/src/bcm2711/bcm2711_gpio.c                   |  3 ++-
 arch/arm64/src/imx9/imx9_flexio_dshot.c                 |  3 ++-
 arch/arm64/src/imx9/imx9_tpm_pwm.c                      |  3 ++-
 arch/arm64/src/imx9/imx9_usbdev.c                       |  3 ++-
 arch/risc-v/src/bl602/bl602_serial.c                    |  3 ++-
 arch/risc-v/src/bl808/bl808_serial.c                    |  3 ++-
 arch/risc-v/src/common/espressif/esp_ulp.c              |  3 ++-
 arch/risc-v/src/eic7700x/eic7700x_cpuclk.c              |  5 +++--
 arch/risc-v/src/mpfs/mpfs_entrypoints.c                 |  3 ++-
 arch/risc-v/src/rv32m1/rv32m1_serial.c                  |  3 ++-
 arch/sim/src/sim/sim_offload.c                          |  3 ++-
 arch/x86/src/qemu/qemu_vga.c                            |  3 ++-
 arch/xtensa/src/common/espressif/esp_ulp.c              |  3 ++-
 boards/arm/cxd56xx/common/src/cxd56_sensors.c           |  3 ++-
 boards/arm/cxd56xx/drivers/sensors/ak09912_scu.c        |  6 ++----
 boards/arm/cxd56xx/drivers/sensors/apds9930_scu.c       |  8 +++-----
 boards/arm/cxd56xx/drivers/sensors/bh1721fvc_scu.c      |  6 ++----
 boards/arm/cxd56xx/drivers/sensors/bh1745nuc_scu.c      |  6 ++----
 boards/arm/cxd56xx/drivers/sensors/bm1383glv_scu.c      |  8 +++-----
 boards/arm/cxd56xx/drivers/sensors/bm1422gmv_scu.c      |  6 ++----
 boards/arm/cxd56xx/drivers/sensors/bmi160_scu.c         |  8 +++-----
 boards/arm/cxd56xx/drivers/sensors/bmp280_scu.c         |  8 +++-----
 boards/arm/cxd56xx/drivers/sensors/kx022_scu.c          |  6 ++----
 boards/arm/cxd56xx/drivers/sensors/lt1pa01_scu.c        |  8 +++-----
 boards/arm/cxd56xx/drivers/sensors/rpr0521rs_scu.c      |  8 +++-----
 boards/arm/stm32h7/nucleo-h743zi/src/stm32_bringup.c    |  3 ++-
 boards/arm64/a64/pinephone/src/pinephone_display.c      | 11 +++++------
 .../esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7121.c       |  3 ++-
 .../esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7123.c       |  3 ++-
 .../esp32s2/esp32s2-kaluga-1/src/esp32s2_buttons.c      |  8 +++-----
 .../esp32s3-8048S043/src/esp32s3_board_touchsceen.c     |  5 +++--
 .../esp32s3-box/src/esp32s3_board_touchsceen_gt911.c    |  5 +++--
 drivers/can/ctucanfd_pci.c                              |  5 +++--
 drivers/eeprom/i2c_xx24xx.c                             |  3 ++-
 drivers/eeprom/spi_xx25xx.c                             |  4 ++--
 drivers/input/gt9xx.c                                   |  5 +++--
 drivers/modem/alt1250/altcom_errno.c                    |  6 ++----
 drivers/modem/alt1250/altcom_hdlr.c                     |  8 +++-----
 drivers/modem/alt1250/altcom_hdlr_psave.c               |  6 ++----
 drivers/sensors/sensor.c                                |  3 ++-
 drivers/sensors/sht4x_uorb.c                            |  3 ++-
 drivers/video/isx012.c                                  |  3 ++-
 drivers/wireless/bluetooth/bt_slip.c                    | 17 ++++++++---------
 net/netlink/netlink_route.c                             |  5 +++--
 65 files changed, 165 insertions(+), 158 deletions(-)

diff --git a/arch/arm/src/cxd56xx/cxd56_cisif.c 
b/arch/arm/src/cxd56xx/cxd56_cisif.c
index 7a2c2df11f9..00f46cd0766 100644
--- a/arch/arm/src/cxd56xx/cxd56_cisif.c
+++ b/arch/arm/src/cxd56xx/cxd56_cisif.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdio.h>
 #include <stdbool.h>
 #include <string.h>
@@ -543,7 +544,7 @@ static int cisif_intc_handler(int irq, void *context, void 
*arg)
   value = (value & enable);
 
   for (index = 0;
-       index < sizeof(g_intcomp_func) / sizeof(g_intcomp_func[0]);
+       index < nitems(g_intcomp_func);
        index++)
     {
       if ((value & (1 << index)) != 0)
diff --git a/arch/arm/src/cxd56xx/cxd56_dmac.c 
b/arch/arm/src/cxd56xx/cxd56_dmac.c
index 52de12bd2b9..bd463650627 100644
--- a/arch/arm/src/cxd56xx/cxd56_dmac.c
+++ b/arch/arm/src/cxd56xx/cxd56_dmac.c
@@ -27,6 +27,7 @@
 #include <nuttx/config.h>
 #include <nuttx/kmalloc.h>
 
+#include <sys/param.h>
 #include <assert.h>
 #include <errno.h>
 #include <stdint.h>
@@ -133,9 +134,6 @@ struct dmac080_register_map
 #define DMAC_CH_HALT   (1u<<18)
 #define DMAC_CH_ACTIVE (1u<<17)
 
-#ifndef itemsof
-#define itemsof(a) (sizeof(a)/sizeof(a[0]))
-#endif
 
 /****************************************************************************
  * Link list item structure for use scatter/gather operation
diff --git a/arch/arm/src/cxd56xx/cxd56_gnss.c 
b/arch/arm/src/cxd56xx/cxd56_gnss.c
index 2fd34dc2e77..fe0a85f9b8b 100644
--- a/arch/arm/src/cxd56xx/cxd56_gnss.c
+++ b/arch/arm/src/cxd56xx/cxd56_gnss.c
@@ -34,6 +34,7 @@
 #include <poll.h>
 #include <errno.h>
 #include <nuttx/debug.h>
+#include <sys/param.h>
 #include <sys/stat.h>
 
 #include <nuttx/kmalloc.h>
@@ -3214,7 +3215,7 @@ static int cxd56_gnss_register(const char *devpath)
       goto err0;
     }
 
-  for (i = 0; i < sizeof(devsig_table) / sizeof(devsig_table[0]); i++)
+  for (i = 0; i < nitems(devsig_table); i++)
     {
       ret = cxd56_cpu1siginit(devsig_table[i].sigtype, priv);
       if (ret < 0)
diff --git a/arch/arm/src/cxd56xx/cxd56_pwm.c b/arch/arm/src/cxd56xx/cxd56_pwm.c
index 05d8bf92bd3..21e8fdcd98e 100644
--- a/arch/arm/src/cxd56xx/cxd56_pwm.c
+++ b/arch/arm/src/cxd56xx/cxd56_pwm.c
@@ -27,6 +27,7 @@
 #include <nuttx/config.h>
 #include <nuttx/timers/pwm.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <inttypes.h>
 #include <stdint.h>
@@ -65,9 +66,6 @@
 #define PWM_PARAM_OFFPERIOD_SHIFT   (16)
 #define PWM_PHASE_PRESCALE_SHIFT    (16)
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -187,11 +185,11 @@ static int pwm_pin_config(uint32_t channel)
 
   if ((channel == CXD56_PWM_CH0) || (channel == CXD56_PWM_CH1))
     {
-      ret = cxd56_pin_configs(pingroupa, itemsof(pingroupa));
+      ret = cxd56_pin_configs(pingroupa, nitems(pingroupa));
     }
   else
     {
-      ret = cxd56_pin_configs(pingroupb, itemsof(pingroupb));
+      ret = cxd56_pin_configs(pingroupb, nitems(pingroupb));
     }
 
   return ret;
diff --git a/arch/arm/src/cxd56xx/cxd56_sdhci.c 
b/arch/arm/src/cxd56xx/cxd56_sdhci.c
index a2434b0ed62..67ccc2ec418 100644
--- a/arch/arm/src/cxd56xx/cxd56_sdhci.c
+++ b/arch/arm/src/cxd56xx/cxd56_sdhci.c
@@ -3214,7 +3214,7 @@ struct sdio_dev_s *cxd56_sdhci_initialize(int slotno)
 
 #ifdef CONFIG_SDIO_DMA
   for (i = 0;
-       i < sizeof(cxd56_sdhci_adma_dscr) / sizeof(cxd56_sdhci_adma_dscr[0]);
+       i < nitems(cxd56_sdhci_adma_dscr);
        i++)
     {
       cxd56_sdhci_adma_dscr[i] = 0;
diff --git a/arch/arm/src/ht32f491x3/ht32f491x3_serial.c 
b/arch/arm/src/ht32f491x3/ht32f491x3_serial.c
index 06ff5013159..604319708c2 100644
--- a/arch/arm/src/ht32f491x3/ht32f491x3_serial.c
+++ b/arch/arm/src/ht32f491x3/ht32f491x3_serial.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 
 #include <stdbool.h>
@@ -264,7 +265,7 @@ static uart_dev_t *const g_uart_devs[] =
 #endif
 };
 
-#define HT32_NUART_PORTS (sizeof(g_uart_devs) / sizeof(g_uart_devs[0]))
+#define HT32_NUART_PORTS (nitems(g_uart_devs))
 
 #if CONSOLE_USART == 1
 #  define CONSOLE_DEVPTR (&g_usart1port)
diff --git a/arch/arm/src/imxrt/imxrt117x_daisy.c 
b/arch/arm/src/imxrt/imxrt117x_daisy.c
index 0bce3184c81..04e0ecb7846 100644
--- a/arch/arm/src/imxrt/imxrt117x_daisy.c
+++ b/arch/arm/src/imxrt/imxrt117x_daisy.c
@@ -11553,7 +11553,7 @@ void imxrt_daisy_select(unsigned int index, unsigned 
int alt)
 {
   uintptr_t address;
 
-  DEBUGASSERT(index < sizeof(g_daisy_select) / sizeof(g_daisy_select[0]));
+  DEBUGASSERT(index < nitems(g_daisy_select));
 
   const struct imxrt_daisy_t *daisy = &g_daisy_select[index];
 
diff --git a/arch/arm/src/imxrt/imxrt_daisy.c b/arch/arm/src/imxrt/imxrt_daisy.c
index 268011f020e..208f080a70b 100644
--- a/arch/arm/src/imxrt/imxrt_daisy.c
+++ b/arch/arm/src/imxrt/imxrt_daisy.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdint.h>
 #include "chip.h"
 #include "arm_internal.h"
diff --git a/arch/arm/src/kinetis/kinetis_lpserial.c 
b/arch/arm/src/kinetis/kinetis_lpserial.c
index fe396478d57..ca76bc7e1b9 100644
--- a/arch/arm/src/kinetis/kinetis_lpserial.c
+++ b/arch/arm/src/kinetis/kinetis_lpserial.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -1873,22 +1874,22 @@ unsigned int kinetis_lpuart_serialinit(unsigned int 
first)
 
 #else
 
-  devname[(sizeof(devname) / sizeof(devname[0])) - 2] = '0' + first++;
+  devname[(nitems(devname)) - 2] = '0' + first++;
   uart_register(devname, &TTYS0_DEV);
 #ifdef TTYS1_DEV
-  devname[(sizeof(devname) / sizeof(devname[0])) - 2] = '0' + first++;
+  devname[(nitems(devname)) - 2] = '0' + first++;
   uart_register(devname, &TTYS1_DEV);
 #endif
 #ifdef TTYS2_DEV
-  devname[(sizeof(devname) / sizeof(devname[0])) - 2] = '0' + first++;
+  devname[(nitems(devname)) - 2] = '0' + first++;
   uart_register(devname, &TTYS2_DEV);
 #endif
 #ifdef TTYS3_DEV
-  devname[(sizeof(devname) / sizeof(devname[0])) - 2] = '0' + first++;
+  devname[(nitems(devname)) - 2] = '0' + first++;
   uart_register(devname, &TTYS3_DEV);
 #endif
 #ifdef TTYS4_DEV
-  devname[(sizeof(devname) / sizeof(devname[0])) - 2] = '0' + first++;
+  devname[(nitems(devname)) - 2] = '0' + first++;
   uart_register(devname, &TTYS4_DEV);
 #endif
 #endif
diff --git a/arch/arm/src/kinetis/kinetis_serial.c 
b/arch/arm/src/kinetis/kinetis_serial.c
index b2beb8202ad..8d9f3bd6dc8 100644
--- a/arch/arm/src/kinetis/kinetis_serial.c
+++ b/arch/arm/src/kinetis/kinetis_serial.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -2189,26 +2190,26 @@ unsigned int kinetis_uart_serialinit(unsigned int first)
 
   /* Register all UARTs */
 
-  devname[(sizeof(devname) / sizeof(devname[0]))-2] = '0' + first++;
+  devname[(nitems(devname))-2] = '0' + first++;
   uart_register(devname, &TTYS0_DEV);
 #ifdef TTYS1_DEV
-  devname[(sizeof(devname) / sizeof(devname[0]))-2] = '0' + first++;
+  devname[(nitems(devname))-2] = '0' + first++;
   uart_register(devname, &TTYS1_DEV);
 #endif
 #ifdef TTYS2_DEV
-  devname[(sizeof(devname) / sizeof(devname[0]))-2] = '0' + first++;
+  devname[(nitems(devname))-2] = '0' + first++;
   uart_register(devname, &TTYS2_DEV);
 #endif
 #ifdef TTYS3_DEV
-  devname[(sizeof(devname) / sizeof(devname[0]))-2] = '0' + first++;
+  devname[(nitems(devname))-2] = '0' + first++;
   uart_register(devname, &TTYS3_DEV);
 #endif
 #ifdef TTYS4_DEV
-  devname[(sizeof(devname) / sizeof(devname[0]))-2] = '0' + first++;
+  devname[(nitems(devname))-2] = '0' + first++;
   uart_register(devname, &TTYS4_DEV);
 #endif
 #ifdef TTYS5_DEV
-  devname[(sizeof(devname) / sizeof(devname[0]))-2] = '0' + first++;
+  devname[(nitems(devname))-2] = '0' + first++;
   uart_register(devname, &TTYS5_DEV);
 #endif
   return first;
diff --git a/arch/arm/src/lc823450/lc823450_ipl2.c 
b/arch/arm/src/lc823450/lc823450_ipl2.c
index dde47682a89..6740933eaa3 100644
--- a/arch/arm/src/lc823450/lc823450_ipl2.c
+++ b/arch/arm/src/lc823450/lc823450_ipl2.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdio.h>
@@ -512,7 +513,7 @@ static void chg_disable(void)
 
       if (ret == OK && freq == R2A20056BM_SCL)
         {
-          ret = I2C_TRANSFER(i2c, msg, sizeof(msg) / sizeof(msg[0]));
+          ret = I2C_TRANSFER(i2c, msg, nitems(msg));
 
           if (ret != OK)
             {
diff --git a/arch/arm/src/lpc43xx/spifi/src/spifilib_fam_standard_cmd.c 
b/arch/arm/src/lpc43xx/spifi/src/spifilib_fam_standard_cmd.c
index bbb9f43a27b..50f9042b5ce 100644
--- a/arch/arm/src/lpc43xx/spifi/src/spifilib_fam_standard_cmd.c
+++ b/arch/arm/src/lpc43xx/spifi/src/spifilib_fam_standard_cmd.c
@@ -37,6 +37,7 @@
 
 #include "spifi/inc/spifilib_dev.h"
 #include "spifi/inc/private/spifilib_chiphw.h"
+#include <sys/param.h>
 #include <nuttx/board.h>
 #include <arch/board/board.h>
 
@@ -489,7 +490,7 @@ static
   /* Read the status bytes needed */
 
   for (index = 0;
-       index < (sizeof(spifiCmdOp) / sizeof(spifiCmdOp[0]));
+       index < (nitems(spifiCmdOp));
        ++index)
     {
       spifi_HW_SetCmd(pSpifiCtrlAddr,
@@ -542,7 +543,7 @@ uint32_t spifiDeviceDataGetStatusS25FL164K(const 
SPIFI_HANDLE_T *pHandle)
                    (LPC_SPIFI_CHIPHW_T *) pHandle->pInfoData->spifiCtrlAddr;
   uint32_t idx;
 
-  for (idx = 0; idx < sizeof(spifiCmdOp) / sizeof(spifiCmdOp[0]); ++idx)
+  for (idx = 0; idx < nitems(spifiCmdOp); ++idx)
     {
       spifi_HW_SetCmd(pSpifiCtrlAddr,
                      (SPIFI_CMD_OPCODE(spifiCmdOp[idx]) |
@@ -609,7 +610,7 @@ uint32_t spifiDeviceDataGetStatusW25Q80BV(const 
SPIFI_HANDLE_T *pHandle)
   /* Read the status bytes needed */
 
   for (index = 0;
-       index < (sizeof(spifiCmdOp) / sizeof(spifiCmdOp[0]));
+       index < (nitems(spifiCmdOp));
        ++index)
     {
       spifi_HW_SetCmd(pSpifiCtrlAddr,
diff --git a/arch/arm/src/n32h7/n32_serial.c b/arch/arm/src/n32h7/n32_serial.c
index ae08ec5b461..08e51cd6e6d 100644
--- a/arch/arm/src/n32h7/n32_serial.c
+++ b/arch/arm/src/n32h7/n32_serial.c
@@ -22,6 +22,7 @@
  ****************************************************************************/
 
 #include <nuttx/config.h>
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -2583,7 +2584,7 @@ static void up_pm_setsuspend(bool suspend)
 {
   /* Iterate all UARTs to suspend/resume */
 
-  for (int i = 0; i < sizeof(g_uart_devs) / sizeof(g_uart_devs[0]); i++)
+  for (int i = 0; i < nitems(g_uart_devs); i++)
     {
       struct up_dev_s *priv = g_uart_devs[i];
 
@@ -2627,7 +2628,7 @@ static int up_pm_prepare(struct pm_callback_s *cb, int 
domain,
 
   if (pmstate == PM_SLEEP || pmstate == PM_STANDBY)
     {
-      for (int i = 0; i < sizeof(g_uart_devs) / sizeof(g_uart_devs[0]); i++)
+      for (int i = 0; i < nitems(g_uart_devs); i++)
         {
           struct up_dev_s *priv = g_uart_devs[i];
 
@@ -2664,7 +2665,7 @@ uart_dev_t *n32_serial_get_uart(int uart_num)
 {
   int idx = uart_num - 1;
 
-  if (idx < 0 || idx >= (int)(sizeof(g_uart_devs) / sizeof(g_uart_devs[0])))
+  if (idx < 0 || idx >= (int)(nitems(g_uart_devs)))
     {
       return NULL;
     }
@@ -2688,7 +2689,7 @@ void arm_earlyserialinit(void)
 #ifdef HAVE_UART
   /* Disable all UART interrupts */
 
-  for (int i = 0; i < sizeof(g_uart_devs) / sizeof(g_uart_devs[0]); i++)
+  for (int i = 0; i < nitems(g_uart_devs); i++)
     {
       if (g_uart_devs[i])
         {
@@ -2740,7 +2741,7 @@ void arm_serialinit(void)
 
   /* Register remaining UARTs */
 
-  for (int i = 0; i < sizeof(g_uart_devs) / sizeof(g_uart_devs[0]); i++)
+  for (int i = 0; i < nitems(g_uart_devs); i++)
     {
       if (!g_uart_devs[i])
         {
diff --git a/arch/arm/src/ra8m1/ra_gpt.c b/arch/arm/src/ra8m1/ra_gpt.c
index 6e686c41e76..80b72005061 100644
--- a/arch/arm/src/ra8m1/ra_gpt.c
+++ b/arch/arm/src/ra8m1/ra_gpt.c
@@ -45,6 +45,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdint.h>
 #include <stdbool.h>
 #include <errno.h>
@@ -151,7 +152,7 @@ static const struct ra_gpt_prescaler_s g_prescalers[] =
   { 1024, R_GPT_GTCR_TPCS_PCLKGPTNPCLKC_1024 },
 };
 
-#define GPT_NPRESCALERS  (sizeof(g_prescalers) / sizeof(g_prescalers[0]))
+#define GPT_NPRESCALERS  (nitems(g_prescalers))
 
 /* Per-channel state, only for the channels enabled in Kconfig.  Channels
  * 0-7 are GPT32, 8-13 are GPT16.  The module-stop bit is MSTPCRE.MSTPE
diff --git a/arch/arm/src/stm32f7/stm32_lse.c b/arch/arm/src/stm32f7/stm32_lse.c
index ecc5b01ca3d..568d36588af 100644
--- a/arch/arm/src/stm32f7/stm32_lse.c
+++ b/arch/arm/src/stm32f7/stm32_lse.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 
 #include "arm_internal.h"
@@ -151,7 +152,7 @@ void stm32_rcc_enablelse(void)
               break;
             }
         }
-      while (drive < sizeof(drives) / sizeof(drives[0]));
+      while (drive < nitems(drives));
 #endif
 #if defined(CONFIG_STM32_RTC_LSECLOCK_RUN_DRV_CAPABILITY) && \
     CONFIG_STM32_RTC_LSECLOCK_START_DRV_CAPABILITY != \
diff --git a/arch/arm/src/stm32h5/stm32_lse.c b/arch/arm/src/stm32h5/stm32_lse.c
index 7bc65aa3a06..aa3c33863fc 100644
--- a/arch/arm/src/stm32h5/stm32_lse.c
+++ b/arch/arm/src/stm32h5/stm32_lse.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 
 #include "arm_internal.h"
@@ -151,7 +152,7 @@ void stm32_rcc_enablelse(void)
               break;
             }
         }
-      while (drive < sizeof(drives) / sizeof(drives[0]));
+      while (drive < nitems(drives));
 #endif
 
 #ifdef CONFIG_STM32_RTC_LSECLOCK_LOWER_RUN_DRV_CAPABILITY
diff --git a/arch/arm/src/stm32h7/stm32_lse.c b/arch/arm/src/stm32h7/stm32_lse.c
index 0fdfaf611c7..1b219026c73 100644
--- a/arch/arm/src/stm32h7/stm32_lse.c
+++ b/arch/arm/src/stm32h7/stm32_lse.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 
 #include "arm_internal.h"
@@ -176,7 +177,7 @@ void stm32_rcc_enablelse(void)
               break;
             }
         }
-      while (drive < sizeof(drives_rev_y) / sizeof(drives_rev_y[0]));
+      while (drive < nitems(drives_rev_y));
 
 #endif
 #if defined(CONFIG_STM32_RTC_LSECLOCK_RUN_DRV_CAPABILITY) && \
diff --git a/arch/arm/src/stm32l5/stm32l5_lse.c 
b/arch/arm/src/stm32l5/stm32l5_lse.c
index df44ae463c6..87e325d11e3 100644
--- a/arch/arm/src/stm32l5/stm32l5_lse.c
+++ b/arch/arm/src/stm32l5/stm32l5_lse.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 
 #include "arm_internal.h"
@@ -154,7 +155,7 @@ void stm32_rcc_enablelse(void)
               break;
             }
         }
-      while (drive < sizeof(drives) / sizeof(drives[0]));
+      while (drive < nitems(drives));
 #endif
 
       if (timeout != 0)
diff --git a/arch/arm/src/stm32u5/stm32_lse.c b/arch/arm/src/stm32u5/stm32_lse.c
index ebac02e6c54..480d5444312 100644
--- a/arch/arm/src/stm32u5/stm32_lse.c
+++ b/arch/arm/src/stm32u5/stm32_lse.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 
 #include "arm_internal.h"
@@ -154,7 +155,7 @@ void stm32_rcc_enablelse(void)
               break;
             }
         }
-      while (drive < sizeof(drives) / sizeof(drives[0]));
+      while (drive < nitems(drives));
 #endif
 
       if (timeout != 0)
diff --git a/arch/arm/src/stm32wl5/stm32wl5_lse.c 
b/arch/arm/src/stm32wl5/stm32wl5_lse.c
index 50857241ebc..a7cfbe8e1a2 100644
--- a/arch/arm/src/stm32wl5/stm32wl5_lse.c
+++ b/arch/arm/src/stm32wl5/stm32wl5_lse.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 
 #include "arm_internal.h"
@@ -155,7 +156,7 @@ void stm32_rcc_enablelse(void)
               break;
             }
         }
-      while (drive < sizeof(drives) / sizeof(drives[0]));
+      while (drive < nitems(drives));
 #endif
 
       if (timeout != 0)
diff --git a/arch/arm/src/tiva/common/tiva_hciuart.c 
b/arch/arm/src/tiva/common/tiva_hciuart.c
index 04d531e6c2b..124725ffe3b 100644
--- a/arch/arm/src/tiva/common/tiva_hciuart.c
+++ b/arch/arm/src/tiva/common/tiva_hciuart.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -1870,7 +1871,7 @@ void hciuart_initialize(void)
 
   /* Configure all UARTs */
 
-  for (i = 0; i < sizeof(g_hciuarts) / sizeof(g_hciuarts[0]); i++)
+  for (i = 0; i < nitems(g_hciuarts); i++)
     {
       config = g_hciuarts[i];
       if (config != NULL)
diff --git a/arch/arm64/src/bcm2711/bcm2711_gpio.c 
b/arch/arm64/src/bcm2711/bcm2711_gpio.c
index 2980343ed8c..b27673e18ec 100644
--- a/arch/arm64/src/bcm2711/bcm2711_gpio.c
+++ b/arch/arm64/src/bcm2711/bcm2711_gpio.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <nuttx/arch.h>
 
 #include <assert.h>
@@ -45,7 +46,7 @@
 
 /* Number of IRQs for GPIO interrupts */
 
-#define NUM_GPIO_IRQS (sizeof(g_gpio_irqs) / sizeof(g_gpio_irqs[0]))
+#define NUM_GPIO_IRQS (nitems(g_gpio_irqs))
 
 /****************************************************************************
  * Private Types
diff --git a/arch/arm64/src/imx9/imx9_flexio_dshot.c 
b/arch/arm64/src/imx9/imx9_flexio_dshot.c
index 917004febee..1f04cb55cca 100644
--- a/arch/arm64/src/imx9/imx9_flexio_dshot.c
+++ b/arch/arm64/src/imx9/imx9_flexio_dshot.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -1113,7 +1114,7 @@ struct dshot_lowerhalf_s 
*imx9_flexio_dshot_init(flexio_dshot_id_t id)
   struct imx9_flexio_dshot_s *priv = NULL;
   int i;
 
-  for (i = 0; i < sizeof(g_dshot_dev) / sizeof(g_dshot_dev[0]); i++)
+  for (i = 0; i < nitems(g_dshot_dev); i++)
     {
       if (g_dshot_dev[i].id == id)
         {
diff --git a/arch/arm64/src/imx9/imx9_tpm_pwm.c 
b/arch/arm64/src/imx9/imx9_tpm_pwm.c
index 35a639f9225..1513428f2b8 100644
--- a/arch/arm64/src/imx9/imx9_tpm_pwm.c
+++ b/arch/arm64/src/imx9/imx9_tpm_pwm.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -645,7 +646,7 @@ struct pwm_lowerhalf_s *imx9_tpm_pwm_init(tpm_pwm_id_t 
pwmid)
   struct imx9_pwmtimer_s *lower = NULL;
   int i;
 
-  for (i = 0; i <  sizeof(g_pwmdev) / sizeof(g_pwmdev[0]); i++)
+  for (i = 0; i <  nitems(g_pwmdev); i++)
     {
       if (pwmid == g_pwmdev[i].id)
         {
diff --git a/arch/arm64/src/imx9/imx9_usbdev.c 
b/arch/arm64/src/imx9/imx9_usbdev.c
index 4495ae266cf..ec4b88af1af 100644
--- a/arch/arm64/src/imx9/imx9_usbdev.c
+++ b/arch/arm64/src/imx9/imx9_usbdev.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -574,7 +575,7 @@ static struct imx9_usb_s g_usbdev[] =
 #endif
 };
 
-static const int n_usbdevs =  sizeof(g_usbdev) / sizeof(g_usbdev[0]);
+static const int n_usbdevs =  nitems(g_usbdev);
 
 static const struct usbdev_epops_s g_epops =
 {
diff --git a/arch/risc-v/src/bl602/bl602_serial.c 
b/arch/risc-v/src/bl602/bl602_serial.c
index d5d17c8a1a1..fce20fc29b6 100644
--- a/arch/risc-v/src/bl602/bl602_serial.c
+++ b/arch/risc-v/src/bl602/bl602_serial.c
@@ -27,6 +27,7 @@
 #include <nuttx/config.h>
 #include <nuttx/arch.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -861,7 +862,7 @@ void riscv_serialinit(void)
   /* Register all UARTs */
 
   strlcpy(devname, "/dev/ttySx", sizeof(devname));
-  for (i = 0; i < sizeof(g_uart_devs) / sizeof(g_uart_devs[0]); i++)
+  for (i = 0; i < nitems(g_uart_devs); i++)
     {
       if (g_uart_devs[i] == 0)
         {
diff --git a/arch/risc-v/src/bl808/bl808_serial.c 
b/arch/risc-v/src/bl808/bl808_serial.c
index c9e37978c12..7d46dbd51f8 100644
--- a/arch/risc-v/src/bl808/bl808_serial.c
+++ b/arch/risc-v/src/bl808/bl808_serial.c
@@ -27,6 +27,7 @@
 #include <nuttx/config.h>
 #include <nuttx/arch.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -977,7 +978,7 @@ void bl808_serialinit(void)
   /* Register all UARTs */
 
   strlcpy(devname, "/dev/ttySx", sizeof(devname));
-  for (i = 0; i < sizeof(g_uart_devs) / sizeof(g_uart_devs[0]); i++)
+  for (i = 0; i < nitems(g_uart_devs); i++)
     {
       if (g_uart_devs[i] == 0)
         {
diff --git a/arch/risc-v/src/common/espressif/esp_ulp.c 
b/arch/risc-v/src/common/espressif/esp_ulp.c
index fe89779bc0d..2490dcb9795 100644
--- a/arch/risc-v/src/common/espressif/esp_ulp.c
+++ b/arch/risc-v/src/common/espressif/esp_ulp.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 #include <nuttx/debug.h>
+#include <sys/param.h>
 #include <errno.h>
 #include <stdio.h>
 #include <string.h>
@@ -341,7 +342,7 @@ static int esp_ulp_ioctl(struct file *filep, int cmd, 
unsigned long arg)
   int ret = 0;
   int index = -1;
   struct symtab_s *sym = (struct symtab_s *)arg;
-  int var_map_size = sizeof(ulp_var_map) / sizeof(ulp_var_map[0]);
+  int var_map_size = nitems(ulp_var_map);
 
   DEBUGASSERT(sym);
 
diff --git a/arch/risc-v/src/eic7700x/eic7700x_cpuclk.c 
b/arch/risc-v/src/eic7700x/eic7700x_cpuclk.c
index 5eb43dd9f9b..3afaf9b7070 100644
--- a/arch/risc-v/src/eic7700x/eic7700x_cpuclk.c
+++ b/arch/risc-v/src/eic7700x/eic7700x_cpuclk.c
@@ -48,6 +48,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <errno.h>
 #include <stdbool.h>
 #include <stdint.h>
@@ -182,7 +183,7 @@ uint32_t eic7700x_cpuclk_measure(void)
 
 const uint32_t *eic7700x_cpuclk_rates(size_t *count)
 {
-  *count = sizeof(g_cpuclk_rates) / sizeof(g_cpuclk_rates[0]);
+  *count = nitems(g_cpuclk_rates);
   return g_cpuclk_rates;
 }
 
@@ -206,7 +207,7 @@ int eic7700x_cpuclk_setrate(uint32_t hz)
   int ret;
   size_t i;
 
-  for (i = 0; i < sizeof(g_cpuclk_rates) / sizeof(g_cpuclk_rates[0]); i++)
+  for (i = 0; i < nitems(g_cpuclk_rates); i++)
     {
       if (g_cpuclk_rates[i] == hz)
         {
diff --git a/arch/risc-v/src/mpfs/mpfs_entrypoints.c 
b/arch/risc-v/src/mpfs/mpfs_entrypoints.c
index 2e5aa4f642a..916fcff12c3 100644
--- a/arch/risc-v/src/mpfs/mpfs_entrypoints.c
+++ b/arch/risc-v/src/mpfs/mpfs_entrypoints.c
@@ -34,6 +34,7 @@
 #include <nuttx/atomic.h>
 #include <nuttx/compiler.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 
 #include "riscv_internal.h"
@@ -49,7 +50,7 @@ extern void mpfs_opensbi_prepare_hart(void);
  ****************************************************************************/
 
 #define ENTRY_STACK 512
-#define ENTRYPT_CNT sizeof(g_app_entrypoints) / sizeof(g_app_entrypoints[0])
+#define ENTRYPT_CNT nitems(g_app_entrypoints)
 
 /* Default PMP permissions */
 
diff --git a/arch/risc-v/src/rv32m1/rv32m1_serial.c 
b/arch/risc-v/src/rv32m1/rv32m1_serial.c
index 6d08b3b70e0..15a04210684 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_serial.c
+++ b/arch/risc-v/src/rv32m1/rv32m1_serial.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -1073,7 +1074,7 @@ void riscv_serialinit(void)
     },
   };
 
-  nuart = (int)(sizeof(ttydevs) / sizeof(ttydevs[0]));
+  nuart = (int)(nitems(ttydevs));
 
   /* Register the console */
 
diff --git a/arch/sim/src/sim/sim_offload.c b/arch/sim/src/sim/sim_offload.c
index 9951a1b7d74..8a24fa09fcd 100644
--- a/arch/sim/src/sim/sim_offload.c
+++ b/arch/sim/src/sim/sim_offload.c
@@ -24,6 +24,7 @@
  * Included Files
  ****************************************************************************/
 
+#include <sys/param.h>
 #include <nuttx/kmalloc.h>
 #include <nuttx/debug.h>
 
@@ -269,7 +270,7 @@ static int sim_mad_check(uint32_t header)
   sr_idx  = (header >> 10) & 3;
   padding = (header >> 9) & 1;
 
-  if (sr_idx >= sizeof(g_mad_freq_tab) / sizeof(g_mad_freq_tab[0]) ||
+  if (sr_idx >= nitems(g_mad_freq_tab) ||
       br_idx >= 0xf)
     {
       return -EINVAL;
diff --git a/arch/x86/src/qemu/qemu_vga.c b/arch/x86/src/qemu/qemu_vga.c
index 0a1d0eb0b26..f9172a6df35 100644
--- a/arch/x86/src/qemu/qemu_vga.c
+++ b/arch/x86/src/qemu/qemu_vga.c
@@ -42,6 +42,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -80,7 +81,7 @@
 #define R_H564 0x80
 #define R_H600 0x80
 
-#define SZ(x) (sizeof(x)/sizeof(x[0]))
+#define SZ(x) (nitems(x))
 
 #define VGA_XRES         320
 #define VGA_YRES         240
diff --git a/arch/xtensa/src/common/espressif/esp_ulp.c 
b/arch/xtensa/src/common/espressif/esp_ulp.c
index 57c97690908..eae5320cf4e 100644
--- a/arch/xtensa/src/common/espressif/esp_ulp.c
+++ b/arch/xtensa/src/common/espressif/esp_ulp.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 #include <nuttx/debug.h>
+#include <sys/param.h>
 #include <errno.h>
 #include <stdio.h>
 #include <string.h>
@@ -91,7 +92,7 @@ static int esp_ulp_ioctl(struct file *filep, int cmd, 
unsigned long arg)
   int ret = 0;
   int index = -1;
   struct symtab_s *sym = (struct symtab_s *)arg;
-  int var_map_size = sizeof(ulp_var_map) / sizeof(ulp_var_map[0]);
+  int var_map_size = nitems(ulp_var_map);
 
   DEBUGASSERT(sym);
 
diff --git a/boards/arm/cxd56xx/common/src/cxd56_sensors.c 
b/boards/arm/cxd56xx/common/src/cxd56_sensors.c
index 22c154479ae..638cacd39ee 100644
--- a/boards/arm/cxd56xx/common/src/cxd56_sensors.c
+++ b/boards/arm/cxd56xx/common/src/cxd56_sensors.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdio.h>
 #include <nuttx/debug.h>
 #include <errno.h>
@@ -267,7 +268,7 @@ int board_sensors_initialize(void)
 
   /* Initialize each sensor device */
 
-  for (i = 0; i < sizeof(sensor_device) / sizeof(sensor_device[0]); i++)
+  for (i = 0; i < nitems(sensor_device); i++)
     {
       dev = &sensor_device[i];
       if (dev->devpath)
diff --git a/boards/arm/cxd56xx/drivers/sensors/ak09912_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/ak09912_scu.c
index 9b614a8e307..e59e54ed5d9 100644
--- a/boards/arm/cxd56xx/drivers/sensors/ak09912_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/ak09912_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -126,9 +127,6 @@
 #define AK09912_BYTESPERSAMPLE  6
 #define AK09912_ELEMENTSIZE     2
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -314,7 +312,7 @@ static int ak09912_seqinit(struct ak09912_dev_s *priv)
 
   /* Set instruction and sample data information to sequencer */
 
-  seq_setinstruction(priv->seq, g_ak09912inst, itemsof(g_ak09912inst));
+  seq_setinstruction(priv->seq, g_ak09912inst, nitems(g_ak09912inst));
   seq_setsample(priv->seq, AK09912_BYTESPERSAMPLE, 0,
                 AK09912_ELEMENTSIZE, false);
 
diff --git a/boards/arm/cxd56xx/drivers/sensors/apds9930_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/apds9930_scu.c
index faea6c6178e..f2c6c40c060 100644
--- a/boards/arm/cxd56xx/drivers/sensors/apds9930_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/apds9930_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -129,9 +130,6 @@
 #define SETENABLE_TYPE_PS              0
 #define SETENABLE_TYPE_ALS             1
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -488,7 +486,7 @@ static int apds9930als_seqinit(struct apds9930_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_apds9930alsinst,
-                     itemsof(g_apds9930alsinst));
+                     nitems(g_apds9930alsinst));
   seq_setsample(priv->seq,
                 APDS9930_ALS_BYTESPERSAMPLE,
                 0,
@@ -527,7 +525,7 @@ static int apds9930ps_seqinit(struct apds9930_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_apds9930psinst,
-                     itemsof(g_apds9930psinst));
+                     nitems(g_apds9930psinst));
   seq_setsample(priv->seq,
                 APDS9930_PS_BYTESPERSAMPLE,
                 0,
diff --git a/boards/arm/cxd56xx/drivers/sensors/bh1721fvc_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/bh1721fvc_scu.c
index 52a97f14d68..f38317fae87 100644
--- a/boards/arm/cxd56xx/drivers/sensors/bh1721fvc_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/bh1721fvc_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -56,9 +57,6 @@
 #define BH1721FVC_POWERON               0x01
 #define BH1721FVC_AUTORESOLUTION        0x10
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -172,7 +170,7 @@ static int bh1721fvc_seqinit(struct bh1721fvc_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_bh1721fvcinst,
-                     itemsof(g_bh1721fvcinst));
+                     nitems(g_bh1721fvcinst));
   seq_setsample(priv->seq,
                 BH1721FVC_BYTESPERSAMPLE,
                 0,
diff --git a/boards/arm/cxd56xx/drivers/sensors/bh1745nuc_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/bh1745nuc_scu.c
index 384965cf139..a4efdaf8787 100644
--- a/boards/arm/cxd56xx/drivers/sensors/bh1745nuc_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/bh1745nuc_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -81,9 +82,6 @@
 
 #define BH1745NUC_MODE_CONTROL3_VAL            (0x02)
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -262,7 +260,7 @@ static int bh1745nuc_seqinit(struct bh1745nuc_dev_s *priv)
   /* Set instruction and sample data information to sequencer */
 
   seq_setinstruction(priv->seq, g_bh1745nucinst,
-                     itemsof(g_bh1745nucinst));
+                     nitems(g_bh1745nucinst));
   seq_setsample(priv->seq,
                 BH1745NUC_BYTESPERSAMPLE,
                 0,
diff --git a/boards/arm/cxd56xx/drivers/sensors/bm1383glv_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/bm1383glv_scu.c
index 5f6df440553..71e33cefde8 100644
--- a/boards/arm/cxd56xx/drivers/sensors/bm1383glv_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/bm1383glv_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -83,9 +84,6 @@
 #define BM1383AGLV_MODE_CONTROL_RESERVED   (1 << 3)
 #define BM1383AGLV_MODE_CONTROL_CONTINUOUS (2 << 0)
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -274,12 +272,12 @@ static int bm1383glv_seqinit(struct bm1383glv_dev_s *priv)
   if (g_is_bm1383glv)
     {
       inst = g_bm1383glvinst;
-      nr   = itemsof(g_bm1383glvinst);
+      nr   = nitems(g_bm1383glvinst);
     }
   else
     {
       inst = g_bm1383aglvinst;
-      nr   = itemsof(g_bm1383aglvinst);
+      nr   = nitems(g_bm1383aglvinst);
     }
 
   seq_setinstruction(priv->seq, inst, nr);
diff --git a/boards/arm/cxd56xx/drivers/sensors/bm1422gmv_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/bm1422gmv_scu.c
index 995333377c2..35b6eb4aa74 100644
--- a/boards/arm/cxd56xx/drivers/sensors/bm1422gmv_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/bm1422gmv_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -97,9 +98,6 @@
 
 #define BM1422GMV_CNTL4_VAL         0x0000
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -285,7 +283,7 @@ static int bm1422gmv_seqinit(struct bm1422gmv_dev_s *priv)
 
   /* Set instruction and sample data information to sequencer */
 
-  seq_setinstruction(priv->seq, g_bm1422gmvinst, itemsof(g_bm1422gmvinst));
+  seq_setinstruction(priv->seq, g_bm1422gmvinst, nitems(g_bm1422gmvinst));
   seq_setsample(priv->seq, BM1422GMV_BYTESPERSAMPLE, 0,
                 BM1422GMV_ELEMENTSIZE, false);
 
diff --git a/boards/arm/cxd56xx/drivers/sensors/bmi160_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/bmi160_scu.c
index c42a11c1de3..a2b20e226ba 100644
--- a/boards/arm/cxd56xx/drivers/sensors/bmi160_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/bmi160_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <fixedmath.h>
@@ -217,9 +218,6 @@
 #define MAG_PM_NORMAL         (0x19)
 #define MAG_PM_LOWPOWER       (0x1A)
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -478,7 +476,7 @@ static int bmi160_seqinit_gyro(struct bmi160_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_bmi160gyroinst,
-                     itemsof(g_bmi160gyroinst));
+                     nitems(g_bmi160gyroinst));
   seq_setsample(priv->seq,
                 BMI160_BYTESPERSAMPLE,
                 0,
@@ -517,7 +515,7 @@ static int bmi160_seqinit_accel(struct bmi160_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_bmi160accelinst,
-                     itemsof(g_bmi160accelinst));
+                     nitems(g_bmi160accelinst));
   seq_setsample(priv->seq,
                 BMI160_BYTESPERSAMPLE,
                 0,
diff --git a/boards/arm/cxd56xx/drivers/sensors/bmp280_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/bmp280_scu.c
index 2db74ed0765..6b9efb8cd40 100644
--- a/boards/arm/cxd56xx/drivers/sensors/bmp280_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/bmp280_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -120,9 +121,6 @@
 #define BMP280TEMP_BYTESPERSAMPLE   3
 #define BMP280TEMP_ELEMENTSIZE      3
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -495,7 +493,7 @@ static int bmp280_seqinit_press(struct bmp280_dev_s *priv)
   /* Set instruction and sample data information to sequencer */
 
   seq_setinstruction(priv->seq, g_bmp280pressinst,
-                     itemsof(g_bmp280pressinst));
+                     nitems(g_bmp280pressinst));
   seq_setsample(priv->seq, BMP280PRESS_BYTESPERSAMPLE, 0,
                 BMP280PRESS_ELEMENTSIZE, false);
 
@@ -521,7 +519,7 @@ static int bmp280_seqinit_temp(struct bmp280_dev_s *priv)
   /* Set instruction and sample data information to sequencer */
 
   seq_setinstruction(priv->seq, g_bmp280tempinst,
-                     itemsof(g_bmp280tempinst));
+                     nitems(g_bmp280tempinst));
   seq_setsample(priv->seq, BMP280TEMP_BYTESPERSAMPLE, 0,
                 BMP280TEMP_ELEMENTSIZE, false);
 
diff --git a/boards/arm/cxd56xx/drivers/sensors/kx022_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/kx022_scu.c
index bb569bcb45d..5d61cced62f 100644
--- a/boards/arm/cxd56xx/drivers/sensors/kx022_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/kx022_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -88,9 +89,6 @@
 #define KX022_ODCNTL_LPRO       (1 << 6)
 #define KX022_ODCNTL_IIR_BYPASS (1 << 7)
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -269,7 +267,7 @@ static int kx022_seqinit(struct kx022_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_kx022inst,
-                     itemsof(g_kx022inst));
+                     nitems(g_kx022inst));
   seq_setsample(priv->seq,
                 KX022_BYTESPERSAMPLE,
                 0,
diff --git a/boards/arm/cxd56xx/drivers/sensors/lt1pa01_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/lt1pa01_scu.c
index 41cf599286f..55f24994a42 100644
--- a/boards/arm/cxd56xx/drivers/sensors/lt1pa01_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/lt1pa01_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -124,9 +125,6 @@
 #define LT1PA01_PROX_INT_TL_DEFAULT   0x03
 #define LT1PA01_PROX_INT_TH_DEFAULT   0x03
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -336,7 +334,7 @@ static int lt1pa01als_seqinit(struct lt1pa01_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_lt1pa01alsinst,
-                     itemsof(g_lt1pa01alsinst));
+                     nitems(g_lt1pa01alsinst));
   seq_setsample(priv->seq,
                 LT1PA01_ALS_BYTESPERSAMPLE,
                 0,
@@ -375,7 +373,7 @@ static int lt1pa01prox_seqinit(struct lt1pa01_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_lt1pa01proxinst,
-                     itemsof(g_lt1pa01proxinst));
+                     nitems(g_lt1pa01proxinst));
   seq_setsample(priv->seq,
                 LT1PA01_PROX_BYTESPERSAMPLE,
                 0,
diff --git a/boards/arm/cxd56xx/drivers/sensors/rpr0521rs_scu.c 
b/boards/arm/cxd56xx/drivers/sensors/rpr0521rs_scu.c
index 894afa67214..2e965f527e7 100644
--- a/boards/arm/cxd56xx/drivers/sensors/rpr0521rs_scu.c
+++ b/boards/arm/cxd56xx/drivers/sensors/rpr0521rs_scu.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <fixedmath.h>
@@ -107,9 +108,6 @@
 #define SETMODECONTROL_TYPE_PS        0
 #define SETMODECONTROL_TYPE_ALS       1
 
-#ifndef itemsof
-#  define itemsof(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -447,7 +445,7 @@ static int rpr0521rsals_seqinit(struct rpr0521rs_dev_s 
*priv)
 
   seq_setinstruction(priv->seq,
                      g_rpr0521rsalsinst,
-                     itemsof(g_rpr0521rsalsinst));
+                     nitems(g_rpr0521rsalsinst));
   seq_setsample(priv->seq,
                 RPR0521RS_ALS_BYTESPERSAMPLE,
                 0,
@@ -486,7 +484,7 @@ static int rpr0521rsps_seqinit(struct rpr0521rs_dev_s *priv)
 
   seq_setinstruction(priv->seq,
                      g_rpr0521rspsinst,
-                     itemsof(g_rpr0521rspsinst));
+                     nitems(g_rpr0521rspsinst));
   seq_setsample(priv->seq,
                 RPR0521RS_PS_BYTESPERSAMPLE,
                 0,
diff --git a/boards/arm/stm32h7/nucleo-h743zi/src/stm32_bringup.c 
b/boards/arm/stm32h7/nucleo-h743zi/src/stm32_bringup.c
index ac08dece22d..d519ad572ae 100644
--- a/boards/arm/stm32h7/nucleo-h743zi/src/stm32_bringup.c
+++ b/boards/arm/stm32h7/nucleo-h743zi/src/stm32_bringup.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <syslog.h>
 #include <errno.h>
@@ -135,7 +136,7 @@ static int stm32_capture_setup(void)
       /* TODO: LPTIMy_CAP */
     };
 
-  size_t count = sizeof(lower) / sizeof(lower[0]);
+  size_t count = nitems(lower);
 
   /* Nothing to do if no timers enabled */
 
diff --git a/boards/arm64/a64/pinephone/src/pinephone_display.c 
b/boards/arm64/a64/pinephone/src/pinephone_display.c
index 4ed506e95d9..993690a1804 100644
--- a/boards/arm64/a64/pinephone/src/pinephone_display.c
+++ b/boards/arm64/a64/pinephone/src/pinephone_display.c
@@ -41,6 +41,7 @@
 
 #include <nuttx/config.h>
 #include <stdint.h>
+#include <sys/param.h>
 #include <stdbool.h>
 #include <nuttx/debug.h>
 #include <errno.h>
@@ -265,8 +266,7 @@ static int render_framebuffers(void)
 {
   int i;
   int ret;
-  const int overlay_len = sizeof(g_pinephone_overlays) /
-                          sizeof(g_pinephone_overlays[0]);
+  const int overlay_len = nitems(g_pinephone_overlays);
 
   /* Validate the Frame Buffer Sizes */
 
@@ -452,8 +452,7 @@ static int pinephone_getoverlayinfo(struct fb_vtable_s 
*vtable,
                                     int overlayno,
                                     struct fb_overlayinfo_s *oinfo)
 {
-  const int overlay_len = sizeof(g_pinephone_overlays) /
-                          sizeof(g_pinephone_overlays[0]);
+  const int overlay_len = nitems(g_pinephone_overlays);
 
   ginfo("vtable=%p overlay=%d oinfo=%p\n", vtable, overlayno, oinfo);
   DEBUGASSERT(vtable != NULL && vtable == &g_pinephone_vtable);
@@ -877,8 +876,8 @@ void pinephone_display_test_pattern(void)
   int i;
   int x;
   int y;
-  const int fb0_len = sizeof(g_pinephone_fb0) / sizeof(g_pinephone_fb0[0]);
-  const int fb1_len = sizeof(g_pinephone_fb1) / sizeof(g_pinephone_fb1[0]);
+  const int fb0_len = nitems(g_pinephone_fb0);
+  const int fb1_len = nitems(g_pinephone_fb1);
 
   /* Zero the Framebuffers */
 
diff --git a/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7121.c 
b/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7121.c
index f49baf5963f..3f86336a6c5 100644
--- a/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7121.c
+++ b/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7121.c
@@ -32,6 +32,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <errno.h>
 #include <syslog.h>
 
@@ -267,7 +268,7 @@ static const struct st7121_init_cmd_s g_st7121_init[] =
   {0x35, g_st7121_cmd_35, sizeof(g_st7121_cmd_35), 0},
 };
 
-#define ST7121_INIT_COUNT (sizeof(g_st7121_init) / sizeof(g_st7121_init[0]))
+#define ST7121_INIT_COUNT (nitems(g_st7121_init))
 
 /****************************************************************************
  * Private Functions
diff --git a/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7123.c 
b/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7123.c
index 1b3d120ce6f..6a9a335e390 100644
--- a/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7123.c
+++ b/boards/risc-v/esp32p4/esp32p4-tab5/src/esp32p4_lcd_st7123.c
@@ -32,6 +32,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <errno.h>
 #include <syslog.h>
 #include <string.h>
@@ -309,7 +310,7 @@ static const struct st7123_init_cmd_s g_st7123_init[] =
   },
 };
 
-#define ST7123_INIT_COUNT (sizeof(g_st7123_init) / sizeof(g_st7123_init[0]))
+#define ST7123_INIT_COUNT (nitems(g_st7123_init))
 
 /****************************************************************************
  * Private Functions
diff --git a/boards/xtensa/esp32s2/esp32s2-kaluga-1/src/esp32s2_buttons.c 
b/boards/xtensa/esp32s2/esp32s2-kaluga-1/src/esp32s2_buttons.c
index fa16152220a..fc56e7740df 100644
--- a/boards/xtensa/esp32s2/esp32s2-kaluga-1/src/esp32s2_buttons.c
+++ b/boards/xtensa/esp32s2/esp32s2-kaluga-1/src/esp32s2_buttons.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 #include <nuttx/debug.h>
 #include <errno.h>
@@ -48,9 +49,6 @@
  * Pre-processor Definitions
  ****************************************************************************/
 
-#ifndef ARRAY_SIZE
-#  define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-#endif
 
 #define TOUCHPAD_REFH               (TOUCH_HVOLT_2V7)
 #define TOUCHPAD_REFL               (TOUCH_LVOLT_0V5)
@@ -197,7 +195,7 @@ uint32_t board_buttons(void)
   bool b1;
   int n;
 
-  for (uint8_t btn_id = 0; btn_id < ARRAY_SIZE(g_buttons); btn_id++)
+  for (uint8_t btn_id = 0; btn_id < nitems(g_buttons); btn_id++)
     {
       iinfo("Reading button %d\n", btn_id);
 
@@ -266,7 +264,7 @@ uint32_t board_buttons(void)
 #ifdef CONFIG_ARCH_IRQBUTTONS
 int board_button_irq(int id, xcpt_t irqhandler, void *arg)
 {
-  DEBUGASSERT(id < ARRAY_SIZE(g_buttons));
+  DEBUGASSERT(id < nitems(g_buttons));
 
   int ret;
   struct button_type_s button_info = g_buttons[id];
diff --git 
a/boards/xtensa/esp32s3/esp32s3-8048S043/src/esp32s3_board_touchsceen.c 
b/boards/xtensa/esp32s3/esp32s3-8048S043/src/esp32s3_board_touchsceen.c
index 779ce630f62..a4c240857ad 100644
--- a/boards/xtensa/esp32s3/esp32s3-8048S043/src/esp32s3_board_touchsceen.c
+++ b/boards/xtensa/esp32s3/esp32s3-8048S043/src/esp32s3_board_touchsceen.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <syslog.h>
 #include <assert.h>
 #include <errno.h>
@@ -175,7 +176,7 @@ static int gt911_read_reg(struct gt911_dev_s *dev,
     }
   };
 
-  const int msgv_len = sizeof(msgv) / sizeof(msgv[0]);
+  const int msgv_len = nitems(msgv);
 
   iinfo("reg=0x%x, buflen=%d\n", reg, buflen);
   DEBUGASSERT(dev && dev->i2c && buf);
@@ -242,7 +243,7 @@ static int gt911_write_reg(struct gt911_dev_s *dev,
     }
   };
 
-  const int msgv_len = sizeof(msgv) / sizeof(msgv[0]);
+  const int msgv_len = nitems(msgv);
 
   iinfo("reg=0x%x, val=%d\n", reg, val);
   DEBUGASSERT(dev && dev->i2c);
diff --git 
a/boards/xtensa/esp32s3/esp32s3-box/src/esp32s3_board_touchsceen_gt911.c 
b/boards/xtensa/esp32s3/esp32s3-box/src/esp32s3_board_touchsceen_gt911.c
index 4988b4082b9..4831f386b7a 100644
--- a/boards/xtensa/esp32s3/esp32s3-box/src/esp32s3_board_touchsceen_gt911.c
+++ b/boards/xtensa/esp32s3/esp32s3-box/src/esp32s3_board_touchsceen_gt911.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <syslog.h>
 #include <assert.h>
 #include <errno.h>
@@ -175,7 +176,7 @@ static int gt911_read_reg(struct gt911_dev_s *dev,
     }
   };
 
-  const int msgv_len = sizeof(msgv) / sizeof(msgv[0]);
+  const int msgv_len = nitems(msgv);
 
   iinfo("reg=0x%x, buflen=%d\n", reg, buflen);
   DEBUGASSERT(dev && dev->i2c && buf);
@@ -242,7 +243,7 @@ static int gt911_write_reg(struct gt911_dev_s *dev,
     }
   };
 
-  const int msgv_len = sizeof(msgv) / sizeof(msgv[0]);
+  const int msgv_len = nitems(msgv);
 
   iinfo("reg=0x%x, val=%d\n", reg, val);
   DEBUGASSERT(dev && dev->i2c);
diff --git a/drivers/can/ctucanfd_pci.c b/drivers/can/ctucanfd_pci.c
index d2c21f8824e..f13c592017e 100644
--- a/drivers/can/ctucanfd_pci.c
+++ b/drivers/can/ctucanfd_pci.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <assert.h>
 #include <nuttx/debug.h>
 #include <errno.h>
@@ -764,7 +765,7 @@ static void ctucanfd_chardev_receive(FAR struct 
ctucanfd_can_s *priv)
 
       /* buff[0] populated the frame->fmt.rwcnt. Check before use. */
 
-      if (frame->fmt.rwcnt > sizeof(buff) / sizeof(buff[0]) - 1)
+      if (frame->fmt.rwcnt > nitems(buff) - 1)
         {
           canerr("ERROR: CAN read/write count is too large.  Dropped\n");
           return;
@@ -1261,7 +1262,7 @@ static FAR netpkt_t *ctucanfd_sock_recv(FAR struct 
netdev_lowerhalf_s *dev)
 
   /* buff[0] populated the frame->fmt.rwcnt. Check before use. */
 
-  if (rxframe->fmt.rwcnt > sizeof(buff) / sizeof(buff[0]) - 1)
+  if (rxframe->fmt.rwcnt > nitems(buff) - 1)
     {
       canerr("ERROR: CAN read/write count is too large.  Dropped\n");
       netpkt_free(dev, pkt, NETPKT_RX);
diff --git a/drivers/eeprom/i2c_xx24xx.c b/drivers/eeprom/i2c_xx24xx.c
index 7ed44d1b558..9262df90034 100644
--- a/drivers/eeprom/i2c_xx24xx.c
+++ b/drivers/eeprom/i2c_xx24xx.c
@@ -83,6 +83,7 @@
 #include <nuttx/config.h>
 
 #include <stdbool.h>
+#include <sys/param.h>
 #include <sys/types.h>
 #include <assert.h>
 #include <nuttx/debug.h>
@@ -1021,7 +1022,7 @@ int ee24xx_initialize(FAR struct i2c_master_s *bus, 
uint8_t devaddr,
   /* Check device type early */
 
   if ((devtype < 0) ||
-      (devtype >= sizeof(g_ee24xx_devices) / sizeof(g_ee24xx_devices[0])))
+      (devtype >= nitems(g_ee24xx_devices)))
     {
       return -EINVAL;
     }
diff --git a/drivers/eeprom/spi_xx25xx.c b/drivers/eeprom/spi_xx25xx.c
index ffbf992add3..617352b8ff5 100644
--- a/drivers/eeprom/spi_xx25xx.c
+++ b/drivers/eeprom/spi_xx25xx.c
@@ -30,6 +30,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <assert.h>
 #include <nuttx/debug.h>
@@ -1450,8 +1451,7 @@ static int ee25xx_populatedev(FAR struct ee25xx_dev_s 
**eedev,
   /* Check the device type early */
 
   const int devtype_idx = (int)devtype;
-  if (devtype_idx >=
-      (sizeof(g_ee25xx_devices) / sizeof(g_ee25xx_devices[0])))
+  if (devtype_idx >= nitems(g_ee25xx_devices))
     {
       return -EINVAL;
     }
diff --git a/drivers/input/gt9xx.c b/drivers/input/gt9xx.c
index 6875e7aa1ce..ecdfd1efced 100644
--- a/drivers/input/gt9xx.c
+++ b/drivers/input/gt9xx.c
@@ -31,6 +31,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdbool.h>
 #include <stdint.h>
@@ -196,7 +197,7 @@ static int gt9xx_i2c_read(FAR struct gt9xx_dev_s *dev,
     }
   };
 
-  const int msgv_len = sizeof(msgv) / sizeof(msgv[0]);
+  const int msgv_len = nitems(msgv);
 
   iinfo("reg=0x%x, buflen=%zu\n", reg, buflen);
   DEBUGASSERT(dev && dev->i2c && buf);
@@ -265,7 +266,7 @@ static int gt9xx_i2c_write(FAR struct gt9xx_dev_s *dev,
     }
   };
 
-  const int msgv_len = sizeof(msgv) / sizeof(msgv[0]);
+  const int msgv_len = nitems(msgv);
 
   iinfo("reg=0x%x, val=%d\n", reg, val);
   DEBUGASSERT(dev && dev->i2c);
diff --git a/drivers/modem/alt1250/altcom_errno.c 
b/drivers/modem/alt1250/altcom_errno.c
index 2e387d46be4..901c1ac39b6 100644
--- a/drivers/modem/alt1250/altcom_errno.c
+++ b/drivers/modem/alt1250/altcom_errno.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <errno.h>
 #include <arpa/inet.h>
 #include "altcom_errno.h"
@@ -34,9 +35,6 @@
  * Pre-processor Definitions
  ****************************************************************************/
 
-#ifndef ARRAY_SZ
-#  define ARRAY_SZ(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 #define TABLE_CONTENT(errno_name) { ALTCOM_##errno_name, errno_name }
 
@@ -192,7 +190,7 @@ int altcom_errno2nuttx(int altcom_errno)
 {
   int i;
 
-  for (i = 0; i < ARRAY_SZ(g_converrno_tbl); i++)
+  for (i = 0; i < nitems(g_converrno_tbl); i++)
     {
       if (g_converrno_tbl[i].altcom_errno == altcom_errno)
         {
diff --git a/drivers/modem/alt1250/altcom_hdlr.c 
b/drivers/modem/alt1250/altcom_hdlr.c
index 2d334ca28d1..7ddea1fa2b5 100644
--- a/drivers/modem/alt1250/altcom_hdlr.c
+++ b/drivers/modem/alt1250/altcom_hdlr.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdint.h>
 #include <stddef.h>
 #include <nuttx/modem/alt1250.h>
@@ -48,9 +49,6 @@
  * Pre-processor Definitions
  ****************************************************************************/
 
-#ifndef ARRAY_SZ
-#  define ARRAY_SZ(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 /****************************************************************************
  * Private Types
@@ -236,7 +234,7 @@ compose_handler_t alt1250_composehdlr(uint32_t cmdid)
   int i;
   compose_handler_t ret = NULL;
 
-  for (i = 0; i < ARRAY_SZ(g_composehdlrs); i++)
+  for (i = 0; i < nitems(g_composehdlrs); i++)
     {
       if (g_composehdlrs[i].cmdid == cmdid)
         {
@@ -265,7 +263,7 @@ parse_handler_t alt1250_parsehdlr(uint16_t altcid, uint8_t 
altver)
         }
     }
 
-  for (i = 0; i < ARRAY_SZ(g_parsehdlrs); i++)
+  for (i = 0; i < nitems(g_parsehdlrs); i++)
     {
       if (g_parsehdlrs[i].altcid == altcid)
         {
diff --git a/drivers/modem/alt1250/altcom_hdlr_psave.c 
b/drivers/modem/alt1250/altcom_hdlr_psave.c
index 03dd6c505d3..ef6ed4ed1ef 100644
--- a/drivers/modem/alt1250/altcom_hdlr_psave.c
+++ b/drivers/modem/alt1250/altcom_hdlr_psave.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdint.h>
 #include <stddef.h>
 #include <string.h>
@@ -40,9 +41,6 @@
  * Pre-processor Definitions
  ****************************************************************************/
 
-#ifndef ARRAY_SZ
-#  define ARRAY_SZ(array) (sizeof(array)/sizeof(array[0]))
-#endif
 
 #define ALTCOM_GETEDRX_TYPE_UE         0
 #define ALTCOM_GETEDRX_TYPE_NEGOTIATED 1
@@ -197,7 +195,7 @@ static int32_t altcombs_convert_api_edrx_value(
               return -EINVAL;
             }
 
-          table_size = ARRAY_SZ(g_edrx_ptw_nbs1_table);
+          table_size = nitems(g_edrx_ptw_nbs1_table);
 
           for (i = 0; i < table_size; i++)
             {
diff --git a/drivers/sensors/sensor.c b/drivers/sensors/sensor.c
index 33b0858d8df..9c1657f6bdc 100644
--- a/drivers/sensors/sensor.c
+++ b/drivers/sensors/sensor.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -1367,7 +1368,7 @@ void sensor_remap_vector_raw16(FAR const int16_t *in, FAR 
int16_t *out,
   FAR const struct sensor_axis_map_s *remap;
   int16_t tmp[3];
 
-  DEBUGASSERT(place < (sizeof(g_remap_tbl) / sizeof(g_remap_tbl[0])));
+  DEBUGASSERT(place < (nitems(g_remap_tbl)));
 
   remap = &g_remap_tbl[place];
   tmp[0] = in[remap->src_x] * remap->sign_x;
diff --git a/drivers/sensors/sht4x_uorb.c b/drivers/sensors/sht4x_uorb.c
index 00ff74983b1..75e6429b92c 100644
--- a/drivers/sensors/sht4x_uorb.c
+++ b/drivers/sensors/sht4x_uorb.c
@@ -27,6 +27,7 @@
 #include <nuttx/config.h>
 #include <nuttx/nuttx.h>
 
+#include <sys/param.h>
 #include <nuttx/debug.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -671,7 +672,7 @@ static int sht4x_control(FAR struct sensor_lowerhalf_s 
*lower,
           /* Check for invalid heater command */
 
           if (0 < arg ||
-              arg >= (sizeof(g_heat_cmds) / sizeof(g_heat_cmds[0])))
+              arg >= (nitems(g_heat_cmds)))
             {
               return -EINVAL;
             }
diff --git a/drivers/video/isx012.c b/drivers/video/isx012.c
index dc697eda1dc..c3b10c7db8f 100644
--- a/drivers/video/isx012.c
+++ b/drivers/video/isx012.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <stdio.h>
 #include <string.h>
 #include <assert.h>
@@ -206,7 +207,7 @@ struct isx012_dev_s
 
 typedef struct isx012_dev_s isx012_dev_t;
 
-#define ARRAY_NENTRIES(a) (sizeof(a)/sizeof(a[0]))
+#define ARRAY_NENTRIES(a) (nitems(a))
 
 /****************************************************************************
  * Private Function Prototypes
diff --git a/drivers/wireless/bluetooth/bt_slip.c 
b/drivers/wireless/bluetooth/bt_slip.c
index c7e8eed9ef0..fd274f156ad 100644
--- a/drivers/wireless/bluetooth/bt_slip.c
+++ b/drivers/wireless/bluetooth/bt_slip.c
@@ -87,7 +87,6 @@
 #define BT_SLIP_GET_TXWIN(payload) (payload[2] & 0x07)
 #define BT_SLIP_IS_DIC(payload) ((payload[2] & 0x10) == 0x10)
 
-#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
 
 /****************************************************************************
  * Private Types
@@ -471,22 +470,22 @@ static int bt_slip_link_packet_hanlde(FAR struct 
sliphci_s *priv,
   FAR const uint8_t *payload = header + BT_SLIP_HEADER_LEN;
   int ret = len;
 
-  if (memcmp(payload, g_sync_req, ARRAY_SIZE(g_sync_req)) == 0)
+  if (memcmp(payload, g_sync_req, nitems(g_sync_req)) == 0)
     {
-      bt_slip_send_link_control(priv, g_sync_rsp, ARRAY_SIZE(g_sync_rsp));
+      bt_slip_send_link_control(priv, g_sync_rsp, nitems(g_sync_rsp));
     }
-  else if (memcmp(payload, g_sync_rsp, ARRAY_SIZE(g_sync_rsp)) == 0)
+  else if (memcmp(payload, g_sync_rsp, nitems(g_sync_rsp)) == 0)
     {
       wlinfo("h5: initialized");
       priv->linkstate = BT_SLIP_INITIALIZED;
-      bt_slip_send_link_control(priv, g_conf_req, ARRAY_SIZE(g_conf_req));
+      bt_slip_send_link_control(priv, g_conf_req, nitems(g_conf_req));
     }
-  else if (memcmp(payload, g_conf_req, ARRAY_SIZE(g_conf_req) - 1) == 0)
+  else if (memcmp(payload, g_conf_req, nitems(g_conf_req) - 1) == 0)
     {
-      bt_slip_send_link_control(priv, g_conf_rsp, ARRAY_SIZE(g_conf_rsp));
-      bt_slip_send_link_control(priv, g_conf_req, ARRAY_SIZE(g_conf_req));
+      bt_slip_send_link_control(priv, g_conf_rsp, nitems(g_conf_rsp));
+      bt_slip_send_link_control(priv, g_conf_req, nitems(g_conf_req));
     }
-  else if (memcmp(payload, g_conf_rsp, ARRAY_SIZE(g_conf_rsp)) == 0)
+  else if (memcmp(payload, g_conf_rsp, nitems(g_conf_rsp)) == 0)
     {
       if (BT_SLIP_GET_LEN(header) > 2)
         {
diff --git a/net/netlink/netlink_route.c b/net/netlink/netlink_route.c
index 7d6baed49b3..6bf3b101d2f 100644
--- a/net/netlink/netlink_route.c
+++ b/net/netlink/netlink_route.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <string.h>
 #include <assert.h>
@@ -242,7 +243,7 @@ static const struct nla_policy g_ifa_ipv4_policy[] =
   {NLA_U32, 0, NULL},                               /* IFA_RT_PRIORITY */
 };
 
-static_assert(sizeof(g_ifa_ipv4_policy) / sizeof(g_ifa_ipv4_policy[0]) ==
+static_assert(nitems(g_ifa_ipv4_policy) ==
               IFA_MAX + 1, "The policy definition has changed,"
               " please check it");
 #  endif
@@ -261,7 +262,7 @@ static const struct nla_policy g_ifa_ipv6_policy[] =
   {0, sizeof(uint32_t), NULL},                      /* IFA_RT_PRIORITY */
 };
 
-static_assert(sizeof(g_ifa_ipv6_policy) / sizeof(g_ifa_ipv6_policy[0]) ==
+static_assert(nitems(g_ifa_ipv6_policy) ==
               IFA_MAX + 1, "The policy definition has changed,"
               " please check it");
 #  endif

Reply via email to