| 592 | } |
| 593 | |
| 594 | void tcpTrigger(TCP tcp, uint8_t trigger) |
| 595 | { |
| 596 | #if TCP_ATOMICS |
| 597 | uint8_t triggered = modAtomicsFetchOr(&tcp->triggered, trigger); |
| 598 | #else |
| 599 | uint8_t triggered; |
| 600 | |
| 601 | builtinCriticalSectionBegin(); |
| 602 | triggered = tcp->triggered; |
| 603 | tcp->triggered |= trigger; |
| 604 | builtinCriticalSectionEnd(); |
| 605 | #endif |
| 606 | if (!triggered) { |
| 607 | tcpHold(tcp); |
| 608 | modMessagePostToMachine(tcp->the, NULL, 0, tcpDeliver, tcp); |
| 609 | } |
| 610 | } |
| 611 | |
| 612 | void xs_tcp_mark(xsMachine* the, void* it, xsMarkRoot markRoot) |
| 613 | { |
no test coverage detected