コード例 #1
0
static ssize_t task_switch_store(struct kobject *kobj,
		struct kobj_attribute *attr, const char *buf, size_t count)
{
	int val;

	if (kstrtoint(buf, 10, &val))
		return -EINVAL;

	if (rdr_task_switch_state == val)
		return (ssize_t)count;

	if (val > 1)
		return -EINVAL;

	if (val == 1) {
		(void)task_switch_hook_add(
			(rdr_funcptr_2)dump_task_switch_hook);
	} else {
		(void)task_switch_hook_del(
			(rdr_funcptr_2)dump_task_switch_hook);
	}

	rdr_task_switch_state = val;
	return (ssize_t)count;
}
コード例 #2
0
void cpu_view_report_init(void)
{
    struct task_struct     *tempPtr;
    u32         startslice = 0;
    int task_num = 0x00;
    struct task_struct *pTid;

    for_each_process(pTid)
    {
        if(task_num >=  BSP_OM_MAX_TASK_NUM)
        {
            break;
        }

        kernel_tid_list[task_num]= (int)pTid;

        tempPtr = (struct task_struct *)((u32)kernel_tid_list[task_num]);
        tempPtr->suffix = task_num;
        strncpy((char *)g_om_cpu_trace[task_num].task_name, (const char *)tempPtr->comm, BSP_SYSVIEW_TASK_NAME_LEN);
        g_om_cpu_trace[task_num].slices = 0;
        g_om_cpu_trace[task_num].max_slice = 0;
        g_om_cpu_trace[task_num].min_slice = 0xffffffff;
        task_num++;
    }
    g_task_num = (u32)task_num;

    if (0 == g_task_num)
    {
        return;
    }

    /*Init Task/interrupt Switch Hook*/
    if ( ERROR == task_switch_hook_add( (FUNC_VOID)cpu_task_swt_hook ) )
    {
        printk("CPU_utilization_Init fail.\r\n");
        return;
    }

    startslice = om_timer_get();

    old_slice = startslice;

    cpu_state = 1;

    return;
}
コード例 #3
0
/******************************************************************************
 Prototype      : CpuView_OpenTaskWatch
 Description    : 开启任务跟踪
 Input          :
 Output         :
 Return Value   :
 Calls          :
 Called By      :

 History        : ---
  1.Date        : 2007-1-24
    Author      : g45205
    Modification: Created function
******************************************************************************/
void AcpuView_OpenTaskWatch(void)
{
    if (CPU_VIEW_NO == g_ulAcpuViewInitFlag)
    {
        printk("CpuView_OpenTaskWatch, CpuView is not initialized!\r\n");
        return;
    }

    if (CPU_VIEW_YES == g_ulAcpuTaskWatch)
    {
        printk("WatchTask is already opened!\r\n");
        return;
    }

    AcpuView_GetTaskName();

    if (CPU_VIEW_NO == g_ulAcpuTaskHookAddFlag)
    {
        /*向操作系统注册任务钩子函数*/
        if ( task_switch_hook_add((FUNC_VOID)AcpuView_TaskSwitchHook) )
        {
            printk("CpuView_OpenTaskWatch task_switch_hook_add fail!\r\n");
            return;
        }
        g_ulAcpuTaskHookAddFlag = CPU_VIEW_YES;
    }

    /*向操作系统注册中断钩子函数*/
    int_switch_hook_add((FUNC_VOID)AcpuView_IntLevChgHook);

    g_ulAcpuTaskWatch   = CPU_VIEW_YES;

    printk("WatchTask open successfully!\r\n");

    return;
} /* CpuView_OpenTaskWatch */