mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-17 13:10:36 +08:00
parameters: param_get avoid locking if value is static default
This commit is contained in:
@@ -493,8 +493,20 @@ param_get(param_t param, void *val)
|
||||
int result = PX4_ERROR;
|
||||
|
||||
if (val) {
|
||||
param_lock_reader();
|
||||
if (!params_changed[param] && !params_custom_default[param]) {
|
||||
// if parameter is unchanged (static default value) copy immediately and avoid locking
|
||||
switch (param_type(param)) {
|
||||
case PARAM_TYPE_INT32:
|
||||
memcpy(val, &px4::parameters[param].val.i, sizeof(px4::parameters[param].val.i));
|
||||
return PX4_OK;
|
||||
|
||||
case PARAM_TYPE_FLOAT:
|
||||
memcpy(val, &px4::parameters[param].val.f, sizeof(px4::parameters[param].val.f));
|
||||
return PX4_OK;
|
||||
}
|
||||
}
|
||||
|
||||
param_lock_reader();
|
||||
const void *v = param_get_value_ptr(param);
|
||||
|
||||
if (v) {
|
||||
|
||||
Reference in New Issue
Block a user