Exemplo n.º 1
0
u32 sysview_get_all_task_name(void *p_task_stru,u32 param_len)
{
    struct task_struct *pTid = NULL;
    int task_num = 0x00;
    BSP_SYSVIEW_TASK_INFO_STRU *ptask_stru;

    if((param_len/sizeof(BSP_SYSVIEW_TASK_INFO_STRU)) < BSP_OM_MAX_TASK_NUM)
    {
        return BSP_ERR_SYSVIEW_INVALID_PARAM;
    }

    if(p_task_stru == NULL)
    {
        return BSP_ERR_SYSVIEW_INVALID_PARAM;
    }

    /*lint -save -e613 -e701*/
    ptask_stru = (BSP_SYSVIEW_TASK_INFO_STRU*)p_task_stru;
    for_each_process(pTid)
    {
        if(task_num >=  BSP_OM_MAX_TASK_NUM)
        {
            break;
        }

        ptask_stru[task_num].task_id= PID_PPID_GET(pTid);
        strncpy( (char *)(ptask_stru[task_num].name), pTid->comm, BSP_SYSVIEW_TASK_NAME_LEN);
        task_num++;
    }
     /*lint -restore*/

    return BSP_OK;
}
Exemplo n.º 2
0
u32 report_cpu_trace(void)
{
    u32 task_num = 0;
    BSP_CPU_TRACE_STRU  *p_cpu_trace_stru = NULL;
    BSP_TASK_CPU_TRACE_STRU *p_cpu_trace_data = NULL;
    u32          buf_len = 0;
    u32          task_slices = 0;


    buf_len = sizeof(BSP_CPU_TRACE_STRU) + sizeof(BSP_TASK_CPU_TRACE_STRU)*g_task_num;

    if(cpu_info_stru.report_swt == BSP_SYSVIEW_SWT_ON)
    {
        if(bsp_om_buf_sem_take())
        {
            return BSP_ERR_SYSVIEW_FAIL;
        }
        p_cpu_trace_stru = (BSP_CPU_TRACE_STRU *)bsp_om_get_buf(BSP_OM_SOCP_BUF_TYPE,buf_len);
         if(NULL == p_cpu_trace_stru)
        {
            bsp_om_buf_sem_give();
            return BSP_ERR_SYSVIEW_MALLOC_FAIL;
        }
    }
    else
    {
        p_cpu_trace_stru = (BSP_CPU_TRACE_STRU *)osl_malloc(buf_len);
         if(NULL == p_cpu_trace_stru)
        {
            return BSP_ERR_SYSVIEW_MALLOC_FAIL;
        }
    }

#ifdef ENABLE_BUILD_SYSVIEW
    sysview_trace_packet((u8*)p_cpu_trace_stru,buf_len,BSP_SYSVIEW_CPU_INFO);
#endif

    p_cpu_trace_data = p_cpu_trace_stru->cpu_info_stru;

    for(task_num =0;task_num < g_task_num; task_num++)
    {
        /*lint -save -e701*/
        p_cpu_trace_data[task_num].task_id =  PID_PPID_GET(kernel_tid_list[task_num]);
        /*lint -restore*/
        strncpy( (char *)(p_cpu_trace_data[task_num].task_name), (char *)(g_om_cpu_trace[task_num].task_name), BSP_SYSVIEW_TASK_NAME_LEN);
        p_cpu_trace_data[task_num].task_name[BSP_SYSVIEW_TASK_NAME_LEN-1] = '\0';
        task_slices =g_om_cpu_trace[task_num].slices - g_om_cpu_trace[task_num].cmdslice;
        p_cpu_trace_data[task_num].interval_slice = task_slices;

        /* for uart debug begin*/
        if(cpu_info_stru.report_swt == BSP_SYSVIEW_SWT_OFF)
        {
            if(task_slices != 0)
            {
                printk("taskid:0x%x,  %-11s,  rate = %u%% \n"
                                        ,p_cpu_trace_data[task_num].task_id,p_cpu_trace_data[task_num].task_name
                                        ,(u32)((task_slices *100)/g_cpu_task_taet));
            }
        }
        /* for uart debug end*/
    }

    if(cpu_info_stru.report_swt == BSP_SYSVIEW_SWT_ON)
    {
        if( BSP_OK != bsp_om_into_send_list((u32)p_cpu_trace_stru,buf_len))
        {
            bsp_om_free_buf((u32)p_cpu_trace_stru,buf_len );
            bsp_om_buf_sem_give();
            return BSP_ERR_SYSVIEW_FAIL;
        }

        bsp_om_buf_sem_give();
    }
    else
    {
        osl_free(p_cpu_trace_stru);
    }

    return BSP_OK;
}