mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 03:45:50 +08:00
sched/sleep: replace all Signal-based sleep implement to Scheduled sleep
Nuttx currently has 2 types of sleep interfaces: 1. Signal-scheduled sleep: nxsig_sleep() / nxsig_usleep() / nxsig_nanosleep() Weaknesses: a. Signal-dependent: The signal-scheduled sleep method is bound to the signal framework, while some driver sleep operations do not depend on signals. b. Timespec conversion: Signal-scheduled sleep involves timespec conversion, which has a significant impact on performance. 2. Busy sleep: up_mdelay() / up_udelay() Weaknesses: a. Does not actively trigger scheduling, occupy the CPU loading. 3. New interfaces: Scheduled sleep: nxsched_sleep() / nxsched_usleep() / nxsched_msleep() / nxsched_ticksleep() Strengths: a. Does not depend on the signal framework. b. Tick-based, without additional computational overhead. Currently, the Nuttx driver framework extensively uses nxsig_* interfaces. However, the driver does not need to rely on signals or timespec conversion. Therefore, a new set of APIs is added to reduce dependencies on other modules. (This PR also aims to make signals optional, further reducing the code size of Nuttx.) Signed-off-by: chao an <anchao.archer@bytedance.com>
This commit is contained in:
@@ -494,11 +494,11 @@ static struct ili9341_lcd_s *esp32s3_initializa_ili9342c(int spi_port)
|
||||
|
||||
/* Reset LCD */
|
||||
|
||||
nxsig_usleep(10 * 1000);
|
||||
nxsched_usleep(10 * 1000);
|
||||
esp32s3_gpiowrite(DISPLAY_RST, true);
|
||||
nxsig_usleep(10 * 1000);
|
||||
nxsched_usleep(10 * 1000);
|
||||
esp32s3_gpiowrite(DISPLAY_RST, false);
|
||||
nxsig_usleep(50 * 1000);
|
||||
nxsched_usleep(50 * 1000);
|
||||
|
||||
/* Turn on LCD backlight */
|
||||
|
||||
|
||||
@@ -85,9 +85,9 @@ int board_lcd_initialize(void)
|
||||
/* Reset LCD */
|
||||
|
||||
esp32s3_gpiowrite(DISPLAY_RST, false);
|
||||
nxsig_usleep(10 * 1000);
|
||||
nxsched_usleep(10 * 1000);
|
||||
esp32s3_gpiowrite(DISPLAY_RST, true);
|
||||
nxsig_usleep(10 * 1000);
|
||||
nxsched_usleep(10 * 1000);
|
||||
|
||||
/* Turn on LCD backlight */
|
||||
|
||||
|
||||
@@ -87,9 +87,9 @@ int board_lcd_initialize(void)
|
||||
|
||||
esp32s3_configgpio(GPIO_LCD_RST, OUTPUT);
|
||||
esp32s3_gpiowrite(GPIO_LCD_RST, false);
|
||||
nxsig_usleep(10000);
|
||||
nxsched_usleep(10000);
|
||||
esp32s3_gpiowrite(GPIO_LCD_RST, true);
|
||||
nxsig_usleep(100000);
|
||||
nxsched_usleep(100000);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
@@ -631,7 +631,7 @@ static void lcd_configure_display(void)
|
||||
|
||||
/* Wait until LCD is ready */
|
||||
|
||||
nxsig_usleep(120 * 1000);
|
||||
nxsched_usleep(120 * 1000);
|
||||
|
||||
/* Display on */
|
||||
|
||||
@@ -639,7 +639,7 @@ static void lcd_configure_display(void)
|
||||
|
||||
/* Wait until LCD is on */
|
||||
|
||||
nxsig_usleep(20 * 1000);
|
||||
nxsched_usleep(20 * 1000);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
||||
Reference in New Issue
Block a user