From 6fceb913a25fa24dafa88d38aef30c65a80ad51e Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Fri, 15 Apr 2022 17:16:49 +0800 Subject: [PATCH] system/uorb: optimize stack used Signed-off-by: Jiuzhu Dong --- system/uorb/listener.c | 6 ++---- system/uorb/sensor/topics.c | 6 +++--- system/uorb/uORB/uORB.c | 10 ++++++---- system/uorb/uORB/uORB.h | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/system/uorb/listener.c b/system/uorb/listener.c index 7b3a083ec..5b18a54cf 100644 --- a/system/uorb/listener.c +++ b/system/uorb/listener.c @@ -344,7 +344,7 @@ static int listener_generate_object_list(FAR struct list_node *objlist, while ((entry = readdir(dir))) { struct orb_object object; - char file_name[PATH_MAX]; + char file_name[ORB_PATH_MAX]; int len; /* Get meta data and instance number through file name */ @@ -354,7 +354,7 @@ static int listener_generate_object_list(FAR struct list_node *objlist, continue; } - strlcpy(file_name, entry->d_name, PATH_MAX); + strlcpy(file_name, entry->d_name, ORB_PATH_MAX); len = strlen(file_name) - 1; object.instance = file_name[len] - '0'; @@ -424,8 +424,6 @@ static int listener_print(FAR const struct orb_metadata *meta, int fd) { meta->o_cb(meta, buffer); } -#else - uorbinfo_raw("Enable debug uorb to print message"); #endif return ret; diff --git a/system/uorb/sensor/topics.c b/system/uorb/sensor/topics.c index b291170de..2c1851f55 100644 --- a/system/uorb/sensor/topics.c +++ b/system/uorb/sensor/topics.c @@ -113,7 +113,7 @@ static FAR const struct orb_metadata *g_sensor_list[] = FAR const struct orb_metadata *orb_get_meta(FAR const char *name) { struct sensor_state_s state; - char path[PATH_MAX]; + char path[ORB_PATH_MAX]; int idx = -1; int ret; int fd; @@ -141,11 +141,11 @@ FAR const struct orb_metadata *orb_get_meta(FAR const char *name) /* Then open node to get meta */ - snprintf(path, PATH_MAX, ORB_SENSOR_PATH"%s", name); + snprintf(path, ORB_PATH_MAX, ORB_SENSOR_PATH"%s", name); fd = open(path, O_RDONLY); if (fd < 0) { - snprintf(path, PATH_MAX, ORB_SENSOR_PATH"%s%d", name, 0); + snprintf(path, ORB_PATH_MAX, ORB_SENSOR_PATH"%s%d", name, 0); fd = open(path, O_RDONLY); if (fd < 0) { diff --git a/system/uorb/uORB/uORB.c b/system/uorb/uORB/uORB.c index 9b771e657..5fdf16e9f 100644 --- a/system/uorb/uORB/uORB.c +++ b/system/uorb/uORB/uORB.c @@ -56,12 +56,13 @@ static int orb_open(FAR const struct orb_metadata *meta, bool advertiser, int instance, unsigned int queue_size) { - char path[PATH_MAX]; + char path[ORB_PATH_MAX]; bool first_open = false; int fd; int ret; - snprintf(path, PATH_MAX, ORB_SENSOR_PATH"%s%d", meta->o_name, instance); + snprintf(path, ORB_PATH_MAX, ORB_SENSOR_PATH"%s%d", meta->o_name, + instance); /* Check existance before open */ @@ -281,11 +282,12 @@ orb_abstime orb_absolute_time(void) int orb_exists(FAR const struct orb_metadata *meta, int instance) { struct sensor_state_s state; - char path[PATH_MAX]; + char path[ORB_PATH_MAX]; int ret; int fd; - snprintf(path, PATH_MAX, ORB_SENSOR_PATH"%s%d", meta->o_name, instance); + snprintf(path, ORB_PATH_MAX, ORB_SENSOR_PATH"%s%d", meta->o_name, + instance); fd = open(path, 0); if (fd < 0) { diff --git a/system/uorb/uORB/uORB.h b/system/uorb/uORB/uORB.h index 1ba96e66d..5161c31f6 100644 --- a/system/uorb/uORB/uORB.h +++ b/system/uorb/uORB/uORB.h @@ -78,6 +78,7 @@ typedef uint64_t orb_abstime; #define ORB_SENSOR_PATH "/dev/sensor/" #define ORB_USENSOR_PATH "/dev/usensor" +#define ORB_PATH_MAX (NAME_MAX + 16) #ifdef CONFIG_UORB_ALERT # define uorbpanic(fmt, ...) _alert(fmt "\n", ##__VA_ARGS__)