Subversion Repositories HelenOS

Rev

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