Changeset cfaa35a in mainline
- Timestamp:
- 2012-08-13T09:52:09Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 86939b1
- Parents:
- cd529c4
- Location:
- kernel/generic
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/ipc/ipc.h
rcd529c4 rcfaa35a 106 106 107 107 typedef struct { 108 link_t link; 108 /** Answerbox link. */ 109 link_t ab_link; 109 110 110 111 unsigned int flags; -
kernel/generic/src/ipc/event.c
rcd529c4 rcfaa35a 163 163 call->data.task_id = TASK ? TASK->taskid : 0; 164 164 165 irq_spinlock_lock(&event->answerbox->irq_lock, true); 166 list_append(&call->link, &event->answerbox->irq_notifs); 167 irq_spinlock_unlock(&event->answerbox->irq_lock, true); 168 169 waitq_wakeup(&event->answerbox->wq, WAKEUP_FIRST); 165 irq_spinlock_lock(&event->answerbox->irq_lock, 166 true); 167 list_append(&call->ab_link, 168 &event->answerbox->irq_notifs); 169 irq_spinlock_unlock(&event->answerbox->irq_lock, 170 true); 171 172 waitq_wakeup(&event->answerbox->wq, 173 WAKEUP_FIRST); 170 174 171 175 if (mask) -
kernel/generic/src/ipc/ipc.c
rcd529c4 rcfaa35a 191 191 irq_spinlock_lock(&callerbox->lock, true); 192 192 193 list_append(&call-> link, &callerbox->answers);193 list_append(&call->ab_link, &callerbox->answers); 194 194 195 195 if (do_lock) … … 209 209 /* Remove from active box */ 210 210 irq_spinlock_lock(&box->lock, true); 211 list_remove(&call-> link);211 list_remove(&call->ab_link); 212 212 irq_spinlock_unlock(&box->lock, true); 213 213 … … 255 255 256 256 irq_spinlock_lock(&box->lock, true); 257 list_append(&call-> link, &box->calls);257 list_append(&call->ab_link, &box->calls); 258 258 irq_spinlock_unlock(&box->lock, true); 259 259 … … 356 356 TASK->ipc_info.forwarded++; 357 357 irq_spinlock_pass(&TASK->lock, &oldbox->lock); 358 list_remove(&call-> link);358 list_remove(&call->ab_link); 359 359 irq_spinlock_unlock(&oldbox->lock, true); 360 360 … … 406 406 407 407 request = list_get_instance(list_first(&box->irq_notifs), 408 call_t, link);409 list_remove(&request-> link);408 call_t, ab_link); 409 list_remove(&request->ab_link); 410 410 411 411 irq_spinlock_unlock(&box->irq_lock, false); … … 416 416 /* Handle asynchronous answers */ 417 417 request = list_get_instance(list_first(&box->answers), 418 call_t, link);419 list_remove(&request-> link);418 call_t, ab_link); 419 list_remove(&request->ab_link); 420 420 atomic_dec(&request->data.phone->active_calls); 421 421 } else if (!list_empty(&box->calls)) { … … 425 425 /* Handle requests */ 426 426 request = list_get_instance(list_first(&box->calls), 427 call_t, link);428 list_remove(&request-> link);427 call_t, ab_link); 428 list_remove(&request->ab_link); 429 429 430 430 /* Append request to dispatch queue */ 431 list_append(&request-> link, &box->dispatched_calls);431 list_append(&request->ab_link, &box->dispatched_calls); 432 432 } else { 433 433 /* This can happen regularly after ipc_cleanup */ … … 455 455 { 456 456 while (!list_empty(lst)) { 457 call_t *call = list_get_instance(list_first(lst), call_t, link); 457 call_t *call = list_get_instance(list_first(lst), call_t, 458 ab_link); 458 459 if (call->buffer) 459 460 free(call->buffer); 460 461 461 list_remove(&call-> link);462 list_remove(&call->ab_link); 462 463 463 464 IPC_SET_RETVAL(call->data, EHANGUP); … … 689 690 printf(" --- incomming calls ---\n"); 690 691 list_foreach(task->answerbox.calls, cur) { 691 call_t *call = list_get_instance(cur, call_t, link);692 call_t *call = list_get_instance(cur, call_t, ab_link); 692 693 693 694 #ifdef __32_BITS__ … … 709 710 printf(" --- dispatched calls ---\n"); 710 711 list_foreach(task->answerbox.dispatched_calls, cur) { 711 call_t *call = list_get_instance(cur, call_t, link);712 call_t *call = list_get_instance(cur, call_t, ab_link); 712 713 713 714 #ifdef __32_BITS__ … … 729 730 printf(" --- incoming answers ---\n"); 730 731 list_foreach(task->answerbox.answers, cur) { 731 call_t *call = list_get_instance(cur, call_t, link);732 call_t *call = list_get_instance(cur, call_t, ab_link); 732 733 733 734 #ifdef __32_BITS__ -
kernel/generic/src/ipc/ipcrsc.c
rcd529c4 rcfaa35a 151 151 152 152 list_foreach(TASK->answerbox.dispatched_calls, lst) { 153 call_t *call = list_get_instance(lst, call_t, link);153 call_t *call = list_get_instance(lst, call_t, ab_link); 154 154 if ((sysarg_t) call == callid) { 155 155 result = call; -
kernel/generic/src/ipc/irq.c
rcd529c4 rcfaa35a 510 510 { 511 511 irq_spinlock_lock(&irq->notif_cfg.answerbox->irq_lock, false); 512 list_append(&call-> link, &irq->notif_cfg.answerbox->irq_notifs);512 list_append(&call->ab_link, &irq->notif_cfg.answerbox->irq_notifs); 513 513 irq_spinlock_unlock(&irq->notif_cfg.answerbox->irq_lock, false); 514 514
Note:
See TracChangeset
for help on using the changeset viewer.