Tracing: Mutex tracing hooks

Add mutex trace hooks, default mutex trace hooks, and trace hook
documentation.

Signed-off-by: Torbjörn Leksell <torbjorn.leksell@percepio.com>
diff --git a/kernel/mutex.c b/kernel/mutex.c
index dd39013..7340df8 100644
--- a/kernel/mutex.c
+++ b/kernel/mutex.c
@@ -73,13 +73,12 @@
 	mutex->owner = NULL;
 	mutex->lock_count = 0U;
 
-	sys_trace_mutex_init(mutex);
-
 	z_waitq_init(&mutex->wait_q);
 
 	SYS_TRACING_OBJ_INIT(k_mutex, mutex);
 	z_object_init(mutex);
-	sys_trace_end_call(SYS_TRACE_ID_MUTEX_INIT);
+
+	SYS_PORT_TRACING_OBJ_INIT(k_mutex, mutex, 0);
 
 	return 0;
 }
@@ -124,7 +123,8 @@
 
 	__ASSERT(!arch_is_in_isr(), "mutexes cannot be used inside ISRs");
 
-	sys_trace_mutex_lock(mutex);
+	SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mutex, lock, mutex, timeout);
+
 	key = k_spin_lock(&lock);
 
 	if (likely((mutex->lock_count == 0U) || (mutex->owner == _current))) {
@@ -141,17 +141,22 @@
 			mutex->owner_orig_prio);
 
 		k_spin_unlock(&lock, key);
-		sys_trace_end_call(SYS_TRACE_ID_MUTEX_LOCK);
+
+		SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mutex, lock, mutex, timeout, 0);
 
 		return 0;
 	}
 
 	if (unlikely(K_TIMEOUT_EQ(timeout, K_NO_WAIT))) {
 		k_spin_unlock(&lock, key);
-		sys_trace_end_call(SYS_TRACE_ID_MUTEX_LOCK);
+
+		SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mutex, lock, mutex, timeout, -EBUSY);
+
 		return -EBUSY;
 	}
 
+	SYS_PORT_TRACING_OBJ_FUNC_BLOCKING(k_mutex, lock, mutex, timeout);
+
 	new_prio = new_prio_for_inheritance(_current->base.prio,
 					    mutex->owner->base.prio);
 
@@ -169,7 +174,7 @@
 		got_mutex ? 'y' : 'n');
 
 	if (got_mutex == 0) {
-		sys_trace_end_call(SYS_TRACE_ID_MUTEX_LOCK);
+		SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mutex, lock, mutex, timeout, 0);
 		return 0;
 	}
 
@@ -195,7 +200,8 @@
 		k_spin_unlock(&lock, key);
 	}
 
-	sys_trace_end_call(SYS_TRACE_ID_MUTEX_LOCK);
+	SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mutex, lock, mutex, timeout, -EAGAIN);
+
 	return -EAGAIN;
 }
 
@@ -215,13 +221,19 @@
 
 	__ASSERT(!arch_is_in_isr(), "mutexes cannot be used inside ISRs");
 
+	SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mutex, unlock, mutex);
+
 	CHECKIF(mutex->owner == NULL) {
+		SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mutex, unlock, mutex, -EINVAL);
+
 		return -EINVAL;
 	}
 	/*
 	 * The current thread does not own the mutex.
 	 */
 	CHECKIF(mutex->owner != _current) {
+		SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mutex, unlock, mutex, -EPERM);
+
 		return -EPERM;
 	}
 
@@ -233,7 +245,6 @@
 	 */
 	__ASSERT_NO_MSG(mutex->lock_count > 0U);
 
-	sys_trace_mutex_unlock(mutex);
 	z_sched_lock();
 
 	LOG_DBG("mutex %p lock_count: %d", mutex, mutex->lock_count);
@@ -277,7 +288,8 @@
 
 k_mutex_unlock_return:
 	k_sched_unlock();
-	sys_trace_end_call(SYS_TRACE_ID_MUTEX_UNLOCK);
+
+	SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_mutex, unlock, mutex, 0);
 
 	return 0;
 }