aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2015-03-07 14:07:19 +0100
committerLorenz Meier <lm@inf.ethz.ch>2015-03-08 07:49:00 +0100
commit5c3f4d21944fb779feade46e1aba81ca5705462f (patch)
tree3999374555172a596bafc02548aea8a0b0c5eaed
parent6aba6a4f880cd64befa1d927b91ca3905a20f11a (diff)
downloadpx4-firmware-5c3f4d21944fb779feade46e1aba81ca5705462f.tar.gz
px4-firmware-5c3f4d21944fb779feade46e1aba81ca5705462f.tar.bz2
px4-firmware-5c3f4d21944fb779feade46e1aba81ca5705462f.zip
GPIO led: Do not allocate memory statically, but only when module loads
-rw-r--r--src/modules/gpio_led/gpio_led.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/modules/gpio_led/gpio_led.c b/src/modules/gpio_led/gpio_led.c
index 7758faed7..b759b429e 100644
--- a/src/modules/gpio_led/gpio_led.c
+++ b/src/modules/gpio_led/gpio_led.c
@@ -66,7 +66,7 @@ struct gpio_led_s {
int counter;
};
-static struct gpio_led_s gpio_led_data;
+static struct gpio_led_s *gpio_led_data;
static bool gpio_led_started = false;
__EXPORT int gpio_led_main(int argc, char *argv[]);
@@ -170,10 +170,11 @@ int gpio_led_main(int argc, char *argv[])
}
}
- memset(&gpio_led_data, 0, sizeof(gpio_led_data));
- gpio_led_data.use_io = use_io;
- gpio_led_data.pin = pin;
- int ret = work_queue(LPWORK, &gpio_led_data.work, gpio_led_start, &gpio_led_data, 0);
+ gpio_led_data = malloc(sizeof(struct gpio_led_s));
+ memset(gpio_led_data, 0, sizeof(struct gpio_led_s));
+ gpio_led_data->use_io = use_io;
+ gpio_led_data->pin = pin;
+ int ret = work_queue(LPWORK, &(gpio_led_data->work), gpio_led_start, gpio_led_data, 0);
if (ret != 0) {
errx(1, "failed to queue work: %d", ret);