Changeset 84afc7b in mainline for kernel/generic/src/syscall/syscall.c
- Timestamp:
- 2009-03-18T10:53:12Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
- Children:
- e749794
- Parents:
- 8015eeec
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/syscall/syscall.c
r8015eeec r84afc7b 33 33 /** 34 34 * @file 35 * @brief 35 * @brief Syscall table and syscall wrappers. 36 36 */ 37 37 38 38 #include <syscall/syscall.h> 39 39 #include <proc/thread.h> … … 43 43 #include <print.h> 44 44 #include <putchar.h> 45 #include <errno.h>46 45 #include <arch.h> 47 46 #include <debug.h> 47 #include <ddi/device.h> 48 48 #include <ipc/sysipc.h> 49 49 #include <synch/futex.h> … … 51 51 #include <ddi/ddi.h> 52 52 #include <security/cap.h> 53 #include <syscall/copy.h>54 53 #include <sysinfo/sysinfo.h> 55 54 #include <console/console.h> 56 55 #include <udebug/udebug.h> 57 58 /** Print using kernel facility59 *60 * Print to kernel log.61 *62 */63 static unative_t sys_klog(int fd, const void * buf, size_t count)64 {65 char *data;66 int rc;67 68 if (count > PAGE_SIZE)69 return ELIMIT;70 71 if (count > 0) {72 data = (char *) malloc(count + 1, 0);73 if (!data)74 return ENOMEM;75 76 rc = copy_from_uspace(data, buf, count);77 if (rc) {78 free(data);79 return rc;80 }81 data[count] = 0;82 83 printf("%s", data);84 free(data);85 } else86 klog_update();87 88 return count;89 }90 91 /** Tell kernel to get keyboard/console access again */92 static unative_t sys_debug_enable_console(void)93 {94 #ifdef CONFIG_KCONSOLE95 grab_console();96 return true;97 #else98 return false;99 #endif100 }101 102 /** Tell kernel to relinquish keyboard/console access */103 static unative_t sys_debug_disable_console(void)104 {105 release_console();106 return true;107 }108 56 109 57 /** Dispatch system call */ … … 112 60 { 113 61 unative_t rc; 114 62 115 63 #ifdef CONFIG_UDEBUG 116 64 udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, 0, false); 117 65 #endif 118 if (id < SYSCALL_END) { 66 67 if (id < SYSCALL_END) { 119 68 rc = syscall_table[id](a1, a2, a3, a4, a5, a6); 120 69 } else { … … 123 72 thread_exit(); 124 73 } 125 74 126 75 if (THREAD->interrupted) 127 76 thread_exit(); 128 77 129 78 #ifdef CONFIG_UDEBUG 130 79 udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc, true); 131 80 132 81 /* 133 82 * Stopping point needed for tasks that only invoke non-blocking … … 136 85 udebug_stoppable_begin(); 137 86 udebug_stoppable_end(); 138 #endif 87 #endif 88 139 89 return rc; 140 90 } … … 183 133 184 134 /* DDI related syscalls. */ 135 (syshandler_t) sys_device_assign_devno, 185 136 (syshandler_t) sys_physmem_map, 186 137 (syshandler_t) sys_iospace_enable,
Note:
See TracChangeset
for help on using the changeset viewer.