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