libc: Call pthread_exit in user-space by up_pthread_exit

Drop to user-space in kernel/protected build with up_pthread_exit,
now all pthread_cleanup functions executed in user mode.

* A new syscall SYS_pthread_exit added
* A new tcb flag TCB_FLAG_CANCEL_DOING added
* up_pthread_exit implemented for riscv/arm arch

Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
This commit is contained in:
Huang Qi
2021-05-08 18:20:02 +08:00
committed by patacongo
parent 81a01d089b
commit f4a0b7aedd
90 changed files with 533 additions and 118 deletions
@@ -40,5 +40,5 @@ CONFIG_SCHED_WAITPID=y
CONFIG_START_DAY=8
CONFIG_START_MONTH=6
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -40,5 +40,5 @@ CONFIG_SCHED_WAITPID=y
CONFIG_START_DAY=8
CONFIG_START_MONTH=6
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -40,5 +40,5 @@ CONFIG_SCHED_WAITPID=y
CONFIG_START_DAY=8
CONFIG_START_MONTH=6
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -109,7 +109,7 @@ CONFIG_START_YEAR=2013
CONFIG_SYSTEM_I2CTOOL=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_TIME64=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=24
CONFIG_UART0_RXBUFSIZE=512
CONFIG_UART0_SERIAL_CONSOLE=y
@@ -40,7 +40,7 @@ CONFIG_START_MONTH=10
CONFIG_START_YEAR=2013
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_TIME64=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TESTING_OSTEST=y
CONFIG_TESTING_OSTEST_NBARRIER_THREADS=3
CONFIG_TESTING_OSTEST_STACKSIZE=2048
@@ -173,7 +173,7 @@ CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME="g_nsymbols"
CONFIG_SYSTEM_NXPLAYER=y
CONFIG_SYSTEM_PING=y
CONFIG_SYSTEM_TIME64=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=24
CONFIG_TELNET_CHARACTER_MODE=y
CONFIG_TESTING_OSTEST=y
@@ -57,7 +57,7 @@ CONFIG_START_MONTH=3
CONFIG_START_YEAR=2013
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -53,7 +53,7 @@ CONFIG_START_MONTH=3
CONFIG_START_YEAR=2013
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -57,7 +57,7 @@ CONFIG_START_MONTH=3
CONFIG_START_YEAR=2013
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -67,7 +67,7 @@ CONFIG_START_MONTH=3
CONFIG_START_YEAR=2019
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_CLE=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nxterm_main"
@@ -21,6 +21,6 @@ CONFIG_PASS1_BUILDIR="boards/arm/lpc17xx_40xx/pnev5180b/kernel"
CONFIG_RAM_SIZE=32768
CONFIG_RAM_START=0x10000000
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -49,7 +49,7 @@ CONFIG_START_MONTH=7
CONFIG_START_YEAR=2012
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_TIMER=y
CONFIG_UART1_SERIAL_CONSOLE=y
@@ -48,7 +48,7 @@ CONFIG_START_DAY=10
CONFIG_START_MONTH=3
CONFIG_START_YEAR=2013
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -85,5 +85,5 @@ CONFIG_SCHED_WAITPID=y
CONFIG_SDIO_BLOCKSETUP=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NSH_PROGNAME="init"
CONFIG_SYS_RESERVED=6
CONFIG_SYS_RESERVED=7
CONFIG_USART3_SERIAL_CONSOLE=y
@@ -80,6 +80,6 @@ CONFIG_START_YEAR=2015
CONFIG_SYSTEM_I2CTOOL=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_RAMTEST=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_UART3_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -52,7 +52,7 @@ CONFIG_STM32_JTAG_SW_ENABLE=y
CONFIG_STM32_PWR=y
CONFIG_STM32_USART3=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=32
CONFIG_USART3_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -82,7 +82,7 @@ CONFIG_STM32_USART2=y
CONFIG_SYSLOG_CHAR=y
CONFIG_SYSLOG_DEVPATH="/dev/ttyS0"
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=11
CONFIG_TESTING_OSTEST=y
CONFIG_USBDEV=y
@@ -56,7 +56,7 @@ CONFIG_STM32_SDIO=y
CONFIG_STM32_USART3=y
CONFIG_STM32_USBHOST=y
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_USART3_SERIAL_CONSOLE=y
CONFIG_USBHOST_ISOC_DISABLE=y
CONFIG_USBHOST_MSC=y
@@ -52,7 +52,7 @@ CONFIG_STM32_PWR=y
CONFIG_STM32_USART3=y
CONFIG_STM32_USBHOST=y
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_USART3_SERIAL_CONSOLE=y
CONFIG_USBHOST_ISOC_DISABLE=y
CONFIG_USBHOST_MSC=y
@@ -52,7 +52,7 @@ CONFIG_STM32_JTAG_SW_ENABLE=y
CONFIG_STM32_PWR=y
CONFIG_STM32_USART3=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=32
CONFIG_USART3_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -93,7 +93,7 @@ CONFIG_STMPE811_THRESHX=39
CONFIG_STMPE811_THRESHY=51
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_READLINE=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_USART3_RXBUFSIZE=128
CONFIG_USART3_SERIAL_CONSOLE=y
@@ -39,7 +39,7 @@ CONFIG_START_YEAR=2013
CONFIG_STM32_JTAG_SW_ENABLE=y
CONFIG_STM32_USART2=y
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TESTING_OSTEST=y
CONFIG_TESTING_OSTEST_NBARRIER_THREADS=3
CONFIG_TESTING_OSTEST_STACKSIZE=2048
@@ -69,7 +69,7 @@ CONFIG_STM32L4_RTC=y
CONFIG_STM32L4_SAI1PLL=y
CONFIG_STM32L4_USART2=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_USART2_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
@@ -73,7 +73,7 @@ CONFIG_STM32L4_SRAM2_HEAP=y
CONFIG_STM32L4_UART4=y
CONFIG_STM32L4_USART2=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_UART4_BAUD=2000000
CONFIG_UART4_RXBUFSIZE=512
@@ -98,7 +98,7 @@ CONFIG_SYSTEM_NETDB=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NTPC=y
CONFIG_SYSTEM_PING=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=0
CONFIG_TIVA_ETHERNET=y
CONFIG_TIVA_GPIOA_IRQS=y
@@ -57,7 +57,7 @@ CONFIG_START_DAY=7
CONFIG_START_MONTH=3
CONFIG_START_YEAR=2021
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=20
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_OSTEST=y
@@ -46,7 +46,7 @@ CONFIG_START_DAY=12
CONFIG_START_MONTH=5
CONFIG_START_YEAR=2020
CONFIG_SYSTEM_NSH=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=20
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_OSTEST=y
@@ -51,7 +51,7 @@ CONFIG_START_YEAR=2021
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_SYSTEM=y
CONFIG_SYSTEM_TASKSET=y
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=20
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_OSTEST=y
@@ -42,7 +42,7 @@ CONFIG_STACK_COLORATION=y
CONFIG_START_DAY=14
CONFIG_START_MONTH=2
CONFIG_START_YEAR=2020
CONFIG_SYS_RESERVED=8
CONFIG_SYS_RESERVED=9
CONFIG_TASK_NAME_SIZE=20
CONFIG_TESTING_OSTEST=y
CONFIG_UART0_SERIAL_CONSOLE=y