Subversion Repositories HelenOS

Rev

Rev 4509 | Rev 4528 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4509 Rev 4510
Line 548... Line 548...
548
    hash_table_remove(&conn_hash_table, &key, 1);
548
    hash_table_remove(&conn_hash_table, &key, 1);
549
    futex_up(&async_futex);
549
    futex_up(&async_futex);
550
   
550
   
551
    /* Answer all remaining messages with EHANGUP */
551
    /* Answer all remaining messages with EHANGUP */
552
    while (!list_empty(&FIBRIL_connection->msg_queue)) {
552
    while (!list_empty(&FIBRIL_connection->msg_queue)) {
553
        msg_t *msg
553
        msg_t *msg;
554
            = list_get_instance(FIBRIL_connection->msg_queue.next, msg_t, link);
-
 
555
       
554
       
-
 
555
        msg = list_get_instance(FIBRIL_connection->msg_queue.next,
-
 
556
            msg_t, link);
556
        list_remove(&msg->link);
557
        list_remove(&msg->link);
557
        ipc_answer_0(msg->callid, EHANGUP);
558
        ipc_answer_0(msg->callid, EHANGUP);
558
        free(msg);
559
        free(msg);
559
    }
560
    }
560
   
561
   
Line 715... Line 716...
715
       
716
       
716
        futex_down(&async_futex);
717
        futex_down(&async_futex);
717
       
718
       
718
        suseconds_t timeout;
719
        suseconds_t timeout;
719
        if (!list_empty(&timeout_list)) {
720
        if (!list_empty(&timeout_list)) {
720
            awaiter_t *waiter
721
            awaiter_t *waiter = list_get_instance(timeout_list.next,
721
                = list_get_instance(timeout_list.next, awaiter_t, link);
722
                awaiter_t, link);
722
           
723
           
723
            struct timeval tv;
724
            struct timeval tv;
724
            gettimeofday(&tv, NULL);
725
            gettimeofday(&tv, NULL);
725
           
726
           
726
            if (tv_gteq(&tv, &waiter->expires)) {
727
            if (tv_gteq(&tv, &waiter->expires)) {
Line 733... Line 734...
733
            timeout = SYNCH_NO_TIMEOUT;
734
            timeout = SYNCH_NO_TIMEOUT;
734
       
735
       
735
        futex_up(&async_futex);
736
        futex_up(&async_futex);
736
       
737
       
737
        ipc_call_t call;
738
        ipc_call_t call;
738
        ipc_callid_t callid
739
        ipc_callid_t callid = ipc_wait_cycle(&call, timeout,
739
            = ipc_wait_cycle(&call, timeout, SYNCH_FLAGS_NONE);
740
            SYNCH_FLAGS_NONE);
740
       
741
       
741
        if (!callid) {
742
        if (!callid) {
742
            handle_expired_timeouts();
743
            handle_expired_timeouts();
743
            continue;
744
            continue;
744
        }
745
        }