On 02/08/14 00:26, Ian Romanick wrote:
On 08/01/2014 09:41 AM, Emil Velikov wrote:
... for win32 builds. Spotted this warning when I've imported the
library into waffle, and gave mingw-w64-gcc a bash at compiling it.

src/waffle/core/wcore_display.c:37:5: warning: missing braces around
initializer [-Wmissing-braces]
static mtx_t mutex = _MTX_INITIALIZER_NP;
^

Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com>
---
  include/c11/threads_win32.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/c11/threads_win32.h b/include/c11/threads_win32.h
index 5298a84..35880ba 100644
--- a/include/c11/threads_win32.h
+++ b/include/c11/threads_win32.h
@@ -85,7 +85,7 @@ Configuration macro:
  #define TSS_DTOR_ITERATIONS 1

  // FIXME: temporary non-standard hack to ease transition
-#define _MTX_INITIALIZER_NP {(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0}
+#define _MTX_INITIALIZER_NP {{(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0}}

This is because CRITICAL_SECTION is actually a typedef of a pointer to
some structure type, so it needs to be initialized like an array of
strcutres.  Yeah?

I searched a bit on the net, and I could not find a single example of
initializing a win32 CRITICAL_SECTION this way.  Is this a good idea?

It's unavoidable.

src/gallium/auxiliary/os/os_thread.h used to have a comment with a link to this:

  http://locklessinc.com/articles/pthreads_on_windows/

But it got lost with the c11/threads.h introduction.

It' probably worth adding this link once again.

The FIXME comment doesn't inspire confidence...

That comment is because static initializers are not part of the C standard. This works fine from a Win32 POV.

In other words, we should stop using static initializers, not because they cause problems on Windows, but because it's not part of the C11 standard, hence we'll be in trouble the day we want to use system provided C11 headers instead of our own.

include/c11/threads_posix.h has the same:

  // FIXME: temporary non-standard hack to ease transition
  #define _MTX_INITIALIZER_NP PTHREAD_MUTEX_INITIALIZER


Jose
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to