[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 09/10] add mutex-name
From: |
Tom Tromey |
Subject: |
[PATCH 09/10] add mutex-name |
Date: |
Thu, 09 Aug 2012 13:44:01 -0600 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
This adds names to mutexes. This seemed like a nice debugging
extension.
I separated this patch out since it seemed mildly wacky, and I
anticipated that perhaps I would be asked to drop it.
---
src/print.c | 10 +++++++---
src/thread.c | 25 ++++++++++++++++---------
src/thread.h | 9 ++++++++-
3 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/src/print.c b/src/print.c
index ce917bc..cecccce 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1957,10 +1957,14 @@ print_object (Lisp_Object obj, register Lisp_Object
printcharfun, int escapeflag
}
else if (MUTEXP (obj))
{
- int len;
strout ("#<mutex ", -1, -1, printcharfun);
- len = sprintf (buf, "%p", XMUTEX (obj));
- strout (buf, len, len, printcharfun);
+ if (STRINGP (XMUTEX (obj)->name))
+ print_string (XMUTEX (obj)->name, printcharfun);
+ else
+ {
+ int len = sprintf (buf, "%p", XMUTEX (obj));
+ strout (buf, len, len, printcharfun);
+ }
PRINTCHAR ('>');
}
else
diff --git a/src/thread.c b/src/thread.c
index 80557e5..9ec418f 100644
--- a/src/thread.c
+++ b/src/thread.c
@@ -39,16 +39,9 @@ Lisp_Object Qthreadp, Qmutexp;
-struct Lisp_Mutex
-{
- struct vectorlike_header header;
-
- lisp_mutex_t mutex;
-};
-
-DEFUN ("make-mutex", Fmake_mutex, Smake_mutex, 0, 0, 0,
+DEFUN ("make-mutex", Fmake_mutex, Smake_mutex, 0, 1, 0,
doc: /* FIXME */)
- (void)
+ (Lisp_Object name)
{
struct Lisp_Mutex *mutex;
Lisp_Object result;
@@ -57,6 +50,7 @@ DEFUN ("make-mutex", Fmake_mutex, Smake_mutex, 0, 0, 0,
memset ((char *) mutex + offsetof (struct Lisp_Mutex, mutex),
0, sizeof (struct Lisp_Mutex) - offsetof (struct Lisp_Mutex,
mutex));
+ mutex->name = name;
lisp_mutex_init (&mutex->mutex);
XSETMUTEX (result, mutex);
@@ -107,6 +101,18 @@ DEFUN ("mutex-unlock", Fmutex_unlock, Smutex_unlock, 1, 1,
0,
return Qnil;
}
+DEFUN ("mutex-name", Fmutex_name, Smutex_name, 1, 1, 0,
+ doc: /* FIXME */)
+ (Lisp_Object obj)
+{
+ struct Lisp_Mutex *mutex;
+
+ CHECK_MUTEX (obj);
+ mutex = XMUTEX (obj);
+
+ return mutex->name;
+}
+
void
finalize_one_mutex (struct Lisp_Mutex *mutex)
{
@@ -542,6 +548,7 @@ syms_of_threads (void)
defsubr (&Smake_mutex);
defsubr (&Smutex_lock);
defsubr (&Smutex_unlock);
+ defsubr (&Smutex_name);
Qthreadp = intern_c_string ("threadp");
staticpro (&Qthreadp);
diff --git a/src/thread.h b/src/thread.h
index d3ec38a..1a193b1 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -168,7 +168,14 @@ struct thread_state
struct thread_state *next_thread;
};
-struct Lisp_Mutex;
+struct Lisp_Mutex
+{
+ struct vectorlike_header header;
+
+ Lisp_Object name;
+
+ lisp_mutex_t mutex;
+};
extern struct thread_state *current_thread;
--
1.7.7.6
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH 09/10] add mutex-name,
Tom Tromey <=