From 99de07db83452d0d68faab2bb36f3853d0b7af44 Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Thu, 12 Mar 2020 18:55:57 +0800 Subject: [PATCH] feat(freertos): add thread local private "errno" --- components/freertos/freertos/tasks.c | 18 ++++++ components/freertos/include/freertos/task.h | 1 + components/freertos/port/esp8266/impure.c | 7 +++ .../esp8266/include/freertos/FreeRTOSConfig.h | 9 ++- components/freertos/test/CMakeLists.txt | 3 + components/freertos/test/component.mk | 5 ++ components/freertos/test/test_errno.c | 57 ++++++++++++++++++ components/newlib/newlib/lib/libc.a | Bin 6372580 -> 6368900 bytes components/newlib/newlib/lib/libc_fnano.a | Bin 5149388 -> 5145708 bytes components/newlib/newlib/lib/libc_nano.a | Bin 5357284 -> 5349024 bytes components/newlib/newlib/lib/strip_symbols.sh | 11 ++++ 11 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 components/freertos/test/CMakeLists.txt create mode 100644 components/freertos/test/component.mk create mode 100644 components/freertos/test/test_errno.c create mode 100755 components/newlib/newlib/lib/strip_symbols.sh diff --git a/components/freertos/freertos/tasks.c b/components/freertos/freertos/tasks.c index 6a65fdd9..66c7e854 100644 --- a/components/freertos/freertos/tasks.c +++ b/components/freertos/freertos/tasks.c @@ -3490,6 +3490,24 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters ) return pvReturn; } + void **pvTaskGetThreadLocalStorageBufferPointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) + { + void **pvReturn = NULL; + TCB_t *pxTCB; + + if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS ) + { + pxTCB = prvGetTCBFromHandle( xTaskToQuery ); + pvReturn = &pxTCB->pvThreadLocalStoragePointers[ xIndex ]; + } + else + { + pvReturn = NULL; + } + + return pvReturn; + } + #endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */ /*-----------------------------------------------------------*/ diff --git a/components/freertos/include/freertos/task.h b/components/freertos/include/freertos/task.h index 7eb67a9f..bd677d8c 100644 --- a/components/freertos/include/freertos/task.h +++ b/components/freertos/include/freertos/task.h @@ -1458,6 +1458,7 @@ constant. */ used to set and query a pointer respectively. */ void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) PRIVILEGED_FUNCTION; void *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) PRIVILEGED_FUNCTION; + void **pvTaskGetThreadLocalStorageBufferPointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) PRIVILEGED_FUNCTION; #if ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS ) /** diff --git a/components/freertos/port/esp8266/impure.c b/components/freertos/port/esp8266/impure.c index ecea43f3..710514dd 100644 --- a/components/freertos/port/esp8266/impure.c +++ b/components/freertos/port/esp8266/impure.c @@ -17,6 +17,8 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" +#define ERRNO_TLS_INDEX (configNUM_THREAD_LOCAL_STORAGE_POINTERS - 1) + static struct _reent impure_data; struct _reent *_global_impure_ptr = &impure_data; @@ -44,3 +46,8 @@ struct _reent *__getreent() #endif return _global_impure_ptr; } + +int *__errno(void) +{ + return (int *)pvTaskGetThreadLocalStorageBufferPointer(NULL, ERRNO_TLS_INDEX); +} diff --git a/components/freertos/port/esp8266/include/freertos/FreeRTOSConfig.h b/components/freertos/port/esp8266/include/freertos/FreeRTOSConfig.h index bc7f3115..bfbda69a 100644 --- a/components/freertos/port/esp8266/include/freertos/FreeRTOSConfig.h +++ b/components/freertos/port/esp8266/include/freertos/FreeRTOSConfig.h @@ -128,10 +128,15 @@ NVIC value of 255. */ #define configUSE_NEWLIB_REENTRANT 1 #endif +/** + * 0: LwIP + * 1: pthread (optional) + * 2: errno + */ #ifdef CONFIG_ENABLE_PTHREAD -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 2 +#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 3 #else -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 1 +#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 2 #endif #define configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS 1 diff --git a/components/freertos/test/CMakeLists.txt b/components/freertos/test/CMakeLists.txt new file mode 100644 index 00000000..6cb8b29f --- /dev/null +++ b/components/freertos/test/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRC_DIRS "." + INCLUDE_DIRS "." + REQUIRES unity test_utils freertos) diff --git a/components/freertos/test/component.mk b/components/freertos/test/component.mk new file mode 100644 index 00000000..5dd172bd --- /dev/null +++ b/components/freertos/test/component.mk @@ -0,0 +1,5 @@ +# +#Component Makefile +# + +COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive diff --git a/components/freertos/test/test_errno.c b/components/freertos/test/test_errno.c new file mode 100644 index 00000000..8e167154 --- /dev/null +++ b/components/freertos/test/test_errno.c @@ -0,0 +1,57 @@ +/* mbedTLS AES performance test +*/ +#include +#include +#include +#include +#include "unity.h" +#include "sdkconfig.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" + +void __set_errno(int i) +{ + errno = i; +} + +void __get_errno(int *i) +{ + *i = errno; +} + +static void errno_check_task(void *p) +{ + SemaphoreHandle_t wait_sem = p; + + for (volatile int i = 0; i < 10 * 1000 * 1000; i++) { + int j; + + __set_errno(i); + __get_errno(&j); + assert(i == j); + } + + xSemaphoreGive(wait_sem); + + vTaskDelete(NULL); +} + +TEST_CASE("thread local errno", "[reent]") +{ + SemaphoreHandle_t wait1_sem, wait2_sem; + + wait1_sem = xSemaphoreCreateBinary(); + wait2_sem = xSemaphoreCreateBinary(); + + xTaskCreatePinnedToCore(&errno_check_task, "errno1", 2048, wait1_sem, 3, NULL, cpuid_0); + xTaskCreatePinnedToCore(&errno_check_task, "errno2", 2048, wait2_sem, 3, NULL, cpuid_1); + + xSemaphoreTake(wait1_sem, portMAX_DELAY); + xSemaphoreTake(wait2_sem, portMAX_DELAY); + + vQueueDelete(wait1_sem); + vQueueDelete(wait2_sem); +} + + diff --git a/components/newlib/newlib/lib/libc.a b/components/newlib/newlib/lib/libc.a index e34f3baba2c115ba90762b1052d78660a7255af8..a7f4c035fbaece5fce3b49f43726b370299663bb 100644 GIT binary patch delta 3815 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 diff --git a/components/newlib/newlib/lib/libc_fnano.a b/components/newlib/newlib/lib/libc_fnano.a index 4d972b58a840845e7bcdaaaa8c3f2d43edafca99..a7e20f527a427f1deabe068b74893ef5997201f6 100644 GIT binary patch delta 3759 zcmcK7ZBSI#83*wH!lKKYytwju!QEv=UKZG07FYz9nVyR{9 zj+aD6NsE?LrlFNYwCK>(i6p^@8EiI$rhXs|QKr%v#u7&(8fr0Pl_=3Z=N?h8wau5_ zncs7s^PKbT-gC}9BgfwNnr?mHt366IoAjBctPGP%rB|_MVN|IMMnk$$s=NFE?{$D> z9Qcld+dK&DGyz=$z{x(~bTcsQ1a9U+=52;7(g|702xOLO$i6=bS>qMR+WH|o+6dWT zFJzxoL6rT&0olV~c*Q&5mGhMCP4HUibv?Y8Q#0`TLJ6-sJ@8(V0PhvOT+SrCnN3t< zTC3sRIS21IbK!kg0eQdxUNvIptaGvKu~RiGLTCTy4dYZ+aJ5Do)_vvEs==EIr-BU7Etu zdkQF)jX|LqgrYzT#dGJN*ye=dB^CGk1}OR`p%}M8am@q8y;_N{st1w{!|-MHx4`#w zCwwoRgP&pwetPW_J7?g>h{q@3*G~y^RWI=morWYQ7yitT1@43n{_}1G!=D6%jd9-_ zKmc=~4*_SU5OBHUTM?h082H^T1lHCfa91A!k2Y}+M-fPtZ5-haIbcvWt&79WrL)$4oarU%H3(h zij@gm3FXYzbKGwyv4R;HLl~_LN%RE5n6hAmZS^cBK3#a!5BHseBv*%U#_2}*CIR6) zX1POhgfkyeow@FmL}X z@z{|LM9&-PLG(mDqHi@K`oV1o0gVtM91zr_5Ynn4sQ;JiHmHdvsvny5R%o6VpxHPJ&6W{pw)H}@vjrM)w+ouKF=*bZhvvg}?p843 zWGXIw0&&bnvb_Ouzt$t}ck(C3Jc#?E6LELt(E2w+8$AuJspDG{rOC%V(B7TED%sTk z$5bm;k@zq-;$xkNPwJZ|^5j4d;upGJh4@ES*AzoC+=SKtK|<;*681W{3vwhpLt=Iv z5`UrR-Wx#TpC$}RkwV`^%5Xn-a~vsm z`jGOVO_FMeKx&V4Tj1t z7`8ZJXuJYLs~LvFeK7oC8itPn!>5ffTxysn!tmt;40Gc!1`fj*+X`cv6~-brjIMSV zx2qQGZiaE8Pa>AOT07I?22>B9|3|BDCdH(W5G8>XO6 zm{hl6((7T$r?zSUrkXmK_EkwTLZ*-rKaLEK2N~l5$hhG~#{EWQhPsd$XGUg505Yqm zk-4=PnY*prv>TZZ+mR&(16d9SvTFMuGZ(eO{DPg^TMYBB5@7Ci!aO-6$rg%{o$5w* zt%rM~7uhGfk^Nx<)@)WGC#ed#$t}oB?LnT^#Omcd3{aD8}cCUyb@yGwJzk{ zrTuq4;RlIwwGy$Y5eQcK&iWuFa}t}%|@q2*#bEK_x`eCR{d73G2a0SWl2Y zo4C)rVVxO6L6+-@A_WSV8a#2V0R_zGqbT@$o1}2r01Cr87F#=s!nGm`kGu#JE_ApF zg`{Z1$Rfq5#bDO18(w6cBNvN^POMw#P3kW+UPa?9JW}E{hec9nP{M3*b9DHWF#T2B z-yA3*wonsnsxH`!)0}G-wjXuFwr3EwUpB*bv=+8^dSDw0fbBfB46QguEPc&|Qo1{o z4)vn+GY?9yj-m8!Fv^yCP(~MsvcwUt#*VTVBT)8I6?ejcva<;&`;5jHC|7Dxo-~H? z94E>vZ9Q_AgI7RuQR$q{xg4 zrYV;@;6TOew^8wy9TgumqGGfI6_Zv;rBVS&{v;~52E1Dvc*=W^I%JtqxIa`pv$JXB5Pj_z`~+Kmy4!5=4SY2ni+2iIS`!VI-VHkVq0mqKQCaNGw@N zR76cQB#vmwDiTjtlLV4Tl1MVqkra|j(ukfIh>@fd6UiW%B#W3yHd#Y*NG{1E7Lre_ fq<|EXB2rA&l69nn*hncUBjvC~2 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 KI}Vjx9sLI+Nmj4` diff --git a/components/newlib/newlib/lib/libc_nano.a b/components/newlib/newlib/lib/libc_nano.a index 22b45fe12ee76108a5f754dc98cc1a5a98739e3a..a82d270b22c31a2d7681b451feb77546b06a95a2 100644 GIT binary patch delta 3775 zcmcK6e^8V69S87tAZQ3denpI$Ktdu!36NiqAP4~>0tpa$u18n&?8%hfVdW;PtmXRP zMm2Zi22Q%7&AF`OChfG+ij``d^yC~v=CO_4s5)gGT5iQjJ8JC)ZlCA*RwV1(`p=%b z*XQ&3e!ky(?)h=|e4okrOCkRAmqI#LadxXQ%bJ~)sa6}+{INKy)h4saVix+_q(Epf zkT(uI6U}@(7kH@~IBo!zS@W|kq=>MVuaD1hE3Z0AX#^_tX4mG`GkSod*Kl0miRGIPZ@m0%>G5q&6|6Tc#mB z&;#k4{zqmFkdg>aCqsnU$~;qp2;L8xnRf;d!JF|2WGPB4*sg<&*FM0E_#h*ZOQ#WO z4j}Sr-B-eWY2k1WBCoe0@{x;T6QkIU&fEAbw9L^Qr>zykRxs?+gUv{=M5{ma4p!l#JD9NX^yI{4=i2p{Z0T$$p zLHW?m5h(XIL)lgh<>7HCk5N8lhceI!|D zZE!+Wu7+w$4^+Eap=zUi#17RP6HuK!4%M(1s%s5UedLDf9||Od+mR4Iz?f^0z9&iB%dBY@_XusIH5>MZbguN(@1$}eg-K-zqR*28=Ase^&GRi6Kfym_g<{aoMEPmq>egS66Wq;XY7q#dT>gAqZxv;pbner9V2(sy4+`b!f`uMFvDCXs$2znS@kHOqK3G-Py%-5_BaWGH$VgB3;i?kM&)pl46fW=V)%hx+#`KB`1k#1NP`z6iu zKE4lYoFbSb0Bf1-@%9>E-OKS|k++&*yR&-yOnweFwAMkM#$RWBvIt<}*2RXy4CS=|s*& zIdWS|u;HK{c}HrI_w!Nah7x%sKcWNq>6D*vBY#gTxcnn+$UirZ{0TW6Aw6)c8HA%` z8jf9RI1Z6Bxp2Hcg91!5DI+LwsZp?N2n8Kp6!Zm9aK(p$Tb(Gl7eHZn3#08r;ihpE zRv8#>1ci%T>OtXel^hCh`cZgCCn!?nqDb#Sk-Zj0mDMP!Ye3QW<;>A06kTY8b4kl1 zu@X3W8FP<(s{>BnNhh3Vsn5GM2EBoCPlEnkE58B zBzS_9n#U1j3yl}^22i@#I}<47`0&u5>QTB#S)>7i96!o~Z*Rz9gadmLDcfxga46c*)%=@ zNJ#{dkw~(PM3HC`Lt;rBk(1>lo~$4WvXb!USxuBgMG{CNQ4h4uHd#+{NG{nx@<={$kOERjiineJB*kPCDIuk# VjJSxKl#>clNjzsxx~ekw{0q7NSP=jK delta 5237 zcmcK8e^gUvng{UjO>Q8V0D(jZm_U$7K>~z8Bm{-*o{`e>tbvAK!80-H8l` zxU4=Gs!h9~YB>*8JLS7*{7V{}Cd66~Nfi*9bsC{{H)gurgV4W1ZJI(rZ5@NetA+ZJ z{ZK!71?qj&zuW-zSsTX~R=`#aNQ-@#=_iiqdLq?Gt5kzuK8s#Znj(A|5q`JRbAc%SX zGR*63#Jtyh|1VOGc0%%w4Jm&Vk@88yeF55eV9EKJUa;eVyHXQ!A=z;QsejF%ZAdHj z$o7pQ?YsQX5avIaE89MX`TGo#z&FACJ63S%>EcWe4kLZLS9Yu$>D)Vz-6=ylv8CH# ztLlNR`LyiCCfK;&kITLsgpFh*Ov#pXA!B_fG9GIVAmdk^$W-cN^G_mk`7POw5oGSS zAoG}2Hta*@Xeu)4QO{*XZ$nmvR@OxO&rQkRyn!t43p?x~=V8|wXDYY?`|@Vk*A9^Y zHT06%`+Ts|y^-8*ft_TR*=1geH;*FwSQ)ZUsgZp?71{4=k$tTl4tU_uHNatMg~Q$j zhvyU=E63p25em8OoT9D%{ zLyo^4IZuor=V$(z2Cg7yxrgaQSU|+4s@e%$RNAzM;uYkx71jy9G}TC zfyE@i8_B90SUlZcBNme-we>SBonr!5UU*=JiWMfzu!HuedkLtR?vfQ1m#hKaNR|mf z%#hK9W!#S@WP4h$jQgcaHg*HcNM)oCmF9L-W>L(oI)%!nMpU-?QMpfz%IAAf`N}9N z&lpj8At?K59F@e|8L+|IHwf>!a(Le(f9`?z<|L}ZTTqqgLRHoQ*}4%_{X-Y3o<1w< z?LpO>t*9Cuo1r?A03i?%Ruy+Z*8EG~ooxKIU9uN#m*J5h<0UqWE#Xo`^`Xn0kFQ8?JT6DZUn2;1Tyc=g;{n z+XY^tGon9|DXTM)*Y>5xz$|6NY-WuhDH0idnGH?Gmy&qRL{0 z*I9A5Gd4VlFZ}B;s1 z7rgABSnzdwobU&B103d6#}1t0T&l^+-J3O~TZ!hh52q&1vmi4Qtc*t3JP!xdjD zn9rj$(zOd4-5ciT(>aDjs_0G6H$4$L`Q98Yg&LlY6z5TEO6otlE2~6cK9{Ix8_zl% z?AkACOrdA!vK2VYt}jo_6!|ByzxGj0nh*l%Q^|h)Q!$4rvvUk=)|w&>Th|j)$v%F} zeOtTf$6Gc&ym`&m=7*XeX3u0V_!(<`$Y*B5p3o%baTRZ2%D2RgD)}J2N8ClM=AiOl z*;=*R%6u86@!`@)megjhWkQ~B4;##@e*W%^qve^c%)iOBDs+wf^}v$cAqgreX4zlG z_V;gkxkxXto(a90P5m(|F7ob?aJRm{?1IA|a&U8zUC^@HfzqWJC+I>2da?L+lH%yQ z@xa}fZU^4D8*5oqf6I)4$yjZVOLCc*e6j|M|Y^~s8PYo2sM)9vA`oP@Vwsw57CYJd^BSki~ zJ3-6F2ckqlEuBr%vu2T5o=(szTyxmVZ_s7k>W|i``l0~4RN#MUu8w(jCaalvrqrVP zlm>3HUZ2sx4)2?-6X_SQht-}bO;%ax`b{jVEg^2thV(Epi)e_Jgp&voNpvKNL=!zR zkl7@L#1bRn$A~9$h>4g<0!btml0@c`WMU=rND6s?q>?l;pQIBT$sm~|i`YpvagZF6 zOPpi@$s;b3Pu!${EF_CaAt@prQcOxnDJdh1$r7@Zl#>dwj8qaYsUp>+hWPq7q}MLk F`oI0xl`#MS diff --git a/components/newlib/newlib/lib/strip_symbols.sh b/components/newlib/newlib/lib/strip_symbols.sh new file mode 100755 index 00000000..852000a6 --- /dev/null +++ b/components/newlib/newlib/lib/strip_symbols.sh @@ -0,0 +1,11 @@ + +libs="libc_fnano.a libc.a libc_nano.a" +symbols="lib_a-errno.o" + +for symbol in ${symbols} +do + for lib in ${libs} + do + xtensa-lx106-elf-ar d ${lib} ${symbol} + done +done