usbdevice/core: use static thread instead of dynamic thread
It also add two configurations for the USB device even loop thread: RT_USBD_THREAD_STACK_SZ to set the stack size, default to 2048 RT_USBD_THREAD_PRIO to set the priority, default to 8 You can overwrite the default values in rtconfig.h
This commit is contained in:
parent
f1e34eef11
commit
f0d50a7b36
@ -374,6 +374,20 @@ typedef struct ustorage_csw* ustorage_csw_t;
|
|||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USB device event loop thread configurations
|
||||||
|
*/
|
||||||
|
/* the stack size of USB thread */
|
||||||
|
#ifndef RT_USBD_THREAD_STACK_SZ
|
||||||
|
#define RT_USBD_THREAD_STACK_SZ 2048
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* the priority of USB thread */
|
||||||
|
#ifndef RT_USBD_THREAD_PRIO
|
||||||
|
#define RT_USBD_THREAD_PRIO 8
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1344,6 +1344,11 @@ rt_err_t rt_usbd_post_event(struct udev_msg* msg, rt_size_t size)
|
|||||||
return rt_mq_send(usb_mq, (void*)msg, size);
|
return rt_mq_send(usb_mq, (void*)msg, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ALIGN(RT_ALIGN_SIZE)
|
||||||
|
static rt_uint8_t usb_thread_stack[RT_USBD_THREAD_STACK_SZ];
|
||||||
|
static struct rt_thread usb_thread;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will initialize usb device thread.
|
* This function will initialize usb device thread.
|
||||||
*
|
*
|
||||||
@ -1352,21 +1357,15 @@ rt_err_t rt_usbd_post_event(struct udev_msg* msg, rt_size_t size)
|
|||||||
*/
|
*/
|
||||||
rt_err_t rt_usbd_core_init(void)
|
rt_err_t rt_usbd_core_init(void)
|
||||||
{
|
{
|
||||||
rt_thread_t thread;
|
|
||||||
|
|
||||||
rt_list_init(&device_list);
|
rt_list_init(&device_list);
|
||||||
|
|
||||||
/* create an usb message queue */
|
/* create an usb message queue */
|
||||||
usb_mq = rt_mq_create("usbd", 32, 16, RT_IPC_FLAG_FIFO);
|
usb_mq = rt_mq_create("usbd", 32, 16, RT_IPC_FLAG_FIFO);
|
||||||
|
|
||||||
/* create usb device thread */
|
/* init usb device thread */
|
||||||
thread = rt_thread_create("usbd", rt_usbd_thread_entry, RT_NULL,
|
rt_thread_init(&usb_thread, "usbd", rt_usbd_thread_entry, RT_NULL,
|
||||||
2048, 8, 20);
|
usb_thread_stack, RT_USBD_THREAD_STACK_SZ, RT_USBD_THREAD_PRIO, 20);
|
||||||
if(thread != RT_NULL)
|
/* rt_thread_init should always be OK, so start the thread without further
|
||||||
{
|
* checking. */
|
||||||
/* startup usb device thread */
|
return rt_thread_startup(&usb_thread);
|
||||||
rt_thread_startup(thread);
|
|
||||||
}
|
|
||||||
|
|
||||||
return RT_EOK;
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user