Ignore:
File:
1 edited

Legend:

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

    rbe06914 r6aef742  
    270270 *
    271271 */
    272 void ipc_backsend_err(phone_t *phone, call_t *call, unative_t err)
     272void ipc_backsend_err(phone_t *phone, call_t *call, sysarg_t err)
    273273{
    274274        call->data.phone = phone;
     
    295295                atomic_inc(&phone->active_calls);
    296296                call->data.phone = phone;
     297                call->data.task = TASK;
    297298        }
    298299       
     
    367368               
    368369                call_t *call = ipc_call_alloc(0);
    369                 IPC_SET_METHOD(call->data, IPC_M_PHONE_HUNGUP);
     370                IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP);
    370371                call->flags |= IPC_CALL_DISCARD_ANSWER;
    371372                _ipc_call(phone, box, call);
     
    406407                        call->caller_phone = call->data.phone;
    407408                call->data.phone = newphone;
     409                call->data.task = TASK;
    408410        }
    409411       
     
    547549                         * disconnected.
    548550                         */
    549                         IPC_SET_METHOD(call->data, IPC_M_PHONE_HUNGUP);
     551                        IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP);
    550552                        call->flags |= IPC_CALL_DISCARD_ANSWER;
    551553                        _ipc_call(phone, box, call);
     
    655657                    (call->flags & IPC_CALL_NOTIF));
    656658               
    657                 /*
    658                  * Record the receipt of this call in the current task's counter
    659                  * of active calls. IPC_M_PHONE_HUNGUP calls do not contribute
    660                  * to this counter so do not record answers to them either.
    661                  */
    662                 if (!(call->flags & IPC_CALL_DISCARD_ANSWER))
    663                         atomic_dec(&TASK->active_calls);
    664                
    665659                ipc_call_free(call);
    666660        }
     
    696690        irq_spinlock_exchange(&tasks_lock, &task->lock);
    697691       
    698         /* Print opened phones & details */
    699         printf("PHONE:\n");
     692        printf("[phone id] [calls] [state\n");
    700693       
    701694        size_t i;
    702695        for (i = 0; i < IPC_MAX_PHONES; i++) {
    703696                if (SYNCH_FAILED(mutex_trylock(&task->phones[i].lock))) {
    704                         printf("%d: mutex busy\n", i);
     697                        printf("%-10zu (mutex busy)\n", i);
    705698                        continue;
    706699                }
    707700               
    708701                if (task->phones[i].state != IPC_PHONE_FREE) {
    709                         printf("%" PRIs ": ", i);
     702                        printf("%-10zu %7" PRIun " ", i,
     703                            atomic_get(&task->phones[i].active_calls));
    710704                       
    711705                        switch (task->phones[i].state) {
    712706                        case IPC_PHONE_CONNECTING:
    713                                 printf("connecting ");
     707                                printf("connecting");
    714708                                break;
    715709                        case IPC_PHONE_CONNECTED:
    716                                 printf("connected to: %p ",
    717                                     task->phones[i].callee);
     710                                printf("connected to %" PRIu64 " (%s)",
     711                                    task->phones[i].callee->task->taskid,
     712                                    task->phones[i].callee->task->name);
    718713                                break;
    719714                        case IPC_PHONE_SLAMMED:
    720                                 printf("slammed by: %p ",
     715                                printf("slammed by %p",
    721716                                    task->phones[i].callee);
    722717                                break;
    723718                        case IPC_PHONE_HUNGUP:
    724                                 printf("hung up - was: %p ",
     719                                printf("hung up by %p",
    725720                                    task->phones[i].callee);
    726721                                break;
     
    729724                        }
    730725                       
    731                         printf("active: %" PRIun "\n",
    732                             atomic_get(&task->phones[i].active_calls));
     726                        printf("\n");
    733727                }
    734728               
     
    738732        irq_spinlock_lock(&task->answerbox.lock, false);
    739733       
     734#ifdef __32_BITS__
     735        printf("[call id ] [method] [arg1] [arg2] [arg3] [arg4] [arg5]"
     736            " [flags] [sender\n");
     737#endif
     738       
     739#ifdef __64_BITS__
     740        printf("[call id         ] [method] [arg1] [arg2] [arg3] [arg4]"
     741            " [arg5] [flags] [sender\n");
     742#endif
     743       
    740744        link_t *cur;
    741745       
    742         /* Print answerbox - calls */
    743         printf("ABOX - CALLS:\n");
     746        printf(" --- incomming calls ---\n");
    744747        for (cur = task->answerbox.calls.next; cur != &task->answerbox.calls;
    745748            cur = cur->next) {
    746749                call_t *call = list_get_instance(cur, call_t, link);
    747                 printf("Callid: %p Srctask:%" PRIu64 " M:%" PRIun
    748                     " A1:%" PRIun " A2:%" PRIun " A3:%" PRIun
    749                     " A4:%" PRIun " A5:%" PRIun " Flags:%x\n", call,
    750                     call->sender->taskid,
    751                     IPC_GET_METHOD(call->data), IPC_GET_ARG1(call->data),
     750               
     751#ifdef __32_BITS__
     752                printf("%10p ", call);
     753#endif
     754               
     755#ifdef __64_BITS__
     756                printf("%18p ", call);
     757#endif
     758               
     759                printf("%-8" PRIun " %-6" PRIun " %-6" PRIun " %-6" PRIun
     760                    " %-6" PRIun " %-6" PRIun " %-7x %" PRIu64 " (%s)\n",
     761                    IPC_GET_IMETHOD(call->data), IPC_GET_ARG1(call->data),
    752762                    IPC_GET_ARG2(call->data), IPC_GET_ARG3(call->data),
    753763                    IPC_GET_ARG4(call->data), IPC_GET_ARG5(call->data),
    754                     call->flags);
    755         }
    756        
    757         /* Print answerbox - dispatched calls */
    758         printf("ABOX - DISPATCHED CALLS:\n");
     764                    call->flags, call->sender->taskid, call->sender->name);
     765        }
     766       
     767        printf(" --- dispatched calls ---\n");
    759768        for (cur = task->answerbox.dispatched_calls.next;
    760769            cur != &task->answerbox.dispatched_calls;
    761770            cur = cur->next) {
    762771                call_t *call = list_get_instance(cur, call_t, link);
    763                 printf("Callid: %p Srctask:%" PRIu64 " M:%" PRIun
    764                     " A1:%" PRIun " A2:%" PRIun " A3:%" PRIun
    765                     " A4:%" PRIun " A5:%" PRIun " Flags:%x\n", call,
    766                     call->sender->taskid,
    767                     IPC_GET_METHOD(call->data), IPC_GET_ARG1(call->data),
     772               
     773#ifdef __32_BITS__
     774                printf("%10p ", call);
     775#endif
     776               
     777#ifdef __64_BITS__
     778                printf("%18p ", call);
     779#endif
     780               
     781                printf("%-8" PRIun " %-6" PRIun " %-6" PRIun " %-6" PRIun
     782                    " %-6" PRIun " %-6" PRIun " %-7x %" PRIu64 " (%s)\n",
     783                    IPC_GET_IMETHOD(call->data), IPC_GET_ARG1(call->data),
    768784                    IPC_GET_ARG2(call->data), IPC_GET_ARG3(call->data),
    769785                    IPC_GET_ARG4(call->data), IPC_GET_ARG5(call->data),
    770                     call->flags);
    771         }
    772        
    773         /* Print answerbox - answers */
    774         printf("ABOX - ANSWERS:\n");
     786                    call->flags, call->sender->taskid, call->sender->name);
     787        }
     788       
     789        printf(" --- incoming answers ---\n");
    775790        for (cur = task->answerbox.answers.next;
    776791            cur != &task->answerbox.answers;
    777792            cur = cur->next) {
    778793                call_t *call = list_get_instance(cur, call_t, link);
    779                 printf("Callid:%p M:%" PRIun " A1:%" PRIun " A2:%" PRIun
    780                     " A3:%" PRIun " A4:%" PRIun " A5:%" PRIun " Flags:%x\n",
    781                     call, IPC_GET_METHOD(call->data), IPC_GET_ARG1(call->data),
     794               
     795#ifdef __32_BITS__
     796                printf("%10p ", call);
     797#endif
     798               
     799#ifdef __64_BITS__
     800                printf("%18p ", call);
     801#endif
     802               
     803                printf("%-8" PRIun " %-6" PRIun " %-6" PRIun " %-6" PRIun
     804                    " %-6" PRIun " %-6" PRIun " %-7x %" PRIu64 " (%s)\n",
     805                    IPC_GET_IMETHOD(call->data), IPC_GET_ARG1(call->data),
    782806                    IPC_GET_ARG2(call->data), IPC_GET_ARG3(call->data),
    783807                    IPC_GET_ARG4(call->data), IPC_GET_ARG5(call->data),
    784                     call->flags);
     808                    call->flags, call->sender->taskid, call->sender->name);
    785809        }
    786810       
Note: See TracChangeset for help on using the changeset viewer.