New version of Systemview has Zephyr API description that did not match what we had, align with what the tools provides and expand hooks to support additional APIs. We now cover most kernel APIs. Signed-off-by: Anas Nashif <anas.nashif@intel.com>
81 lines
1.3 KiB
C
81 lines
1.3 KiB
C
/*
|
|
* Copyright (c) 2018 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
#include <zephyr.h>
|
|
#include <kernel_structs.h>
|
|
#include <init.h>
|
|
#include <ksched.h>
|
|
|
|
#include <SEGGER_SYSVIEW.h>
|
|
|
|
|
|
static uint32_t interrupt;
|
|
|
|
uint32_t sysview_get_timestamp(void)
|
|
{
|
|
return k_cycle_get_32();
|
|
}
|
|
|
|
uint32_t sysview_get_interrupt(void)
|
|
{
|
|
#ifdef CONFIG_CPU_CORTEX_M
|
|
interrupt = ((SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) >>
|
|
SCB_ICSR_VECTACTIVE_Pos);
|
|
#endif
|
|
return interrupt;
|
|
}
|
|
|
|
void sys_trace_k_thread_switched_in(void)
|
|
{
|
|
struct k_thread *thread;
|
|
|
|
thread = k_current_get();
|
|
|
|
if (z_is_idle_thread_object(thread)) {
|
|
SEGGER_SYSVIEW_OnIdle();
|
|
} else {
|
|
SEGGER_SYSVIEW_OnTaskStartExec((uint32_t)(uintptr_t)thread);
|
|
}
|
|
}
|
|
|
|
void sys_trace_k_thread_switched_out(void)
|
|
{
|
|
SEGGER_SYSVIEW_OnTaskStopExec();
|
|
}
|
|
|
|
void sys_trace_isr_enter(void)
|
|
{
|
|
SEGGER_SYSVIEW_RecordEnterISR();
|
|
}
|
|
|
|
void sys_trace_isr_exit(void)
|
|
{
|
|
SEGGER_SYSVIEW_RecordExitISR();
|
|
}
|
|
|
|
void sys_trace_isr_exit_to_scheduler(void)
|
|
{
|
|
SEGGER_SYSVIEW_RecordExitISRToScheduler();
|
|
}
|
|
|
|
void sys_trace_idle(void)
|
|
{
|
|
SEGGER_SYSVIEW_OnIdle();
|
|
}
|
|
|
|
static int sysview_init(const struct device *arg)
|
|
{
|
|
ARG_UNUSED(arg);
|
|
|
|
SEGGER_SYSVIEW_Conf();
|
|
if (IS_ENABLED(CONFIG_SEGGER_SYSTEMVIEW_BOOT_ENABLE)) {
|
|
SEGGER_SYSVIEW_Start();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
SYS_INIT(sysview_init, POST_KERNEL, 0);
|