Browse Source
It's undefined behavior to pass the callback to pthread to a class member like we were doing. Refactor the code so the callbacks are static members. This fixes the following warnings: libraries/AP_HAL_Linux/Scheduler.cpp: In member function 'virtual void Linux::LinuxScheduler::init(void*)': /home/lucas/p/dronecode/ardupilot/libraries/AP_HAL_Linux/Scheduler.cpp:61:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions] (pthread_startroutine_t)&Linux::LinuxScheduler::_timer_thread); ^ libraries/AP_HAL_Linux/Scheduler.cpp:65:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions] (pthread_startroutine_t)&Linux::LinuxScheduler::_uart_thread); ^ libraries/AP_HAL_Linux/Scheduler.cpp:69:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions] (pthread_startroutine_t)&Linux::LinuxScheduler::_rcin_thread); ^ libraries/AP_HAL_Linux/Scheduler.cpp:73:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions] (pthread_startroutine_t)&Linux::LinuxScheduler::_tonealarm_thread); ^ libraries/AP_HAL_Linux/Scheduler.cpp:77:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions] (pthread_startroutine_t)&Linux::LinuxScheduler::_io_thread);master
2 changed files with 50 additions and 35 deletions
Loading…
Reference in new issue