Ignore:
Timestamp:
Oct 8, 2018, 11:31:42 AM (3 years ago)
Author:
alain
Message:

1) Register the kernel process in the cluster manager local list.
2) Introduce a new service in idbg : display the set of busylocks taken by a given thread.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/libk/remote_busylock.c

    r563 r580  
    8888uint32_t type = hal_remote_l32( XPTR( lock_cxy , &lock_ptr->type ) );
    8989if( (type != LOCK_CHDEV_TXT0) &&
    90     (XPTR( local_cxy , this ) == DEBUG_BUSYLOCK_THREAD_XP) &&
    9190    ((uint32_t)hal_get_cycles() > DEBUG_BUSYLOCK) )
    9291{
     
    9594    // update thread list of busyslocks
    9695    xlist_add_last( root_xp , XPTR( lock_cxy  , &lock_ptr->xlist ) );
     96}
     97#endif
    9798
    98     // display busylocks for the selected thread (acquire)
    99     thread_display_busylocks( type , true );
     99#if( DEBUG_BUSYLOCK && DEBUG_BUSYLOCK_THREAD_XP )
     100if( (type != LOCK_CHDEV_TXT0) &&
     101    (XPTR( local_cxy , this ) == DEBUG_BUSYLOCK_THREAD_XP) )
     102{
     103    // get cluster and local pointer of target thread
     104    cxy_t      thread_cxy = GET_CXY( DEBUG_BUSYLOCK_THREAD_XP );
     105    thread_t * thread_ptr = GET_PTR( DEBUG_BUSYLOCK_THREAD_XP );
     106
     107    // display message on kernel TXT0
     108    printk("\n### thread [%x,%x] ACQUIRE lock %s\n",
     109    thread_cxy, thread_ptr, lock_type_str[type] );
    100110}
    101111#endif
     
    132142    // remove lock from thread list of busyslocks
    133143    xlist_unlink( XPTR( lock_cxy  , &lock_ptr->xlist ) );
     144}
     145#endif
    134146
    135     // display busylocks for the selected thread (release)
    136     thread_display_busylocks( type , false );   
     147#if (DEBUG_BUSYLOCK && DEBUG_BUSYLOCK_THREAD_XP )
     148if( (type != LOCK_CHDEV_TXT0) &&
     149    (XPTR( local_cxy , this ) == DEBUG_BUSYLOCK_THREAD_XP) )
     150{
     151    // get cluster and local pointer of target thread
     152    cxy_t      thread_cxy = GET_CXY( DEBUG_BUSYLOCK_THREAD_XP );
     153    thread_t * thread_ptr = GET_PTR( DEBUG_BUSYLOCK_THREAD_XP );
     154
     155    // display message on kernel TXT0
     156    printk("\n### thread [%x,%x] RELEASE lock %s\n",
     157    thread_cxy, thread_ptr, lock_type_str[type] );
    137158}
    138159#endif
Note: See TracChangeset for help on using the changeset viewer.