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); |