Rev 4656 | Rev 4658 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4656 | Rev 4657 | ||
|---|---|---|---|
| Line 614... | Line 614... | ||
| 614 | 614 | ||
| 615 | static int cev_fibril(void *arg) |
615 | static int cev_fibril(void *arg) |
| 616 | { |
616 | { |
| 617 | (void) arg; |
617 | (void) arg; |
| 618 | 618 | ||
| 619 | printf("cev_fibril()\n"); |
- | |
| 620 | while (true) { |
619 | while (true) { |
| 621 | printf("cev_fibril: wait for cev_valid == 0\n"); |
- | |
| 622 | fibril_mutex_lock(&state_lock); |
620 | fibril_mutex_lock(&state_lock); |
| 623 | while (cev_valid) |
621 | while (cev_valid) |
| 624 | fibril_condvar_wait(&state_cv, &state_lock); |
622 | fibril_condvar_wait(&state_cv, &state_lock); |
| 625 | fibril_mutex_unlock(&state_lock); |
623 | fibril_mutex_unlock(&state_lock); |
| 626 | 624 | ||
| 627 | printf("cev_fibril: wait for key\n"); |
- | |
| 628 | - | ||
| 629 | if (!console_get_event(fphone(stdin), &cev)) |
625 | if (!console_get_event(fphone(stdin), &cev)) |
| 630 | return -1; |
626 | return -1; |
| 631 | 627 | ||
| 632 | printf("cev_fibril: broadcast cev_valid = 1\n"); |
- | |
| 633 | - | ||
| 634 | fibril_mutex_lock(&state_lock); |
628 | fibril_mutex_lock(&state_lock); |
| 635 | cev_valid = 1; |
629 | cev_valid = 1; |
| 636 | fibril_condvar_broadcast(&state_cv); |
630 | fibril_condvar_broadcast(&state_cv); |
| 637 | fibril_mutex_unlock(&state_lock); |
631 | fibril_mutex_unlock(&state_lock); |
| 638 | } |
632 | } |
| Line 666... | Line 660... | ||
| 666 | } |
660 | } |
| 667 | 661 | ||
| 668 | done = false; |
662 | done = false; |
| 669 | 663 | ||
| 670 | while (!done) { |
664 | while (!done) { |
| 671 | printf("trace_task: wait for cev_valid || abort_trace\n"); |
- | |
| 672 | fibril_mutex_lock(&state_lock); |
665 | fibril_mutex_lock(&state_lock); |
| 673 | while (!cev_valid && !abort_trace) |
666 | while (!cev_valid && !abort_trace) |
| 674 | fibril_condvar_wait(&state_cv, &state_lock); |
667 | fibril_condvar_wait(&state_cv, &state_lock); |
| 675 | fibril_mutex_unlock(&state_lock); |
668 | fibril_mutex_unlock(&state_lock); |
| 676 | 669 | ||
| 677 | printf("trace_task: got something\n"); |
- | |
| 678 | - | ||
| 679 | ev = cev; |
670 | ev = cev; |
| 680 | 671 | ||
| 681 | fibril_mutex_lock(&state_lock); |
672 | fibril_mutex_lock(&state_lock); |
| 682 | cev_valid = false; |
673 | cev_valid = false; |
| 683 | fibril_condvar_broadcast(&state_cv); |
674 | fibril_condvar_broadcast(&state_cv); |