Ignore:
Timestamp:
Oct 10, 2020, 4:50:41 PM (4 years ago)
Author:
alain
Message:

Introduce the ksocket.h & ksocket.c files in kernel/kern.

File:
1 edited

Legend:

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

    r657 r662  
    301301    server = CURRENT_THREAD;
    302302
     303#if( DEBUG_CHDEV_SERVER_RX || DEBUG_CHDEV_SERVER_TX )
     304uint32_t rx_cycle = (uint32_t)hal_get_cycles();
     305if( (chdev->is_rx) && (DEBUG_CHDEV_SERVER_RX < rx_cycle) )
     306printk("\n[%s] RX server thread[%x,%x] enter / channel %d / cycle %d\n",
     307__FUNCTION__ , server->process->pid, server->trdid, chdev->channel, rx_cycle );
     308#endif
     309
     310#if DEBUG_CHDEV_SERVER_TX
     311uint32_t tx_cycle = (uint32_t)hal_get_cycles();
     312if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) )
     313printk("\n[%s] TX server thread[%x,%x] enter / channel %d / cycle %d\n",
     314__FUNCTION__ , server->process->pid, server->trdid, chdev->channel, tx_cycle );
     315#endif
     316
    303317    // build extended pointer on root & lock of client threads queue
    304318    root_xp = XPTR( local_cxy , &chdev->wait_root );
     
    309323    while( 1 )
    310324    {
    311 
    312 #if( DEBUG_CHDEV_SERVER_RX || DEBUG_CHDEV_SERVER_TX )
    313 uint32_t rx_cycle = (uint32_t)hal_get_cycles();
    314 if( (chdev->is_rx) && (DEBUG_CHDEV_SERVER_RX < rx_cycle) )
    315 printk("\n[%s] server thread[%x,%x] check TXT_RX channel %d / cycle %d\n",
    316 __FUNCTION__ , server->process->pid, server->trdid, chdev->channel, rx_cycle );
    317 #endif
    318 
    319 #if DEBUG_CHDEV_SERVER_TX
    320 uint32_t tx_cycle = (uint32_t)hal_get_cycles();
    321 if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) )
    322 printk("\n[%s] thread[%x,%x] check TXT_TX channel %d / cycle %d\n",
    323 __FUNCTION__ , server->process->pid, server->trdid, chdev->channel, tx_cycle );
    324 #endif
    325 
    326325        // check server thread can yield
    327326        thread_assert_can_yield( server , __FUNCTION__ );
     
    331330
    332331        // check waiting queue state
    333         if( xlist_is_empty( root_xp ) ) // waiting queue empty
     332        if( xlist_is_empty( root_xp ) )                      // waiting queue empty
    334333        {
    335334            // release lock protecting the waiting queue
     
    339338rx_cycle = (uint32_t)hal_get_cycles();
    340339if( (chdev->is_rx) && (DEBUG_CHDEV_SERVER_RX < rx_cycle) )
    341 printk("\n[%s] server thread[%x,%x] found RX queue empty => blocks / cycle %d\n",
     340printk("\n[%s] RX server thread[%x,%x] blocks & deschedules / cycle %d\n",
    342341__FUNCTION__ , server->process->pid, server->trdid, rx_cycle );
    343342#endif
     
    346345tx_cycle = (uint32_t)hal_get_cycles();
    347346if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) )
    348 printk("\n[%s] server thread[%x,%x] found TX queue empty => blocks / cycle %d\n",
     347printk("\n[%s] TX server thread[%x,%x] blocks & deschedules / cycle %d\n",
    349348__FUNCTION__ , server->process->pid, server->trdid, tx_cycle );
    350349#endif
    351             // block
     350            // block and deschedule
    352351            thread_block( XPTR( local_cxy , server ) , THREAD_BLOCKED_CLIENT );
    353 
    354             // deschedule
    355             sched_yield("I/O queue empty");
     352            sched_yield("clients queue empty");
     353
     354#if DEBUG_CHDEV_SERVER_RX
     355rx_cycle = (uint32_t)hal_get_cycles();
     356if( (chdev->is_rx) && (DEBUG_CHDEV_SERVER_RX < rx_cycle) )
     357printk("\n[%s] RX server thread[%x,%x] resumes / cycle %d\n",
     358__FUNCTION__ , server->process->pid, server->trdid, rx_cycle );
     359#endif
     360
     361#if DEBUG_CHDEV_SERVER_TX
     362tx_cycle = (uint32_t)hal_get_cycles();
     363if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) )
     364printk("\n[%s] TX server thread[%x,%x] resumes / cycle %d\n",
     365__FUNCTION__ , server->process->pid, server->trdid, tx_cycle );
     366#endif
     367
    356368        }
    357         else                            // waiting queue not empty
     369        else                                               // waiting queue not empty
    358370        {
    359371            // get pointers on first client thread
     
    414426if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) )
    415427printk("\n[%s] thread[%x,%x] completes command for client thread[%x,%x] / cycle %d\n",
    416 __FUNCTION__, server->process->pid, server->trdid, client_pid, client_trdid, tX_cycle );
     428__FUNCTION__, server->process->pid, server->trdid, client_pid, client_trdid, tx_cycle );
    417429#endif
    418430
Note: See TracChangeset for help on using the changeset viewer.