Skip to content

Commit 6358260

Browse files
nashifjhedberg
authored andcommitted
tracing: ctf: add event support
Add hooks for events. Signed-off-by: Anas Nashif <[email protected]>
1 parent 61dd334 commit 6358260

File tree

4 files changed

+150
-8
lines changed

4 files changed

+150
-8
lines changed

subsys/tracing/ctf/ctf_top.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1862,3 +1862,34 @@ void sys_trace_k_mbox_data_get(struct k_mbox_msg *rx_msg)
18621862
{
18631863
ctf_top_mbox_data_get((uint32_t)(uintptr_t)rx_msg);
18641864
}
1865+
1866+
/* Event */
1867+
void sys_trace_k_event_init(struct k_event *event)
1868+
{
1869+
ctf_top_event_init((uint32_t)(uintptr_t)event);
1870+
}
1871+
1872+
void sys_trace_k_event_post_enter(struct k_event *event, uint32_t events, uint32_t events_mask)
1873+
{
1874+
ctf_top_event_post_enter((uint32_t)(uintptr_t)event, events, events_mask);
1875+
}
1876+
1877+
void sys_trace_k_event_post_exit(struct k_event *event, uint32_t events, uint32_t events_mask)
1878+
{
1879+
ctf_top_event_post_exit((uint32_t)(uintptr_t)event, events, events_mask);
1880+
}
1881+
1882+
void sys_trace_k_event_wait_enter(struct k_event *event, uint32_t events, uint32_t options, k_timeout_t timeout)
1883+
{
1884+
ctf_top_event_wait_enter((uint32_t)(uintptr_t)event, events, options, (uint32_t)timeout.ticks);
1885+
}
1886+
1887+
void sys_trace_k_event_wait_blocking(struct k_event *event, uint32_t events, uint32_t options, k_timeout_t timeout)
1888+
{
1889+
ctf_top_event_wait_blocking((uint32_t)(uintptr_t)event, events, options, (uint32_t)timeout.ticks);
1890+
}
1891+
1892+
void sys_trace_k_event_wait_exit(struct k_event *event, uint32_t events, int ret)
1893+
{
1894+
ctf_top_event_wait_exit((uint32_t)(uintptr_t)event, events, (int32_t)ret);
1895+
}

subsys/tracing/ctf/ctf_top.h

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,14 @@ typedef enum {
331331
CTF_EVENT_MBOX_GET_EXIT = 0xF8,
332332
CTF_EVENT_MBOX_DATA_GET = 0xF9,
333333

334+
/* Event */
335+
CTF_EVENT_EVENT_INIT = 0xFA,
336+
CTF_EVENT_EVENT_POST_ENTER = 0xFB,
337+
CTF_EVENT_EVENT_POST_EXIT = 0xFC,
338+
CTF_EVENT_EVENT_WAIT_ENTER = 0xFD,
339+
CTF_EVENT_EVENT_WAIT_BLOCKING = 0xFE,
340+
CTF_EVENT_EVENT_WAIT_EXIT = 0xFF,
341+
334342
} ctf_event_t;
335343

336344
typedef struct {
@@ -1604,4 +1612,35 @@ static inline void ctf_top_mbox_data_get(uint32_t msg_id)
16041612
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_DATA_GET), msg_id);
16051613
}
16061614

1615+
/* Event */
1616+
static inline void ctf_top_event_init(uint32_t event_id)
1617+
{
1618+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_EVENT_INIT), event_id);
1619+
}
1620+
1621+
static inline void ctf_top_event_post_enter(uint32_t event_id, uint32_t events, uint32_t events_mask)
1622+
{
1623+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_EVENT_POST_ENTER), event_id, events, events_mask);
1624+
}
1625+
1626+
static inline void ctf_top_event_post_exit(uint32_t event_id, uint32_t events, uint32_t events_mask)
1627+
{
1628+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_EVENT_POST_EXIT), event_id, events, events_mask);
1629+
}
1630+
1631+
static inline void ctf_top_event_wait_enter(uint32_t event_id, uint32_t events, uint32_t options, uint32_t timeout)
1632+
{
1633+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_EVENT_WAIT_ENTER), event_id, events, options, timeout);
1634+
}
1635+
1636+
static inline void ctf_top_event_wait_blocking(uint32_t event_id, uint32_t events, uint32_t options, uint32_t timeout)
1637+
{
1638+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_EVENT_WAIT_BLOCKING), event_id, events, options, timeout);
1639+
}
1640+
1641+
static inline void ctf_top_event_wait_exit(uint32_t event_id, uint32_t events, int32_t ret)
1642+
{
1643+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_EVENT_WAIT_EXIT), event_id, events, ret);
1644+
}
1645+
16071646
#endif /* SUBSYS_DEBUG_TRACING_CTF_TOP_H */

subsys/tracing/ctf/tracing_ctf.h

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -451,12 +451,18 @@ extern "C" {
451451
#define sys_port_trace_k_mem_slab_free_exit(slab) \
452452
sys_trace_k_mem_slab_free_exit(slab)
453453

454-
#define sys_port_trace_k_event_init(event)
455-
#define sys_port_trace_k_event_post_enter(event, events, events_mask)
456-
#define sys_port_trace_k_event_post_exit(event, events, events_mask)
457-
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout)
458-
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout)
459-
#define sys_port_trace_k_event_wait_exit(event, events, ret)
454+
#define sys_port_trace_k_event_init(event) \
455+
sys_trace_k_event_init(event)
456+
#define sys_port_trace_k_event_post_enter(event, events, events_mask) \
457+
sys_trace_k_event_post_enter(event, events, events_mask)
458+
#define sys_port_trace_k_event_post_exit(event, events, events_mask) \
459+
sys_trace_k_event_post_exit(event, events, events_mask)
460+
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout) \
461+
sys_trace_k_event_wait_enter(event, events, options, timeout)
462+
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout) \
463+
sys_trace_k_event_wait_blocking(event, events, options, timeout)
464+
#define sys_port_trace_k_event_wait_exit(event, events, ret) \
465+
sys_trace_k_event_wait_exit(event, events, ret)
460466

461467
#define sys_port_trace_k_thread_abort_exit(thread)
462468
#define sys_port_trace_k_thread_abort_enter(thread)
@@ -675,8 +681,6 @@ void sys_trace_k_timer_status_sync_blocking(struct k_timer *timer, k_timeout_t t
675681
void sys_trace_k_timer_status_sync_enter(struct k_timer *timer);
676682
void sys_trace_k_timer_status_sync_exit(struct k_timer *timer, uint32_t result);
677683

678-
void sys_trace_k_event_init(struct k_event *event);
679-
680684
/* Mailbox */
681685
void sys_trace_k_mbox_init(struct k_mbox *mbox);
682686
void sys_trace_k_mbox_message_put_enter(struct k_mbox *mbox, k_timeout_t timeout);
@@ -691,6 +695,14 @@ void sys_trace_k_mbox_get_blocking(struct k_mbox *mbox, k_timeout_t timeout);
691695
void sys_trace_k_mbox_get_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
692696
void sys_trace_k_mbox_data_get(struct k_mbox_msg *rx_msg);
693697

698+
/* Event */
699+
void sys_trace_k_event_init(struct k_event *event);
700+
void sys_trace_k_event_post_enter(struct k_event *event, uint32_t events, uint32_t events_mask);
701+
void sys_trace_k_event_post_exit(struct k_event *event, uint32_t events, uint32_t events_mask);
702+
void sys_trace_k_event_wait_enter(struct k_event *event, uint32_t events, uint32_t options, k_timeout_t timeout);
703+
void sys_trace_k_event_wait_blocking(struct k_event *event, uint32_t events, uint32_t options, k_timeout_t timeout);
704+
void sys_trace_k_event_wait_exit(struct k_event *event, uint32_t events, int ret);
705+
694706

695707
#define sys_port_trace_socket_init(sock, family, type, proto) \
696708
sys_trace_socket_init(sock, family, type, proto)

subsys/tracing/ctf/tsdl/metadata

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2137,3 +2137,63 @@ event {
21372137
uint32_t msg_id;
21382138
};
21392139
};
2140+
2141+
event {
2142+
name = event_init;
2143+
id = 0xFA;
2144+
fields := struct {
2145+
uint32_t event_id;
2146+
};
2147+
};
2148+
2149+
event {
2150+
name = event_post_enter;
2151+
id = 0xFB;
2152+
fields := struct {
2153+
uint32_t event_id;
2154+
uint32_t events;
2155+
uint32_t events_mask;
2156+
};
2157+
};
2158+
2159+
event {
2160+
name = event_post_exit;
2161+
id = 0xFC;
2162+
fields := struct {
2163+
uint32_t event_id;
2164+
uint32_t events;
2165+
uint32_t events_mask;
2166+
};
2167+
};
2168+
2169+
event {
2170+
name = event_wait_enter;
2171+
id = 0xFD;
2172+
fields := struct {
2173+
uint32_t event_id;
2174+
uint32_t events;
2175+
uint32_t options;
2176+
uint32_t timeout;
2177+
};
2178+
};
2179+
2180+
event {
2181+
name = event_wait_blocking;
2182+
id = 0xFE;
2183+
fields := struct {
2184+
uint32_t event_id;
2185+
uint32_t events;
2186+
uint32_t options;
2187+
uint32_t timeout;
2188+
};
2189+
};
2190+
2191+
event {
2192+
name = event_wait_exit;
2193+
id = 0xFF;
2194+
fields := struct {
2195+
uint32_t event_id;
2196+
uint32_t events;
2197+
int32_t ret;
2198+
};
2199+
};

0 commit comments

Comments
 (0)