Issue 3110: Additional protection for SEM_VALUE_MAX on platforms, thanks to Martin Loewis
diff --git a/Misc/NEWS b/Misc/NEWS
index b1e90bf..6bf6dcd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -202,6 +202,8 @@
 Library
 -------
 
+- Issue #3110: Add additional protect around SEM_VALUE_MAX for multiprocessing
+
 - In Pdb, prevent the reassignment of __builtin__._ by sys.displayhook on
   printing out values.
 
diff --git a/Modules/_multiprocessing/multiprocessing.h b/Modules/_multiprocessing/multiprocessing.h
index f6ab994..f8750d2 100644
--- a/Modules/_multiprocessing/multiprocessing.h
+++ b/Modules/_multiprocessing/multiprocessing.h
@@ -45,13 +45,18 @@
  * Issue 3110 - Solaris does not define SEM_VALUE_MAX
  */
 #ifndef SEM_VALUE_MAX
-#  ifdef _SEM_VALUE_MAX
-#    define SEM_VALUE_MAX _SEM_VALUE_MAX
-#  else
-#    define SEM_VALUE_MAX INT_MAX
-#  endif
+	#if defined(HAVE_SYSCONF) && defined(_SC_SEM_VALUE_MAX)
+		# define SEM_VALUE_MAX sysconf(_SC_SEM_VALUE_MAX)
+	#elif defined(_SEM_VALUE_MAX)
+		# define SEM_VALUE_MAX _SEM_VALUE_MAX
+	#elif definef(_POSIX_SEM_VALUE_MAX)
+		# define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX
+	#else
+		# define SEM_VALUE_MAX INT_MAX
+	#endif
 #endif
 
+
 /*
  * Make sure Py_ssize_t available
  */