| 533 | } |
| 534 | |
| 535 | void Scheduler::_run_io(void) |
| 536 | { |
| 537 | if (_in_io_proc) { |
| 538 | return; |
| 539 | } |
| 540 | _in_io_proc = true; |
| 541 | |
| 542 | int num_procs = 0; |
| 543 | chBSemWait(&_io_semaphore); |
| 544 | num_procs = _num_io_procs; |
| 545 | chBSemSignal(&_io_semaphore); |
| 546 | // now call the IO based drivers |
| 547 | for (int i = 0; i < num_procs; i++) { |
| 548 | if (_io_proc[i]) { |
| 549 | _io_proc[i](); |
| 550 | } |
| 551 | } |
| 552 | |
| 553 | _in_io_proc = false; |
| 554 | } |
| 555 | |
| 556 | void Scheduler::_io_thread(void* arg) |
| 557 | { |