Subversion Repositories HelenOS

Rev

Rev 4348 | Go to most recent revision | 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