Skip to content

Commit 61dd334

Browse files
nashifjhedberg
authored andcommitted
tracing: ctf: add mbox support
Add hooks for mail boxes. Signed-off-by: Anas Nashif <[email protected]>
1 parent 1823d4c commit 61dd334

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)
@@ -665,6 +677,20 @@ void sys_trace_k_timer_status_sync_exit(struct k_timer *timer, uint32_t result);
665677

666678
void sys_trace_k_event_init(struct k_event *event);
667679

680+
/* Mailbox */
681+
void sys_trace_k_mbox_init(struct k_mbox *mbox);
682+
void sys_trace_k_mbox_message_put_enter(struct k_mbox *mbox, k_timeout_t timeout);
683+
void sys_trace_k_mbox_message_put_blocking(struct k_mbox *mbox, k_timeout_t timeout);
684+
void sys_trace_k_mbox_message_put_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
685+
void sys_trace_k_mbox_put_enter(struct k_mbox *mbox, k_timeout_t timeout);
686+
void sys_trace_k_mbox_put_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
687+
void sys_trace_k_mbox_async_put_enter(struct k_mbox *mbox, struct k_sem *sem);
688+
void sys_trace_k_mbox_async_put_exit(struct k_mbox *mbox, struct k_sem *sem);
689+
void sys_trace_k_mbox_get_enter(struct k_mbox *mbox, k_timeout_t timeout);
690+
void sys_trace_k_mbox_get_blocking(struct k_mbox *mbox, k_timeout_t timeout);
691+
void sys_trace_k_mbox_get_exit(struct k_mbox *mbox, k_timeout_t timeout, int ret);
692+
void sys_trace_k_mbox_data_get(struct k_mbox_msg *rx_msg);
693+
668694

669695
#define sys_port_trace_socket_init(sock, family, type, proto) \
670696
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
@@ -2028,3 +2028,112 @@ event {
20282028
ctf_bounded_string_t name[20];
20292029
};
20302030
};
2031+
2032+
event {
2033+
name = mbox_init;
2034+
id = 0xEE;
2035+
fields := struct {
2036+
uint32_t mbox_id;
2037+
};
2038+
};
2039+
2040+
event {
2041+
name = mbox_message_put_enter;
2042+
id = 0xEF;
2043+
fields := struct {
2044+
uint32_t mbox_id;
2045+
uint32_t timeout;
2046+
};
2047+
};
2048+
2049+
event {
2050+
name = mbox_message_put_blocking;
2051+
id = 0xF0;
2052+
fields := struct {
2053+
uint32_t mbox_id;
2054+
uint32_t timeout;
2055+
};
2056+
};
2057+
2058+
event {
2059+
name = mbox_message_put_exit;
2060+
id = 0xF1;
2061+
fields := struct {
2062+
uint32_t mbox_id;
2063+
uint32_t timeout;
2064+
int32_t ret;
2065+
};
2066+
};
2067+
2068+
event {
2069+
name = mbox_put_enter;
2070+
id = 0xF2;
2071+
fields := struct {
2072+
uint32_t mbox_id;
2073+
uint32_t timeout;
2074+
};
2075+
};
2076+
2077+
event {
2078+
name = mbox_put_exit;
2079+
id = 0xF3;
2080+
fields := struct {
2081+
uint32_t mbox_id;
2082+
uint32_t timeout;
2083+
int32_t ret;
2084+
};
2085+
};
2086+
2087+
event {
2088+
name = mbox_async_put_enter;
2089+
id = 0xF4;
2090+
fields := struct {
2091+
uint32_t mbox_id;
2092+
uint32_t sem_id;
2093+
};
2094+
};
2095+
2096+
event {
2097+
name = mbox_async_put_exit;
2098+
id = 0xF5;
2099+
fields := struct {
2100+
uint32_t mbox_id;
2101+
uint32_t sem_id;
2102+
};
2103+
};
2104+
2105+
event {
2106+
name = mbox_get_enter;
2107+
id = 0xF6;
2108+
fields := struct {
2109+
uint32_t mbox_id;
2110+
uint32_t timeout;
2111+
};
2112+
};
2113+
2114+
event {
2115+
name = mbox_get_blocking;
2116+
id = 0xF7;
2117+
fields := struct {
2118+
uint32_t mbox_id;
2119+
uint32_t timeout;
2120+
};
2121+
};
2122+
2123+
event {
2124+
name = mbox_get_exit;
2125+
id = 0xF8;
2126+
fields := struct {
2127+
uint32_t mbox_id;
2128+
uint32_t timeout;
2129+
int32_t ret;
2130+
};
2131+
};
2132+
2133+
event {
2134+
name = mbox_data_get;
2135+
id = 0xF9;
2136+
fields := struct {
2137+
uint32_t msg_id;
2138+
};
2139+
};

0 commit comments

Comments
 (0)