swr/rast: quit using linux-specific gettid()
authorTim Rowley <timothy.o.rowley@intel.com>
Fri, 21 Jul 2017 16:38:39 +0000 (11:38 -0500)
committerTim Rowley <timothy.o.rowley@intel.com>
Fri, 21 Jul 2017 20:37:56 +0000 (15:37 -0500)
Linux-specific gettid() syscall shouldn't be used in portable code.
Fix does assume a 1:1 thread:LWP architecture, but works for our
current target platforms and can be revisited later if needed.

Fixes unresolved symbol in linux scons builds.

v2: add comment in code about the 1:1 assumption.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
src/gallium/drivers/swr/rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp
src/gallium/drivers/swr/rasterizer/common/os.h

index 3a618a124de77a3105f0f3cd80e791e7ddb71d6b..9017e8dc7d8163865d43f6f2986bc51e874855cf 100644 (file)
@@ -67,8 +67,9 @@ namespace ArchRast
             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", "/tmp", GetCurrentThreadId(), id);
+            // 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);
 #endif
         }
index a16f5779d82d06f249b9893134b26c2fd2c71567..dc90fca7501c5db2440a8ea8b60454002f304a54 100644 (file)
@@ -237,8 +237,6 @@ void AlignedFree(void* p)
 #define sprintf_s sprintf
 #define strcpy_s(dst,size,src) strncpy(dst,src,size)
 #define GetCurrentProcessId getpid
-pid_t gettid(void);
-#define GetCurrentThreadId gettid
 
 #define InterlockedCompareExchange(Dest, Exchange, Comparand) __sync_val_compare_and_swap(Dest, Comparand, Exchange)
 #define InterlockedExchangeAdd(Addend, Value) __sync_fetch_and_add(Addend, Value)