Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ipc/ipc.c

    r55b77d9 r79ae36dd  
    128128        list_initialize(&box->answers);
    129129        list_initialize(&box->irq_notifs);
    130         list_initialize(&box->irq_list);
     130        list_initialize(&box->irq_head);
    131131        box->task = task;
    132132}
     
    183183         */
    184184        irq_spinlock_lock(&TASK->lock, true);
    185         list_append(&sync_box->sync_box_link, &TASK->sync_boxes);
     185        list_append(&sync_box->sync_box_link, &TASK->sync_box_head);
    186186        irq_spinlock_unlock(&TASK->lock, true);
    187187       
     
    450450                irq_spinlock_lock(&box->irq_lock, false);
    451451               
    452                 request = list_get_instance(list_first(&box->irq_notifs),
    453                     call_t, link);
     452                request = list_get_instance(box->irq_notifs.next, call_t, link);
    454453                list_remove(&request->link);
    455454               
     
    460459               
    461460                /* Handle asynchronous answers */
    462                 request = list_get_instance(list_first(&box->answers),
    463                     call_t, link);
     461                request = list_get_instance(box->answers.next, call_t, link);
    464462                list_remove(&request->link);
    465463                atomic_dec(&request->data.phone->active_calls);
     
    469467               
    470468                /* Handle requests */
    471                 request = list_get_instance(list_first(&box->calls),
    472                     call_t, link);
     469                request = list_get_instance(box->calls.next, call_t, link);
    473470                list_remove(&request->link);
    474471               
     
    497494 *
    498495 */
    499 void ipc_cleanup_call_list(list_t *lst)
     496void ipc_cleanup_call_list(link_t *lst)
    500497{
    501498        while (!list_empty(lst)) {
    502                 call_t *call = list_get_instance(list_first(lst), call_t, link);
     499                call_t *call = list_get_instance(lst->next, call_t, link);
    503500                if (call->buffer)
    504501                        free(call->buffer);
     
    529526        irq_spinlock_lock(&box->lock, true);
    530527        while (!list_empty(&box->connected_phones)) {
    531                 phone = list_get_instance(list_first(&box->connected_phones),
     528                phone = list_get_instance(box->connected_phones.next,
    532529                    phone_t, link);
    533530                if (SYNCH_FAILED(mutex_trylock(&phone->lock))) {
     
    609606        /* Wait for all answers to interrupted synchronous calls to arrive */
    610607        ipl_t ipl = interrupts_disable();
    611         while (!list_empty(&TASK->sync_boxes)) {
    612                 answerbox_t *box = list_get_instance(
    613                     list_first(&TASK->sync_boxes), answerbox_t, sync_box_link);
     608        while (!list_empty(&TASK->sync_box_head)) {
     609                answerbox_t *box = list_get_instance(TASK->sync_box_head.next,
     610                    answerbox_t, sync_box_link);
    614611               
    615612                list_remove(&box->sync_box_link);
     
    746743#endif
    747744       
     745        link_t *cur;
     746       
    748747        printf(" --- incomming calls ---\n");
    749         list_foreach(task->answerbox.calls, cur) {
     748        for (cur = task->answerbox.calls.next; cur != &task->answerbox.calls;
     749            cur = cur->next) {
    750750                call_t *call = list_get_instance(cur, call_t, link);
    751751               
     
    767767       
    768768        printf(" --- dispatched calls ---\n");
    769         list_foreach(task->answerbox.dispatched_calls, cur) {
     769        for (cur = task->answerbox.dispatched_calls.next;
     770            cur != &task->answerbox.dispatched_calls;
     771            cur = cur->next) {
    770772                call_t *call = list_get_instance(cur, call_t, link);
    771773               
     
    787789       
    788790        printf(" --- incoming answers ---\n");
    789         list_foreach(task->answerbox.answers, cur) {
     791        for (cur = task->answerbox.answers.next;
     792            cur != &task->answerbox.answers;
     793            cur = cur->next) {
    790794                call_t *call = list_get_instance(cur, call_t, link);
    791795               
Note: See TracChangeset for help on using the changeset viewer.