From 6044fda8a88b5d5df30ce0a00e07b3840f663149 Mon Sep 17 00:00:00 2001 From: Brendan Bartels <bbartels@iastate.edu> Date: Thu, 6 Apr 2017 08:45:38 -0500 Subject: [PATCH] quad: instruct virtual quad to relinquish cpu during I/O --- quad/Makefile | 6 +++--- quad/src/virt_quad/hw_impl_unix_i2c.c | 1 + quad/src/virt_quad/hw_impl_unix_mio7_led.c | 2 +- quad/src/virt_quad/hw_impl_unix_pwm_input.c | 1 + quad/src/virt_quad/hw_impl_unix_pwm_output.c | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/quad/Makefile b/quad/Makefile index b5432b33c..f67155208 100644 --- a/quad/Makefile +++ b/quad/Makefile @@ -38,9 +38,9 @@ test: all $(MAKE) -C src/queue test $(MAKE) -C src/computation_graph test $(MAKE) -C src/quad_app test - # ruby scripts/tests/test_safety_checks.rb - # ruby scripts/tests/test_unix_uart.rb - # ruby scripts/tests/run_virtual_test_flight.rb + ruby scripts/tests/test_safety_checks.rb + ruby scripts/tests/test_unix_uart.rb + ruby scripts/tests/run_virtual_test_flight.rb clean: rm -rf $(INCDIR) $(LIBDIR) $(OUTDIR) $(EXEDIR) diff --git a/quad/src/virt_quad/hw_impl_unix_i2c.c b/quad/src/virt_quad/hw_impl_unix_i2c.c index c32e0c4ea..b77e635a5 100644 --- a/quad/src/virt_quad/hw_impl_unix_i2c.c +++ b/quad/src/virt_quad/hw_impl_unix_i2c.c @@ -112,6 +112,7 @@ void * update_i2c_input_cache(void *arg) { cache[i].s = val; printf("%s: %ld\n", input_names[i], val); } + pthread_yield(); } return NULL; } diff --git a/quad/src/virt_quad/hw_impl_unix_mio7_led.c b/quad/src/virt_quad/hw_impl_unix_mio7_led.c index 6aef66752..b9b66dd09 100644 --- a/quad/src/virt_quad/hw_impl_unix_mio7_led.c +++ b/quad/src/virt_quad/hw_impl_unix_mio7_led.c @@ -52,6 +52,6 @@ void * output_cached_led() { sprintf(buff, "%d\n", on); write(fifo, buff, strlen(buff)); close(fifo); - usleep(500); // don't spam the reader + pthread_yield(); } } diff --git a/quad/src/virt_quad/hw_impl_unix_pwm_input.c b/quad/src/virt_quad/hw_impl_unix_pwm_input.c index e81e88254..df1aaf5f9 100644 --- a/quad/src/virt_quad/hw_impl_unix_pwm_input.c +++ b/quad/src/virt_quad/hw_impl_unix_pwm_input.c @@ -78,6 +78,7 @@ void * update_input_cache(void *arg) { printf("%s: Bad value - input not received\n", input_names[i]); } } + pthread_yield(); } return NULL; } diff --git a/quad/src/virt_quad/hw_impl_unix_pwm_output.c b/quad/src/virt_quad/hw_impl_unix_pwm_output.c index 71b89c4f4..e58d5cf5a 100644 --- a/quad/src/virt_quad/hw_impl_unix_pwm_output.c +++ b/quad/src/virt_quad/hw_impl_unix_pwm_output.c @@ -59,7 +59,7 @@ void * output_cache(void *arg) { sprintf(buff, "%ld\n", cache[i]); write(fifo, buff, strlen(buff)); close(fifo); - usleep(500); // don't spam the reader + pthread_yield(); } return NULL; } -- GitLab