drivers: fix thread function signatures
Fix thread function signatures to avoid stack corruption on thread exit. Signed-off-by: Benedikt Schmidt <benedikt.schmidt@embedded-solutions.at>
This commit is contained in:
parent
191865b51c
commit
a03f1010b8
11 changed files with 60 additions and 21 deletions
|
@ -367,8 +367,9 @@ static void kbd_matrix_poll(const struct device *dev)
|
|||
}
|
||||
}
|
||||
|
||||
static void kbd_matrix_polling_thread(const struct device *dev, void *dummy2, void *dummy3)
|
||||
static void kbd_matrix_polling_thread(void *dummy1, void *dummy2, void *dummy3)
|
||||
{
|
||||
const struct device *dev = dummy1;
|
||||
struct input_npcx_kbd_data *const data = dev->data;
|
||||
|
||||
ARG_UNUSED(dummy2);
|
||||
|
@ -475,7 +476,7 @@ static int input_npcx_kbd_init(const struct device *dev)
|
|||
|
||||
k_thread_create(&data->thread, data->thread_stack,
|
||||
CONFIG_INPUT_NPCX_KBD_THREAD_STACK_SIZE,
|
||||
(k_thread_entry_t)kbd_matrix_polling_thread, (void *)dev, NULL, NULL,
|
||||
kbd_matrix_polling_thread, (void *)dev, NULL, NULL,
|
||||
K_PRIO_COOP(4), 0, K_NO_WAIT);
|
||||
|
||||
k_thread_name_set(&data->thread, "npcx-kbd");
|
||||
|
|
|
@ -102,7 +102,7 @@ static int ivshmem_ipm_init(const struct device *dev)
|
|||
k_thread_create(&ivshmem_ev_loop_thread,
|
||||
ivshmem_ev_loop_stack,
|
||||
CONFIG_IPM_IVSHMEM_EVENT_LOOP_STACK_SIZE,
|
||||
(k_thread_entry_t)ivshmem_ipm_event_loop_thread,
|
||||
ivshmem_ipm_event_loop_thread,
|
||||
(void *)dev, NULL, NULL,
|
||||
CONFIG_IPM_IVSHMEM_EVENT_LOOP_PRIO,
|
||||
0, K_NO_WAIT);
|
||||
|
|
|
@ -247,8 +247,12 @@ static bool ht16k33_process_keyscan_data(const struct device *dev)
|
|||
return pressed;
|
||||
}
|
||||
|
||||
static void ht16k33_irq_thread(struct ht16k33_data *data)
|
||||
static void ht16k33_irq_thread(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
struct ht16k33_data *data = p1;
|
||||
bool pressed;
|
||||
|
||||
while (true) {
|
||||
|
@ -420,7 +424,7 @@ static int ht16k33_init(const struct device *dev)
|
|||
|
||||
k_thread_create(&data->irq_thread, data->irq_thread_stack,
|
||||
CONFIG_HT16K33_KEYSCAN_IRQ_THREAD_STACK_SIZE,
|
||||
(k_thread_entry_t)ht16k33_irq_thread, data, NULL, NULL,
|
||||
ht16k33_irq_thread, data, NULL, NULL,
|
||||
K_PRIO_COOP(CONFIG_HT16K33_KEYSCAN_IRQ_THREAD_PRIO),
|
||||
0, K_NO_WAIT);
|
||||
#endif /* CONFIG_HT16K33_KEYSCAN */
|
||||
|
|
|
@ -254,8 +254,12 @@ static int pcf8523_int1_enable_unlocked(const struct device *dev, bool enable)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void pcf8523_int1_thread(const struct device *dev)
|
||||
static void pcf8523_int1_thread(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
const struct device *dev = p1;
|
||||
struct pcf8523_data *data = dev->data;
|
||||
rtc_alarm_callback alarm_callback = NULL;
|
||||
void *alarm_user_data = NULL;
|
||||
|
@ -791,7 +795,7 @@ static int pcf8523_init(const struct device *dev)
|
|||
|
||||
tid = k_thread_create(&data->int1_thread, data->int1_stack,
|
||||
K_THREAD_STACK_SIZEOF(data->int1_stack),
|
||||
(k_thread_entry_t)pcf8523_int1_thread, (void *)dev, NULL,
|
||||
pcf8523_int1_thread, (void *)dev, NULL,
|
||||
NULL, CONFIG_RTC_PCF8523_THREAD_PRIO, 0, K_NO_WAIT);
|
||||
k_thread_name_set(tid, "pcf8523");
|
||||
|
||||
|
|
|
@ -348,8 +348,13 @@ static int udc_event_xfer_setup(const struct device *dev)
|
|||
return err;
|
||||
}
|
||||
|
||||
static void udc_nrf_thread(const struct device *dev)
|
||||
static void udc_nrf_thread(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
const struct device *dev = p1;
|
||||
|
||||
while (true) {
|
||||
bool start_xfer = false;
|
||||
struct udc_nrf_evt evt;
|
||||
|
@ -733,7 +738,7 @@ static int udc_nrf_driver_init(const struct device *dev)
|
|||
k_mutex_init(&data->mutex);
|
||||
k_thread_create(&drv_stack_data, drv_stack,
|
||||
K_KERNEL_STACK_SIZEOF(drv_stack),
|
||||
(k_thread_entry_t)udc_nrf_thread,
|
||||
udc_nrf_thread,
|
||||
(void *)dev, NULL, NULL,
|
||||
K_PRIO_COOP(8), 0, K_NO_WAIT);
|
||||
|
||||
|
|
|
@ -652,8 +652,12 @@ static int max3421e_handle_bus_irq(const struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void uhc_max3421e_thread(const struct device *dev)
|
||||
static void uhc_max3421e_thread(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
const struct device *dev = p1;
|
||||
struct max3421e_data *priv = uhc_get_private(dev);
|
||||
|
||||
LOG_DBG("MAX3421E thread started");
|
||||
|
@ -1076,7 +1080,7 @@ static int max3421e_driver_init(const struct device *dev)
|
|||
k_mutex_init(&data->mutex);
|
||||
k_thread_create(&drv_stack_data, drv_stack,
|
||||
K_KERNEL_STACK_SIZEOF(drv_stack),
|
||||
(k_thread_entry_t)uhc_max3421e_thread,
|
||||
uhc_max3421e_thread,
|
||||
(void *)dev, NULL, NULL,
|
||||
K_PRIO_COOP(2), 0, K_NO_WAIT);
|
||||
k_thread_name_set(&drv_stack_data, "uhc_max3421e");
|
||||
|
|
|
@ -23,8 +23,13 @@ K_THREAD_STACK_DEFINE(doorbell_stack, STACK_SIZE);
|
|||
static bool doorbell_started;
|
||||
static struct k_thread doorbell_thread;
|
||||
|
||||
static void doorbell_notification_thread(const struct shell *sh)
|
||||
static void doorbell_notification_thread(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
const struct shell *sh = p1;
|
||||
|
||||
while (1) {
|
||||
unsigned int signaled;
|
||||
int vector;
|
||||
|
@ -174,7 +179,7 @@ static int cmd_ivshmem_get_notified(const struct shell *sh,
|
|||
tid = k_thread_create(
|
||||
&doorbell_thread,
|
||||
doorbell_stack, STACK_SIZE,
|
||||
(k_thread_entry_t)doorbell_notification_thread,
|
||||
doorbell_notification_thread,
|
||||
(void *)sh, NULL, NULL,
|
||||
K_PRIO_COOP(2), 0, K_NO_WAIT);
|
||||
if (!tid) {
|
||||
|
|
|
@ -580,8 +580,12 @@ static int wdt_nxp_fs26_disable(const struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void wdt_nxp_fs26_int_thread(const struct device *dev)
|
||||
static void wdt_nxp_fs26_int_thread(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
const struct device *dev = p1;
|
||||
const struct wdt_nxp_fs26_config *config = dev->config;
|
||||
struct wdt_nxp_fs26_data *data = dev->data;
|
||||
struct fs26_spi_rx_frame rx_frame;
|
||||
|
@ -661,7 +665,7 @@ static int wdt_nxp_fs26_init(const struct device *dev)
|
|||
|
||||
k_thread_create(&data->int_thread, data->int_thread_stack,
|
||||
CONFIG_WDT_NXP_FS26_INT_THREAD_STACK_SIZE,
|
||||
(k_thread_entry_t)wdt_nxp_fs26_int_thread,
|
||||
wdt_nxp_fs26_int_thread,
|
||||
(void *)dev, NULL, NULL,
|
||||
K_PRIO_COOP(CONFIG_WDT_NXP_FS26_INT_THREAD_PRIO),
|
||||
0, K_NO_WAIT);
|
||||
|
|
|
@ -262,8 +262,11 @@ static void esp_wifi_handle_disconnect_event(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void esp_wifi_event_task(void)
|
||||
static void esp_wifi_event_task(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
system_event_t evt;
|
||||
uint8_t s_con_cnt = 0;
|
||||
|
||||
|
@ -615,7 +618,7 @@ static int esp32_wifi_dev_init(const struct device *dev)
|
|||
|
||||
k_tid_t tid = k_thread_create(&esp_wifi_event_thread, esp_wifi_event_stack,
|
||||
CONFIG_ESP32_WIFI_EVENT_TASK_STACK_SIZE,
|
||||
(k_thread_entry_t)esp_wifi_event_task, NULL, NULL, NULL,
|
||||
esp_wifi_event_task, NULL, NULL, NULL,
|
||||
CONFIG_ESP32_WIFI_EVENT_TASK_PRIO, K_INHERIT_PERMS,
|
||||
K_NO_WAIT);
|
||||
|
||||
|
|
|
@ -199,8 +199,13 @@ MODEM_CMD_DEFINE(on_cmd_error)
|
|||
}
|
||||
|
||||
/* RX thread */
|
||||
static void esp_rx(struct esp_data *data)
|
||||
static void esp_rx(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
struct esp_data *data = p1;
|
||||
|
||||
while (true) {
|
||||
/* wait for incoming data */
|
||||
modem_iface_uart_rx_wait(&data->mctx.iface, K_FOREVER);
|
||||
|
@ -1366,7 +1371,7 @@ static int esp_init(const struct device *dev)
|
|||
/* start RX thread */
|
||||
k_thread_create(&esp_rx_thread, esp_rx_stack,
|
||||
K_KERNEL_STACK_SIZEOF(esp_rx_stack),
|
||||
(k_thread_entry_t)esp_rx,
|
||||
esp_rx,
|
||||
data, NULL, NULL,
|
||||
K_PRIO_COOP(CONFIG_WIFI_ESP_AT_RX_THREAD_PRIORITY), 0,
|
||||
K_NO_WAIT);
|
||||
|
|
|
@ -966,8 +966,12 @@ static void winc1500_socket_cb(SOCKET sock, uint8 message, void *pvMsg)
|
|||
#endif /* LOG_LEVEL > LOG_LEVEL_OFF */
|
||||
}
|
||||
|
||||
static void winc1500_thread(void)
|
||||
static void winc1500_thread(void *p1, void *p2, void *p3)
|
||||
{
|
||||
ARG_UNUSED(p1);
|
||||
ARG_UNUSED(p2);
|
||||
ARG_UNUSED(p3);
|
||||
|
||||
while (1) {
|
||||
while (m2m_wifi_handle_events(NULL) != 0) {
|
||||
}
|
||||
|
@ -1168,7 +1172,7 @@ static int winc1500_init(const struct device *dev)
|
|||
/* monitoring thread for winc wifi callbacks */
|
||||
k_thread_create(&winc1500_thread_data, winc1500_stack,
|
||||
CONFIG_WIFI_WINC1500_THREAD_STACK_SIZE,
|
||||
(k_thread_entry_t)winc1500_thread, NULL, NULL, NULL,
|
||||
winc1500_thread, NULL, NULL, NULL,
|
||||
K_PRIO_COOP(CONFIG_WIFI_WINC1500_THREAD_PRIO),
|
||||
0, K_NO_WAIT);
|
||||
k_thread_name_set(&winc1500_thread_data, "WINC1500");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue