Rev 4348 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4348 | Rev 4389 | ||
|---|---|---|---|
| Line 64... | Line 64... | ||
| 64 | /** Dispatch system call */ |
64 | /** Dispatch system call */ |
| 65 | unative_t syscall_handler(unative_t a1, unative_t a2, unative_t a3, |
65 | unative_t syscall_handler(unative_t a1, unative_t a2, unative_t a3, |
| 66 | unative_t a4, unative_t a5, unative_t a6, unative_t id) |
66 | unative_t a4, unative_t a5, unative_t a6, unative_t id) |
| 67 | { |
67 | { |
| 68 | unative_t rc; |
68 | unative_t rc; |
| 69 | 69 | ||
| 70 | #ifdef CONFIG_UDEBUG |
70 | #ifdef CONFIG_UDEBUG |
| - | 71 | bool debug; |
|
| - | 72 | ||
| - | 73 | /* |
|
| - | 74 | * Early check for undebugged tasks. We do not lock anything as this |
|
| - | 75 | * test need not be precise in either way. |
|
| - | 76 | */ |
|
| - | 77 | debug = THREAD->udebug.active; |
|
| - | 78 | ||
| - | 79 | if (debug) { |
|
| 71 | udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, 0, false); |
80 | udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, 0, false); |
| - | 81 | } |
|
| 72 | #endif |
82 | #endif |
| 73 | 83 | ||
| 74 | if (id < SYSCALL_END) { |
84 | if (id < SYSCALL_END) { |
| 75 | rc = syscall_table[id](a1, a2, a3, a4, a5, a6); |
85 | rc = syscall_table[id](a1, a2, a3, a4, a5, a6); |
| 76 | } else { |
86 | } else { |
| Line 81... | Line 91... | ||
| 81 | 91 | ||
| 82 | if (THREAD->interrupted) |
92 | if (THREAD->interrupted) |
| 83 | thread_exit(); |
93 | thread_exit(); |
| 84 | 94 | ||
| 85 | #ifdef CONFIG_UDEBUG |
95 | #ifdef CONFIG_UDEBUG |
| - | 96 | if (debug) { |
|
| 86 | udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc, true); |
97 | udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc, true); |
| 87 | 98 | ||
| 88 | /* |
99 | /* |
| 89 | * Stopping point needed for tasks that only invoke non-blocking |
100 | * Stopping point needed for tasks that only invoke |
| 90 | * system calls. |
101 | * non-blocking system calls. Not needed if the task |
| - | 102 | * is not being debugged (it cannot block here). |
|
| 91 | */ |
103 | */ |
| 92 | udebug_stoppable_begin(); |
104 | udebug_stoppable_begin(); |
| 93 | udebug_stoppable_end(); |
105 | udebug_stoppable_end(); |
| - | 106 | } |
|
| 94 | #endif |
107 | #endif |
| 95 | 108 | ||
| 96 | return rc; |
109 | return rc; |
| 97 | } |
110 | } |
| 98 | 111 | ||