swr/rast: threadID via portable std::this_thread::get_id()
authorTim Rowley <timothy.o.rowley@intel.com>
Mon, 24 Jul 2017 21:12:52 +0000 (16:12 -0500)
committerTim Rowley <timothy.o.rowley@intel.com>
Wed, 2 Aug 2017 16:39:33 +0000 (11:39 -0500)
Replace use of Win32 GetCurrentThreadId() with portable
std::this_thread::get_id().

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
src/gallium/drivers/swr/rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp

index 9017e8dc7d8163865d43f6f2986bc51e874855cf..0ca9a7828dbcff9b43e96e11bb72f298f04d00b6 100644 (file)
@@ -36,6 +36,7 @@
 #include "${event_header}"
 #include <fstream>
 #include <sstream>
+#include <thread>
 
 namespace ArchRast
 {
@@ -56,21 +57,22 @@ namespace ArchRast
             std::stringstream outDir;
             outDir << KNOB_DEBUG_OUTPUT_DIR << pBaseName << "_" << pid << std::ends;
             CreateDirectory(outDir.str().c_str(), NULL);
-
-            char buf[255];
+            
             // There could be multiple threads creating thread pools. We
             // want to make sure they are uniquly identified by adding in
             // the creator's thread id into the filename.
-            sprintf(buf, "%s\\ar_event%d_%d.bin", outDir.str().c_str(), GetCurrentThreadId(), id);
-            mFilename = std::string(buf);
+            std::stringstream fstr;
+            fstr << outDir.str().c_str() << "\\ar_event" << std::this_thread::get_id();
+            fstr << "_" << id << ".bin" << std::ends;
+            mFilename = fstr.str();
 #else
-            char buf[255];
             // There could be multiple threads creating thread pools. We
             // want to make sure they are uniquly identified by adding in
-            // the creator's thread (process) id into the filename.
-            // Assumes a 1:1 thread:LWP mapping as in linux.
-            sprintf(buf, "%s/ar_event%d_%d.bin", "/tmp", GetCurrentProcessId(), id);
-            mFilename = std::string(buf);
+            // the creator's thread id into the filename.
+            std::stringstream fstr;
+            fstr << "/tmp/ar_event" << std::this_thread::get_id();
+            fstr << "_" << id << ".bin" << std::ends;
+            mFilename = fstr.str();
 #endif
         }