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

SystemLayerImplSelect: fix Request/ClearCallbackOnPendingXXX() for… #21186

Merged

Conversation

woody-apple
Copy link
Contributor

…dispatch case, clean transport

Problem

For CHIP_SYSTEM_CONFIG_USE_DISPATCH (Darwin) case, Request/ClearCallbackOnPendingXXX() were not working (no loop calling select to evaluate watches).
But still, these methods were called in TCP and UDP endpoint implementations, despite dispatch-specific extra code for the same purpose in the endpoints.

Change overview

This changeset now moves all CHIP_SYSTEM_CONFIG_USE_DISPATCH specific socket watching code into SystemLayerImplSelect, by making Request/ClearCallbackOnPendingXXX() actually working with dispatch.

The issue surfaced in my (a bit exotic) use case when I needed to get callbacks for events on a plain socket not wrapped as TCPEndPoint.
Doing this, I realized Request/ClearCallbackOnPendingXXX() were non-functional due to the missing select main loop.
Fixing this revealed the similar dispatch code in the endpoints that was needed to get those events handled despite Request/ClearCallbackOnPendingXXX() not working. That dispatch specific endpoint code now became redundant (delivering events twice), so had to be removed.

Testing

  • manually regression tested with bridge-example running on darwin (hence using dispatch), showing no difference when being run with and w/o these changes applied - except for Request/ClearCallbackOnPendingXXX() not working without the changes.

I am aware that this might be a too deep intervention and too limited testing for coming from a CHIP newbie like me (not newbie in code deep diving, though), but I think it cleans up an inconsistency in the IP endpoints, and maybe can be of use after review by CHIP experts...

…spatch, clean transport (#21135)

For CHIP_SYSTEM_CONFIG_USE_DISPATCH (Darwin) case, Request/ClearCallbackOnPendingXXX() were not working (no loop calling select to evaluate watches), but were called in TCP and UDP endpoint implementations, despite dispatch-specific extra code for the same purpose in the endpoints.

This changeset now moves all CHIP_SYSTEM_CONFIG_USE_DISPATCH specific socket watching code into SystemLayerImplSelect, by making Request/ClearCallbackOnPendingXXX() actually working with dispatch.

The issue surfaced in my (a bit exotic) use case when I needed to get callbacks for events on a plain socket not wrapped as TCPEndPoint.
Doing this, I realized Request/ClearCallbackOnPendingXXX() were non-functional due to missing select main loop.
Fixing this revealed the similar dispatch code in the endpoints that was needed to get those events handled despite Request/ClearCallbackOnPendingXXX() not working. That extra endpoint code now became redundant (delivering events twice), so had to be removed.

I am aware that this might be a too deep intervention for coming from a CHIP newbie like me (not newbie in code deep diving, though), but I think it cleans up an inconsistency in the IP endpoints.
@github-actions
Copy link

github-actions bot commented Jul 25, 2022

PR #21186: Size comparison from 6545766 to a01a836

Increases (5 builds for cc13x2_26x2, cyw30739, esp32)
platform target config section 6545766 a01a836 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read/write) 183120 183128 8 0.0
pump-app LP_CC2652R7 (read/write) 161632 161640 8 0.0
pump-controller-app LP_CC2652R7 (read only) 666487 666495 8 0.0
.text 581136 581144 8 0.0
cyw30739 ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 587150 587158 8 0.0
.app_xip_area 465340 465348 8 0.0
esp32 all-clusters-app c3devkit (read only) 1022034 1022038 4 0.0
.flash.text 1022034 1022038 4 0.0
Decreases (6 builds for cc13x2_26x2, nrfconnect, telink)
platform target config section 6545766 a01a836 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 668223 668215 -8 -0.0
.text 579572 579564 -8 -0.0
pump-app LP_CC2652R7 (read only) 680743 680735 -8 -0.0
.text 591220 591212 -8 -0.0
pump-controller-app LP_CC2652R7 (read/write) 176008 176000 -8 -0.0
nrfconnect all-clusters-minimal-app nrf52840dk_nrf52840 text 801920 801916 -4 -0.0
telink light-switch-app tlsr9518adk80d (read/write) 799336 799328 -8 -0.0
text 567082 567080 -2 -0.0
lighting-app tlsr9518adk80d text 583622 583620 -2 -0.0
Full report (32 builds for bl602, cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 6545766 a01a836 change % change
bl602 lighting-app bl602 (read/write) 1380458 1380458 0 0.0
.bss 117474 117474 0 0.0
.data 4480 4480 0 0.0
.text 1050596 1050596 0 0.0
bl602+rpc (read/write) 1425898 1425898 0 0.0
.bss 124922 124922 0 0.0
.data 4600 4600 0 0.0
.text 1082280 1082280 0 0.0
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 668223 668215 -8 -0.0
(read/write) 183120 183128 8 0.0
.bss 74236 74236 0 0.0
.data 3356 3356 0 0.0
.rodata 88335 88335 0 0.0
.text 579572 579564 -8 -0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 633815 633815 0 0.0
(read/write) 157804 157804 0 0.0
.bss 73532 73532 0 0.0
.data 3356 3356 0 0.0
.rodata 77559 77559 0 0.0
.text 555932 555932 0 0.0
lock-ftd LP_CC2652R7 (read only) 671219 671219 0 0.0
(read/write) 170300 170300 0 0.0
.bss 71300 71300 0 0.0
.data 3280 3280 0 0.0
.rodata 76419 76419 0 0.0
.text 594320 594320 0 0.0
lock-mtd LP_CC2652R7 (read only) 653519 653519 0 0.0
(read/write) 183688 183688 0 0.0
.bss 66988 66988 0 0.0
.data 3280 3280 0 0.0
.rodata 101159 101159 0 0.0
.text 551880 551880 0 0.0
pump-app LP_CC2652R7 (read only) 680743 680735 -8 -0.0
(read/write) 161632 161640 8 0.0
.bss 71388 71388 0 0.0
.data 3280 3280 0 0.0
.rodata 89039 89039 0 0.0
.text 591220 591212 -8 -0.0
pump-controller-app LP_CC2652R7 (read only) 666487 666495 8 0.0
(read/write) 176008 176000 -8 -0.0
.bss 71508 71508 0 0.0
.data 3276 3276 0 0.0
.rodata 84871 84871 0 0.0
.text 581136 581144 8 0.0
shell LP_CC2652R7 (read only) 660706 660706 0 0.0
(read/write) 186140 186140 0 0.0
.bss 76540 76540 0 0.0
.data 3360 3360 0 0.0
.rodata 85114 85114 0 0.0
.text 575276 575276 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 582946 582946 0 0.0
.app_xip_area 460288 460288 0 0.0
.bss 65596 65596 0 0.0
.data 716 716 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 588854 588854 0 0.0
.app_xip_area 461468 461468 0 0.0
.bss 70324 70324 0 0.0
.data 720 720 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 587150 587158 8 0.0
.app_xip_area 465340 465348 8 0.0
.bss 64804 64804 0 0.0
.data 660 660 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read/write) 1087344 1087344 0 0.0
.bss 133220 133220 0 0.0
.data 2048 2048 0 0.0
.text 952056 952056 0 0.0
BRD4161A+rpc (read/write) 1141668 1141668 0 0.0
.bss 149892 149892 0 0.0
.data 2260 2260 0 0.0
.text 989492 989492 0 0.0
BRD4161A+rs911x (read/write) 972524 972524 0 0.0
.bss 161664 161664 0 0.0
.data 2048 2048 0 0.0
.text 808792 808792 0 0.0
lock-app BRD4161A+wf200 (read/write) 1127904 1127904 0 0.0
.bss 144304 144304 0 0.0
.data 2056 2056 0 0.0
.text 981524 981524 0 0.0
window-app BRD4161A (read/write) 1080828 1080828 0 0.0
.bss 134692 134692 0 0.0
.data 2076 2076 0 0.0
.text 944040 944040 0 0.0
esp32 all-clusters-app c3devkit (read only) 1022034 1022038 4 0.0
(read/write) 1486362 1486362 0 0.0
.dram0.bss 70224 70224 0 0.0
.dram0.data 14600 14600 0 0.0
.flash.rodata 216104 216104 0 0.0
.flash.text 1022034 1022038 4 0.0
.iram0.text 62902 62902 0 0.0
m5stack (read only) 1075667 1075667 0 0.0
(read/write) 488392 488392 0 0.0
.dram0.bss 75744 75744 0 0.0
.dram0.data 34144 34144 0 0.0
.flash.rodata 246508 246508 0 0.0
.flash.text 1070283 1070283 0 0.0
.iram0.text 123267 123267 0 0.0
k32w light k32w0+release (read/write) 641408 641408 0 0.0
.bss 69696 69696 0 0.0
.data 2028 2028 0 0.0
.text 566956 566956 0 0.0
lock k32w0+release (read/write) 698520 698520 0 0.0
.bss 70144 70144 0 0.0
.data 2036 2036 0 0.0
.text 623612 623612 0 0.0
linux chip-tool-ipv6only arm64 (read only) 9792972 9792972 0 0.0
(read/write) 680401 680401 0 0.0
.bss 32833 32833 0 0.0
.data 3272 3272 0 0.0
.data.rel.ro 625776 625776 0 0.0
.dynamic 560 560 0 0.0
.got 13560 13560 0 0.0
.init 24 24 0 0.0
.init_array 192 192 0 0.0
.rodata 458412 458412 0 0.0
.text 7747908 7747908 0 0.0
thermostat-no-ble arm64 (read only) 2340764 2340764 0 0.0
(read/write) 141249 141249 0 0.0
.bss 55233 55233 0 0.0
.data 1672 1672 0 0.0
.data.rel.ro 75592 75592 0 0.0
.dynamic 560 560 0 0.0
.got 4984 4984 0 0.0
.init 24 24 0 0.0
.init_array 400 400 0 0.0
.rodata 139412 139412 0 0.0
.text 1964544 1964544 0 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2448936 2448936 0 0.0
.bss 214444 214444 0 0.0
.data 5872 5872 0 0.0
.text 1411580 1411580 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1177055 1177055 0 0.0
bss 143068 143068 0 0.0
rodata 142520 142520 0 0.0
text 812608 812608 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1157107 1157107 0 0.0
bss 142304 142304 0 0.0
rodata 134052 134052 0 0.0
text 801920 801916 -4 -0.0
p6 all-clusters-app default (read only) 881632 881632 0 0.0
(read/write) 1686652 1686652 0 0.0
.bss 149064 149064 0 0.0
.data 2648 2648 0 0.0
.text 1526552 1526552 0 0.0
all-clusters-minimal-app default (read only) 882352 882352 0 0.0
(read/write) 1630756 1630756 0 0.0
.bss 148344 148344 0 0.0
.data 2648 2648 0 0.0
.text 1471376 1471376 0 0.0
light-app default (read only) 890656 890656 0 0.0
(read/write) 1550636 1550636 0 0.0
.bss 140248 140248 0 0.0
.data 2440 2440 0 0.0
.text 1399560 1399560 0 0.0
lock-app default (read only) 886184 886184 0 0.0
(read/write) 1588236 1588236 0 0.0
.bss 144704 144704 0 0.0
.data 2456 2456 0 0.0
.text 1432688 1432688 0 0.0
telink light-switch-app tlsr9518adk80d (read/write) 799336 799328 -8 -0.0
bss 70744 70744 0 0.0
noinit 40416 40416 0 0.0
text 567082 567080 -2 -0.0
lighting-app tlsr9518adk80d (read/write) 819404 819404 0 0.0
bss 71588 71588 0 0.0
noinit 40416 40416 0 0.0
text 583622 583620 -2 -0.0

@woody-apple woody-apple merged commit 344c041 into sve Jul 25, 2022
@woody-apple woody-apple deleted the cherry-pick-3ca630c7014246d78227406ef786d310de449472 branch July 25, 2022 23:59
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.

2 participants