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; }
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; }