Skip to content

Commit a6e64b9

Browse files
committed
tracing: ctf: add mbox support
Add hooks for mail boxes. Signed-off-by: Anas Nashif <[email protected]>
1 parent 9b6f77a commit a6e64b9

File tree

4 files changed

+296
-12
lines changed

4 files changed

+296
-12
lines changed

subsys/tracing/ctf/ctf_top.c

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,3 +1788,77 @@ void sys_port_trace_gpio_fire_callback(const struct device *port, struct gpio_ca
17881788
{
17891789
ctf_top_gpio_fire_callback((uint32_t)(uintptr_t)port, (uint32_t)(uintptr_t)cb);
17901790
}
1791+
1792+
/* Mailbox */
1793+
void sys_trace_k_mbox_init(struct k_mbox *mbox)
1794+
{
1795+
ctf_top_mbox_init((uint32_t)(uintptr_t)mbox);
1796+
}
1797+
1798+
void sys_trace_k_mbox_message_put_enter(struct k_mbox *mbox, k_timeout_t timeout)
1799+
{
1800+
ctf_top_mbox_message_put_enter((uint32_t)(uintptr_t)mbox,
1801+
(uint32_t)timeout.ticks);
1802+
}
1803+
1804+
void sys_trace_k_mbox_message_put_blocking(struct k_mbox *mbox, k_timeout_t timeout)
1805+
{
1806+
ctf_top_mbox_message_put_blocking((uint32_t)(uintptr_t)mbox,
1807+
(uint32_t)timeout.ticks);
1808+
}
1809+
1810+
void sys_trace_k_mbox_message_put_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret)
1811+
{
1812+
ctf_top_mbox_message_put_exit((uint32_t)(uintptr_t)mbox,
1813+
(uint32_t)timeout.ticks,
1814+
(int32_t)ret);
1815+
}
1816+
1817+
void sys_trace_k_mbox_put_enter(struct k_mbox *mbox, k_timeout_t timeout)
1818+
{
1819+
ctf_top_mbox_put_enter((uint32_t)(uintptr_t)mbox,
1820+
(uint32_t)timeout.ticks);
1821+
}
1822+
1823+
void sys_trace_k_mbox_put_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret)
1824+
{
1825+
ctf_top_mbox_put_exit((uint32_t)(uintptr_t)mbox,
1826+
(uint32_t)timeout.ticks,
1827+
(int32_t)ret);
1828+
}
1829+
1830+
void sys_trace_k_mbox_async_put_enter(struct k_mbox *mbox, struct k_sem *sem)
1831+
{
1832+
ctf_top_mbox_async_put_enter((uint32_t)(uintptr_t)mbox,
1833+
(uint32_t)(uintptr_t)sem);
1834+
}
1835+
1836+
void sys_trace_k_mbox_async_put_exit(struct k_mbox *mbox, struct k_sem *sem)
1837+
{
1838+
ctf_top_mbox_async_put_exit((uint32_t)(uintptr_t)mbox,
1839+
(uint32_t)(uintptr_t)sem);
1840+
}
1841+
1842+
void sys_trace_k_mbox_get_enter(struct k_mbox *mbox, k_timeout_t timeout)
1843+
{
1844+
ctf_top_mbox_get_enter((uint32_t)(uintptr_t)mbox,
1845+
(uint32_t)timeout.ticks);
1846+
}
1847+
1848+
void sys_trace_k_mbox_get_blocking(struct k_mbox *mbox, k_timeout_t timeout)
1849+
{
1850+
ctf_top_mbox_get_blocking((uint32_t)(uintptr_t)mbox,
1851+
(uint32_t)timeout.ticks);
1852+
}
1853+
1854+
void sys_trace_k_mbox_get_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret)
1855+
{
1856+
ctf_top_mbox_get_exit((uint32_t)(uintptr_t)mbox,
1857+
(uint32_t)timeout.ticks,
1858+
(int32_t)ret);
1859+
}
1860+
1861+
void sys_trace_k_mbox_data_get(struct k_mbox_msg *rx_msg)
1862+
{
1863+
ctf_top_mbox_data_get((uint32_t)(uintptr_t)rx_msg);
1864+
}

subsys/tracing/ctf/ctf_top.h

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,20 @@ typedef enum {
317317
CTF_EVENT_THREAD_SCHED_RESUME = 0xEC,
318318
CTF_EVENT_THREAD_SCHED_SUSPEND = 0xED,
319319

320+
/* Mailbox */
321+
CTF_EVENT_MBOX_INIT = 0xEE,
322+
CTF_EVENT_MBOX_MESSAGE_PUT_ENTER = 0xEF,
323+
CTF_EVENT_MBOX_MESSAGE_PUT_BLOCKING = 0xF0,
324+
CTF_EVENT_MBOX_MESSAGE_PUT_EXIT = 0xF1,
325+
CTF_EVENT_MBOX_PUT_ENTER = 0xF2,
326+
CTF_EVENT_MBOX_PUT_EXIT = 0xF3,
327+
CTF_EVENT_MBOX_ASYNC_PUT_ENTER = 0xF4,
328+
CTF_EVENT_MBOX_ASYNC_PUT_EXIT = 0xF5,
329+
CTF_EVENT_MBOX_GET_ENTER = 0xF6,
330+
CTF_EVENT_MBOX_GET_BLOCKING = 0xF7,
331+
CTF_EVENT_MBOX_GET_EXIT = 0xF8,
332+
CTF_EVENT_MBOX_DATA_GET = 0xF9,
333+
320334
} ctf_event_t;
321335

322336
typedef struct {
@@ -1529,4 +1543,65 @@ static inline void ctf_top_gpio_fire_callback(uint32_t port, uint32_t cb)
15291543
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_GPIO_FIRE_CALLBACK), port, cb);
15301544
}
15311545

1546+
/* Mailbox */
1547+
static inline void ctf_top_mbox_init(uint32_t mbox_id)
1548+
{
1549+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_INIT), mbox_id);
1550+
}
1551+
1552+
static inline void ctf_top_mbox_message_put_enter(uint32_t mbox_id, uint32_t timeout)
1553+
{
1554+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_MESSAGE_PUT_ENTER), mbox_id, timeout);
1555+
}
1556+
1557+
static inline void ctf_top_mbox_message_put_blocking(uint32_t mbox_id, uint32_t timeout)
1558+
{
1559+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_MESSAGE_PUT_BLOCKING), mbox_id, timeout);
1560+
}
1561+
1562+
static inline void ctf_top_mbox_message_put_exit(uint32_t mbox_id, uint32_t timeout, int32_t ret)
1563+
{
1564+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_MESSAGE_PUT_EXIT), mbox_id, timeout, ret);
1565+
}
1566+
1567+
static inline void ctf_top_mbox_put_enter(uint32_t mbox_id, uint32_t timeout)
1568+
{
1569+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_PUT_ENTER), mbox_id, timeout);
1570+
}
1571+
1572+
static inline void ctf_top_mbox_put_exit(uint32_t mbox_id, uint32_t timeout, int32_t ret)
1573+
{
1574+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_PUT_EXIT), mbox_id, timeout, ret);
1575+
}
1576+
1577+
static inline void ctf_top_mbox_async_put_enter(uint32_t mbox_id, uint32_t sem_id)
1578+
{
1579+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_ASYNC_PUT_ENTER), mbox_id, sem_id);
1580+
}
1581+
1582+
static inline void ctf_top_mbox_async_put_exit(uint32_t mbox_id, uint32_t sem_id)
1583+
{
1584+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_ASYNC_PUT_EXIT), mbox_id, sem_id);
1585+
}
1586+
1587+
static inline void ctf_top_mbox_get_enter(uint32_t mbox_id, uint32_t timeout)
1588+
{
1589+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_GET_ENTER), mbox_id, timeout);
1590+
}
1591+
1592+
static inline void ctf_top_mbox_get_blocking(uint32_t mbox_id, uint32_t timeout)
1593+
{
1594+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_GET_BLOCKING), mbox_id, timeout);
1595+
}
1596+
1597+
static inline void ctf_top_mbox_get_exit(uint32_t mbox_id, uint32_t timeout, int32_t ret)
1598+
{
1599+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_GET_EXIT), mbox_id, timeout, ret);
1600+
}
1601+
1602+
static inline void ctf_top_mbox_data_get(uint32_t msg_id)
1603+
{
1604+
CTF_EVENT(CTF_LITERAL(uint8_t, CTF_EVENT_MBOX_DATA_GET), msg_id);
1605+
}
1606+
15321607
#endif /* SUBSYS_DEBUG_TRACING_CTF_TOP_H */

subsys/tracing/ctf/tracing_ctf.h

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -379,18 +379,30 @@ extern "C" {
379379
#define sys_port_trace_k_msgq_purge(msgq) \
380380
sys_trace_k_msgq_purge(msgq)
381381

382-
#define sys_port_trace_k_mbox_init(mbox)
383-
#define sys_port_trace_k_mbox_message_put_enter(mbox, timeout)
384-
#define sys_port_trace_k_mbox_message_put_blocking(mbox, timeout)
385-
#define sys_port_trace_k_mbox_message_put_exit(mbox, timeout, ret)
386-
#define sys_port_trace_k_mbox_put_enter(mbox, timeout)
387-
#define sys_port_trace_k_mbox_put_exit(mbox, timeout, ret)
388-
#define sys_port_trace_k_mbox_async_put_enter(mbox, sem)
389-
#define sys_port_trace_k_mbox_async_put_exit(mbox, sem)
390-
#define sys_port_trace_k_mbox_get_enter(mbox, timeout)
391-
#define sys_port_trace_k_mbox_get_blocking(mbox, timeout)
392-
#define sys_port_trace_k_mbox_get_exit(mbox, timeout, ret)
393-
#define sys_port_trace_k_mbox_data_get(rx_msg)
382+
#define sys_port_trace_k_mbox_init(mbox) \
383+
sys_trace_k_mbox_init(mbox)
384+
#define sys_port_trace_k_mbox_message_put_enter(mbox, timeout) \
385+
sys_trace_k_mbox_message_put_enter(mbox, timeout)
386+
#define sys_port_trace_k_mbox_message_put_blocking(mbox, timeout) \
387+
sys_trace_k_mbox_message_put_blocking(mbox, timeout)
388+
#define sys_port_trace_k_mbox_message_put_exit(mbox, timeout, ret) \
389+
sys_trace_k_mbox_message_put_exit(mbox, timeout, ret)
390+
#define sys_port_trace_k_mbox_put_enter(mbox, timeout) \
391+
sys_trace_k_mbox_put_enter(mbox, timeout)
392+
#define sys_port_trace_k_mbox_put_exit(mbox, timeout, ret) \
393+
sys_trace_k_mbox_put_exit(mbox, timeout, ret)
394+
#define sys_port_trace_k_mbox_async_put_enter(mbox, sem) \
395+
sys_trace_k_mbox_async_put_enter(mbox, sem)
396+
#define sys_port_trace_k_mbox_async_put_exit(mbox, sem) \
397+
sys_trace_k_mbox_async_put_exit(mbox, sem)
398+
#define sys_port_trace_k_mbox_get_enter(mbox, timeout) \
399+
sys_trace_k_mbox_get_enter(mbox, timeout)
400+
#define sys_port_trace_k_mbox_get_blocking(mbox, timeout) \
401+
sys_trace_k_mbox_get_blocking(mbox, timeout)
402+
#define sys_port_trace_k_mbox_get_exit(mbox, timeout, ret) \
403+
sys_trace_k_mbox_get_exit(mbox, timeout, ret)
404+
#define sys_port_trace_k_mbox_data_get(rx_msg) \
405+
sys_trace_k_mbox_data_get(rx_msg)
394406

395407
#define sys_port_trace_k_pipe_init(pipe, buffer, size)
396408
#define sys_port_trace_k_pipe_reset_enter(pipe)
@@ -680,6 +692,20 @@ void sys_trace_k_timer_status_sync_exit(struct k_timer *timer, uint32_t result);
680692

681693
void sys_trace_k_event_init(struct k_event *event);
682694

695+
/* Mailbox */
696+
void sys_trace_k_mbox_init(struct k_mbox *mbox);
697+
void sys_trace_k_mbox_message_put_enter(struct k_mbox *mbox, k_timeout_t timeout);
698+
void sys_trace_k_mbox_message_put_blocking(struct k_mbox *mbox, k_timeout_t timeout);
699+
void sys_trace_k_mbox_message_put_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
700+
void sys_trace_k_mbox_put_enter(struct k_mbox *mbox, k_timeout_t timeout);
701+
void sys_trace_k_mbox_put_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
702+
void sys_trace_k_mbox_async_put_enter(struct k_mbox *mbox, struct k_sem *sem);
703+
void sys_trace_k_mbox_async_put_exit(struct k_mbox *mbox, struct k_sem *sem);
704+
void sys_trace_k_mbox_get_enter(struct k_mbox *mbox, k_timeout_t timeout);
705+
void sys_trace_k_mbox_get_blocking(struct k_mbox *mbox, k_timeout_t timeout);
706+
void sys_trace_k_mbox_get_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
707+
void sys_trace_k_mbox_data_get(struct k_mbox_msg *rx_msg);
708+
683709

684710
#define sys_port_trace_socket_init(sock, family, type, proto) \
685711
sys_trace_socket_init(sock, family, type, proto)

subsys/tracing/ctf/tsdl/metadata

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2023,3 +2023,112 @@ event {
20232023
ctf_bounded_string_t name[20];
20242024
};
20252025
};
2026+
2027+
event {
2028+
name = mbox_init;
2029+
id = 0xEE;
2030+
fields := struct {
2031+
uint32_t mbox_id;
2032+
};
2033+
};
2034+
2035+
event {
2036+
name = mbox_message_put_enter;
2037+
id = 0xEF;
2038+
fields := struct {
2039+
uint32_t mbox_id;
2040+
uint32_t timeout;
2041+
};
2042+
};
2043+
2044+
event {
2045+
name = mbox_message_put_blocking;
2046+
id = 0xF0;
2047+
fields := struct {
2048+
uint32_t mbox_id;
2049+
uint32_t timeout;
2050+
};
2051+
};
2052+
2053+
event {
2054+
name = mbox_message_put_exit;
2055+
id = 0xF1;
2056+
fields := struct {
2057+
uint32_t mbox_id;
2058+
uint32_t timeout;
2059+
int32_t ret;
2060+
};
2061+
};
2062+
2063+
event {
2064+
name = mbox_put_enter;
2065+
id = 0xF2;
2066+
fields := struct {
2067+
uint32_t mbox_id;
2068+
uint32_t timeout;
2069+
};
2070+
};
2071+
2072+
event {
2073+
name = mbox_put_exit;
2074+
id = 0xF3;
2075+
fields := struct {
2076+
uint32_t mbox_id;
2077+
uint32_t timeout;
2078+
int32_t ret;
2079+
};
2080+
};
2081+
2082+
event {
2083+
name = mbox_async_put_enter;
2084+
id = 0xF4;
2085+
fields := struct {
2086+
uint32_t mbox_id;
2087+
uint32_t sem_id;
2088+
};
2089+
};
2090+
2091+
event {
2092+
name = mbox_async_put_exit;
2093+
id = 0xF5;
2094+
fields := struct {
2095+
uint32_t mbox_id;
2096+
uint32_t sem_id;
2097+
};
2098+
};
2099+
2100+
event {
2101+
name = mbox_get_enter;
2102+
id = 0xF6;
2103+
fields := struct {
2104+
uint32_t mbox_id;
2105+
uint32_t timeout;
2106+
};
2107+
};
2108+
2109+
event {
2110+
name = mbox_get_blocking;
2111+
id = 0xF7;
2112+
fields := struct {
2113+
uint32_t mbox_id;
2114+
uint32_t timeout;
2115+
};
2116+
};
2117+
2118+
event {
2119+
name = mbox_get_exit;
2120+
id = 0xF8;
2121+
fields := struct {
2122+
uint32_t mbox_id;
2123+
uint32_t timeout;
2124+
int32_t ret;
2125+
};
2126+
};
2127+
2128+
event {
2129+
name = mbox_data_get;
2130+
id = 0xF9;
2131+
fields := struct {
2132+
uint32_t msg_id;
2133+
};
2134+
};

0 commit comments

Comments
 (0)