From 5c3f4d21944fb779feade46e1aba81ca5705462f Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 7 Mar 2015 14:07:19 +0100 Subject: GPIO led: Do not allocate memory statically, but only when module loads --- src/modules/gpio_led/gpio_led.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src') 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); -- cgit v1.2.3