Changeset 662 for trunk/kernel/kern/chdev.c
- Timestamp:
- Oct 10, 2020, 4:50:41 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/kern/chdev.c
r657 r662 301 301 server = CURRENT_THREAD; 302 302 303 #if( DEBUG_CHDEV_SERVER_RX || DEBUG_CHDEV_SERVER_TX ) 304 uint32_t rx_cycle = (uint32_t)hal_get_cycles(); 305 if( (chdev->is_rx) && (DEBUG_CHDEV_SERVER_RX < rx_cycle) ) 306 printk("\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 311 uint32_t tx_cycle = (uint32_t)hal_get_cycles(); 312 if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) ) 313 printk("\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 303 317 // build extended pointer on root & lock of client threads queue 304 318 root_xp = XPTR( local_cxy , &chdev->wait_root ); … … 309 323 while( 1 ) 310 324 { 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 #endif318 319 #if DEBUG_CHDEV_SERVER_TX320 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 #endif325 326 325 // check server thread can yield 327 326 thread_assert_can_yield( server , __FUNCTION__ ); … … 331 330 332 331 // check waiting queue state 333 if( xlist_is_empty( root_xp ) ) // waiting queue empty332 if( xlist_is_empty( root_xp ) ) // waiting queue empty 334 333 { 335 334 // release lock protecting the waiting queue … … 339 338 rx_cycle = (uint32_t)hal_get_cycles(); 340 339 if( (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",340 printk("\n[%s] RX server thread[%x,%x] blocks & deschedules / cycle %d\n", 342 341 __FUNCTION__ , server->process->pid, server->trdid, rx_cycle ); 343 342 #endif … … 346 345 tx_cycle = (uint32_t)hal_get_cycles(); 347 346 if( (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",347 printk("\n[%s] TX server thread[%x,%x] blocks & deschedules / cycle %d\n", 349 348 __FUNCTION__ , server->process->pid, server->trdid, tx_cycle ); 350 349 #endif 351 // block 350 // block and deschedule 352 351 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 355 rx_cycle = (uint32_t)hal_get_cycles(); 356 if( (chdev->is_rx) && (DEBUG_CHDEV_SERVER_RX < rx_cycle) ) 357 printk("\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 362 tx_cycle = (uint32_t)hal_get_cycles(); 363 if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) ) 364 printk("\n[%s] TX server thread[%x,%x] resumes / cycle %d\n", 365 __FUNCTION__ , server->process->pid, server->trdid, tx_cycle ); 366 #endif 367 356 368 } 357 else // waiting queue not empty369 else // waiting queue not empty 358 370 { 359 371 // get pointers on first client thread … … 414 426 if( (chdev->is_rx == 0) && (DEBUG_CHDEV_SERVER_TX < tx_cycle) ) 415 427 printk("\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, t X_cycle );428 __FUNCTION__, server->process->pid, server->trdid, client_pid, client_trdid, tx_cycle ); 417 429 #endif 418 430
Note: See TracChangeset
for help on using the changeset viewer.