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;
|
struct input_npcx_kbd_data *const data = dev->data;
|
||||||
|
|
||||||
ARG_UNUSED(dummy2);
|
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,
|
k_thread_create(&data->thread, data->thread_stack,
|
||||||
CONFIG_INPUT_NPCX_KBD_THREAD_STACK_SIZE,
|
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_PRIO_COOP(4), 0, K_NO_WAIT);
|
||||||
|
|
||||||
k_thread_name_set(&data->thread, "npcx-kbd");
|
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,
|
k_thread_create(&ivshmem_ev_loop_thread,
|
||||||
ivshmem_ev_loop_stack,
|
ivshmem_ev_loop_stack,
|
||||||
CONFIG_IPM_IVSHMEM_EVENT_LOOP_STACK_SIZE,
|
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,
|
(void *)dev, NULL, NULL,
|
||||||
CONFIG_IPM_IVSHMEM_EVENT_LOOP_PRIO,
|
CONFIG_IPM_IVSHMEM_EVENT_LOOP_PRIO,
|
||||||
0, K_NO_WAIT);
|
0, K_NO_WAIT);
|
||||||
|
|
|
@ -247,8 +247,12 @@ static bool ht16k33_process_keyscan_data(const struct device *dev)
|
||||||
return pressed;
|
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;
|
bool pressed;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -420,7 +424,7 @@ static int ht16k33_init(const struct device *dev)
|
||||||
|
|
||||||
k_thread_create(&data->irq_thread, data->irq_thread_stack,
|
k_thread_create(&data->irq_thread, data->irq_thread_stack,
|
||||||
CONFIG_HT16K33_KEYSCAN_IRQ_THREAD_STACK_SIZE,
|
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),
|
K_PRIO_COOP(CONFIG_HT16K33_KEYSCAN_IRQ_THREAD_PRIO),
|
||||||
0, K_NO_WAIT);
|
0, K_NO_WAIT);
|
||||||
#endif /* CONFIG_HT16K33_KEYSCAN */
|
#endif /* CONFIG_HT16K33_KEYSCAN */
|
||||||
|
|
|
@ -254,8 +254,12 @@ static int pcf8523_int1_enable_unlocked(const struct device *dev, bool enable)
|
||||||
return 0;
|
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;
|
struct pcf8523_data *data = dev->data;
|
||||||
rtc_alarm_callback alarm_callback = NULL;
|
rtc_alarm_callback alarm_callback = NULL;
|
||||||
void *alarm_user_data = 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,
|
tid = k_thread_create(&data->int1_thread, data->int1_stack,
|
||||||
K_THREAD_STACK_SIZEOF(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);
|
NULL, CONFIG_RTC_PCF8523_THREAD_PRIO, 0, K_NO_WAIT);
|
||||||
k_thread_name_set(tid, "pcf8523");
|
k_thread_name_set(tid, "pcf8523");
|
||||||
|
|
||||||
|
|
|
@ -348,8 +348,13 @@ static int udc_event_xfer_setup(const struct device *dev)
|
||||||
return err;
|
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) {
|
while (true) {
|
||||||
bool start_xfer = false;
|
bool start_xfer = false;
|
||||||
struct udc_nrf_evt evt;
|
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_mutex_init(&data->mutex);
|
||||||
k_thread_create(&drv_stack_data, drv_stack,
|
k_thread_create(&drv_stack_data, drv_stack,
|
||||||
K_KERNEL_STACK_SIZEOF(drv_stack),
|
K_KERNEL_STACK_SIZEOF(drv_stack),
|
||||||
(k_thread_entry_t)udc_nrf_thread,
|
udc_nrf_thread,
|
||||||
(void *)dev, NULL, NULL,
|
(void *)dev, NULL, NULL,
|
||||||
K_PRIO_COOP(8), 0, K_NO_WAIT);
|
K_PRIO_COOP(8), 0, K_NO_WAIT);
|
||||||
|
|
||||||
|
|
|
@ -652,8 +652,12 @@ static int max3421e_handle_bus_irq(const struct device *dev)
|
||||||
return ret;
|
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);
|
struct max3421e_data *priv = uhc_get_private(dev);
|
||||||
|
|
||||||
LOG_DBG("MAX3421E thread started");
|
LOG_DBG("MAX3421E thread started");
|
||||||
|
@ -1076,7 +1080,7 @@ static int max3421e_driver_init(const struct device *dev)
|
||||||
k_mutex_init(&data->mutex);
|
k_mutex_init(&data->mutex);
|
||||||
k_thread_create(&drv_stack_data, drv_stack,
|
k_thread_create(&drv_stack_data, drv_stack,
|
||||||
K_KERNEL_STACK_SIZEOF(drv_stack),
|
K_KERNEL_STACK_SIZEOF(drv_stack),
|
||||||
(k_thread_entry_t)uhc_max3421e_thread,
|
uhc_max3421e_thread,
|
||||||
(void *)dev, NULL, NULL,
|
(void *)dev, NULL, NULL,
|
||||||
K_PRIO_COOP(2), 0, K_NO_WAIT);
|
K_PRIO_COOP(2), 0, K_NO_WAIT);
|
||||||
k_thread_name_set(&drv_stack_data, "uhc_max3421e");
|
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 bool doorbell_started;
|
||||||
static struct k_thread doorbell_thread;
|
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) {
|
while (1) {
|
||||||
unsigned int signaled;
|
unsigned int signaled;
|
||||||
int vector;
|
int vector;
|
||||||
|
@ -174,7 +179,7 @@ static int cmd_ivshmem_get_notified(const struct shell *sh,
|
||||||
tid = k_thread_create(
|
tid = k_thread_create(
|
||||||
&doorbell_thread,
|
&doorbell_thread,
|
||||||
doorbell_stack, STACK_SIZE,
|
doorbell_stack, STACK_SIZE,
|
||||||
(k_thread_entry_t)doorbell_notification_thread,
|
doorbell_notification_thread,
|
||||||
(void *)sh, NULL, NULL,
|
(void *)sh, NULL, NULL,
|
||||||
K_PRIO_COOP(2), 0, K_NO_WAIT);
|
K_PRIO_COOP(2), 0, K_NO_WAIT);
|
||||||
if (!tid) {
|
if (!tid) {
|
||||||
|
|
|
@ -580,8 +580,12 @@ static int wdt_nxp_fs26_disable(const struct device *dev)
|
||||||
return 0;
|
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;
|
const struct wdt_nxp_fs26_config *config = dev->config;
|
||||||
struct wdt_nxp_fs26_data *data = dev->data;
|
struct wdt_nxp_fs26_data *data = dev->data;
|
||||||
struct fs26_spi_rx_frame rx_frame;
|
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,
|
k_thread_create(&data->int_thread, data->int_thread_stack,
|
||||||
CONFIG_WDT_NXP_FS26_INT_THREAD_STACK_SIZE,
|
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,
|
(void *)dev, NULL, NULL,
|
||||||
K_PRIO_COOP(CONFIG_WDT_NXP_FS26_INT_THREAD_PRIO),
|
K_PRIO_COOP(CONFIG_WDT_NXP_FS26_INT_THREAD_PRIO),
|
||||||
0, K_NO_WAIT);
|
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;
|
system_event_t evt;
|
||||||
uint8_t s_con_cnt = 0;
|
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,
|
k_tid_t tid = k_thread_create(&esp_wifi_event_thread, esp_wifi_event_stack,
|
||||||
CONFIG_ESP32_WIFI_EVENT_TASK_STACK_SIZE,
|
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,
|
CONFIG_ESP32_WIFI_EVENT_TASK_PRIO, K_INHERIT_PERMS,
|
||||||
K_NO_WAIT);
|
K_NO_WAIT);
|
||||||
|
|
||||||
|
|
|
@ -199,8 +199,13 @@ MODEM_CMD_DEFINE(on_cmd_error)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* RX thread */
|
/* 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) {
|
while (true) {
|
||||||
/* wait for incoming data */
|
/* wait for incoming data */
|
||||||
modem_iface_uart_rx_wait(&data->mctx.iface, K_FOREVER);
|
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 */
|
/* start RX thread */
|
||||||
k_thread_create(&esp_rx_thread, esp_rx_stack,
|
k_thread_create(&esp_rx_thread, esp_rx_stack,
|
||||||
K_KERNEL_STACK_SIZEOF(esp_rx_stack),
|
K_KERNEL_STACK_SIZEOF(esp_rx_stack),
|
||||||
(k_thread_entry_t)esp_rx,
|
esp_rx,
|
||||||
data, NULL, NULL,
|
data, NULL, NULL,
|
||||||
K_PRIO_COOP(CONFIG_WIFI_ESP_AT_RX_THREAD_PRIORITY), 0,
|
K_PRIO_COOP(CONFIG_WIFI_ESP_AT_RX_THREAD_PRIORITY), 0,
|
||||||
K_NO_WAIT);
|
K_NO_WAIT);
|
||||||
|
|
|
@ -966,8 +966,12 @@ static void winc1500_socket_cb(SOCKET sock, uint8 message, void *pvMsg)
|
||||||
#endif /* LOG_LEVEL > LOG_LEVEL_OFF */
|
#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 (1) {
|
||||||
while (m2m_wifi_handle_events(NULL) != 0) {
|
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 */
|
/* monitoring thread for winc wifi callbacks */
|
||||||
k_thread_create(&winc1500_thread_data, winc1500_stack,
|
k_thread_create(&winc1500_thread_data, winc1500_stack,
|
||||||
CONFIG_WIFI_WINC1500_THREAD_STACK_SIZE,
|
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),
|
K_PRIO_COOP(CONFIG_WIFI_WINC1500_THREAD_PRIO),
|
||||||
0, K_NO_WAIT);
|
0, K_NO_WAIT);
|
||||||
k_thread_name_set(&winc1500_thread_data, "WINC1500");
|
k_thread_name_set(&winc1500_thread_data, "WINC1500");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue