Ignore:
Timestamp:
Jun 29, 2018, 10:44:14 AM (4 years ago)
Author:
alain
Message:

Fix a bug in function sched_handle_signal():
When the deleted user thread is the last executed thread,
the sched->u_last field must be updated to point on another user thread.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/kern/rpc.c

    r441 r450  
    7777    &rpc_mapper_get_page_server,        // 25
    7878    &rpc_vmm_create_vseg_server,        // 26
    79     &rpc_sched_display_server,          // 27
     79    &rpc_undefined,                     // 27   unused slot
    8080    &rpc_vmm_set_cow_server,            // 28
    8181    &rpc_vmm_display_server,            // 29
     
    20632063
    20642064/////////////////////////////////////////////////////////////////////////////////////////
    2065 // [27]          Marshaling functions attached to RPC_SCHED_DISPLAY (blocking)
    2066 /////////////////////////////////////////////////////////////////////////////////////////
    2067 
    2068 ////////////////////////////////////////////////////////
    2069 void rpc_sched_display_client( cxy_t              cxy,
    2070                                lid_t              lid)
    2071 {
    2072     assert( (cxy != local_cxy) , __FUNCTION__ , "target cluster is not remote\n");
    2073 
    2074     // initialise RPC descriptor header
    2075     rpc_desc_t  rpc;
    2076     rpc.index    = RPC_SCHED_DISPLAY;
    2077     rpc.blocking = true;
    2078     rpc.responses = 1;
    2079 
    2080     // set input arguments in RPC descriptor
    2081     rpc.args[0] = (uint64_t)lid;
    2082 
    2083     // register RPC request in remote RPC fifo
    2084     rpc_send( cxy , &rpc );
    2085 
    2086 }
    2087 
    2088 //////////////////////////////////////////
    2089 void rpc_sched_display_server( xptr_t xp )
    2090 {
    2091     // get client cluster identifier and pointer on RPC descriptor
    2092     cxy_t        cxy  = GET_CXY( xp );
    2093     rpc_desc_t * desc = GET_PTR( xp );
    2094 
    2095     // get input arguments from client RPC descriptor
    2096     lid_t lid = (lid_t)hal_remote_lwd( XPTR(cxy , &desc->args[0]));
    2097    
    2098     // call local kernel function
    2099     sched_display( lid );
    2100 
    2101 }
     2065// [27]         undefined slot
     2066/////////////////////////////////////////////////////////////////////////////////////////
    21022067
    21032068/////////////////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.