Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cli: lock Thread stack when calling OpenThread API #13806

Merged
merged 1 commit into from
Jan 21, 2022

Conversation

gjc13
Copy link
Contributor

@gjc13 gjc13 commented Jan 21, 2022

Problem

The OpenThread cli does not lock the Thread stack when calling otCliConsoleInputLine.
The shell and the OpenThread stack are running in different tasks. Calling OpenThread APIs without a lock will cause data race and unexpected context switch.

Change overview

Lock the Thread stack when calling OpenThread API

Testing

  • Manual run

@github-actions
Copy link

github-actions bot commented Jan 21, 2022

PR #13806: Size comparison from dd209ce to c057cc1

Full report (21 builds for efr32, esp32, k32w, linux, mbed, p6, qpg, telink)
platform target config section dd209ce c057cc1 change % change
efr32 lighting-app BRD4161A (read only) 833660 833660 0 0.0
(read/write) 127216 127216 0 0.0
.bss 125320 125320 0 0.0
.data 1896 1896 0 0.0
.text 833652 833652 0 0.0
BRD4161A+rpc (read only) 821056 821056 0 0.0
(read/write) 143880 143880 0 0.0
.bss 141880 141880 0 0.0
.data 1996 1996 0 0.0
.text 821048 821048 0 0.0
window-app BRD4161A (read only) 804212 804212 0 0.0
(read/write) 125792 125792 0 0.0
.bss 123944 123944 0 0.0
.data 1848 1848 0 0.0
.text 804204 804204 0 0.0
esp32 all-clusters-app c3devkit (read only) 917030 917030 0 0.0
(read/write) 1317522 1317522 0 0.0
.dram0.bss 70720 70720 0 0.0
.dram0.data 14244 14244 0 0.0
.flash.rodata 178968 178968 0 0.0
.flash.text 917030 917030 0 0.0
.iram0.text 62056 62056 0 0.0
m5stack (read only) 965579 965579 0 0.0
(read/write) 449480 449480 0 0.0
.dram0.bss 75184 75184 0 0.0
.dram0.data 34032 34032 0 0.0
.flash.rodata 208136 208136 0 0.0
.flash.text 960195 960195 0 0.0
.iram0.text 123399 123399 0 0.0
k32w light k32w061+release (read/write) 658940 658940 0 0.0
.bss 76584 76584 0 0.0
.data 1864 1864 0 0.0
.text 574692 574692 0 0.0
lock k32w061+release (read/write) 659720 659720 0 0.0
.bss 76824 76824 0 0.0
.data 1884 1884 0 0.0
.text 575212 575212 0 0.0
linux chip-tool-ipv6only arm64 (read only) 8428364 8428364 0 0.0
(read/write) 388769 388769 0 0.0
.bss 56049 56049 0 0.0
.data 1128 1128 0 0.0
.data.rel.ro 259416 259416 0 0.0
.dynamic 560 560 0 0.0
.got 68424 68424 0 0.0
.init 24 24 0 0.0
.init_array 200 200 0 0.0
.rodata 434308 434308 0 0.0
.text 7160308 7160308 0 0.0
thermostat-no-ble arm64 (read only) 2043340 2043340 0 0.0
(read/write) 145441 145441 0 0.0
.bss 64769 64769 0 0.0
.data 904 904 0 0.0
.data.rel.ro 72752 72752 0 0.0
.dynamic 560 560 0 0.0
.got 4064 4064 0 0.0
.init 24 24 0 0.0
.init_array 312 312 0 0.0
.rodata 130028 130028 0 0.0
.text 1699152 1699152 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2350160 2350160 0 0.0
.bss 189428 189428 0 0.0
.data 5296 5296 0 0.0
.text 1312736 1312736 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2332728 2332728 0 0.0
.bss 180936 180936 0 0.0
.data 5576 5576 0 0.0
.text 1295328 1295328 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2303080 2303080 0 0.0
.bss 179936 179936 0 0.0
.data 5560 5560 0 0.0
.text 1265680 1265680 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1139712 1139712 0 0.0
.bss 11756 11756 0 0.0
.data 4368 4368 0 0.0
.text 103096 103096 0 0.0
shell CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2054256 2054256 0 0.0
.bss 156876 156876 0 0.0
.data 4864 4864 0 0.0
.text 1016856 1016856 0 0.0
p6 all-clusters-app default (read/write) 2407768 2407768 0 0.0
.bss 117772 117772 0 0.0
.data 2584 2584 0 0.0
.text 1366032 1366032 0 0.0
light-app default (read/write) 2328728 2328728 0 0.0
.bss 105520 105520 0 0.0
.data 2408 2408 0 0.0
.text 1286992 1286992 0 0.0
lock-app default (read/write) 2297736 2297736 0 0.0
.bss 104368 104368 0 0.0
.data 2352 2352 0 0.0
.text 1256000 1256000 0 0.0
qpg lighting-app qpg6105+debug (read only) 565856 565856 0 0.0
(read/write) 146936 146936 0 0.0
.bss 89664 89664 0 0.0
.data 1060 1060 0 0.0
.text 560536 560536 0 0.0
lock-app qpg6105+debug (read only) 514344 514344 0 0.0
(read/write) 146940 146940 0 0.0
.bss 88232 88232 0 0.0
.data 984 984 0 0.0
.text 509024 509024 0 0.0
persistent-storage-app qpg6105+debug (read only) 107140 107140 0 0.0
(read/write) 146940 146940 0 0.0
.bss 38504 38504 0 0.0
.data 288 288 0 0.0
.text 101820 101820 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 839906 839906 0 0.0
bss 87468 87468 0 0.0
noinit 37160 37160 0 0.0
text 586988 586988 0 0.0

@Damian-Nordic Damian-Nordic merged commit 5394388 into project-chip:master Jan 21, 2022
selissia pushed a commit to selissia/connectedhomeip that referenced this pull request Jan 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants