[PATCH i-g-t v2 27/66] lib/xe_eudebug: Add mutex for log events write

Christoph Manszewski christoph.manszewski at intel.com
Tue Jul 30 11:44:44 UTC 2024


From: Pawel Sikora <pawel.sikora at intel.com>

Make 'xe_eudebug_event_log_write' to be thread-safe.

Signed-off-by: Pawel Sikora <pawel.sikora at intel.com>
Cc: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
---
 lib/xe/xe_eudebug.c | 6 +++++-
 lib/xe/xe_eudebug.h | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/xe/xe_eudebug.c b/lib/xe/xe_eudebug.c
index ed1e382c7..254a7261a 100644
--- a/lib/xe/xe_eudebug.c
+++ b/lib/xe/xe_eudebug.c
@@ -836,6 +836,7 @@ struct xe_eudebug_event_log *xe_eudebug_event_log_create(const char *name, unsig
 	igt_assert(l->log);
 	l->max_size = max_size;
 	strncpy(l->name, name, sizeof(l->name) - 1);
+	pthread_mutex_init(&l->lock, NULL);
 
 	return l;
 }
@@ -848,6 +849,7 @@ struct xe_eudebug_event_log *xe_eudebug_event_log_create(const char *name, unsig
  */
 void xe_eudebug_event_log_destroy(struct xe_eudebug_event_log *l)
 {
+	pthread_mutex_destroy(&l->lock);
 	free(l->log);
 	free(l);
 }
@@ -857,7 +859,7 @@ void xe_eudebug_event_log_destroy(struct xe_eudebug_event_log *l)
  * @l: event log pointer
  * @e: event to be written to event log
  *
- * Writes event @e to the event log.
+ * Writes event @e to the event log, thread-safe.
  */
 void xe_eudebug_event_log_write(struct xe_eudebug_event_log *l, struct drm_xe_eudebug_event *e)
 {
@@ -868,6 +870,7 @@ void xe_eudebug_event_log_write(struct xe_eudebug_event_log *l, struct drm_xe_eu
 	 */
 	igt_assert_lt(e->seqno, 10 * 1000 * 1000);
 
+	pthread_mutex_lock(&l->lock);
 	igt_assert_lt(l->head + e->len, l->max_size);
 	memcpy(l->log + l->head, e, e->len);
 	l->head += e->len;
@@ -876,6 +879,7 @@ void xe_eudebug_event_log_write(struct xe_eudebug_event_log *l, struct drm_xe_eu
 	igt_info("%s: wrote %u bytes to eventlog, free %u bytes\n",
 		 l->name, e->len, l->max_size - l->head);
 #endif
+	pthread_mutex_unlock(&l->lock);
 }
 
 /**
diff --git a/lib/xe/xe_eudebug.h b/lib/xe/xe_eudebug.h
index 81c33417f..a499cc977 100644
--- a/lib/xe/xe_eudebug.h
+++ b/lib/xe/xe_eudebug.h
@@ -14,6 +14,7 @@ struct xe_eudebug_event_log {
 	unsigned int head;
 	unsigned int max_size;
 	char name[80];
+	pthread_mutex_t lock;
 };
 
 struct xe_eudebug_debugger {
-- 
2.34.1



More information about the igt-dev mailing list