Subversion Repositories HelenOS

Rev

Rev 3222 | Rev 3614 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3222 Rev 3438
Line 51... Line 51...
51
#include <ddi/ddi.h>
51
#include <ddi/ddi.h>
52
#include <security/cap.h>
52
#include <security/cap.h>
53
#include <syscall/copy.h>
53
#include <syscall/copy.h>
54
#include <sysinfo/sysinfo.h>
54
#include <sysinfo/sysinfo.h>
55
#include <console/console.h>
55
#include <console/console.h>
-
 
56
#include <udebug/udebug.h>
56
 
57
 
57
/** Print using kernel facility
58
/** Print using kernel facility
58
 *
59
 *
59
 * Print to kernel log.
60
 * Print to kernel log.
60
 *
61
 *
Line 99... Line 100...
99
unative_t syscall_handler(unative_t a1, unative_t a2, unative_t a3,
100
unative_t syscall_handler(unative_t a1, unative_t a2, unative_t a3,
100
    unative_t a4, unative_t a5, unative_t a6, unative_t id)
101
    unative_t a4, unative_t a5, unative_t a6, unative_t id)
101
{
102
{
102
    unative_t rc;
103
    unative_t rc;
103
 
104
 
-
 
105
#ifdef CONFIG_UDEBUG
-
 
106
    udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, 0, false);
-
 
107
#endif
-
 
108
 
104
    if (id < SYSCALL_END)
109
    if (id < SYSCALL_END) {
-
 
110
#ifdef CONFIG_UDEBUG
-
 
111
        udebug_stoppable_begin();
-
 
112
#endif
105
        rc = syscall_table[id](a1, a2, a3, a4, a5, a6);
113
        rc = syscall_table[id](a1, a2, a3, a4, a5, a6);
106
    else {
114
    } else {
107
        printf("Task %" PRIu64": Unknown syscall %#" PRIxn, TASK->taskid, id);
115
        printf("Task %" PRIu64": Unknown syscall %#" PRIxn, TASK->taskid, id);
108
        task_kill(TASK->taskid);
116
        task_kill(TASK->taskid);
109
        thread_exit();
117
        thread_exit();
110
    }
118
    }
111
       
119
       
112
    if (THREAD->interrupted)
120
    if (THREAD->interrupted)
113
        thread_exit();
121
        thread_exit();
-
 
122
 
-
 
123
#ifdef CONFIG_UDEBUG
-
 
124
    udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc, true);
-
 
125
    udebug_stoppable_end();
-
 
126
#endif
114
   
127
   
115
    return rc;
128
    return rc;
116
}
129
}
117
 
130
 
118
syshandler_t syscall_table[SYSCALL_END] = {
131
syshandler_t syscall_table[SYSCALL_END] = {
Line 163... Line 176...
163
    /* Sysinfo syscalls */
176
    /* Sysinfo syscalls */
164
    (syshandler_t) sys_sysinfo_valid,
177
    (syshandler_t) sys_sysinfo_valid,
165
    (syshandler_t) sys_sysinfo_value,
178
    (syshandler_t) sys_sysinfo_value,
166
   
179
   
167
    /* Debug calls */
180
    /* Debug calls */
168
    (syshandler_t) sys_debug_enable_console
181
    (syshandler_t) sys_debug_enable_console,
-
 
182
 
-
 
183
    (syshandler_t) sys_ipc_connect_kbox
169
};
184
};
170
 
185
 
171
/** @}
186
/** @}
172
 */
187
 */