Commit bd34fa1
committed
protocol: retry serial Write and Drain on EINTR
On Linux, signals such as SIGWINCH (terminal resize) can interrupt
write(2) and tcdrain(3) on serial file descriptors, causing them to
return EINTR before any bytes are transferred. The go.bug.st/serial
library does not retry internally, so the error bubbles up as
"interrupted system call" and aborts the flash.
Wrap port.Write and port.Drain in sendCommand with EINTR retry loops
so transient signal interruptions are handled transparently.
Fixes a "send command 0x12: interrupted system call" failure observed
during compressed flash download on ESP32-C3 (USB-JTAG/Serial).
Signed-off-by: deadprogram <ron@hybridgroup.com>1 parent 676e259 commit bd34fa1
1 file changed
Lines changed: 36 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
172 | 174 | | |
173 | 175 | | |
174 | 176 | | |
175 | | - | |
| 177 | + | |
176 | 178 | | |
177 | 179 | | |
178 | 180 | | |
179 | 181 | | |
180 | | - | |
| 182 | + | |
181 | 183 | | |
182 | 184 | | |
183 | 185 | | |
| |||
194 | 196 | | |
195 | 197 | | |
196 | 198 | | |
197 | | - | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
198 | 231 | | |
199 | 232 | | |
200 | 233 | | |
| |||
0 commit comments