diff --git a/kernel/mailbox.c b/kernel/mailbox.c
index 818a9bf..3ed7116 100644
--- a/kernel/mailbox.c
+++ b/kernel/mailbox.c
@@ -102,6 +102,9 @@
 	z_waitq_init(&mbox->tx_msg_queue);
 	z_waitq_init(&mbox->rx_msg_queue);
 	mbox->lock = (struct k_spinlock) {};
+
+	SYS_PORT_TRACING_OBJ_INIT(k_mbox, mbox);
+
 	SYS_TRACING_OBJ_INIT(k_mbox, mbox);
 }
 
@@ -248,6 +251,8 @@
 	/* search mailbox's rx queue for a compatible receiver */
 	key = k_spin_lock(&mbox->lock);
 
+	SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mbox, message_put, mbox, timeout);
+
 	_WAIT_Q_FOR_EACH(&mbox->rx_msg_queue, receiving_thread) {
 		rx_msg = (struct k_mbox_msg *)receiving_thread->base.swap_data;
 
@@ -273,18 +278,24 @@
 				return 0;
 			}
 #endif
+			SYS_PORT_TRACING_OBJ_FUNC_BLOCKING(k_mbox, message_put, mbox, timeout);
 
 			/*
 			 * synchronous send: pend current thread (unqueued)
 			 * until the receiver consumes the message
 			 */
-			return z_pend_curr(&mbox->lock, key, NULL, K_FOREVER);
+			int ret = z_pend_curr(&mbox->lock, key, NULL, K_FOREVER);
 
+			SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, message_put, mbox, timeout, ret);
+
+			return ret;
 		}
 	}
 
 	/* didn't find a matching receiver: don't wait for one */
 	if (K_TIMEOUT_EQ(timeout, K_NO_WAIT)) {
+		SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, message_put, mbox, timeout, -ENOMSG);
+
 		k_spin_unlock(&mbox->lock, key);
 		return -ENOMSG;
 	}
@@ -297,9 +308,14 @@
 		return 0;
 	}
 #endif
+	SYS_PORT_TRACING_OBJ_FUNC_BLOCKING(k_mbox, message_put, mbox, timeout);
 
 	/* synchronous send: sender waits on tx queue for receiver or timeout */
-	return z_pend_curr(&mbox->lock, key, &mbox->tx_msg_queue, timeout);
+	int ret = z_pend_curr(&mbox->lock, key, &mbox->tx_msg_queue, timeout);
+
+	SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, message_put, mbox, timeout, ret);
+
+	return ret;
 }
 
 int k_mbox_put(struct k_mbox *mbox, struct k_mbox_msg *tx_msg,
@@ -308,7 +324,13 @@
 	/* configure things for a synchronous send, then send the message */
 	tx_msg->_syncing_thread = _current;
 
-	return mbox_message_put(mbox, tx_msg, timeout);
+	SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mbox, put, mbox, timeout);
+
+	int ret = mbox_message_put(mbox, tx_msg, timeout);
+
+	SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, put, mbox, timeout, ret);
+
+	return ret;
 }
 
 #if (CONFIG_NUM_MBOX_ASYNC_MSGS > 0)
@@ -317,6 +339,8 @@
 {
 	struct k_mbox_async *async;
 
+	SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mbox, async_put, mbox, sem);
+
 	/*
 	 * allocate an asynchronous message descriptor, configure both parts,
 	 * then send the message asynchronously
@@ -330,6 +354,7 @@
 	async->tx_msg._async_sem = sem;
 
 	(void)mbox_message_put(mbox, &async->tx_msg, K_FOREVER);
+	SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, async_put, mbox, sem);
 }
 #endif
 
@@ -394,6 +419,8 @@
 	/* search mailbox's tx queue for a compatible sender */
 	key = k_spin_lock(&mbox->lock);
 
+	SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mbox, get, mbox, timeout);
+
 	_WAIT_Q_FOR_EACH(&mbox->tx_msg_queue, sending_thread) {
 		tx_msg = (struct k_mbox_msg *)sending_thread->base.swap_data;
 
@@ -404,18 +431,25 @@
 			k_spin_unlock(&mbox->lock, key);
 
 			/* consume message data immediately, if needed */
-			return mbox_message_data_check(rx_msg, buffer);
+			result = mbox_message_data_check(rx_msg, buffer);
+
+			SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, get, mbox, timeout, result);
+			return result;
 		}
 	}
 
 	/* didn't find a matching sender */
 
 	if (K_TIMEOUT_EQ(timeout, K_NO_WAIT)) {
+		SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, get, mbox, timeout, -ENOMSG);
+
 		/* don't wait for a matching sender to appear */
 		k_spin_unlock(&mbox->lock, key);
 		return -ENOMSG;
 	}
 
+	SYS_PORT_TRACING_OBJ_FUNC_BLOCKING(k_mbox, get, mbox, timeout);
+
 	/* wait until a matching sender appears or a timeout occurs */
 	_current->base.swap_data = rx_msg;
 	result = z_pend_curr(&mbox->lock, key, &mbox->rx_msg_queue, timeout);
@@ -425,5 +459,7 @@
 		result = mbox_message_data_check(rx_msg, buffer);
 	}
 
+	SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mbox, get, mbox, timeout, result);
+
 	return result;
 }
