Changeset 84afc7b in mainline for kernel/generic/src/syscall/syscall.c


Ignore:
Timestamp:
2009-03-18T10:53:12Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e749794
Parents:
8015eeec
Message:

as kernel little brother drivers are not needed anymore, the device numbers do not have to be correlated between kernel and uspace in any way
introduce new syscall sys_device_assign_devno() for generating system-wide unique device numbers for uspace

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/syscall/syscall.c

    r8015eeec r84afc7b  
    3333/**
    3434 * @file
    35  * @brief       Syscall table and syscall wrappers.
     35 * @brief Syscall table and syscall wrappers.
    3636 */
    37  
     37
    3838#include <syscall/syscall.h>
    3939#include <proc/thread.h>
     
    4343#include <print.h>
    4444#include <putchar.h>
    45 #include <errno.h>
    4645#include <arch.h>
    4746#include <debug.h>
     47#include <ddi/device.h>
    4848#include <ipc/sysipc.h>
    4949#include <synch/futex.h>
     
    5151#include <ddi/ddi.h>
    5252#include <security/cap.h>
    53 #include <syscall/copy.h>
    5453#include <sysinfo/sysinfo.h>
    5554#include <console/console.h>
    5655#include <udebug/udebug.h>
    57 
    58 /** Print using kernel facility
    59  *
    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         } else
    86                 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_KCONSOLE
    95         grab_console();
    96         return true;
    97 #else
    98         return false;
    99 #endif
    100 }
    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 }
    10856
    10957/** Dispatch system call */
     
    11260{
    11361        unative_t rc;
    114 
     62       
    11563#ifdef CONFIG_UDEBUG
    11664        udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, 0, false);
    11765#endif
    118         if (id < SYSCALL_END) {
     66       
     67        if (id < SYSCALL_END) {
    11968                rc = syscall_table[id](a1, a2, a3, a4, a5, a6);
    12069        } else {
     
    12372                thread_exit();
    12473        }
    125                
     74       
    12675        if (THREAD->interrupted)
    12776                thread_exit();
    128 
     77       
    12978#ifdef CONFIG_UDEBUG
    13079        udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc, true);
    131 
     80       
    13281        /*
    13382         * Stopping point needed for tasks that only invoke non-blocking
     
    13685        udebug_stoppable_begin();
    13786        udebug_stoppable_end();
    138 #endif 
     87#endif
     88       
    13989        return rc;
    14090}
     
    183133       
    184134        /* DDI related syscalls. */
     135        (syshandler_t) sys_device_assign_devno,
    185136        (syshandler_t) sys_physmem_map,
    186137        (syshandler_t) sys_iospace_enable,
Note: See TracChangeset for help on using the changeset viewer.