Ignore:
Timestamp:
Aug 25, 2018, 6:29:34 PM (6 years ago)
Author:
viala@…
Message:

[syscalls] add interface in implementation.

Add const where possible, fix protoypes to follow interface.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/syscalls/sys_thread_create.c

    r457 r506  
    3939#include <rpc.h>
    4040
     41#include <syscalls.h>
    4142
    4243///////////////////////////////////////////////////
    43 int sys_thread_create ( pthread_t      * trdid_ptr,
    44                         pthread_attr_t * user_attr,
    45                         void           * start_func,
    46                         void           * start_arg )
     44int sys_thread_create(
     45  struct thread_s             * new_thread,
     46  const struct pthread_attr_s * user_attr,
     47  const void                  * start_func,
     48  const void                  * start_args )
    4749{
    4850        pthread_attr_t   kern_attr;        // copy of pthread attributes in kernel space
     
    7274
    7375    // check trdid buffer in user space
    74     error = vmm_get_vseg( process , (intptr_t)trdid_ptr , &vseg );
     76    error = vmm_get_vseg( process , (intptr_t)new_thread , &vseg );
    7577
    7678    if ( error )
     
    7981#if DEBUG_SYSCALLS_ERROR
    8082printk("\n[ERROR] in %s : trdid buffer unmapped %x / thread %x / process %x\n",
    81 __FUNCTION__ , (intptr_t)trdid_ptr, parent->trdid, process->pid );
     83__FUNCTION__ , (intptr_t)new_thread, parent->trdid, process->pid );
    8284vmm_display( process , false );
    8385#endif
     
    121123        }
    122124
    123         // check start_arg buffer in user space
    124         if( start_arg != NULL )
    125     {
    126         error = vmm_get_vseg( process , (intptr_t)start_arg , &vseg );
     125        // check start_args buffer in user space
     126        if( start_args != NULL )
     127    {
     128        error = vmm_get_vseg( process , (intptr_t)start_args , &vseg );
    127129
    128130            if( error )
     
    130132
    131133#if DEBUG_SYSCALLS_ERROR
    132 printk("\n[ERROR] in %s : start_arg buffer unmapped %x / thread %x / process %x\n",
    133 __FUNCTION__ , (intptr_t)start_arg , parent->trdid , process->pid );
     134printk("\n[ERROR] in %s : start_args buffer unmapped %x / thread %x / process %x\n",
     135__FUNCTION__ , (intptr_t)start_args , parent->trdid , process->pid );
    134136vmm_display( process , false );
    135137#endif
     
    176178                error = thread_user_create( process->pid,
    177179                                            start_func,
    178                                             start_arg,
     180                                            start_args,
    179181                                            &kern_attr,
    180182                                            &child_ptr );
     
    187189                                               process->pid,
    188190                                               start_func,
    189                                                start_arg,
     191                                               start_args,
    190192                                               &kern_attr,
    191193                                               &child_xp,
     
    209211        // returns trdid to user space
    210212        trdid = hal_remote_lw( XPTR( target_cxy , &child_ptr->trdid ) );
    211         hal_copy_to_uspace( trdid_ptr , &trdid , sizeof(pthread_t) );
     213        hal_copy_to_uspace( new_thread , &trdid , sizeof(pthread_t) );
    212214
    213215    // activate new thread
Note: See TracChangeset for help on using the changeset viewer.