#!/pkg/bin/ksh
#--------------------------------------------------------------------
# pd_ctrace_dump - spitfire cpa ctrace buffer dump script
#
# Copyright (c) 2019-2020, 2022, 2023 by cisco Systems, Inc.
# All rights reserved.
#--------------------------------------------------------------------

dump_cpa_buffers() { 
    # Below are the processes which need the kill
    # signal to be sent to it to dump trace buffers
    proc_arr_dump_sig=('shelfmgr' 'envmon' 'fpd_client' 'ledmgr' 'watchdog' 'ds' 'optics_driver' 'optics_driver_0' 'optics_driver_1' 'optics_driver_2' 'optics_driver_3' 'optics_driver_4' 'optics_driver_5' 'optics_driver_6' 'optics_driver_7' 'optics_proxy' 'npu_drvr' 'eth_intf_ea')
    
    for proc in ${proc_arr_dump_sig[@]};
    do
        # Make sure the process's ctrace buffer is present. Not all the above
        # processes are running on all nodes/PID
        if [ -f /var/log/ctrace/$proc/ctrace.info ]; then
            proc_id=$(pidof $proc)
            if [ -z $proc_id ]; then :
            else
                # Only send the signal to process that is running
                dump_signal=$(grep DUMP_SIGNAL /var/log/ctrace/$proc/ctrace.info | cut -d ' ' -f 2)
                kill -$dump_signal $proc_id
            fi
        fi
    done

    # Wait for the dump to complete
    sleep 0.5
    sync /var/log/ctrace
}

dump_cpa_buffers
