forked from nuttx/nuttx-update
drivers/note:add the api of sched_note_add
Signed-off-by: zhangwenjian <zhangwenjian@xiaomi.com>
This commit is contained in:
parent
7aa1871664
commit
149b1f186e
2 changed files with 57 additions and 0 deletions
|
@ -564,6 +564,57 @@ static void note_record_taskname(pid_t pid, FAR const char *name)
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_SCHED_INSTRUMENTATION
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: sched_note_add
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Forward rpmsg note data to individual channels.This process does
|
||||||
|
* not require filtering
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* data - The forward note data.
|
||||||
|
* len - The len of forward note data.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Assumptions:
|
||||||
|
* We are within a critical section.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void sched_note_add(FAR const void *data, size_t len)
|
||||||
|
{
|
||||||
|
DEBUGASSERT(data);
|
||||||
|
|
||||||
|
while (len >= sizeof(struct note_common_s))
|
||||||
|
{
|
||||||
|
FAR struct note_common_s *note = (FAR struct note_common_s *)data;
|
||||||
|
size_t notelen = note->nc_length;
|
||||||
|
FAR struct note_driver_s **driver;
|
||||||
|
|
||||||
|
DEBUGASSERT(notelen >= sizeof(struct note_common_s) &&
|
||||||
|
len >= notelen);
|
||||||
|
for (driver = g_note_drivers; *driver; driver++)
|
||||||
|
{
|
||||||
|
if ((*driver)->ops->add == NULL)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add the note to circular buffer */
|
||||||
|
|
||||||
|
note_add(*driver, note, notelen);
|
||||||
|
}
|
||||||
|
|
||||||
|
data += notelen;
|
||||||
|
len -= notelen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: sched_note_*
|
* Name: sched_note_*
|
||||||
*
|
*
|
||||||
|
|
|
@ -595,6 +595,12 @@ extern "C"
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_SCHED_INSTRUMENTATION
|
||||||
|
void sched_note_add(FAR const void *note, size_t notelen);
|
||||||
|
#else
|
||||||
|
# define sched_note_add(n,l)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SCHED_INSTRUMENTATION_SWITCH
|
#ifdef CONFIG_SCHED_INSTRUMENTATION_SWITCH
|
||||||
void sched_note_start(FAR struct tcb_s *tcb);
|
void sched_note_start(FAR struct tcb_s *tcb);
|
||||||
void sched_note_stop(FAR struct tcb_s *tcb);
|
void sched_note_stop(FAR struct tcb_s *tcb);
|
||||||
|
|
Loading…
Reference in a new issue