Changeset: a237bc19153a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a237bc19153a
Modified Files:
        gdk/gdk_tracer.c
        gdk/gdk_tracer.h
Branch: gdk-tracer
Log Message:

Introduced the concept of adapters


diffs (124 lines):

diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c
--- a/gdk/gdk_tracer.c
+++ b/gdk/gdk_tracer.c
@@ -38,6 +38,7 @@ static ATOMIC_TYPE SELECTED_tracer_ID = 
 static bool GDK_TRACER_STOP = false;
 
 static FILE *output_file;
+static ATOMIC_TYPE CUR_ADAPTER = DEFAULT_ADAPTER;
 
 /* CHECK */
 // Should it be ATOMIC_TYPE?
@@ -208,6 +209,37 @@ GDKtracer_reset_flush_level(void)
 
 
 gdk_return
+GDKtracer_set_adapter(ADAPTER adapter)
+{
+    if(ATOMIC_GET(&CUR_ADAPTER) == adapter)
+        return GDK_SUCCEED;
+
+    // Here when switching between adapters we can open/close the file
+    // But it is not so important to keep it open in case the adapter switches
+
+    // From BASIC to other => close the file
+    // From other to BASIC => open the file
+    
+    // TODO: Check adapter exists
+    ATOMIC_SET(&CUR_ADAPTER, adapter);
+
+    return GDK_SUCCEED;
+}
+
+
+gdk_return
+GDKtracer_reset_adapter(void)
+{
+    if(ATOMIC_GET(&CUR_ADAPTER) == DEFAULT_ADAPTER)
+        return GDK_SUCCEED;
+
+    ATOMIC_SET(&CUR_ADAPTER, DEFAULT_ADAPTER);
+
+    return GDK_SUCCEED;
+}
+
+
+gdk_return
 GDKtracer_log(LOG_LEVEL level, const char *fmt, ...)
 {   
     // Select a tracer
@@ -301,19 +333,22 @@ GDKtracer_flush_buffer(void)
     if(fl_tracer->allocated_size == 0)
         return GDK_SUCCEED;
 
-    // Check if file is open
-    _GDKtracer_file_is_open(output_file);
-    
-    MT_lock_set(&fl_tracer->lock);
+    if(ATOMIC_GET(&CUR_ADAPTER) == BASIC)
     {
-        fwrite(&fl_tracer->buffer, fl_tracer->allocated_size, 1, output_file);
-        fflush(output_file);
+        // Check if file is open
+        _GDKtracer_file_is_open(output_file);
         
-        // Reset buffer
-        memset(fl_tracer->buffer, 0, BUFFER_SIZE);
-        fl_tracer->allocated_size = 0;
+        MT_lock_set(&fl_tracer->lock);
+        {
+            fwrite(&fl_tracer->buffer, fl_tracer->allocated_size, 1, 
output_file);
+            fflush(output_file);
+            
+            // Reset buffer
+            memset(fl_tracer->buffer, 0, BUFFER_SIZE);
+            fl_tracer->allocated_size = 0;
+        }
+        MT_lock_unset(&fl_tracer->lock);
     }
-    MT_lock_unset(&fl_tracer->lock);
 
     if(GDK_TRACER_STOP)
     {
diff --git a/gdk/gdk_tracer.h b/gdk/gdk_tracer.h
--- a/gdk/gdk_tracer.h
+++ b/gdk/gdk_tracer.h
@@ -12,6 +12,7 @@
 #define INT_MAX_LEN ((__CHAR_BIT__ * sizeof(int) - 1) / 3  + 2)
 #define BUFFER_SIZE 64000
 
+#define DEFAULT_ADAPTER BASIC
 #define DEFAULT_COMPONENT_SEL M_ALL
 #define DEFAULT_LOG_LEVEL M_DEBUG
 #define DEFAULT_FLUSH_LEVEL M_DEBUG
@@ -148,6 +149,15 @@ typedef enum {
               } LOG_LEVEL;
 
 
+// GDKtracer adapters
+typedef enum {
+
+                BASIC,
+                PROFILER
+
+             } ADAPTER;
+
+
 extern LOG_LEVEL CUR_LOG_LEVEL;
 
 /**
@@ -234,6 +244,14 @@ gdk_return GDKtracer_set_flush_level(LOG
 gdk_return GDKtracer_reset_flush_level(void);
 
 
+// Sets the adapter used when flush buffer takes place
+gdk_return GDKtracer_set_adapter(ADAPTER adapter);
+
+
+// Resets the adapter to the default (BASIC) when flush buffer takes place 
+gdk_return GDKtracer_reset_adapter(void);
+
+
 // TODO -> Write comments
 // Candidate for 'gnu_printf' format attribute 
[-Werror=suggest-attribute=format] 
 gdk_return GDKtracer_log(LOG_LEVEL level, const char *fmt, ...) __attribute__ 
((format (printf, 2, 3)));
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to