Skip to content

Commit 7b21d1d

Browse files
committed
tracing: ctf: add event support
Add hooks for events. Signed-off-by: Anas Nashif <[email protected]>
1 parent a6e64b9 commit 7b21d1d

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
@@ -466,12 +466,18 @@ extern "C" {
466466
#define sys_port_trace_k_mem_slab_free_exit(slab) \
467467
sys_trace_k_mem_slab_free_exit(slab)
468468

469-
#define sys_port_trace_k_event_init(event)
470-
#define sys_port_trace_k_event_post_enter(event, events, events_mask)
471-
#define sys_port_trace_k_event_post_exit(event, events, events_mask)
472-
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout)
473-
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout)
474-
#define sys_port_trace_k_event_wait_exit(event, events, ret)
469+
#define sys_port_trace_k_event_init(event) \
470+
sys_trace_k_event_init(event)
471+
#define sys_port_trace_k_event_post_enter(event, events, events_mask) \
472+
sys_trace_k_event_post_enter(event, events, events_mask)
473+
#define sys_port_trace_k_event_post_exit(event, events, events_mask) \
474+
sys_trace_k_event_post_exit(event, events, events_mask)
475+
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout) \
476+
sys_trace_k_event_wait_enter(event, events, options, timeout)
477+
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout) \
478+
sys_trace_k_event_wait_blocking(event, events, options, timeout)
479+
#define sys_port_trace_k_event_wait_exit(event, events, ret) \
480+
sys_trace_k_event_wait_exit(event, events, ret)
475481

476482
#define sys_port_trace_k_thread_abort_exit(thread)
477483
#define sys_port_trace_k_thread_abort_enter(thread)
@@ -690,8 +696,6 @@ void sys_trace_k_timer_status_sync_blocking(struct k_timer *timer, k_timeout_t t
690696
void sys_trace_k_timer_status_sync_enter(struct k_timer *timer);
691697
void sys_trace_k_timer_status_sync_exit(struct k_timer *timer, uint32_t result);
692698

693-
void sys_trace_k_event_init(struct k_event *event);
694-
695699
/* Mailbox */
696700
void sys_trace_k_mbox_init(struct k_mbox *mbox);
697701
void sys_trace_k_mbox_message_put_enter(struct k_mbox *mbox, k_timeout_t timeout);
@@ -706,6 +710,14 @@ void sys_trace_k_mbox_get_blocking(struct k_mbox *mbox, k_timeout_t timeout);
706710
void sys_trace_k_mbox_get_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
707711
void sys_trace_k_mbox_data_get(struct k_mbox_msg *rx_msg);
708712

713+
/* Event */
714+
void sys_trace_k_event_init(struct k_event *event);
715+
void sys_trace_k_event_post_enter(struct k_event *event, uint32_t events, uint32_t events_mask);
716+
void sys_trace_k_event_post_exit(struct k_event *event, uint32_t events, uint32_t events_mask);
717+
void sys_trace_k_event_wait_enter(struct k_event *event, uint32_t events, uint32_t options, k_timeout_t timeout);
718+
void sys_trace_k_event_wait_blocking(struct k_event *event, uint32_t events, uint32_t options, k_timeout_t timeout);
719+
void sys_trace_k_event_wait_exit(struct k_event *event, uint32_t events, int ret);
720+
709721

710722
#define sys_port_trace_socket_init(sock, family, type, proto) \
711723
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
@@ -2132,3 +2132,63 @@ event {
21322132
uint32_t msg_id;
21332133
};
21342134
};
2135+
2136+
event {
2137+
name = event_init;
2138+
id = 0xFA;
2139+
fields := struct {
2140+
uint32_t event_id;
2141+
};
2142+
};
2143+
2144+
event {
2145+
name = event_post_enter;
2146+
id = 0xFB;
2147+
fields := struct {
2148+
uint32_t event_id;
2149+
uint32_t events;
2150+
uint32_t events_mask;
2151+
};
2152+
};
2153+
2154+
event {
2155+
name = event_post_exit;
2156+
id = 0xFC;
2157+
fields := struct {
2158+
uint32_t event_id;
2159+
uint32_t events;
2160+
uint32_t events_mask;
2161+
};
2162+
};
2163+
2164+
event {
2165+
name = event_wait_enter;
2166+
id = 0xFD;
2167+
fields := struct {
2168+
uint32_t event_id;
2169+
uint32_t events;
2170+
uint32_t options;
2171+
uint32_t timeout;
2172+
};
2173+
};
2174+
2175+
event {
2176+
name = event_wait_blocking;
2177+
id = 0xFE;
2178+
fields := struct {
2179+
uint32_t event_id;
2180+
uint32_t events;
2181+
uint32_t options;
2182+
uint32_t timeout;
2183+
};
2184+
};
2185+
2186+
event {
2187+
name = event_wait_exit;
2188+
id = 0xFF;
2189+
fields := struct {
2190+
uint32_t event_id;
2191+
uint32_t events;
2192+
int32_t ret;
2193+
};
2194+
};

0 commit comments

Comments
 (0)