Enhanced debugging by making DEBUG() print out the cothread ID as well as the process...
authorErik Walthinsen <omega@temple-baptist.org>
Sun, 3 Dec 2000 00:17:52 +0000 (00:17 +0000)
committerErik Walthinsen <omega@temple-baptist.org>
Sun, 3 Dec 2000 00:17:52 +0000 (00:17 +0000)
Original commit message from CVS:
Enhanced debugging by making DEBUG() print out the cothread ID as well as
the process ID.  cothread_getcurrent returns the current cothread ID, or
-1 if cothreads aren't set up in this process context.

gst/cothreads.c
gst/cothreads.h
gst/gst.h

index b10dece44566d24c6b50e669a8ff85a2105b8075..2f9a73d6fc41502120c0536890486c45d16dbd3d 100644 (file)
@@ -155,7 +155,7 @@ cothread_init (void)
 cothread_state*
 cothread_main(cothread_context *ctx) 
 {
-  DEBUG(stderr,"returning %p, the 0th cothread\n",ctx->threads[0]);
+  DEBUG("returning %p, the 0th cothread\n",ctx->threads[0]);
   return ctx->threads[0];
 }
 
@@ -173,7 +173,18 @@ cothread_stub (void)
   thread->pc = 0;
   thread->sp = thread->top_sp;
   DEBUG("cothread: cothread_stub() exit\n");
-  //printf("uh, yeah, we shouldn't be here, but we should deal anyway\n");
+//  printf("uh, yeah, we shouldn't be here, but we should deal anyway\n");
+}
+
+/**
+ * cothread_getcurrent:
+ *
+ * Returns: the current cothread id
+ */
+int cothread_getcurrent(void) {
+  cothread_context *ctx = pthread_getspecific(_cothread_key);
+  if (!ctx) return -1;
+  return ctx->current;
 }
 
 /**
index 7e33cd3d30be77dbc09f2a5b049d6129e345254a..95fe6420c2fbeb78e7b79b067891516c88ae0bc4 100644 (file)
@@ -65,6 +65,7 @@ cothread_context*             cothread_init();
 cothread_state*                        cothread_create         (cothread_context *ctx);
 void                           cothread_setfunc        (cothread_state *thread, cothread_func func, 
                                                         int argc, char **argv);
+int                            cothread_getcurrent     (void);
 void                           cothread_switch         (cothread_state *thread);
 void                           cothread_set_data       (cothread_state *thread, gchar *key, gpointer data);
 gpointer                       cothread_get_data       (cothread_state *thread, gchar *key);
index 15db53e9c1ef53ed5b0b55b283a26c6271c396e1..88e3665048c8d8fc0f409dbe9fb2379a6565990b 100644 (file)
--- a/gst/gst.h
+++ b/gst/gst.h
@@ -48,6 +48,8 @@
 
 #include <gst/gsttee.h>
 
+#include <gst/cothreads.h>
+
 /* initialize GST */
 void gst_init(int *argc,char **argv[]);
 
@@ -57,7 +59,7 @@ void gst_main_quit    (void);
 /* debugging */
 #ifndef DEBUG
 #ifdef DEBUG_ENABLED
-#define DEBUG(format, args...) g_print("DEBUG:(%d) " format, getpid() , ##args)
+#define DEBUG(format, args...) g_print("DEBUG:(%d:%d) " format, getpid() , cothread_getcurrent() , ##args)
 #else
 #define DEBUG(format, args...)
 #endif