-
- Downloads
param & param_shmem: enable locking
We need to protect access to the param_values array. This is dynamically allocated and resized (utarray_reserve() calls realloc). If some thread was iterating the array while another was resizing the array, the first one would iterate on a freed array, thus accessing invalid memory. On NuttX this could lead to hardfaults in rare conditions. Unfortunately we need to initialize the semaphore on startup, by calling sem_init(). This adds a param_init() method called by every board/config that uses the params (at least I think I've found all of them)
Showing
- src/drivers/boards/aerocore/aerocore_init.c 3 additions, 0 deletionssrc/drivers/boards/aerocore/aerocore_init.c
- src/drivers/boards/aerofc-v1/aerofc_init.c 3 additions, 0 deletionssrc/drivers/boards/aerofc-v1/aerofc_init.c
- src/drivers/boards/auav-x21/auav_init.c 3 additions, 0 deletionssrc/drivers/boards/auav-x21/auav_init.c
- src/drivers/boards/crazyflie/crazyflie_init.c 3 additions, 0 deletionssrc/drivers/boards/crazyflie/crazyflie_init.c
- src/drivers/boards/esc35-v1/esc35_init.c 3 additions, 0 deletionssrc/drivers/boards/esc35-v1/esc35_init.c
- src/drivers/boards/mindpx-v2/mindpx2_init.c 3 additions, 0 deletionssrc/drivers/boards/mindpx-v2/mindpx2_init.c
- src/drivers/boards/px4-stm32f4discovery/px4discovery_init.c 3 additions, 0 deletionssrc/drivers/boards/px4-stm32f4discovery/px4discovery_init.c
- src/drivers/boards/px4cannode-v1/px4cannode_init.c 3 additions, 0 deletionssrc/drivers/boards/px4cannode-v1/px4cannode_init.c
- src/drivers/boards/px4esc-v1/px4esc_init.c 3 additions, 0 deletionssrc/drivers/boards/px4esc-v1/px4esc_init.c
- src/drivers/boards/px4fmu-v1/px4fmu_init.c 3 additions, 0 deletionssrc/drivers/boards/px4fmu-v1/px4fmu_init.c
- src/drivers/boards/px4fmu-v2/px4fmu2_init.c 3 additions, 0 deletionssrc/drivers/boards/px4fmu-v2/px4fmu2_init.c
- src/drivers/boards/px4fmu-v4/px4fmu_init.c 3 additions, 0 deletionssrc/drivers/boards/px4fmu-v4/px4fmu_init.c
- src/drivers/boards/px4fmu-v4pro/px4fmu_init.c 3 additions, 0 deletionssrc/drivers/boards/px4fmu-v4pro/px4fmu_init.c
- src/drivers/boards/px4fmu-v5/px4fmu_init.c 3 additions, 0 deletionssrc/drivers/boards/px4fmu-v5/px4fmu_init.c
- src/drivers/boards/px4nucleoF767ZI-v1/px4nucleo_init.c 3 additions, 0 deletionssrc/drivers/boards/px4nucleoF767ZI-v1/px4nucleo_init.c
- src/drivers/boards/s2740vc-v1/s2740vc_init.c 3 additions, 0 deletionssrc/drivers/boards/s2740vc-v1/s2740vc_init.c
- src/drivers/boards/tap-v1/tap_init.c 3 additions, 0 deletionssrc/drivers/boards/tap-v1/tap_init.c
- src/modules/systemlib/param/param.c 24 additions, 11 deletionssrc/modules/systemlib/param/param.c
- src/modules/systemlib/param/param.h 5 additions, 0 deletionssrc/modules/systemlib/param/param.h
- src/modules/systemlib/param/param_shmem.c 22 additions, 10 deletionssrc/modules/systemlib/param/param_shmem.c
Loading
Please register or sign in to comment