Ignore:
File:
1 edited

Legend:

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

    r9dae191e rda1bafb  
    5959    unative_t a4, unative_t a5, unative_t a6, unative_t id)
    6060{
    61         unative_t rc;
    62 
    6361        /* Do userpace accounting */
     62        irq_spinlock_lock(&THREAD->lock, true);
    6463        thread_update_accounting(true);
    65 
     64        irq_spinlock_unlock(&THREAD->lock, true);
     65       
    6666#ifdef CONFIG_UDEBUG
    6767        /*
    6868         * Early check for undebugged tasks. We do not lock anything as this
    6969         * test need not be precise in either direction.
     70         *
    7071         */
    71         if (THREAD->udebug.active) {
     72        if (THREAD->udebug.active)
    7273                udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, 0, false);
    73         }
    7474#endif
    7575       
     76        unative_t rc;
    7677        if (id < SYSCALL_END) {
    7778                rc = syscall_table[id](a1, a2, a3, a4, a5, a6);
     
    8889        if (THREAD->udebug.active) {
    8990                udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc, true);
    90        
     91               
    9192                /*
    9293                 * Stopping point needed for tasks that only invoke
     
    9899        }
    99100#endif
    100 
     101       
    101102        /* Do kernel accounting */
     103        irq_spinlock_lock(&THREAD->lock, true);
    102104        thread_update_accounting(false);
     105        irq_spinlock_unlock(&THREAD->lock, true);
    103106       
    104107        return rc;
Note: See TracChangeset for help on using the changeset viewer.