Rev 1090 | Rev 1568 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1090 | Rev 1141 | ||
|---|---|---|---|
| Line 127... | Line 127... | ||
| 127 | #include <ipc/ipcrsc.h> |
127 | #include <ipc/ipcrsc.h> |
| 128 | #include <debug.h> |
128 | #include <debug.h> |
| 129 | 129 | ||
| 130 | /** Find call_t * in call table according to callid |
130 | /** Find call_t * in call table according to callid |
| 131 | * |
131 | * |
| - | 132 | * TODO: Some speedup (hash table?) |
|
| 132 | * @return NULL on not found, otherwise pointer to call structure |
133 | * @return NULL on not found, otherwise pointer to call structure |
| 133 | */ |
134 | */ |
| 134 | call_t * get_call(__native callid) |
135 | call_t * get_call(__native callid) |
| 135 | { |
136 | { |
| - | 137 | link_t *lst; |
|
| - | 138 | call_t *call, *result = NULL; |
|
| - | 139 | ||
| - | 140 | spinlock_lock(&TASK->answerbox.lock); |
|
| 136 | /* TODO: Traverse list of dispatched calls and find one */ |
141 | for (lst = TASK->answerbox.dispatched_calls.next; |
| 137 | /* TODO: locking of call, ripping it from dispatched calls etc. */ |
142 | lst != &TASK->answerbox.dispatched_calls; lst = lst->next) { |
| - | 143 | call = list_get_instance(lst, call_t, list); |
|
| - | 144 | if ((__native)call == callid) { |
|
| 138 | return (call_t *) callid; |
145 | result = call; |
| - | 146 | break; |
|
| - | 147 | } |
|
| - | 148 | } |
|
| - | 149 | spinlock_unlock(&TASK->answerbox.lock); |
|
| - | 150 | return result; |
|
| 139 | } |
151 | } |
| 140 | 152 | ||
| 141 | /** Allocate new phone slot in current TASK structure */ |
153 | /** Allocate new phone slot in current TASK structure */ |
| 142 | int phone_alloc(void) |
154 | int phone_alloc(void) |
| 143 | { |
155 | { |