Updated pthreads library for the Windows platform (pthreads4w).
This commit is contained in:
parent
c32c85d8c9
commit
a4aec9f3fe
139
etc/deps/pthreads4w/CONTRIBUTORS.txt
Normal file
139
etc/deps/pthreads4w/CONTRIBUTORS.txt
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
Contributors (in approximate order of appearance)
|
||||||
|
|
||||||
|
[See also the ChangeLog file where individuals are
|
||||||
|
attributed in log entries. Likewise in the FAQ file.]
|
||||||
|
|
||||||
|
Ben Elliston bje at cygnus dot com
|
||||||
|
Initiated the project;
|
||||||
|
setup the project infrastructure (CVS, web page, etc.);
|
||||||
|
early prototype routines.
|
||||||
|
Ross Johnson Ross dot Johnson at dot homemail dot com dot au
|
||||||
|
early prototype routines;
|
||||||
|
ongoing project coordination/maintenance;
|
||||||
|
implementation of spin locks and barriers;
|
||||||
|
various enhancements;
|
||||||
|
bug fixes;
|
||||||
|
documentation;
|
||||||
|
testsuite.
|
||||||
|
Robert Colquhoun rjc at trump dot net dot au
|
||||||
|
Early bug fixes.
|
||||||
|
John E. Bossom john dot bossom at gmail dot com
|
||||||
|
Contributed substantial original working implementation;
|
||||||
|
bug fixes;
|
||||||
|
Anders Norlander anorland at hem2 dot passagen dot se
|
||||||
|
Early enhancements and runtime checking for supported
|
||||||
|
Win32 routines.
|
||||||
|
Tor Lillqvist tml at iki dot fi
|
||||||
|
General enhancements;
|
||||||
|
early bug fixes to condition variables.
|
||||||
|
Scott Lightner scott at curriculum dot com
|
||||||
|
Bug fix.
|
||||||
|
Kevin Ruland Kevin dot Ruland at anheuser-busch dot com
|
||||||
|
Various bug fixes.
|
||||||
|
Mike Russo miker at eai dot com
|
||||||
|
Bug fix.
|
||||||
|
Mark E. Armstrong avail at pacbell dot net
|
||||||
|
Bug fixes.
|
||||||
|
Lorin Hochstein lmh at xiphos dot ca
|
||||||
|
general bug fixes; bug fixes to condition variables.
|
||||||
|
Peter Slacik Peter dot Slacik at tatramed dot sk
|
||||||
|
Bug fixes.
|
||||||
|
Mumit Khan khan at xraylith dot wisc dot edu
|
||||||
|
Fixes to work with Mingw32.
|
||||||
|
Milan Gardian mg at tatramed dot sk
|
||||||
|
Bug fixes and reports/analyses of obscure problems.
|
||||||
|
Aurelio Medina aureliom at crt dot com
|
||||||
|
First implementation of read-write locks.
|
||||||
|
Graham Dumpleton Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au
|
||||||
|
Bug fix in condition variables.
|
||||||
|
Tristan Savatier tristan at mpegtv dot com
|
||||||
|
WinCE port.
|
||||||
|
Erik Hensema erik at hensema dot xs4all dot nl
|
||||||
|
Bug fixes.
|
||||||
|
Rich Peters rpeters at micro-magic dot com
|
||||||
|
Todd Owen towen at lucidcalm dot dropbear dot id dot au
|
||||||
|
Bug fixes to dll loading.
|
||||||
|
Jason Nye jnye at nbnet dot nb dot ca
|
||||||
|
Implementation of async cancellation.
|
||||||
|
Fred Forester fforest at eticomm dot net
|
||||||
|
Kevin D. Clark kclark at cabletron dot com
|
||||||
|
David Baggett dmb at itasoftware dot com
|
||||||
|
Bug fixes.
|
||||||
|
Paul Redondo paul at matchvision dot com
|
||||||
|
Scott McCaskill scott at 3dfx dot com
|
||||||
|
Bug fixes.
|
||||||
|
Jef Gearhart jgearhart at tpssys dot com
|
||||||
|
Bug fix.
|
||||||
|
Arthur Kantor akantor at bexusa dot com
|
||||||
|
Mutex enhancements.
|
||||||
|
Steven Reddie smr at essemer dot com dot au
|
||||||
|
Bug fix.
|
||||||
|
Alexander Terekhov TEREKHOV at de dot ibm dot com
|
||||||
|
Re-implemented and improved read-write locks;
|
||||||
|
(with Louis Thomas) re-implemented and improved
|
||||||
|
condition variables;
|
||||||
|
enhancements to semaphores;
|
||||||
|
enhancements to mutexes;
|
||||||
|
new mutex implementation in 'futex' style;
|
||||||
|
suggested a robust implementation of pthread_once
|
||||||
|
using a named mutex;
|
||||||
|
system clock change handling re CV timeouts;
|
||||||
|
bug fixes.
|
||||||
|
Thomas Pfaff tpfaff at gmx dot net
|
||||||
|
Changes to make C version usable with C++ applications;
|
||||||
|
re-implemented mutex routines to avoid Win32 mutexes
|
||||||
|
and TryEnterCriticalSection;
|
||||||
|
procedure to fix Mingw32 thread-safety issues.
|
||||||
|
Franco Bez franco dot bez at gmx dot de
|
||||||
|
procedure to fix Mingw32 thread-safety issues.
|
||||||
|
Louis Thomas lthomas at arbitrade dot com
|
||||||
|
(with Alexander Terekhov) re-implemented and improved
|
||||||
|
condition variables.
|
||||||
|
David Korn dgk at research dot att dot com
|
||||||
|
Ported to UWIN.
|
||||||
|
Phil Frisbie, Jr. phil at hawksoft dot com
|
||||||
|
Bug fix.
|
||||||
|
Ralf Brese Ralf dot Brese at pdb4 dot siemens dot de
|
||||||
|
Bug fix.
|
||||||
|
prionx at juno dot com prionx at juno dot com
|
||||||
|
Bug fixes.
|
||||||
|
Max Woodbury mtew at cds dot duke dot edu
|
||||||
|
POSIX versioning conditionals;
|
||||||
|
reduced namespace pollution;
|
||||||
|
idea to separate routines to reduce statically
|
||||||
|
linked image sizes.
|
||||||
|
Rob Fanner rfanner at stonethree dot com
|
||||||
|
Bug fix.
|
||||||
|
Michael Johnson michaelj at maine dot rr dot com
|
||||||
|
Bug fix.
|
||||||
|
Nicolas Barry boozai at yahoo dot com
|
||||||
|
Bug fixes.
|
||||||
|
Piet van Bruggen pietvb at newbridges dot nl
|
||||||
|
Bug fix.
|
||||||
|
Makoto Kato raven at oldskool dot jp
|
||||||
|
AMD64 port.
|
||||||
|
Panagiotis E. Hadjidoukas peh at hpclab dot ceid dot upatras dot gr
|
||||||
|
phadjido at cs dot uoi dot gr
|
||||||
|
Contributed the QueueUserAPCEx package which
|
||||||
|
makes preemptive async cancellation possible.
|
||||||
|
Will Bryant will dot bryant at ecosm dot com
|
||||||
|
Borland compiler patch and makefile.
|
||||||
|
Anuj Goyal anuj dot goyal at gmail dot com
|
||||||
|
Port to Digital Mars compiler.
|
||||||
|
Gottlob Frege gottlobfrege at gmail dot com
|
||||||
|
re-implemented pthread_once (version 2)
|
||||||
|
(pthread_once cancellation added by rpj).
|
||||||
|
Vladimir Kliatchko vladimir at kliatchko dot com
|
||||||
|
reimplemented pthread_once with the same form
|
||||||
|
as described by A.Terekhov (later version 2);
|
||||||
|
implementation of MCS (Mellor-Crummey/Scott) locks.
|
||||||
|
Ramiro Polla ramiro.polla at gmail dot com
|
||||||
|
static library auto init/cleanup on application
|
||||||
|
start/exit via RT hooks (MSC and GCC compilers only).
|
||||||
|
Daniel Richard G. skunk at iSKUNK dot org
|
||||||
|
Patches and cleanups for x86 and x64, particularly
|
||||||
|
across a range of MS build environments.
|
||||||
|
John Kamp john dot kamp at globalgraphics dot com
|
||||||
|
Patches to fix various problems on x64; brutal testing
|
||||||
|
particularly using high memory run environments.
|
||||||
|
|
151
etc/deps/pthreads4w/COPYING.txt
Normal file
151
etc/deps/pthreads4w/COPYING.txt
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
Pthreads4w - a POSIX threads library for Microsoft Windows
|
||||||
|
|
||||||
|
|
||||||
|
This file is Copyrighted
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
This file is covered under the following Copyright:
|
||||||
|
|
||||||
|
Copyright (C) 2001-2017 Ross P. Johnson
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Pthreads4w is covered by the GNU Lesser General Public License
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Pthreads4w is open software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public License
|
||||||
|
as published by the Free Software Foundation version 3 of the
|
||||||
|
License.
|
||||||
|
|
||||||
|
Pthreads4w is several binary link libraries, several modules,
|
||||||
|
associated interface definition files and scripts used to control
|
||||||
|
its compilation and installation.
|
||||||
|
|
||||||
|
Pthreads4w is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
A copy of the GNU Lesser General Public License is distributed with
|
||||||
|
Pthreads4w under the filename:
|
||||||
|
|
||||||
|
COPYING.FSF
|
||||||
|
|
||||||
|
You should have received a copy of the version 3 GNU Lesser General
|
||||||
|
Public License with Pthreads4w; if not, write to:
|
||||||
|
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
59 Temple Place
|
||||||
|
Suite 330
|
||||||
|
Boston, MA 02111-1307
|
||||||
|
USA
|
||||||
|
|
||||||
|
The contact addresses for Pthreads4w is as follows:
|
||||||
|
|
||||||
|
Homepage: http://sourceforge.net/projects/pthreads4w/
|
||||||
|
Email: Ross Johnson
|
||||||
|
Please use: Firstname.Lastname@homemail.com.au
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Pthreads4w copyrights and exception files
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
With the exception of the files listed below, Pthreads4w
|
||||||
|
is covered under the following GNU Lesser General Public License
|
||||||
|
Copyrights:
|
||||||
|
|
||||||
|
Pthreads4w - POSIX Threads Library for Win32
|
||||||
|
Copyright(C) 1998 John E. Bossom
|
||||||
|
Copyright(C) 1999,2017 Pthreads4w contributors
|
||||||
|
|
||||||
|
The current list of contributors is contained
|
||||||
|
in the file CONTRIBUTORS included with the source
|
||||||
|
code distribution. The current list of CONTRIBUTORS
|
||||||
|
can also be seen at the following WWW location:
|
||||||
|
https://sourceforge.net/projects/pthreads4w//contributors.html
|
||||||
|
|
||||||
|
Contact Email: Ross Johnson
|
||||||
|
Please use: Firstname.Lastname@homemail.com.au
|
||||||
|
|
||||||
|
These files are not covered under one of the Copyrights listed above:
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
COPYING.FSF
|
||||||
|
tests/rwlock7.c
|
||||||
|
tests/rwlock8.c
|
||||||
|
tests/threestage.c
|
||||||
|
|
||||||
|
This file, COPYING, is distributed under the Copyright found at the
|
||||||
|
top of this file. It is important to note that you may distribute
|
||||||
|
verbatim copies of this file but you may not modify this file.
|
||||||
|
|
||||||
|
The file COPYING.FSF, which contains a copy of the version 3
|
||||||
|
GNU Lesser General Public License, is itself copyrighted by the
|
||||||
|
Free Software Foundation, Inc. Please note that the Free Software
|
||||||
|
Foundation, Inc. does NOT have a copyright over Pthreads4w,
|
||||||
|
only the COPYING.FSF that is supplied with Pthreads4w.
|
||||||
|
|
||||||
|
The file tests/rwlock7.c and tests/rwlock8.c are derived from code
|
||||||
|
written by Dave Butenhof for his book 'Programming With POSIX(R) Threads'.
|
||||||
|
The original code was obtained by free download from his website
|
||||||
|
http://home.earthlink.net/~anneart/family/Threads/source.html
|
||||||
|
and did not contain a copyright or author notice. It is assumed to
|
||||||
|
be freely distributable.
|
||||||
|
|
||||||
|
In all cases one may use and distribute these exception files freely.
|
||||||
|
And because one may freely distribute the LGPL covered files, the
|
||||||
|
entire Pthreads4w source may be freely used and distributed.
|
||||||
|
|
||||||
|
|
||||||
|
General Copyleft and License info
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
For general information on Copylefts, see:
|
||||||
|
|
||||||
|
http://www.gnu.org/copyleft/
|
||||||
|
|
||||||
|
For information on GNU Lesser General Public Licenses, see:
|
||||||
|
|
||||||
|
http://www.gnu.org/copyleft/lesser.html
|
||||||
|
http://www.gnu.org/copyleft/lesser.txt
|
||||||
|
|
||||||
|
|
||||||
|
Why Pthreads4w did not use the GNU Lesser General Public License
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
|
||||||
|
The goal of the Pthreads4w project has been to
|
||||||
|
provide a quality and complete implementation of the POSIX
|
||||||
|
threads API for Microsoft Windows within the limits imposed
|
||||||
|
by virtue of it being a stand-alone library and not
|
||||||
|
linked directly to other POSIX compliant libraries. For
|
||||||
|
example, some functions and features, such as those based
|
||||||
|
on POSIX signals, are missing.
|
||||||
|
|
||||||
|
Pthreads4w is a library, available in several different
|
||||||
|
versions depending on supported compilers, and may be used
|
||||||
|
as a dynamically linked module or a statically linked set of
|
||||||
|
binary modules. It is not an application on it's own.
|
||||||
|
|
||||||
|
It was fully intended that Pthreads4w be usable with
|
||||||
|
commercial software not covered by either the GPL or the LGPL
|
||||||
|
licenses. Pthreads4w has many contributors to it's
|
||||||
|
code base, many of whom have done so because they have
|
||||||
|
used the library in commercial or proprietry software
|
||||||
|
projects.
|
||||||
|
|
||||||
|
Releasing Pthreads4w under the LGPL ensures that the
|
||||||
|
library can be used widely, while at the same time ensures
|
||||||
|
that bug fixes and improvements to the Pthreads4w code
|
||||||
|
itself is returned to benefit all current and future users
|
||||||
|
of the library.
|
||||||
|
|
||||||
|
Although Pthreads4w makes it possible for applications
|
||||||
|
that use POSIX threads to be ported to Win32 platforms, the
|
||||||
|
broader goal of the project is to encourage the use of open
|
||||||
|
standards, and in particular, to make it just a little easier
|
||||||
|
for developers writing Win32 applications to consider
|
||||||
|
widening the potential market for their products.
|
578
etc/deps/pthreads4w/README.txt
Normal file
578
etc/deps/pthreads4w/README.txt
Normal file
@ -0,0 +1,578 @@
|
|||||||
|
Pthreads4w (A.K.A. PTHREADS4W)
|
||||||
|
==================================
|
||||||
|
|
||||||
|
Pthreads4w is free software, distributed under the GNU Lesser
|
||||||
|
General Public License (LGPL). See the file 'COPYING.LIB' for terms
|
||||||
|
and conditions. Also see the file 'COPYING' for information
|
||||||
|
specific to Pthreads4w, copyrights and the LGPL.
|
||||||
|
|
||||||
|
|
||||||
|
What is it?
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Pthreads4w (a.k.a. pthreads4w) is an Open Source Software
|
||||||
|
implementation of the Threads component of the POSIX 1003.1c 1995
|
||||||
|
Standard (or later) for Microsoft's Windows environment. Some functions
|
||||||
|
from POSIX 1003.1b are also supported, including semaphores. Other
|
||||||
|
related functions include the set of read-write lock functions. The
|
||||||
|
library also supports some of the functionality of the Open
|
||||||
|
Group's Single Unix specification, namely mutex types, plus some common
|
||||||
|
and Pthreads4w specific non-portable routines (see README.NONPORTABLE).
|
||||||
|
|
||||||
|
See the file "ANNOUNCE" for more information including standards
|
||||||
|
conformance details and the list of supported and unsupported
|
||||||
|
routines.
|
||||||
|
|
||||||
|
|
||||||
|
Prerequisites
|
||||||
|
-------------
|
||||||
|
MSVC or GNU C (MinGW or MinGW64 with AutoConf Tools)
|
||||||
|
To build from source.
|
||||||
|
|
||||||
|
QueueUserAPCEx by Panagiotis E. Hadjidoukas
|
||||||
|
To support any thread cancellation in C++ library builds or
|
||||||
|
to support cancellation of blocked threads in any build.
|
||||||
|
This library is not required otherwise.
|
||||||
|
|
||||||
|
For true async cancellation of threads (including blocked threads).
|
||||||
|
This is a DLL and Windows driver that provides pre-emptive APC
|
||||||
|
by forcing threads into an alertable state when the APC is queued.
|
||||||
|
Both the DLL and driver are provided with the Pthreads4w.exe
|
||||||
|
self-unpacking ZIP, and on the Pthreads4w FTP site (in source
|
||||||
|
and pre-built forms). Currently this is a separate LGPL package to
|
||||||
|
Pthreads4w. See the README in the QueueUserAPCEx folder for
|
||||||
|
installation instructions.
|
||||||
|
|
||||||
|
Pthreads4w will automatically detect if the QueueUserAPCEx DLL
|
||||||
|
QuserEx.DLL is available and whether the driver AlertDrv.sys is
|
||||||
|
loaded. If it is not available, Pthreads4w will simulate async
|
||||||
|
cancellation, which means that it can async cancel only threads that
|
||||||
|
are runnable. The simulated async cancellation cannot cancel blocked
|
||||||
|
threads.
|
||||||
|
|
||||||
|
[FOR SECURITY] To be found Quserex.dll MUST be installed in the
|
||||||
|
Windows System Folder. This is not an unreasonable constraint given a
|
||||||
|
driver must also be installed and loaded at system startup.
|
||||||
|
|
||||||
|
|
||||||
|
Library naming
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Because the library is being built using various exception
|
||||||
|
handling schemes and compilers - and because the library
|
||||||
|
may not work reliably if these are mixed in an application,
|
||||||
|
each different version of the library has it's own name.
|
||||||
|
|
||||||
|
Please do not distribute your own modified versions of the library
|
||||||
|
using names conforming to this description. You can use the
|
||||||
|
makefile variable "EXTRAVERSION" to append your own suffix to the
|
||||||
|
library names when building and testing your library.
|
||||||
|
|
||||||
|
Note 1: the incompatibility is really between EH implementations
|
||||||
|
of the different compilers. It should be possible to use the
|
||||||
|
standard C version from either compiler with C++ applications
|
||||||
|
built with a different compiler. If you use an EH version of
|
||||||
|
the library, then you must use the same compiler for the
|
||||||
|
application. This is another complication and dependency that
|
||||||
|
can be avoided by using only the standard C library version.
|
||||||
|
|
||||||
|
Note 2: if you use a standard C pthread*.dll with a C++
|
||||||
|
application, then any functions that you define that are
|
||||||
|
intended to be called via pthread_cleanup_push() must be
|
||||||
|
__cdecl.
|
||||||
|
|
||||||
|
Note 3: the intention was to also name either the VC or GC
|
||||||
|
version (it should be arbitrary) as pthread.dll, including
|
||||||
|
pthread.lib and libpthread.a as appropriate. This is no longer
|
||||||
|
likely to happen.
|
||||||
|
|
||||||
|
Note 4: the compatibility number (major version number) was
|
||||||
|
added so that applications can differentiate between binary
|
||||||
|
incompatible versions of the libs and dlls.
|
||||||
|
|
||||||
|
In general the naming format used is:
|
||||||
|
pthread[VG]{SE,CE,C}[c][E].dll
|
||||||
|
pthread[VG]{SE,CE,C}[c][E].lib
|
||||||
|
|
||||||
|
where:
|
||||||
|
[VG] indicates the compiler
|
||||||
|
V - MS VC, or
|
||||||
|
G - GNU C
|
||||||
|
|
||||||
|
{SE,CE,C} indicates the exception handling scheme
|
||||||
|
SE - Structured EH, or
|
||||||
|
CE - C++ EH, or
|
||||||
|
C - no exceptions - uses setjmp/longjmp
|
||||||
|
|
||||||
|
c - DLL major version number indicating ABI
|
||||||
|
compatibility with applications built against
|
||||||
|
a snapshot with the same major version number.
|
||||||
|
See 'Version numbering' below.
|
||||||
|
E - EXTRAVERSION suffix.
|
||||||
|
|
||||||
|
The name may also be suffixed by a 'd' to indicate a debugging version
|
||||||
|
of the library. E.g. pthreadVC2d.lib. These will be created e.g. when
|
||||||
|
the *-debug makefile targets are used.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
pthreadVC2.dll (MSVC/not dependent on exceptions - not binary
|
||||||
|
compatible with pthreadVC1.dll or pthreadVC.dll)
|
||||||
|
pthreadGC2-w32.dll (As built, e.g., by "make GC ARCH=-m32 EXTRAVERSION=-w32")
|
||||||
|
pthreadVC2-w64.dll (As built, e.g., by "nmake VC ARCH=-m64 EXTRAVERSION=-w64")
|
||||||
|
|
||||||
|
For information on ARCH (MinGW GNUmakefile) or TARGET_CPU (MSVS Makefile)
|
||||||
|
see the respective "Building with ..." sections below.
|
||||||
|
|
||||||
|
The GNU library archive file names have correspondingly changed, e.g.:
|
||||||
|
|
||||||
|
libpthreadGCE2.a
|
||||||
|
libpthreadGC2.a
|
||||||
|
libpthreadGC2-w64.a
|
||||||
|
|
||||||
|
|
||||||
|
Version numbering
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
See pthread.h and the resource file 'version.rc'.
|
||||||
|
|
||||||
|
Microsoft version numbers use 4 integers:
|
||||||
|
|
||||||
|
0.0.0.0
|
||||||
|
|
||||||
|
Pthreads4w uses the first 3 following the standard major.minor.micro
|
||||||
|
system. We had claimed to follow the Libtool convention but this has
|
||||||
|
not been the case with recent releases. Binary compatibility and
|
||||||
|
consequently library file naming has not changed over this time either
|
||||||
|
so it should not cause any problems.
|
||||||
|
|
||||||
|
NOTE: Changes to the platform ABI can cause the library ABI to change
|
||||||
|
and the current version numbering system does not account for this.
|
||||||
|
|
||||||
|
The fourth is commonly used for the build number, but will be reserved
|
||||||
|
for future use.
|
||||||
|
|
||||||
|
major.minor.micro.0
|
||||||
|
|
||||||
|
The numbers are changed as follows:
|
||||||
|
|
||||||
|
1. If the general binary interface (ABI) has changed at all since the
|
||||||
|
last update in a way that requires recompilation and relinking of
|
||||||
|
applications, then increment Major, and set both minor and micro to 0.
|
||||||
|
(`M:m:u' becomes `M+1:0:0')
|
||||||
|
2. If the general API has changed at all since the last update or
|
||||||
|
there have been semantic/behaviour changes (bug fixes etc) but does
|
||||||
|
not require recompilation of existing applications, then increment
|
||||||
|
minor and set micro to 0.
|
||||||
|
(`M:m:u' becomes `M:m+1:0')
|
||||||
|
3. If there have been no interface or semantic changes since the last
|
||||||
|
public release but a new release is deemed necessary for some reason,
|
||||||
|
then increment micro.
|
||||||
|
(`M:m:u' becomes `M:m:u+1')
|
||||||
|
|
||||||
|
|
||||||
|
DLL compatibility numbering is an attempt to ensure that applications
|
||||||
|
always load a compatible Pthreads4w DLL by using a DLL naming system
|
||||||
|
that is consistent with the version numbering system. It also allows
|
||||||
|
older and newer DLLs to coexist in the same filesystem so that older
|
||||||
|
applications can continue to be used. For pre .NET Windows systems,
|
||||||
|
this inevitably requires incompatible versions of the same DLLs to have
|
||||||
|
different names.
|
||||||
|
|
||||||
|
Pthreads4w has adopted the Cygwin convention of appending a single
|
||||||
|
integer number to the DLL name. The number used is simply the library's
|
||||||
|
major version number.
|
||||||
|
|
||||||
|
Consequently, DLL name/s will only change when the DLL's
|
||||||
|
backwards compatibility changes. Note that the addition of new
|
||||||
|
'interfaces' will not of itself change the DLL's compatibility for older
|
||||||
|
applications.
|
||||||
|
|
||||||
|
|
||||||
|
Which of the several dll versions to use?
|
||||||
|
-----------------------------------------
|
||||||
|
or,
|
||||||
|
---
|
||||||
|
What are all these pthread*.dll and pthread*.lib files?
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
|
Simple, use either pthreadGCc.* if you use GCC, or pthreadVCc.* if you
|
||||||
|
use MSVC - where 'c' is the DLL versioning (compatibility) number.
|
||||||
|
|
||||||
|
Otherwise, you need to choose carefully and know WHY.
|
||||||
|
|
||||||
|
The most important choice you need to make is whether to use a
|
||||||
|
version that uses exceptions internally, or not. There are versions
|
||||||
|
of the library that use exceptions as part of the thread
|
||||||
|
cancellation and exit implementation. The default version uses
|
||||||
|
setjmp/longjmp.
|
||||||
|
|
||||||
|
If you use either pthreadVCE[2] or pthreadGCE[2]:
|
||||||
|
|
||||||
|
1. [See also the discussion in the FAQ file - Q2, Q4, and Q5]
|
||||||
|
|
||||||
|
If your application contains catch(...) blocks in your POSIX
|
||||||
|
threads then you will need to replace the "catch(...)" with the macro
|
||||||
|
"PtW32Catch", eg.
|
||||||
|
|
||||||
|
#ifdef PtW32Catch
|
||||||
|
PtW32Catch {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
catch(...) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Otherwise neither pthreads cancellation nor pthread_exit() will work
|
||||||
|
reliably when using versions of the library that use C++ exceptions
|
||||||
|
for cancellation and thread exit.
|
||||||
|
|
||||||
|
NB: [lib]pthreadGCE[2] does not support asynchronous cancellation. Any
|
||||||
|
attempt to cancel a thread set for asynchronous cancellation using
|
||||||
|
this version of the library will cause the applicaton to terminate.
|
||||||
|
We believe this is due to the "unmanaged" context switch that is
|
||||||
|
disrupting the stack unwinding mechanism and which is used
|
||||||
|
to cancel blocked threads. See pthread_cancel.c
|
||||||
|
|
||||||
|
|
||||||
|
Other name changes
|
||||||
|
------------------
|
||||||
|
|
||||||
|
All snapshots prior to and including snapshot 2000-08-13
|
||||||
|
used "_pthread_" as the prefix to library internal
|
||||||
|
functions, and "_PTHREAD_" to many library internal
|
||||||
|
macros. These have now been changed to "ptw32_" and "PTW32_"
|
||||||
|
respectively so as to not conflict with the ANSI standard's
|
||||||
|
reservation of identifiers beginning with "_" and "__" for
|
||||||
|
use by compiler implementations only.
|
||||||
|
|
||||||
|
If you have written any applications and you are linking
|
||||||
|
statically with the Pthreads4w library then you may have
|
||||||
|
included a call to _pthread_processInitialize. You will
|
||||||
|
now have to change that to ptw32_processInitialize.
|
||||||
|
|
||||||
|
|
||||||
|
Cleanup code default style
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Previously, if not defined, the cleanup style was determined automatically
|
||||||
|
from the compiler used, and one of the following was defined accordingly:
|
||||||
|
|
||||||
|
__CLEANUP_SEH MSVC only
|
||||||
|
__CLEANUP_CXX C++, including MSVC++, GNU G++
|
||||||
|
__CLEANUP_C C, including GNU GCC, not MSVC
|
||||||
|
|
||||||
|
These defines determine the style of cleanup (see pthread.h) and,
|
||||||
|
most importantly, the way that cancellation and thread exit (via
|
||||||
|
pthread_exit) is performed (see the routine ptw32_throw()).
|
||||||
|
|
||||||
|
In short, the exceptions versions of the library throw an exception
|
||||||
|
when a thread is canceled, or exits via pthread_exit(). This exception is
|
||||||
|
caught by a handler in the thread startup routine, so that the
|
||||||
|
the correct stack unwinding occurs regardless of where the thread
|
||||||
|
is when it's canceled or exits via pthread_exit().
|
||||||
|
|
||||||
|
In this snapshot, unless the build explicitly defines (e.g. via a
|
||||||
|
compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then
|
||||||
|
the build NOW always defaults to __CLEANUP_C style cleanup. This style
|
||||||
|
uses setjmp/longjmp in the cancellation and pthread_exit implementations,
|
||||||
|
and therefore won't do stack unwinding even when linked to applications
|
||||||
|
that have it (e.g. C++ apps). This is for consistency with most/all
|
||||||
|
commercial Unix POSIX threads implementations.
|
||||||
|
|
||||||
|
Although it was not clearly documented before, it is still necessary to
|
||||||
|
build your application using the same __CLEANUP_* define as was
|
||||||
|
used for the version of the library that you link with, so that the
|
||||||
|
correct parts of pthread.h are included. That is, the possible
|
||||||
|
defines require the following library versions:
|
||||||
|
|
||||||
|
__CLEANUP_SEH pthreadVSE.dll
|
||||||
|
__CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll
|
||||||
|
__CLEANUP_C pthreadVC.dll or pthreadGC.dll
|
||||||
|
|
||||||
|
It is recommended that you let pthread.h use it's default __CLEANUP_C
|
||||||
|
for both library and application builds. That is, don't define any of
|
||||||
|
the above, and then link with pthreadVC.lib (MSVC or MSVC++) and
|
||||||
|
libpthreadGC.a (MinGW GCC or G++). The reason is explained below, but
|
||||||
|
another reason is that the prebuilt pthreadVCE.dll is currently broken.
|
||||||
|
Versions built with MSVC++ later than version 6 may not be broken, but I
|
||||||
|
can't verify this yet.
|
||||||
|
|
||||||
|
WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY?
|
||||||
|
Because no commercial Unix POSIX threads implementation allows you to
|
||||||
|
choose to have stack unwinding. Therefore, providing it in pthread-win32
|
||||||
|
as a default is dangerous. We still provide the choice but unless
|
||||||
|
you consciously choose to do otherwise, your pthreads applications will
|
||||||
|
now run or crash in similar ways irrespective of the pthreads platform
|
||||||
|
you use. Or at least this is the hope.
|
||||||
|
|
||||||
|
|
||||||
|
Development Build Toolchains and Configurations
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
As of Release 2.10 all build configurations pass the full test suite
|
||||||
|
for the following toolchains and configurations:
|
||||||
|
|
||||||
|
All DLL and static library build targets enabled in the makefiles:
|
||||||
|
VC, VCE, VSE (DLL, inlined statics only)
|
||||||
|
GC, GCE (DLL, inlined and small statics)
|
||||||
|
|
||||||
|
MSVS:
|
||||||
|
Intel Core i7 (6 Core HT)
|
||||||
|
Windows 7 64 bit
|
||||||
|
MSVS 2010 Express with SDK 7.1 (using the SDK command shell TARGET_CPU = x64 or x86)
|
||||||
|
MSVS 2013 Express Cross Tools for x64 Command Prompt
|
||||||
|
MSVS 2013 Express Native Tools for x32 Command Prompt
|
||||||
|
|
||||||
|
GNU:
|
||||||
|
Intel Core i7 (6 Core HT)
|
||||||
|
Windows 7 64 bit
|
||||||
|
MinGW64 multilib enabled (ARCH = -m64 or -m32)
|
||||||
|
MinGW64 multilib disabled
|
||||||
|
|
||||||
|
|
||||||
|
Building with MS Visual Studio (C, VC++ using C++ EH, or Structured EH)
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
NOTE: A VS project/solution/whatever file is included as a contributed
|
||||||
|
work and is not used of maintained in development. All building and
|
||||||
|
testing is done using makefiles. We use the native make system for each
|
||||||
|
toolchain, which is 'nmake' in this case.
|
||||||
|
|
||||||
|
From the source directory run nmake without any arguments to list
|
||||||
|
help information. E.g.
|
||||||
|
|
||||||
|
$ nmake
|
||||||
|
|
||||||
|
As examples, as at Release 2.10 the pre-built DLLs and static libraries
|
||||||
|
can be built using one of the following command-lines:
|
||||||
|
|
||||||
|
[Note: "setenv" comes with the SDK which is not required to build the library.
|
||||||
|
I use it to build and test both 64 and 32 bit versions of the library.
|
||||||
|
"/2003" is used to override my build system which is Win7 (at the time of
|
||||||
|
writing) for backwards compatibility.]
|
||||||
|
|
||||||
|
$ setenv /x64 /2003 /Release
|
||||||
|
$ nmake realclean VC
|
||||||
|
$ nmake realclean VCE
|
||||||
|
$ nmake realclean VSE
|
||||||
|
$ nmake realclean VC-static
|
||||||
|
$ nmake realclean VCE-static
|
||||||
|
$ nmake realclean VSE-static
|
||||||
|
$ setenv /x86 /2003 /Release
|
||||||
|
$ nmake realclean VC
|
||||||
|
$ nmake realclean VCE
|
||||||
|
$ nmake realclean VSE
|
||||||
|
$ nmake realclean VC-static
|
||||||
|
$ nmake realclean VCE-static
|
||||||
|
$ nmake realclean VSE-static
|
||||||
|
|
||||||
|
If you want to differentiate or customise library naming you can use,
|
||||||
|
e.g.:
|
||||||
|
|
||||||
|
$ nmake realclean VC EXTRAVERSION="-w64"
|
||||||
|
|
||||||
|
The string provided via the variable EXTRAVERSION is appended to the dll
|
||||||
|
and .lib library names, e.g.:
|
||||||
|
|
||||||
|
pthreadVC2-w64.dll
|
||||||
|
pthreadVC2-w64.lib
|
||||||
|
|
||||||
|
To build and test all DLLs and static lib compatibility versions
|
||||||
|
(VC, VCE, VSE):
|
||||||
|
|
||||||
|
$ setenv /x64 /2003 /release
|
||||||
|
$ nmake all-tests
|
||||||
|
|
||||||
|
You can run the testsuite by changing to the "tests" directory and
|
||||||
|
running nmake. E.g.:
|
||||||
|
|
||||||
|
$ cd tests
|
||||||
|
$ nmake VC
|
||||||
|
|
||||||
|
Note: the EXTRAVERSION="..." option is passed to the tests Makefile
|
||||||
|
when you target "all-tests". If you build the library then change to the
|
||||||
|
tests directory to run the tests you will need to repeat the option
|
||||||
|
explicitly to the test "nmake" command-line.
|
||||||
|
|
||||||
|
For failure analysis etc. individual tests can be built
|
||||||
|
and run, e.g:
|
||||||
|
|
||||||
|
$ cd tests
|
||||||
|
$ nmake VC TESTS="foo bar"
|
||||||
|
|
||||||
|
This builds and runs all prerequisite tests as well as the individual
|
||||||
|
tests listed. Prerequisite tests are defined in tests\runorder.mk.
|
||||||
|
|
||||||
|
To build and run only the tests listed use:
|
||||||
|
|
||||||
|
$ cd tests
|
||||||
|
$ nmake VC NO_DEPS=1 TESTS="foo bar"
|
||||||
|
|
||||||
|
|
||||||
|
Building with MinGW
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
NOTE: All building and testing is done using makefiles. We use the native
|
||||||
|
make system for each toolchain, which is 'make' in this case.
|
||||||
|
|
||||||
|
We have found that Mingw builds of the GCE library variants can fail when
|
||||||
|
run on 64 bit systems, believed to be due to the DWARF2 exception handling
|
||||||
|
being a 32 bit mechanism. The GC variants are fine. MinGW64 offers
|
||||||
|
SJLJ or SEH exception handling so choose one of those.
|
||||||
|
|
||||||
|
From the source directory:
|
||||||
|
|
||||||
|
run 'autoheader' to rewrite the config.h file
|
||||||
|
run 'autoconf' to rewrite the GNUmakefiles (library and tests)
|
||||||
|
run './configure' to create config.h and GNUmakefile.
|
||||||
|
run 'make' without arguments to list possible targets.
|
||||||
|
|
||||||
|
E.g.
|
||||||
|
|
||||||
|
$ autoheader
|
||||||
|
$ autoconf
|
||||||
|
$ ./configure
|
||||||
|
$ make realclean all-tests
|
||||||
|
|
||||||
|
With MinGW64 multilib installed the following variables can be defined
|
||||||
|
either on the make command line or in the shell environment:
|
||||||
|
|
||||||
|
ARCH
|
||||||
|
- possible values are "-m64" and "-m32". You will probably recognise
|
||||||
|
these as gcc flags however the GNUmakefile also converts these into
|
||||||
|
the appropriate windres options when building version.o.
|
||||||
|
|
||||||
|
As examples, as at Release 2.10 the pre-built DLLs and static libraries
|
||||||
|
are built from the following command-lines:
|
||||||
|
|
||||||
|
$ nmake realclean GC ARCH=-m64
|
||||||
|
$ nmake realclean GC ARCH=-m32
|
||||||
|
$ nmake realclean GCE ARCH=-m64
|
||||||
|
$ nmake realclean GCE ARCH=-m32
|
||||||
|
$ nmake realclean GC-static ARCH=-m64
|
||||||
|
$ nmake realclean GC-static ARCH=-m32
|
||||||
|
$ nmake realclean GCE-static ARCH=-m64
|
||||||
|
$ nmake realclean GCE-static ARCH=-m32
|
||||||
|
|
||||||
|
If you want to differentiate between libraries by their names you can use,
|
||||||
|
e.g.:
|
||||||
|
|
||||||
|
$ make realclean GC ARCH="-m64" EXTRAVERSION="-w64"
|
||||||
|
|
||||||
|
The string provided via the variable EXTRAVERSION is appended to the dll
|
||||||
|
and .a library names, e.g.:
|
||||||
|
|
||||||
|
pthreadGC2-w64.dll
|
||||||
|
libpthreadGC2-w64.a
|
||||||
|
|
||||||
|
To build and test all DLLs and static lib compatibility variants (GC, GCE):
|
||||||
|
|
||||||
|
$ make all-tests
|
||||||
|
or, with MinGW64 (multilib enabled):
|
||||||
|
$ make all-tests ARCH=-m64
|
||||||
|
$ make all-tests ARCH=-m32
|
||||||
|
|
||||||
|
You can run the testsuite by changing to the "tests" directory and
|
||||||
|
running make. E.g.:
|
||||||
|
|
||||||
|
$ cd tests
|
||||||
|
$ make GC
|
||||||
|
|
||||||
|
Note that the ARCH="..." and/or EXTRAVERSION="..." options are passed to the
|
||||||
|
tests GNUmakefile when you target "all-tests". If you change to the tests
|
||||||
|
directory and run the tests you will need to repeat those options explicitly
|
||||||
|
to the test "make" command-line.
|
||||||
|
|
||||||
|
For failure analysis etc. individual tests can be built and run, e.g:
|
||||||
|
|
||||||
|
$ cd tests
|
||||||
|
$ make GC TESTS="foo bar"
|
||||||
|
|
||||||
|
This builds and runs all prerequisite tests as well as the individual
|
||||||
|
tests listed. Prerequisite tests are defined in tests\runorder.mk.
|
||||||
|
|
||||||
|
To build and run only those tests listed use:
|
||||||
|
|
||||||
|
$ cd tests
|
||||||
|
$ make GC NO_DEPS=1 TESTS="foo bar"
|
||||||
|
|
||||||
|
|
||||||
|
Building under Linux using the MinGW cross development tools
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
You can build the library on Linux by using the MinGW cross development
|
||||||
|
toolchain. See http://www.libsdl.org/extras/win32/cross/ for tools and
|
||||||
|
info. The GNUmakefile contains some support for this, for example:
|
||||||
|
|
||||||
|
make CROSS=i386-mingw32msvc- clean GC
|
||||||
|
|
||||||
|
will build pthreadGCn.dll and libpthreadGCn.a (n=version#), provided your
|
||||||
|
cross-tools/bin directory is in your PATH (or use the cross-make.sh script
|
||||||
|
at the URL above).
|
||||||
|
|
||||||
|
|
||||||
|
Building the library as a statically linkable library
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
General: PTW32_STATIC_LIB must be defined for both the library build and the
|
||||||
|
application build. The makefiles supplied and used by the following 'make'
|
||||||
|
command lines will define this for you.
|
||||||
|
|
||||||
|
MSVC (creates pthreadVCn.lib as a static link lib):
|
||||||
|
|
||||||
|
nmake clean VC-static
|
||||||
|
|
||||||
|
|
||||||
|
MinGW32 (creates libpthreadGCn.a as a static link lib):
|
||||||
|
|
||||||
|
make clean GC-static
|
||||||
|
|
||||||
|
Define PTW32_STATIC_LIB also when building your application.
|
||||||
|
|
||||||
|
Building the library under Cygwin
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Cygwin implements it's own POSIX threads routines and these
|
||||||
|
will be the ones to use if you develop using Cygwin.
|
||||||
|
|
||||||
|
Building applications
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The files you will need for your application build are:
|
||||||
|
|
||||||
|
The four header files:
|
||||||
|
_ptw32.h
|
||||||
|
pthread.h
|
||||||
|
semaphore.h
|
||||||
|
sched.h
|
||||||
|
|
||||||
|
The DLL library files that you built:
|
||||||
|
pthread*.dll
|
||||||
|
plus the matching *.lib (MSVS) or *.a file (GNU)
|
||||||
|
|
||||||
|
or, the static link library that you built:
|
||||||
|
pthread*.lib (MSVS) or libpthread*.a (GNU)
|
||||||
|
|
||||||
|
Place them in the appropriate directories for your build, which may be the
|
||||||
|
standard compiler locations or, locations specific to your project (you
|
||||||
|
might have a separate third-party dependency tree for example).
|
||||||
|
|
||||||
|
Acknowledgements
|
||||||
|
----------------
|
||||||
|
|
||||||
|
See the ANNOUNCE file for acknowledgements.
|
||||||
|
See the 'CONTRIBUTORS' file for the list of contributors.
|
||||||
|
|
||||||
|
As much as possible, the ChangeLog file attributes
|
||||||
|
contributions and patches that have been incorporated
|
||||||
|
in the library to the individuals responsible.
|
||||||
|
|
||||||
|
Finally, thanks to all those who work on and contribute to the
|
||||||
|
POSIX and Single Unix Specification standards. The maturity of an
|
||||||
|
industry can be measured by it's open standards.
|
||||||
|
|
||||||
|
----
|
||||||
|
Ross Johnson
|
||||||
|
<ross.johnson@loungebythelake.net>
|
218
etc/deps/pthreads4w/include/_ptw32.h
Normal file
218
etc/deps/pthreads4w/include/_ptw32.h
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
/*
|
||||||
|
* Module: _ptw32.h
|
||||||
|
*
|
||||||
|
* Purpose:
|
||||||
|
* Pthreads4w internal macros, to be shared by other headers
|
||||||
|
* comprising the Pthreads4w package.
|
||||||
|
*
|
||||||
|
* --------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Pthreads4w - POSIX Threads Library for Win32
|
||||||
|
* Copyright(C) 1998 John E. Bossom
|
||||||
|
* Copyright(C) 1999-2018, Pthreads4w contributors
|
||||||
|
*
|
||||||
|
* Homepage: https://sourceforge.net/projects/pthreads4w/
|
||||||
|
*
|
||||||
|
* The current list of contributors is contained
|
||||||
|
* in the file CONTRIBUTORS included with the source
|
||||||
|
* code distribution. The list can also be seen at the
|
||||||
|
* following World Wide Web location:
|
||||||
|
* https://sourceforge.net/p/pthreads4w/wiki/Contributors/
|
||||||
|
*
|
||||||
|
* This file is part of Pthreads4w.
|
||||||
|
*
|
||||||
|
* Pthreads4w is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Pthreads4w is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Pthreads4w. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*/
|
||||||
|
#ifndef __PTW32_H
|
||||||
|
#define __PTW32_H
|
||||||
|
|
||||||
|
/* See the README file for an explanation of the Pthreads4w
|
||||||
|
* version numbering scheme and how the DLL is named etc.
|
||||||
|
*
|
||||||
|
* FIXME: consider moving this to <_ptw32.h>; maybe also add a
|
||||||
|
* leading underscore to the macro names.
|
||||||
|
*/
|
||||||
|
#define PTW32_VERSION_MAJOR 2
|
||||||
|
#define PTW32_VERSION_MINOR 11
|
||||||
|
#define PTW32_VERSION_MICRO 0
|
||||||
|
#define PTW32_VERION_BUILD 0
|
||||||
|
#define PTW32_VERSION 2,11,0,0
|
||||||
|
#define PTW32_VERSION_STRING "2, 11, 0, 0\0"
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(__INTEL_LLVM_COMPILER)
|
||||||
|
# pragma GCC system_header
|
||||||
|
# if ! defined __declspec
|
||||||
|
# error "Please upgrade your GNU compiler to one that supports __declspec."
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__cplusplus)
|
||||||
|
# define __PTW32_BEGIN_C_DECLS extern "C" {
|
||||||
|
# define __PTW32_END_C_DECLS }
|
||||||
|
#else
|
||||||
|
# define __PTW32_BEGIN_C_DECLS
|
||||||
|
# define __PTW32_END_C_DECLS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined PTW32_STATIC_LIB
|
||||||
|
# define PTW32_DLLPORT
|
||||||
|
|
||||||
|
#elif defined PTW32_BUILD
|
||||||
|
# define PTW32_DLLPORT __declspec (dllexport)
|
||||||
|
#else
|
||||||
|
# define PTW32_DLLPORT /*__declspec (dllimport)*/
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PTW32_CDECL
|
||||||
|
/* FIXME: another internal macro; should have two initial underscores;
|
||||||
|
* Nominally, we prefer to use __cdecl calling convention for all our
|
||||||
|
* functions, but we map it through this macro alias to facilitate the
|
||||||
|
* possible choice of alternatives; for example:
|
||||||
|
*/
|
||||||
|
# ifdef _OPEN_WATCOM_SOURCE
|
||||||
|
/* The Open Watcom C/C++ compiler uses a non-standard default calling
|
||||||
|
* convention, (similar to __fastcall), which passes function arguments
|
||||||
|
* in registers, unless the __cdecl convention is explicitly specified
|
||||||
|
* in exposed function prototypes.
|
||||||
|
*
|
||||||
|
* Our preference is to specify the __cdecl convention for all calls,
|
||||||
|
* even though this could slow Watcom code down slightly. If you know
|
||||||
|
* that the Watcom compiler will be used to build both the DLL and your
|
||||||
|
* application, then you may #define _OPEN_WATCOM_SOURCE, so disabling
|
||||||
|
* the forced specification of __cdecl for all function declarations;
|
||||||
|
* remember that this must be defined consistently, for both the DLL
|
||||||
|
* build, and the application build.
|
||||||
|
*/
|
||||||
|
# define PTW32_CDECL
|
||||||
|
# else
|
||||||
|
# define PTW32_CDECL __cdecl
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is more or less a duplicate of what is in the autoconf config.h,
|
||||||
|
* which is only used when building the pthread-win32 libraries. They
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(PTW32_CONFIG_H) && !defined(__PTW32_PSEUDO_CONFIG_H_SOURCED)
|
||||||
|
# define __PTW32_PSEUDO_CONFIG_H_SOURCED
|
||||||
|
# if defined(WINCE)
|
||||||
|
# undef HAVE_CPU_AFFINITY
|
||||||
|
# define NEED_DUPLICATEHANDLE
|
||||||
|
# define NEED_CREATETHREAD
|
||||||
|
# define NEED_ERRNO
|
||||||
|
# define NEED_CALLOC
|
||||||
|
# define NEED_UNICODE_CONSTS
|
||||||
|
# define NEED_PROCESS_AFFINITY_MASK
|
||||||
|
/* This may not be needed */
|
||||||
|
# define RETAIN_WSALASTERROR
|
||||||
|
# elif defined(_MSC_VER)
|
||||||
|
# if _MSC_VER >= 1900
|
||||||
|
# define HAVE_STRUCT_TIMESPEC
|
||||||
|
# elif _MSC_VER < 1300
|
||||||
|
# define PTW32_CONFIG_MSVC6
|
||||||
|
# elif _MSC_VER < 1400
|
||||||
|
# define PTW32_CONFIG_MSVC7
|
||||||
|
# endif
|
||||||
|
# elif defined(_UWIN)
|
||||||
|
# define HAVE_MODE_T
|
||||||
|
# define HAVE_STRUCT_TIMESPEC
|
||||||
|
# define HAVE_SIGNAL_H
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If HAVE_ERRNO_H is defined then assume that autoconf has been used
|
||||||
|
* to overwrite config.h, otherwise the original config.h is in use
|
||||||
|
* at build-time or the above block of defines is in use otherwise
|
||||||
|
* and NEED_ERRNO is either defined or not defined.
|
||||||
|
*/
|
||||||
|
#if defined(HAVE_ERRNO_H) || !defined(NEED_ERRNO)
|
||||||
|
# include <errno.h>
|
||||||
|
#else
|
||||||
|
# include "need_errno.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__BORLANDC__)
|
||||||
|
# define int64_t LONGLONG
|
||||||
|
# define uint64_t ULONGLONG
|
||||||
|
#elif !defined(__MINGW32__)
|
||||||
|
typedef _int64 int64_t;
|
||||||
|
typedef unsigned _int64 uint64_t;
|
||||||
|
# if defined(PTW32_CONFIG_MSVC6)
|
||||||
|
typedef long intptr_t;
|
||||||
|
# endif
|
||||||
|
#elif defined(HAVE_STDINT_H) && HAVE_STDINT_H == 1
|
||||||
|
# include <stdint.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In case ETIMEDOUT hasn't been defined above somehow.
|
||||||
|
*/
|
||||||
|
#if !defined(ETIMEDOUT)
|
||||||
|
/*
|
||||||
|
* note: ETIMEDOUT is no longer defined in winsock.h
|
||||||
|
* WSAETIMEDOUT is so use its value.
|
||||||
|
*/
|
||||||
|
# include <winsock.h>
|
||||||
|
# if defined(WSAETIMEDOUT)
|
||||||
|
# define ETIMEDOUT WSAETIMEDOUT
|
||||||
|
# else
|
||||||
|
# define ETIMEDOUT 10060 /* This is the value of WSAETIMEDOUT in winsock.h. */
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Several systems may not define some error numbers;
|
||||||
|
* defining those which are likely to be missing here will let
|
||||||
|
* us complete the library builds.
|
||||||
|
*/
|
||||||
|
#if !defined(ENOTSUP)
|
||||||
|
# define ENOTSUP 48 /* This is the value in Solaris. */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(ENOSYS)
|
||||||
|
# define ENOSYS 140 /* Semi-arbitrary value */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(EDEADLK)
|
||||||
|
# if defined(EDEADLOCK)
|
||||||
|
# define EDEADLK EDEADLOCK
|
||||||
|
# else
|
||||||
|
# define EDEADLK 36 /* This is the value in MSVC. */
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* POSIX 2008 - related to robust mutexes */
|
||||||
|
/*
|
||||||
|
* FIXME: These should be changed for version 3.0.0 onward.
|
||||||
|
* 42 clashes with EILSEQ.
|
||||||
|
*/
|
||||||
|
#if PTW32_VERSION_MAJOR > 2
|
||||||
|
# if !defined(EOWNERDEAD)
|
||||||
|
# define EOWNERDEAD 1000
|
||||||
|
# endif
|
||||||
|
# if !defined(ENOTRECOVERABLE)
|
||||||
|
# define ENOTRECOVERABLE 1001
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# if !defined(EOWNERDEAD)
|
||||||
|
# define EOWNERDEAD 42
|
||||||
|
# endif
|
||||||
|
# if !defined(ENOTRECOVERABLE)
|
||||||
|
# define ENOTRECOVERABLE 43
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !__PTW32_H */
|
@ -1,45 +1,38 @@
|
|||||||
/* This is an implementation of the threads API of POSIX 1003.1-2001.
|
/* This is an implementation of the threads API of the Single Unix Specification.
|
||||||
*
|
*
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* Pthreads-win32 - POSIX Threads Library for Win32
|
* Pthreads4w - POSIX Threads Library for Win32
|
||||||
* Copyright(C) 1998 John E. Bossom
|
* Copyright(C) 1998 John E. Bossom
|
||||||
* Copyright(C) 1999,2005 Pthreads-win32 contributors
|
* Copyright(C) 1999-2018, Pthreads4w contributors
|
||||||
*
|
*
|
||||||
* Contact Email: rpj@callisto.canberra.edu.au
|
* Homepage: https://sourceforge.net/projects/pthreads4w/
|
||||||
*
|
*
|
||||||
* The current list of contributors is contained
|
* The current list of contributors is contained
|
||||||
* in the file CONTRIBUTORS included with the source
|
* in the file CONTRIBUTORS included with the source
|
||||||
* code distribution. The list can also be seen at the
|
* code distribution. The list can also be seen at the
|
||||||
* following World Wide Web location:
|
* following World Wide Web location:
|
||||||
* http://sources.redhat.com/pthreads-win32/contributors.html
|
* https://sourceforge.net/p/pthreads4w/wiki/Contributors/
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This file is part of Pthreads4w.
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
*
|
||||||
* This library is distributed in the hope that it will be useful,
|
* Pthreads4w is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Pthreads4w is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* Lesser General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library in the file COPYING.LIB;
|
* along with Pthreads4w. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
* if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if !defined( PTHREAD_H )
|
#if !defined( PTHREAD_H )
|
||||||
#define PTHREAD_H
|
#define PTHREAD_H
|
||||||
|
|
||||||
/*
|
|
||||||
* See the README file for an explanation of the pthreads-win32 version
|
|
||||||
* numbering scheme and how the DLL is named etc.
|
|
||||||
*/
|
|
||||||
#define PTW32_VERSION 2,9,1,0
|
|
||||||
#define PTW32_VERSION_STRING "2, 9, 1, 0\0"
|
|
||||||
|
|
||||||
/* There are three implementations of cancel cleanup.
|
/* There are three implementations of cancel cleanup.
|
||||||
* Note that pthread.h is included in both application
|
* Note that pthread.h is included in both application
|
||||||
* compilation units and also internally for the library.
|
* compilation units and also internally for the library.
|
||||||
@ -65,7 +58,7 @@
|
|||||||
* Define defaults for cleanup code.
|
* Define defaults for cleanup code.
|
||||||
* Note: Unless the build explicitly defines one of the following, then
|
* Note: Unless the build explicitly defines one of the following, then
|
||||||
* we default to standard C style cleanup. This style uses setjmp/longjmp
|
* we default to standard C style cleanup. This style uses setjmp/longjmp
|
||||||
* in the cancelation and thread exit implementations and therefore won't
|
* in the cancellation and thread exit implementations and therefore won't
|
||||||
* do stack unwinding if linked to applications that have it (e.g.
|
* do stack unwinding if linked to applications that have it (e.g.
|
||||||
* C++ apps). This is currently consistent with most/all commercial Unix
|
* C++ apps). This is currently consistent with most/all commercial Unix
|
||||||
* POSIX threads implementations.
|
* POSIX threads implementations.
|
||||||
@ -78,42 +71,31 @@
|
|||||||
#error ERROR [__FILE__, line __LINE__]: SEH is not supported for this compiler.
|
#error ERROR [__FILE__, line __LINE__]: SEH is not supported for this compiler.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <_ptw32.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Stop here if we are being included by the resource compiler.
|
* Stop here if we are being included by the resource compiler.
|
||||||
*/
|
*/
|
||||||
#if !defined(RC_INVOKED)
|
#if !defined(RC_INVOKED)
|
||||||
|
|
||||||
#undef PTW32_LEVEL
|
#undef __PTW32_LEVEL
|
||||||
|
#undef __PTW32_LEVEL_MAX
|
||||||
|
#define __PTW32_LEVEL_MAX 3
|
||||||
|
|
||||||
#if defined(_POSIX_SOURCE)
|
#if _POSIX_C_SOURCE >= 200112L /* POSIX.1-2001 and later */
|
||||||
#define PTW32_LEVEL 0
|
# define __PTW32_LEVEL __PTW32_LEVEL_MAX /* include everything */
|
||||||
/* Early POSIX */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
|
#elif defined INCLUDE_NP /* earlier than POSIX.1-2001, but... */
|
||||||
#undef PTW32_LEVEL
|
# define __PTW32_LEVEL 2 /* include non-portable extensions */
|
||||||
#define PTW32_LEVEL 1
|
|
||||||
/* Include 1b, 1c and 1d */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(INCLUDE_NP)
|
#elif _POSIX_C_SOURCE >= 199309L /* POSIX.1-1993 */
|
||||||
#undef PTW32_LEVEL
|
# define __PTW32_LEVEL 1 /* include 1b, 1c, and 1d */
|
||||||
#define PTW32_LEVEL 2
|
|
||||||
/* Include Non-Portable extensions */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PTW32_LEVEL_MAX 3
|
#elif defined _POSIX_SOURCE /* early POSIX */
|
||||||
|
# define __PTW32_LEVEL 0 /* minimal support */
|
||||||
|
|
||||||
#if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_LEVEL)
|
#else /* unspecified support level */
|
||||||
#define PTW32_LEVEL PTW32_LEVEL_MAX
|
# define __PTW32_LEVEL __PTW32_LEVEL_MAX /* include everything anyway */
|
||||||
/* Include everything */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_UWIN)
|
|
||||||
# define HAVE_STRUCT_TIMESPEC 1
|
|
||||||
# define HAVE_SIGNAL_H 1
|
|
||||||
# undef HAVE_PTW32_CONFIG_H
|
|
||||||
# pragma comment(lib, "pthread")
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -184,170 +166,19 @@
|
|||||||
* The source code and other information about this library
|
* The source code and other information about this library
|
||||||
* are available from
|
* are available from
|
||||||
*
|
*
|
||||||
* http://sources.redhat.com/pthreads-win32/
|
* https://sourceforge.net/projects/pthreads4w//
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------
|
* -------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
enum
|
||||||
/* Try to avoid including windows.h */
|
{ /* Boolean values to make us independent of system includes. */
|
||||||
#if (defined(__MINGW64__) || defined(__MINGW32__)) && defined(__cplusplus)
|
|
||||||
#define PTW32_INCLUDE_WINDOWS_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(PTW32_INCLUDE_WINDOWS_H)
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER < 1300 || defined(__DMC__)
|
|
||||||
/*
|
|
||||||
* VC++6.0 or early compiler's header has no DWORD_PTR type.
|
|
||||||
*/
|
|
||||||
typedef unsigned long DWORD_PTR;
|
|
||||||
typedef unsigned long ULONG_PTR;
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
* -----------------
|
|
||||||
* autoconf switches
|
|
||||||
* -----------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(HAVE_PTW32_CONFIG_H)
|
|
||||||
#include "config.h"
|
|
||||||
#endif /* HAVE_PTW32_CONFIG_H */
|
|
||||||
|
|
||||||
#if !defined(NEED_FTIME)
|
|
||||||
#include <time.h>
|
|
||||||
#else /* NEED_FTIME */
|
|
||||||
/* use native WIN32 time API */
|
|
||||||
#endif /* NEED_FTIME */
|
|
||||||
|
|
||||||
#if defined(HAVE_SIGNAL_H)
|
|
||||||
#include <signal.h>
|
|
||||||
#endif /* HAVE_SIGNAL_H */
|
|
||||||
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Boolean values to make us independent of system includes.
|
|
||||||
*/
|
|
||||||
enum {
|
|
||||||
PTW32_FALSE = 0,
|
PTW32_FALSE = 0,
|
||||||
PTW32_TRUE = (! PTW32_FALSE)
|
PTW32_TRUE = (! PTW32_FALSE)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
#include <time.h>
|
||||||
* This is a duplicate of what is in the autoconf config.h,
|
|
||||||
* which is only used when building the pthread-win32 libraries.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(PTW32_CONFIG_H)
|
|
||||||
# if defined(WINCE)
|
|
||||||
# define NEED_ERRNO
|
|
||||||
# define NEED_SEM
|
|
||||||
# endif
|
|
||||||
# if defined(__MINGW64__)
|
|
||||||
# define HAVE_STRUCT_TIMESPEC
|
|
||||||
# define HAVE_MODE_T
|
|
||||||
# elif defined(_UWIN) || defined(__MINGW32__)
|
|
||||||
# define HAVE_MODE_T
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX
|
|
||||||
#if defined(NEED_ERRNO)
|
|
||||||
#include "need_errno.h"
|
|
||||||
#else
|
|
||||||
#include <errno.h>
|
|
||||||
#endif
|
|
||||||
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Several systems don't define some error numbers.
|
|
||||||
*/
|
|
||||||
#if !defined(ENOTSUP)
|
|
||||||
# define ENOTSUP 48 /* This is the value in Solaris. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(ETIMEDOUT)
|
|
||||||
# define ETIMEDOUT 10060 /* Same as WSAETIMEDOUT */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(ENOSYS)
|
|
||||||
# define ENOSYS 140 /* Semi-arbitrary value */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(EDEADLK)
|
|
||||||
# if defined(EDEADLOCK)
|
|
||||||
# define EDEADLK EDEADLOCK
|
|
||||||
# else
|
|
||||||
# define EDEADLK 36 /* This is the value in MSVC. */
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* POSIX 2008 - related to robust mutexes */
|
|
||||||
#if !defined(EOWNERDEAD)
|
|
||||||
# define EOWNERDEAD 43
|
|
||||||
#endif
|
|
||||||
#if !defined(ENOTRECOVERABLE)
|
|
||||||
# define ENOTRECOVERABLE 44
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* To avoid including windows.h we define only those things that we
|
|
||||||
* actually need from it.
|
|
||||||
*/
|
|
||||||
#if !defined(PTW32_INCLUDE_WINDOWS_H)
|
|
||||||
#if !defined(HANDLE)
|
|
||||||
# define PTW32__HANDLE_DEF
|
|
||||||
# define HANDLE void *
|
|
||||||
#endif
|
|
||||||
#if !defined(DWORD)
|
|
||||||
# define PTW32__DWORD_DEF
|
|
||||||
# define DWORD unsigned long
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER >= 1900
|
|
||||||
# define HAVE_STRUCT_TIMESPEC
|
|
||||||
# ifndef _TIMESPEC_DEFINED
|
|
||||||
# define _TIMESPEC_DEFINED
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(HAVE_STRUCT_TIMESPEC)
|
|
||||||
#define HAVE_STRUCT_TIMESPEC
|
|
||||||
#if !defined(_TIMESPEC_DEFINED)
|
|
||||||
#define _TIMESPEC_DEFINED
|
|
||||||
struct timespec {
|
|
||||||
time_t tv_sec;
|
|
||||||
long tv_nsec;
|
|
||||||
};
|
|
||||||
#endif /* _TIMESPEC_DEFINED */
|
|
||||||
#endif /* HAVE_STRUCT_TIMESPEC */
|
|
||||||
|
|
||||||
#if !defined(SIG_BLOCK)
|
|
||||||
#define SIG_BLOCK 0
|
|
||||||
#endif /* SIG_BLOCK */
|
|
||||||
|
|
||||||
#if !defined(SIG_UNBLOCK)
|
|
||||||
#define SIG_UNBLOCK 1
|
|
||||||
#endif /* SIG_UNBLOCK */
|
|
||||||
|
|
||||||
#if !defined(SIG_SETMASK)
|
|
||||||
#define SIG_SETMASK 2
|
|
||||||
#endif /* SIG_SETMASK */
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* -------------------------------------------------------------
|
* -------------------------------------------------------------
|
||||||
*
|
*
|
||||||
@ -355,27 +186,27 @@ extern "C"
|
|||||||
* =========================
|
* =========================
|
||||||
*
|
*
|
||||||
* Options are normally set in <unistd.h>, which is not provided
|
* Options are normally set in <unistd.h>, which is not provided
|
||||||
* with pthreads-win32.
|
* with Pthreads4w.
|
||||||
*
|
*
|
||||||
* For conformance with the Single Unix Specification (version 3), all of the
|
* For conformance with the Single Unix Specification (version 3), all of the
|
||||||
* options below are defined, and have a value of either -1 (not supported)
|
* options below are defined, and have a value of either -1 (not supported)
|
||||||
* or 200112L (supported).
|
* or yyyymm[dd]L (supported).
|
||||||
*
|
*
|
||||||
* These options can neither be left undefined nor have a value of 0, because
|
* These options can neither be left undefined nor have a value of 0, because
|
||||||
* either indicates that sysconf(), which is not implemented, may be used at
|
* either indicates that sysconf(), which is not implemented, may be used at
|
||||||
* runtime to check the status of the option.
|
* runtime to check the status of the option.
|
||||||
*
|
*
|
||||||
* _POSIX_THREADS (== 200112L)
|
* _POSIX_THREADS (== 20080912L)
|
||||||
* If == 200112L, you can use threads
|
* If == 20080912L, you can use threads
|
||||||
*
|
*
|
||||||
* _POSIX_THREAD_ATTR_STACKSIZE (== 200112L)
|
* _POSIX_THREAD_ATTR_STACKSIZE (== 200809L)
|
||||||
* If == 200112L, you can control the size of a thread's
|
* If == 200809L, you can control the size of a thread's
|
||||||
* stack
|
* stack
|
||||||
* pthread_attr_getstacksize
|
* pthread_attr_getstacksize
|
||||||
* pthread_attr_setstacksize
|
* pthread_attr_setstacksize
|
||||||
*
|
*
|
||||||
* _POSIX_THREAD_ATTR_STACKADDR (== -1)
|
* _POSIX_THREAD_ATTR_STACKADDR (== -1)
|
||||||
* If == 200112L, you can allocate and control a thread's
|
* If == 200809L, you can allocate and control a thread's
|
||||||
* stack. If not supported, the following functions
|
* stack. If not supported, the following functions
|
||||||
* will return ENOSYS, indicating they are not
|
* will return ENOSYS, indicating they are not
|
||||||
* supported:
|
* supported:
|
||||||
@ -390,13 +221,13 @@ extern "C"
|
|||||||
* writers over readers when threads have equal priority.
|
* writers over readers when threads have equal priority.
|
||||||
*
|
*
|
||||||
* _POSIX_THREAD_PRIO_INHERIT (== -1)
|
* _POSIX_THREAD_PRIO_INHERIT (== -1)
|
||||||
* If == 200112L, you can create priority inheritance
|
* If == 200809L, you can create priority inheritance
|
||||||
* mutexes.
|
* mutexes.
|
||||||
* pthread_mutexattr_getprotocol +
|
* pthread_mutexattr_getprotocol +
|
||||||
* pthread_mutexattr_setprotocol +
|
* pthread_mutexattr_setprotocol +
|
||||||
*
|
*
|
||||||
* _POSIX_THREAD_PRIO_PROTECT (== -1)
|
* _POSIX_THREAD_PRIO_PROTECT (== -1)
|
||||||
* If == 200112L, you can create priority ceiling mutexes
|
* If == 200809L, you can create priority ceiling mutexes
|
||||||
* Indicates the availability of:
|
* Indicates the availability of:
|
||||||
* pthread_mutex_getprioceiling
|
* pthread_mutex_getprioceiling
|
||||||
* pthread_mutex_setprioceiling
|
* pthread_mutex_setprioceiling
|
||||||
@ -415,22 +246,24 @@ extern "C"
|
|||||||
* pthread_condattr_getpshared
|
* pthread_condattr_getpshared
|
||||||
* pthread_condattr_setpshared
|
* pthread_condattr_setpshared
|
||||||
*
|
*
|
||||||
* _POSIX_THREAD_SAFE_FUNCTIONS (== 200112L)
|
* _POSIX_THREAD_SAFE_FUNCTIONS (== 200809L)
|
||||||
* If == 200112L you can use the special *_r library
|
* If == 200809L you can use the special *_r library
|
||||||
* functions that provide thread-safe behaviour
|
* functions that provide thread-safe behaviour
|
||||||
*
|
*
|
||||||
* _POSIX_READER_WRITER_LOCKS (== 200112L)
|
* _POSIX_READER_WRITER_LOCKS (== 200809L)
|
||||||
* If == 200112L, you can use read/write locks
|
* If == 200809L, you can use read/write locks
|
||||||
*
|
*
|
||||||
* _POSIX_SPIN_LOCKS (== 200112L)
|
* _POSIX_SPIN_LOCKS (== 200809L)
|
||||||
* If == 200112L, you can use spin locks
|
* If == 200809L, you can use spin locks
|
||||||
*
|
*
|
||||||
* _POSIX_BARRIERS (== 200112L)
|
* _POSIX_BARRIERS (== 200809L)
|
||||||
* If == 200112L, you can use barriers
|
* If == 200809L, you can use barriers
|
||||||
*
|
*
|
||||||
* + These functions provide both 'inherit' and/or
|
* _POSIX_ROBUST_MUTEXES (== 200809L)
|
||||||
* 'protect' protocol, based upon these macro
|
* If == 200809L, you can use robust mutexes
|
||||||
* settings.
|
* Officially this should also imply
|
||||||
|
* _POSIX_THREAD_PROCESS_SHARED != -1 however
|
||||||
|
* not here yet.
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------
|
* -------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -456,6 +289,9 @@ extern "C"
|
|||||||
#undef _POSIX_THREAD_ATTR_STACKSIZE
|
#undef _POSIX_THREAD_ATTR_STACKSIZE
|
||||||
#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
|
#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
|
||||||
|
|
||||||
|
#undef _POSIX_ROBUST_MUTEXES
|
||||||
|
#define _POSIX_ROBUST_MUTEXES 200809L
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following options are not supported
|
* The following options are not supported
|
||||||
*/
|
*/
|
||||||
@ -481,7 +317,7 @@ extern "C"
|
|||||||
* ===========================
|
* ===========================
|
||||||
*
|
*
|
||||||
* These limits are normally set in <limits.h>, which is not provided with
|
* These limits are normally set in <limits.h>, which is not provided with
|
||||||
* pthreads-win32.
|
* Pthreads4w.
|
||||||
*
|
*
|
||||||
* PTHREAD_DESTRUCTOR_ITERATIONS
|
* PTHREAD_DESTRUCTOR_ITERATIONS
|
||||||
* Maximum number of attempts to destroy
|
* Maximum number of attempts to destroy
|
||||||
@ -544,49 +380,28 @@ extern "C"
|
|||||||
#define SEM_VALUE_MAX INT_MAX
|
#define SEM_VALUE_MAX INT_MAX
|
||||||
|
|
||||||
|
|
||||||
#if defined(__GNUC__) && !defined(__declspec)
|
#if defined(_UWIN) && __PTW32_LEVEL >= __PTW32_LEVEL_MAX
|
||||||
# error Please upgrade your GNU compiler to one that supports __declspec.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When building the library, you should define PTW32_BUILD so that
|
|
||||||
* the variables/functions are exported correctly. When using the library,
|
|
||||||
* do NOT define PTW32_BUILD, and then the variables/functions will
|
|
||||||
* be imported correctly.
|
|
||||||
*/
|
|
||||||
#if !defined(PTW32_STATIC_LIB)
|
|
||||||
# if defined(PTW32_BUILD)
|
|
||||||
# define PTW32_DLLPORT __declspec (dllexport)
|
|
||||||
# else
|
|
||||||
# define PTW32_DLLPORT __declspec (dllimport)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define PTW32_DLLPORT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The Open Watcom C/C++ compiler uses a non-standard calling convention
|
|
||||||
* that passes function args in registers unless __cdecl is explicitly specified
|
|
||||||
* in exposed function prototypes.
|
|
||||||
*
|
|
||||||
* We force all calls to cdecl even though this could slow Watcom code down
|
|
||||||
* slightly. If you know that the Watcom compiler will be used to build both
|
|
||||||
* the DLL and application, then you can probably define this as a null string.
|
|
||||||
* Remember that pthread.h (this file) is used for both the DLL and application builds.
|
|
||||||
*/
|
|
||||||
#define PTW32_CDECL __cdecl
|
|
||||||
|
|
||||||
#if defined(_UWIN) && PTW32_LEVEL >= PTW32_LEVEL_MAX
|
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
#else
|
#else
|
||||||
/*
|
/* Generic handle type - intended to provide the lifetime-uniqueness that
|
||||||
* Generic handle type - intended to extend uniqueness beyond
|
* a simple pointer can't. It should scale for either
|
||||||
* that available with a simple pointer. It should scale for either
|
* 32 or 64 bit systems.
|
||||||
* IA-32 or IA-64.
|
*
|
||||||
|
* The constraint with this approach is that applications must
|
||||||
|
* strictly comply with POSIX, e.g. not assume scalar type, only
|
||||||
|
* compare pthread_t using the API function pthread_equal(), etc.
|
||||||
|
*
|
||||||
|
* Applications can use the element 'p' to compare, e.g. for sorting,
|
||||||
|
* but it will be up to the application to determine if handles are
|
||||||
|
* live or dead, or resurrected for an entirely new/different thread.
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct
|
||||||
void * p; /* Pointer to actual object */
|
{ void * p; /* Pointer to actual object */
|
||||||
|
#if PTW32_VERSION_MAJOR > 2
|
||||||
|
size_t x; /* Extra information - reuse count etc */
|
||||||
|
#else
|
||||||
unsigned int x; /* Extra information - reuse count etc */
|
unsigned int x; /* Extra information - reuse count etc */
|
||||||
|
#endif
|
||||||
} ptw32_handle_t;
|
} ptw32_handle_t;
|
||||||
|
|
||||||
typedef ptw32_handle_t pthread_t;
|
typedef ptw32_handle_t pthread_t;
|
||||||
@ -598,6 +413,7 @@ typedef struct pthread_mutexattr_t_ * pthread_mutexattr_t;
|
|||||||
typedef struct pthread_cond_t_ * pthread_cond_t;
|
typedef struct pthread_cond_t_ * pthread_cond_t;
|
||||||
typedef struct pthread_condattr_t_ * pthread_condattr_t;
|
typedef struct pthread_condattr_t_ * pthread_condattr_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct pthread_rwlock_t_ * pthread_rwlock_t;
|
typedef struct pthread_rwlock_t_ * pthread_rwlock_t;
|
||||||
typedef struct pthread_rwlockattr_t_ * pthread_rwlockattr_t;
|
typedef struct pthread_rwlockattr_t_ * pthread_rwlockattr_t;
|
||||||
typedef struct pthread_spinlock_t_ * pthread_spinlock_t;
|
typedef struct pthread_spinlock_t_ * pthread_spinlock_t;
|
||||||
@ -612,50 +428,42 @@ typedef struct pthread_barrierattr_t_ * pthread_barrierattr_t;
|
|||||||
* ====================
|
* ====================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum {
|
enum
|
||||||
/*
|
{ /* pthread_attr_{get,set}detachstate
|
||||||
* pthread_attr_{get,set}detachstate
|
|
||||||
*/
|
*/
|
||||||
PTHREAD_CREATE_JOINABLE = 0, /* Default */
|
PTHREAD_CREATE_JOINABLE = 0, /* Default */
|
||||||
PTHREAD_CREATE_DETACHED = 1,
|
PTHREAD_CREATE_DETACHED = 1,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_attr_{get,set}inheritsched
|
* pthread_attr_{get,set}inheritsched
|
||||||
*/
|
*/
|
||||||
PTHREAD_INHERIT_SCHED = 0,
|
PTHREAD_INHERIT_SCHED = 0,
|
||||||
PTHREAD_EXPLICIT_SCHED = 1, /* Default */
|
PTHREAD_EXPLICIT_SCHED = 1, /* Default */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_{get,set}scope
|
* pthread_{get,set}scope
|
||||||
*/
|
*/
|
||||||
PTHREAD_SCOPE_PROCESS = 0,
|
PTHREAD_SCOPE_PROCESS = 0,
|
||||||
PTHREAD_SCOPE_SYSTEM = 1, /* Default */
|
PTHREAD_SCOPE_SYSTEM = 1, /* Default */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_setcancelstate paramters
|
* pthread_setcancelstate paramters
|
||||||
*/
|
*/
|
||||||
PTHREAD_CANCEL_ENABLE = 0, /* Default */
|
PTHREAD_CANCEL_ENABLE = 0, /* Default */
|
||||||
PTHREAD_CANCEL_DISABLE = 1,
|
PTHREAD_CANCEL_DISABLE = 1,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_setcanceltype parameters
|
* pthread_setcanceltype parameters
|
||||||
*/
|
*/
|
||||||
PTHREAD_CANCEL_ASYNCHRONOUS = 0,
|
PTHREAD_CANCEL_ASYNCHRONOUS = 0,
|
||||||
PTHREAD_CANCEL_DEFERRED = 1, /* Default */
|
PTHREAD_CANCEL_DEFERRED = 1, /* Default */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_mutexattr_{get,set}pshared
|
* pthread_mutexattr_{get,set}pshared
|
||||||
* pthread_condattr_{get,set}pshared
|
* pthread_condattr_{get,set}pshared
|
||||||
*/
|
*/
|
||||||
PTHREAD_PROCESS_PRIVATE = 0,
|
PTHREAD_PROCESS_PRIVATE = 0,
|
||||||
PTHREAD_PROCESS_SHARED = 1,
|
PTHREAD_PROCESS_SHARED = 1,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_mutexattr_{get,set}robust
|
* pthread_mutexattr_{get,set}robust
|
||||||
*/
|
*/
|
||||||
PTHREAD_MUTEX_STALLED = 0, /* Default */
|
PTHREAD_MUTEX_STALLED = 0, /* Default */
|
||||||
PTHREAD_MUTEX_ROBUST = 1,
|
PTHREAD_MUTEX_ROBUST = 1,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_barrier_wait
|
* pthread_barrier_wait
|
||||||
*/
|
*/
|
||||||
@ -665,7 +473,7 @@ enum {
|
|||||||
/*
|
/*
|
||||||
* ====================
|
* ====================
|
||||||
* ====================
|
* ====================
|
||||||
* Cancelation
|
* cancellation
|
||||||
* ====================
|
* ====================
|
||||||
* ====================
|
* ====================
|
||||||
*/
|
*/
|
||||||
@ -679,16 +487,30 @@ enum {
|
|||||||
* ====================
|
* ====================
|
||||||
* ====================
|
* ====================
|
||||||
*/
|
*/
|
||||||
|
#if PTW32_VERSION_MAJOR > 2
|
||||||
|
|
||||||
|
#define PTHREAD_ONCE_INIT { 0, PTW32_FALSE }
|
||||||
|
|
||||||
|
struct pthread_once_t_
|
||||||
|
{
|
||||||
|
void * lock; /* MCS lock */
|
||||||
|
int done; /* indicates if user function has been executed */
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
#define PTHREAD_ONCE_INIT { PTW32_FALSE, 0, 0, 0 }
|
#define PTHREAD_ONCE_INIT { PTW32_FALSE, 0, 0, 0 }
|
||||||
|
|
||||||
struct pthread_once_t_
|
struct pthread_once_t_
|
||||||
{
|
{
|
||||||
int done; /* indicates if user function has been executed */
|
int done; /* indicates if user function has been executed */
|
||||||
void * lock;
|
void * lock; /* MCS lock */
|
||||||
int reserved1;
|
int reserved1;
|
||||||
int reserved2;
|
int reserved2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ====================
|
* ====================
|
||||||
@ -884,6 +706,7 @@ struct ptw32_cleanup_t
|
|||||||
|
|
||||||
#endif /* __CLEANUP_SEH */
|
#endif /* __CLEANUP_SEH */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ===============
|
* ===============
|
||||||
* ===============
|
* ===============
|
||||||
@ -892,6 +715,8 @@ struct ptw32_cleanup_t
|
|||||||
* ===============
|
* ===============
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
__PTW32_BEGIN_C_DECLS
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PThread Attribute Functions
|
* PThread Attribute Functions
|
||||||
*/
|
*/
|
||||||
@ -899,6 +724,10 @@ PTW32_DLLPORT int PTW32_CDECL pthread_attr_init (pthread_attr_t * attr);
|
|||||||
|
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthread_attr_destroy (pthread_attr_t * attr);
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_destroy (pthread_attr_t * attr);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_getaffinity_np (const pthread_attr_t * attr,
|
||||||
|
size_t cpusetsize,
|
||||||
|
cpu_set_t * cpuset);
|
||||||
|
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthread_attr_getdetachstate (const pthread_attr_t * attr,
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_getdetachstate (const pthread_attr_t * attr,
|
||||||
int *detachstate);
|
int *detachstate);
|
||||||
|
|
||||||
@ -908,6 +737,10 @@ PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstackaddr (const pthread_attr_t *
|
|||||||
PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstacksize (const pthread_attr_t * attr,
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstacksize (const pthread_attr_t * attr,
|
||||||
size_t * stacksize);
|
size_t * stacksize);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_setaffinity_np (pthread_attr_t * attr,
|
||||||
|
size_t cpusetsize,
|
||||||
|
const cpu_set_t * cpuset);
|
||||||
|
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthread_attr_setdetachstate (pthread_attr_t * attr,
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_setdetachstate (pthread_attr_t * attr,
|
||||||
int detachstate);
|
int detachstate);
|
||||||
|
|
||||||
@ -974,13 +807,13 @@ PTW32_DLLPORT void PTW32_CDECL pthread_testcancel (void);
|
|||||||
PTW32_DLLPORT int PTW32_CDECL pthread_once (pthread_once_t * once_control,
|
PTW32_DLLPORT int PTW32_CDECL pthread_once (pthread_once_t * once_control,
|
||||||
void (PTW32_CDECL *init_routine) (void));
|
void (PTW32_CDECL *init_routine) (void));
|
||||||
|
|
||||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX
|
#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX
|
||||||
PTW32_DLLPORT ptw32_cleanup_t * PTW32_CDECL ptw32_pop_cleanup (int execute);
|
PTW32_DLLPORT ptw32_cleanup_t * PTW32_CDECL ptw32_pop_cleanup (int execute);
|
||||||
|
|
||||||
PTW32_DLLPORT void PTW32_CDECL ptw32_push_cleanup (ptw32_cleanup_t * cleanup,
|
PTW32_DLLPORT void PTW32_CDECL ptw32_push_cleanup (ptw32_cleanup_t * cleanup,
|
||||||
ptw32_cleanup_callback_t routine,
|
ptw32_cleanup_callback_t routine,
|
||||||
void *arg);
|
void *arg);
|
||||||
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
|
#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Thread Specific Data Functions
|
* Thread Specific Data Functions
|
||||||
@ -1158,7 +991,7 @@ PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_getpshared (const pthread_rwloc
|
|||||||
PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_setpshared (pthread_rwlockattr_t * attr,
|
PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_setpshared (pthread_rwlockattr_t * attr,
|
||||||
int pshared);
|
int pshared);
|
||||||
|
|
||||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX - 1
|
#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX - 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Signal Functions. Should be defined in <signal.h> but MSVC and MinGW32
|
* Signal Functions. Should be defined in <signal.h> but MSVC and MinGW32
|
||||||
@ -1177,6 +1010,17 @@ PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setkind_np(pthread_mutexattr_t *
|
|||||||
int kind);
|
int kind);
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getkind_np(pthread_mutexattr_t * attr,
|
PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getkind_np(pthread_mutexattr_t * attr,
|
||||||
int *kind);
|
int *kind);
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_timedjoin_np(pthread_t thread,
|
||||||
|
void **value_ptr,
|
||||||
|
const struct timespec *abstime);
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_tryjoin_np(pthread_t thread,
|
||||||
|
void **value_ptr);
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_setaffinity_np(pthread_t thread,
|
||||||
|
size_t cpusetsize,
|
||||||
|
const cpu_set_t *cpuset);
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_getaffinity_np(pthread_t thread,
|
||||||
|
size_t cpusetsize,
|
||||||
|
cpu_set_t *cpuset);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Possibly supported by other POSIX threads implementations
|
* Possibly supported by other POSIX threads implementations
|
||||||
@ -1194,11 +1038,21 @@ PTW32_DLLPORT int PTW32_CDECL pthread_win32_process_detach_np(void);
|
|||||||
PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_attach_np(void);
|
PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_attach_np(void);
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_detach_np(void);
|
PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_detach_np(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the first parameter "abstime" modified to represent the current system time.
|
||||||
|
* If "relative" is not NULL it represents an interval to add to "abstime".
|
||||||
|
*/
|
||||||
|
|
||||||
|
PTW32_DLLPORT struct timespec * PTW32_CDECL pthread_win32_getabstime_np(
|
||||||
|
struct timespec * abstime,
|
||||||
|
const struct timespec * relative);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Features that are auto-detected at load/run time.
|
* Features that are auto-detected at load/run time.
|
||||||
*/
|
*/
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthread_win32_test_features_np(int);
|
PTW32_DLLPORT int PTW32_CDECL pthread_win32_test_features_np(int);
|
||||||
enum ptw32_features {
|
enum ptw32_features
|
||||||
|
{
|
||||||
PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE = 0x0001, /* System provides it. */
|
PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE = 0x0001, /* System provides it. */
|
||||||
PTW32_ALERTABLE_ASYNC_CANCEL = 0x0002 /* Can cancel blocked threads. */
|
PTW32_ALERTABLE_ASYNC_CANCEL = 0x0002 /* Can cancel blocked threads. */
|
||||||
};
|
};
|
||||||
@ -1213,25 +1067,41 @@ enum ptw32_features {
|
|||||||
*/
|
*/
|
||||||
PTW32_DLLPORT void * PTW32_CDECL pthread_timechange_handler_np(void *);
|
PTW32_DLLPORT void * PTW32_CDECL pthread_timechange_handler_np(void *);
|
||||||
|
|
||||||
#endif /*PTW32_LEVEL >= PTW32_LEVEL_MAX - 1 */
|
#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX - 1 */
|
||||||
|
|
||||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX
|
#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the Win32 HANDLE for the POSIX thread.
|
* Returns the Win32 HANDLE for the POSIX thread.
|
||||||
*/
|
*/
|
||||||
PTW32_DLLPORT HANDLE PTW32_CDECL pthread_getw32threadhandle_np(pthread_t thread);
|
PTW32_DLLPORT void * PTW32_CDECL pthread_getw32threadhandle_np(pthread_t thread);
|
||||||
/*
|
/*
|
||||||
* Returns the win32 thread ID for POSIX thread.
|
* Returns the win32 thread ID for POSIX thread.
|
||||||
*/
|
*/
|
||||||
PTW32_DLLPORT DWORD PTW32_CDECL pthread_getw32threadid_np (pthread_t thread);
|
PTW32_DLLPORT unsigned long PTW32_CDECL pthread_getw32threadid_np (pthread_t thread);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sets the POSIX thread name. If _MSC_VER is defined the name should be displayed by
|
||||||
|
* the MSVS debugger.
|
||||||
|
*/
|
||||||
|
#if defined(PTW32_COMPATIBILITY_BSD) || defined(PTW32_COMPATIBILITY_TRU64)
|
||||||
|
#define PTHREAD_MAX_NAMELEN_NP 16
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_setname_np (pthread_t thr, const char * name, void * arg);
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_setname_np (pthread_attr_t * attr, const char * name, void * arg);
|
||||||
|
#else
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_setname_np (pthread_t thr, const char * name);
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_setname_np (pthread_attr_t * attr, const char * name);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_getname_np (pthread_t thr, char * name, int len);
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL pthread_attr_getname_np (pthread_attr_t * attr, char * name, int len);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Protected Methods
|
* Protected Methods
|
||||||
*
|
*
|
||||||
* This function blocks until the given WIN32 handle
|
* This function blocks until the given WIN32 handle
|
||||||
* is signaled or pthread_cancel had been called.
|
* is signalled or pthread_cancel had been called.
|
||||||
* This function allows the caller to hook into the
|
* This function allows the caller to hook into the
|
||||||
* PThreads cancel mechanism. It is implemented using
|
* PThreads cancel mechanism. It is implemented using
|
||||||
*
|
*
|
||||||
@ -1242,34 +1112,26 @@ PTW32_DLLPORT DWORD PTW32_CDECL pthread_getw32threadid_np (pthread_t thread);
|
|||||||
* argument to TimedWait is simply passed to
|
* argument to TimedWait is simply passed to
|
||||||
* WaitForMultipleObjects.
|
* WaitForMultipleObjects.
|
||||||
*/
|
*/
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthreadCancelableWait (HANDLE waitHandle);
|
PTW32_DLLPORT int PTW32_CDECL pthreadCancelableWait (void *waitHandle);
|
||||||
PTW32_DLLPORT int PTW32_CDECL pthreadCancelableTimedWait (HANDLE waitHandle,
|
PTW32_DLLPORT int PTW32_CDECL pthreadCancelableTimedWait (void *waitHandle,
|
||||||
DWORD timeout);
|
unsigned long timeout);
|
||||||
|
|
||||||
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
|
#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Thread-Safe C Runtime Library Mappings.
|
* Declare a thread-safe errno for Open Watcom
|
||||||
|
* (note: this has not been tested in a long time)
|
||||||
*/
|
*/
|
||||||
#if !defined(_UWIN)
|
#if defined(__WATCOMC__) && !defined(errno)
|
||||||
# if defined(NEED_ERRNO)
|
# if defined(_MT) || defined(_DLL)
|
||||||
PTW32_DLLPORT int * PTW32_CDECL _errno( void );
|
|
||||||
# else
|
|
||||||
# if !defined(errno)
|
|
||||||
# if (defined(_MT) || defined(_DLL))
|
|
||||||
__declspec(dllimport) extern int * __cdecl _errno(void);
|
__declspec(dllimport) extern int * __cdecl _errno(void);
|
||||||
# define errno (*_errno())
|
# define errno (*_errno())
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
#if defined(PTW32_USES_SEPARATE_CRT) && (defined(__CLEANUP_CXX) || defined(__CLEANUP_SEH))
|
||||||
* Some compiler environments don't define some things.
|
typedef void (*ptw32_terminate_handler)();
|
||||||
*/
|
PTW32_DLLPORT ptw32_terminate_handler PTW32_CDECL pthread_win32_set_terminate_np(ptw32_terminate_handler termFunction);
|
||||||
#if defined(__BORLANDC__)
|
|
||||||
# define _ftime ftime
|
|
||||||
# define _timeb timeb
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
@ -1283,15 +1145,15 @@ class ptw32_exception_exit : public ptw32_exception {};
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX
|
#if __PTW32_LEVEL >= __PTW32_LEVEL_MAX
|
||||||
|
|
||||||
/* FIXME: This is only required if the library was built using SEH */
|
/* FIXME: This is only required if the library was built using SEH */
|
||||||
/*
|
/*
|
||||||
* Get internal SEH tag
|
* Get internal SEH tag
|
||||||
*/
|
*/
|
||||||
PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void);
|
PTW32_DLLPORT unsigned long PTW32_CDECL ptw32_get_exception_services_code(void);
|
||||||
|
|
||||||
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
|
#endif /* __PTW32_LEVEL >= __PTW32_LEVEL_MAX */
|
||||||
|
|
||||||
#if !defined(PTW32_BUILD)
|
#if !defined(PTW32_BUILD)
|
||||||
|
|
||||||
@ -1316,7 +1178,7 @@ PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void);
|
|||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
/*
|
/*
|
||||||
* WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll'
|
* WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll'
|
||||||
* if you want Pthread-Win32 cancelation and pthread_exit to work.
|
* if you want Pthread-Win32 cancellation and pthread_exit to work.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if !defined(PtW32NoCatchWarn)
|
#if !defined(PtW32NoCatchWarn)
|
||||||
@ -1326,7 +1188,7 @@ PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void);
|
|||||||
#pragma message("When compiling applications with MSVC++ and C++ exception handling:")
|
#pragma message("When compiling applications with MSVC++ and C++ exception handling:")
|
||||||
#pragma message(" Replace any 'catch( ... )' in routines called from POSIX threads")
|
#pragma message(" Replace any 'catch( ... )' in routines called from POSIX threads")
|
||||||
#pragma message(" with 'PtW32CatchAll' or 'CATCHALL' if you want POSIX thread")
|
#pragma message(" with 'PtW32CatchAll' or 'CATCHALL' if you want POSIX thread")
|
||||||
#pragma message(" cancelation and pthread_exit to work. For example:")
|
#pragma message(" cancellation and pthread_exit to work. For example:")
|
||||||
#pragma message("")
|
#pragma message("")
|
||||||
#pragma message(" #if defined(PtW32CatchAll)")
|
#pragma message(" #if defined(PtW32CatchAll)")
|
||||||
#pragma message(" PtW32CatchAll")
|
#pragma message(" PtW32CatchAll")
|
||||||
@ -1356,19 +1218,10 @@ PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void);
|
|||||||
|
|
||||||
#endif /* ! PTW32_BUILD */
|
#endif /* ! PTW32_BUILD */
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
__PTW32_END_C_DECLS
|
||||||
} /* End of extern "C" */
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#if defined(PTW32__HANDLE_DEF)
|
#undef __PTW32_LEVEL
|
||||||
# undef HANDLE
|
#undef __PTW32_LEVEL_MAX
|
||||||
#endif
|
|
||||||
#if defined(PTW32__DWORD_DEF)
|
|
||||||
# undef DWORD
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef PTW32_LEVEL
|
|
||||||
#undef PTW32_LEVEL_MAX
|
|
||||||
|
|
||||||
#endif /* ! RC_INVOKED */
|
#endif /* ! RC_INVOKED */
|
||||||
|
|
237
etc/deps/pthreads4w/include/sched.h
Normal file
237
etc/deps/pthreads4w/include/sched.h
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
/*
|
||||||
|
* Module: sched.h
|
||||||
|
*
|
||||||
|
* Purpose:
|
||||||
|
* Provides an implementation of POSIX realtime extensions
|
||||||
|
* as defined in
|
||||||
|
*
|
||||||
|
* POSIX 1003.1b-1993 (POSIX.1b)
|
||||||
|
*
|
||||||
|
* --------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Pthreads4w - POSIX Threads Library for Win32
|
||||||
|
* Copyright(C) 1998 John E. Bossom
|
||||||
|
* Copyright(C) 1999-2018, Pthreads4w contributors
|
||||||
|
*
|
||||||
|
* Homepage: https://sourceforge.net/projects/pthreads4w/
|
||||||
|
*
|
||||||
|
* The current list of contributors is contained
|
||||||
|
* in the file CONTRIBUTORS included with the source
|
||||||
|
* code distribution. The list can also be seen at the
|
||||||
|
* following World Wide Web location:
|
||||||
|
* https://sourceforge.net/p/pthreads4w/wiki/Contributors/
|
||||||
|
*
|
||||||
|
* This file is part of Pthreads4w.
|
||||||
|
*
|
||||||
|
* Pthreads4w is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Pthreads4w is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Pthreads4w. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*/
|
||||||
|
#if !defined(_SCHED_H)
|
||||||
|
#define _SCHED_H
|
||||||
|
#define __SCHED_H_SOURCED__
|
||||||
|
|
||||||
|
#include <_ptw32.h>
|
||||||
|
|
||||||
|
/* We need a typedef for pid_t, (and POSIX requires <sched.h> to
|
||||||
|
* define it, as it is defined in <sys/types.h>, but it does NOT
|
||||||
|
* sanction exposure of everything from <sys/types.h>); there is
|
||||||
|
* no pid_t in Windows anyway, (except that MinGW does define it
|
||||||
|
* in their <sys/types.h>), so just provide a suitable typedef,
|
||||||
|
* but note that we must do so cautiously, to avoid a typedef
|
||||||
|
* conflict if MinGW's <sys/types.h> is also #included:
|
||||||
|
*/
|
||||||
|
#if ! defined __MINGW32__ || ! defined __have_typedef_pid_t
|
||||||
|
|
||||||
|
# if defined __MINGW64__
|
||||||
|
typedef __int64 pid_t;
|
||||||
|
# else
|
||||||
|
typedef int pid_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __GNUC__ < 4
|
||||||
|
/* GCC v4.0 and later, (as used by MinGW), allows us to repeat a
|
||||||
|
* typedef, provided every duplicate is consistent; only set this
|
||||||
|
* multiple definition guard when we cannot be certain that it is
|
||||||
|
* permissable to repeat typedefs.
|
||||||
|
*/
|
||||||
|
#define __have_typedef_pid_t 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* POSIX.1-1993 says that <sched.h> WILL expose all of <time.h>
|
||||||
|
*/
|
||||||
|
#undef __SCHED_H_SOURCED__
|
||||||
|
#if _POSIX_C_SOURCE >= 200112L
|
||||||
|
/* POSIX.1-2001 and later revises this to say only that it MAY do so;
|
||||||
|
* only struct timespec, and associated time_t are actually required,
|
||||||
|
* so prefer to be selective; (MinGW.org's <time.h> offers an option
|
||||||
|
* for selective #inclusion, when __SCHED_H_SOURCED__ is defined):
|
||||||
|
*/
|
||||||
|
#define __SCHED_H_SOURCED__
|
||||||
|
#define __need_struct_timespec
|
||||||
|
#define __need_time_t
|
||||||
|
#endif
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#if defined __MINGW64__ || _MSC_VER >= 1900
|
||||||
|
/* These are known to define struct timespec, when <time.h> has been
|
||||||
|
* #included, but may not, (probably don't), follow the convention of
|
||||||
|
* defining __struct_timespec_defined, as adopted by MinGW.org; for
|
||||||
|
* these cases, we unconditionally assume that struct timespec has
|
||||||
|
* been defined, otherwise, if MinGW.org's criterion has not been
|
||||||
|
* satisfied...
|
||||||
|
*/
|
||||||
|
#elif ! defined __struct_timespec_defined
|
||||||
|
# ifndef _TIMESPEC_DEFINED
|
||||||
|
# define _TIMESPEC_DEFINED
|
||||||
|
struct timespec
|
||||||
|
{ /* ...we fall back on this explicit definition.
|
||||||
|
*/
|
||||||
|
time_t tv_sec;
|
||||||
|
int tv_nsec;
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Microsoft VC++6.0 lacks these *_PTR types
|
||||||
|
*/
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER < 1300 && !defined(PTW32_HAVE_DWORD_PTR)
|
||||||
|
typedef unsigned long ULONG_PTR;
|
||||||
|
typedef ULONG_PTR DWORD_PTR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Thread scheduling policies */
|
||||||
|
|
||||||
|
enum
|
||||||
|
{ SCHED_OTHER = 0,
|
||||||
|
SCHED_FIFO,
|
||||||
|
SCHED_RR,
|
||||||
|
SCHED_MIN = SCHED_OTHER,
|
||||||
|
SCHED_MAX = SCHED_RR
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sched_param
|
||||||
|
{ int sched_priority;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CPU affinity
|
||||||
|
*
|
||||||
|
* cpu_set_t:
|
||||||
|
* Considered opaque but cannot be an opaque pointer due to the need for
|
||||||
|
* compatibility with GNU systems and sched_setaffinity() et.al., which
|
||||||
|
* include the cpusetsize parameter "normally set to sizeof(cpu_set_t)".
|
||||||
|
*
|
||||||
|
* FIXME: These are GNU, and NOT specified by POSIX; maybe consider
|
||||||
|
* occluding them within a _GNU_SOURCE (or similar) feature test.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CPU_SETSIZE (sizeof(size_t)*8)
|
||||||
|
|
||||||
|
#define CPU_COUNT(setptr) (_sched_affinitycpucount(setptr))
|
||||||
|
|
||||||
|
#define CPU_ZERO(setptr) (_sched_affinitycpuzero(setptr))
|
||||||
|
|
||||||
|
#define CPU_SET(cpu, setptr) (_sched_affinitycpuset((cpu),(setptr)))
|
||||||
|
|
||||||
|
#define CPU_CLR(cpu, setptr) (_sched_affinitycpuclr((cpu),(setptr)))
|
||||||
|
|
||||||
|
#define CPU_ISSET(cpu, setptr) (_sched_affinitycpuisset((cpu),(setptr)))
|
||||||
|
|
||||||
|
#define CPU_AND(destsetptr, srcset1ptr, srcset2ptr) (_sched_affinitycpuand((destsetptr),(srcset1ptr),(srcset2ptr)))
|
||||||
|
|
||||||
|
#define CPU_OR(destsetptr, srcset1ptr, srcset2ptr) (_sched_affinitycpuor((destsetptr),(srcset1ptr),(srcset2ptr)))
|
||||||
|
|
||||||
|
#define CPU_XOR(destsetptr, srcset1ptr, srcset2ptr) \
|
||||||
|
(_sched_affinitycpuxor((destsetptr),(srcset1ptr),(srcset2ptr)))
|
||||||
|
|
||||||
|
#define CPU_EQUAL(set1ptr, set2ptr) (_sched_affinitycpuequal((set1ptr),(set2ptr)))
|
||||||
|
|
||||||
|
typedef union
|
||||||
|
{ char cpuset[CPU_SETSIZE/8];
|
||||||
|
size_t _align;
|
||||||
|
} cpu_set_t;
|
||||||
|
|
||||||
|
__PTW32_BEGIN_C_DECLS
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sched_yield (void);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sched_get_priority_min (int policy);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sched_get_priority_max (int policy);
|
||||||
|
|
||||||
|
/* FIXME: this declaration of sched_setscheduler() is NOT as prescribed
|
||||||
|
* by POSIX; it lacks const struct sched_param * as third argument.
|
||||||
|
*/
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sched_setscheduler (pid_t pid, int policy);
|
||||||
|
|
||||||
|
/* FIXME: In addition to the above five functions, POSIX also requires:
|
||||||
|
*
|
||||||
|
* int sched_getparam (pid_t, struct sched_param *);
|
||||||
|
* int sched_setparam (pid_t, const struct sched_param *);
|
||||||
|
*
|
||||||
|
* both of which are conspicuous by their absence here!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Compatibility with Linux - not standard in POSIX
|
||||||
|
* FIXME: consider occluding within a _GNU_SOURCE (or similar) feature test.
|
||||||
|
*/
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sched_setaffinity (pid_t pid, size_t cpusetsize, cpu_set_t *mask);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sched_getaffinity (pid_t pid, size_t cpusetsize, cpu_set_t *mask);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Support routines and macros for cpu_set_t
|
||||||
|
*/
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL _sched_affinitycpucount (const cpu_set_t *set);
|
||||||
|
|
||||||
|
PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuzero (cpu_set_t *pset);
|
||||||
|
|
||||||
|
PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuset (int cpu, cpu_set_t *pset);
|
||||||
|
|
||||||
|
PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuclr (int cpu, cpu_set_t *pset);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL _sched_affinitycpuisset (int cpu, const cpu_set_t *pset);
|
||||||
|
|
||||||
|
PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuand(cpu_set_t *pdestset, const cpu_set_t *psrcset1, const cpu_set_t *psrcset2);
|
||||||
|
|
||||||
|
PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuor(cpu_set_t *pdestset, const cpu_set_t *psrcset1, const cpu_set_t *psrcset2);
|
||||||
|
|
||||||
|
PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuxor(cpu_set_t *pdestset, const cpu_set_t *psrcset1, const cpu_set_t *psrcset2);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL _sched_affinitycpuequal (const cpu_set_t *pset1, const cpu_set_t *pset2);
|
||||||
|
|
||||||
|
/* Note that this macro returns ENOTSUP rather than ENOSYS, as
|
||||||
|
* might be expected. However, returning ENOSYS should mean that
|
||||||
|
* sched_get_priority_{min,max} are not implemented as well as
|
||||||
|
* sched_rr_get_interval. This is not the case, since we just
|
||||||
|
* don't support round-robin scheduling. Therefore I have chosen
|
||||||
|
* to return the same value as sched_setscheduler when SCHED_RR
|
||||||
|
* is passed to it.
|
||||||
|
*
|
||||||
|
* FIXME: POSIX requires this to be defined as a function; this
|
||||||
|
* macro implementation is permitted IN ADDITION to the function,
|
||||||
|
* but the macro alone is not POSIX compliant! Worse still, it
|
||||||
|
* imposes a requirement on the caller, to ensure that both the
|
||||||
|
* declaration of errno, and the definition of ENOTSUP, are in
|
||||||
|
* scope at point of call, (which it may wish to do anyway, but
|
||||||
|
* POSIX imposes no such constraint)!
|
||||||
|
*/
|
||||||
|
#define sched_rr_get_interval(_pid, _interval) \
|
||||||
|
( errno = ENOTSUP, (int) -1 )
|
||||||
|
|
||||||
|
__PTW32_END_C_DECLS
|
||||||
|
|
||||||
|
#undef __SCHED_H_SOURCED__
|
||||||
|
#endif /* !_SCHED_H */
|
118
etc/deps/pthreads4w/include/semaphore.h
Normal file
118
etc/deps/pthreads4w/include/semaphore.h
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
/*
|
||||||
|
* Module: semaphore.h
|
||||||
|
*
|
||||||
|
* Purpose:
|
||||||
|
* Semaphores aren't actually part of the PThreads standard.
|
||||||
|
* They are defined by the POSIX Standard:
|
||||||
|
*
|
||||||
|
* POSIX 1003.1b-1993 (POSIX.1b)
|
||||||
|
*
|
||||||
|
* --------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Pthreads4w - POSIX Threads Library for Win32
|
||||||
|
* Copyright(C) 1998 John E. Bossom
|
||||||
|
* Copyright(C) 1999-2018, Pthreads4w contributors
|
||||||
|
*
|
||||||
|
* Homepage: https://sourceforge.net/projects/pthreads4w/
|
||||||
|
*
|
||||||
|
* The current list of contributors is contained
|
||||||
|
* in the file CONTRIBUTORS included with the source
|
||||||
|
* code distribution. The list can also be seen at the
|
||||||
|
* following World Wide Web location:
|
||||||
|
* https://sourceforge.net/p/pthreads4w/wiki/Contributors/
|
||||||
|
*
|
||||||
|
* This file is part of Pthreads4w.
|
||||||
|
*
|
||||||
|
* Pthreads4w is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Pthreads4w is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Pthreads4w. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*/
|
||||||
|
#if !defined( SEMAPHORE_H )
|
||||||
|
#define SEMAPHORE_H
|
||||||
|
|
||||||
|
/* FIXME: POSIX.1 says that _POSIX_SEMAPHORES should be defined
|
||||||
|
* in <unistd.h>, not here; for later POSIX.1 versions, its value
|
||||||
|
* should match the corresponding _POSIX_VERSION number, but in
|
||||||
|
* the case of POSIX.1b-1993, the value is unspecified.
|
||||||
|
*
|
||||||
|
* Notwithstanding the above, since POSIX semaphores, (and indeed
|
||||||
|
* having any <unistd.h> to #include), are not a standard feature
|
||||||
|
* on MS-Windows, it is convenient to retain this definition here;
|
||||||
|
* we may consider adding a hook, to make it selectively available
|
||||||
|
* for inclusion by <unistd.h>, in those cases (e.g. MinGW) where
|
||||||
|
* <unistd.h> is provided.
|
||||||
|
*/
|
||||||
|
#define _POSIX_SEMAPHORES
|
||||||
|
|
||||||
|
/* Internal macros, common to the public interfaces for various
|
||||||
|
* Pthreads4w components, are defined in <_ptw32.h>; we must
|
||||||
|
* include them here.
|
||||||
|
*/
|
||||||
|
#include <_ptw32.h>
|
||||||
|
|
||||||
|
/* The sem_timedwait() function was added in POSIX.1-2001; it
|
||||||
|
* requires struct timespec to be defined, at least as a partial
|
||||||
|
* (a.k.a. incomplete) data type. Forward declare it as such,
|
||||||
|
* then include <time.h> selectively, to acquire a complete
|
||||||
|
* definition, (if available).
|
||||||
|
*/
|
||||||
|
struct timespec;
|
||||||
|
#define __need_struct_timespec
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
/* The data type used to represent our semaphore implementation,
|
||||||
|
* as required by POSIX.1; FIXME: consider renaming the underlying
|
||||||
|
* structure tag, to avoid possible pollution of user namespace.
|
||||||
|
*/
|
||||||
|
typedef struct sem_t_ * sem_t;
|
||||||
|
|
||||||
|
/* POSIX.1b (and later) mandates SEM_FAILED as the value to be
|
||||||
|
* returned on failure of sem_open(); (our implementation is a
|
||||||
|
* stub, which will always return this).
|
||||||
|
*/
|
||||||
|
#define SEM_FAILED (sem_t *)(-1)
|
||||||
|
|
||||||
|
__PTW32_BEGIN_C_DECLS
|
||||||
|
|
||||||
|
/* Function prototypes: some are implemented as stubs, which
|
||||||
|
* always fail; (FIXME: identify them).
|
||||||
|
*/
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_init (sem_t * sem,
|
||||||
|
int pshared,
|
||||||
|
unsigned int value);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_destroy (sem_t * sem);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_trywait (sem_t * sem);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_wait (sem_t * sem);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_timedwait (sem_t * sem,
|
||||||
|
const struct timespec * abstime);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_post (sem_t * sem);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_post_multiple (sem_t * sem,
|
||||||
|
int count);
|
||||||
|
|
||||||
|
PTW32_DLLPORT sem_t * PTW32_CDECL sem_open (const char *, int, ...);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_close (sem_t * sem);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_unlink (const char * name);
|
||||||
|
|
||||||
|
PTW32_DLLPORT int PTW32_CDECL sem_getvalue (sem_t * sem,
|
||||||
|
int * sval);
|
||||||
|
|
||||||
|
__PTW32_END_C_DECLS
|
||||||
|
|
||||||
|
#endif /* !SEMAPHORE_H */
|
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686.dll
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686.dll
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686.lib
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686d.dll
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686d.dll
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686d.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686d.lib
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686d.pdb
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-i686d.pdb
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64.dll
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64.dll
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64.lib
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64d.dll
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64d.dll
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64d.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64d.lib
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64d.pdb
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/shared/pthreadVC2-x64d.pdb
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-i686.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-i686.lib
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-i686d.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-i686d.lib
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-x64.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-x64.lib
Normal file
Binary file not shown.
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-x64d.lib
Normal file
BIN
etc/deps/pthreads4w/lib/msvc-v141/static/libpthreadVC2-x64d.lib
Normal file
Binary file not shown.
@ -1,183 +0,0 @@
|
|||||||
/*
|
|
||||||
* Module: sched.h
|
|
||||||
*
|
|
||||||
* Purpose:
|
|
||||||
* Provides an implementation of POSIX realtime extensions
|
|
||||||
* as defined in
|
|
||||||
*
|
|
||||||
* POSIX 1003.1b-1993 (POSIX.1b)
|
|
||||||
*
|
|
||||||
* --------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Pthreads-win32 - POSIX Threads Library for Win32
|
|
||||||
* Copyright(C) 1998 John E. Bossom
|
|
||||||
* Copyright(C) 1999,2005 Pthreads-win32 contributors
|
|
||||||
*
|
|
||||||
* Contact Email: rpj@callisto.canberra.edu.au
|
|
||||||
*
|
|
||||||
* The current list of contributors is contained
|
|
||||||
* in the file CONTRIBUTORS included with the source
|
|
||||||
* code distribution. The list can also be seen at the
|
|
||||||
* following World Wide Web location:
|
|
||||||
* http://sources.redhat.com/pthreads-win32/contributors.html
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library in the file COPYING.LIB;
|
|
||||||
* if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
|
||||||
#if !defined(_SCHED_H)
|
|
||||||
#define _SCHED_H
|
|
||||||
|
|
||||||
#undef PTW32_SCHED_LEVEL
|
|
||||||
|
|
||||||
#if defined(_POSIX_SOURCE)
|
|
||||||
#define PTW32_SCHED_LEVEL 0
|
|
||||||
/* Early POSIX */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
|
|
||||||
#undef PTW32_SCHED_LEVEL
|
|
||||||
#define PTW32_SCHED_LEVEL 1
|
|
||||||
/* Include 1b, 1c and 1d */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(INCLUDE_NP)
|
|
||||||
#undef PTW32_SCHED_LEVEL
|
|
||||||
#define PTW32_SCHED_LEVEL 2
|
|
||||||
/* Include Non-Portable extensions */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PTW32_SCHED_LEVEL_MAX 3
|
|
||||||
|
|
||||||
#if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_SCHED_LEVEL)
|
|
||||||
#define PTW32_SCHED_LEVEL PTW32_SCHED_LEVEL_MAX
|
|
||||||
/* Include everything */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(__GNUC__) && !defined(__declspec)
|
|
||||||
# error Please upgrade your GNU compiler to one that supports __declspec.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When building the library, you should define PTW32_BUILD so that
|
|
||||||
* the variables/functions are exported correctly. When using the library,
|
|
||||||
* do NOT define PTW32_BUILD, and then the variables/functions will
|
|
||||||
* be imported correctly.
|
|
||||||
*/
|
|
||||||
#if !defined(PTW32_STATIC_LIB)
|
|
||||||
# if defined(PTW32_BUILD)
|
|
||||||
# define PTW32_DLLPORT __declspec (dllexport)
|
|
||||||
# else
|
|
||||||
# define PTW32_DLLPORT __declspec (dllimport)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define PTW32_DLLPORT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is a duplicate of what is in the autoconf config.h,
|
|
||||||
* which is only used when building the pthread-win32 libraries.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(PTW32_CONFIG_H)
|
|
||||||
# if defined(WINCE)
|
|
||||||
# define NEED_ERRNO
|
|
||||||
# define NEED_SEM
|
|
||||||
# endif
|
|
||||||
# if defined(__MINGW64__)
|
|
||||||
# define HAVE_STRUCT_TIMESPEC
|
|
||||||
# define HAVE_MODE_T
|
|
||||||
# elif defined(_UWIN) || defined(__MINGW32__)
|
|
||||||
# define HAVE_MODE_T
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX
|
|
||||||
#if defined(NEED_ERRNO)
|
|
||||||
#include "need_errno.h"
|
|
||||||
#else
|
|
||||||
#include <errno.h>
|
|
||||||
#endif
|
|
||||||
#endif /* PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX */
|
|
||||||
|
|
||||||
#if (defined(__MINGW64__) || defined(__MINGW32__)) || defined(_UWIN)
|
|
||||||
# if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX
|
|
||||||
/* For pid_t */
|
|
||||||
# include <sys/types.h>
|
|
||||||
/* Required by Unix 98 */
|
|
||||||
# include <time.h>
|
|
||||||
# else
|
|
||||||
typedef int pid_t;
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
typedef int pid_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Thread scheduling policies */
|
|
||||||
|
|
||||||
enum {
|
|
||||||
SCHED_OTHER = 0,
|
|
||||||
SCHED_FIFO,
|
|
||||||
SCHED_RR,
|
|
||||||
SCHED_MIN = SCHED_OTHER,
|
|
||||||
SCHED_MAX = SCHED_RR
|
|
||||||
};
|
|
||||||
|
|
||||||
struct sched_param {
|
|
||||||
int sched_priority;
|
|
||||||
};
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sched_yield (void);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sched_get_priority_min (int policy);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sched_get_priority_max (int policy);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sched_setscheduler (pid_t pid, int policy);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sched_getscheduler (pid_t pid);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note that this macro returns ENOTSUP rather than
|
|
||||||
* ENOSYS as might be expected. However, returning ENOSYS
|
|
||||||
* should mean that sched_get_priority_{min,max} are
|
|
||||||
* not implemented as well as sched_rr_get_interval.
|
|
||||||
* This is not the case, since we just don't support
|
|
||||||
* round-robin scheduling. Therefore I have chosen to
|
|
||||||
* return the same value as sched_setscheduler when
|
|
||||||
* SCHED_RR is passed to it.
|
|
||||||
*/
|
|
||||||
#define sched_rr_get_interval(_pid, _interval) \
|
|
||||||
( errno = ENOTSUP, (int) -1 )
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
} /* End of extern "C" */
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#undef PTW32_SCHED_LEVEL
|
|
||||||
#undef PTW32_SCHED_LEVEL_MAX
|
|
||||||
|
|
||||||
#endif /* !_SCHED_H */
|
|
||||||
|
|
@ -1,169 +0,0 @@
|
|||||||
/*
|
|
||||||
* Module: semaphore.h
|
|
||||||
*
|
|
||||||
* Purpose:
|
|
||||||
* Semaphores aren't actually part of the PThreads standard.
|
|
||||||
* They are defined by the POSIX Standard:
|
|
||||||
*
|
|
||||||
* POSIX 1003.1b-1993 (POSIX.1b)
|
|
||||||
*
|
|
||||||
* --------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Pthreads-win32 - POSIX Threads Library for Win32
|
|
||||||
* Copyright(C) 1998 John E. Bossom
|
|
||||||
* Copyright(C) 1999,2005 Pthreads-win32 contributors
|
|
||||||
*
|
|
||||||
* Contact Email: rpj@callisto.canberra.edu.au
|
|
||||||
*
|
|
||||||
* The current list of contributors is contained
|
|
||||||
* in the file CONTRIBUTORS included with the source
|
|
||||||
* code distribution. The list can also be seen at the
|
|
||||||
* following World Wide Web location:
|
|
||||||
* http://sources.redhat.com/pthreads-win32/contributors.html
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library in the file COPYING.LIB;
|
|
||||||
* if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
|
||||||
#if !defined( SEMAPHORE_H )
|
|
||||||
#define SEMAPHORE_H
|
|
||||||
|
|
||||||
#undef PTW32_SEMAPHORE_LEVEL
|
|
||||||
|
|
||||||
#if defined(_POSIX_SOURCE)
|
|
||||||
#define PTW32_SEMAPHORE_LEVEL 0
|
|
||||||
/* Early POSIX */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
|
|
||||||
#undef PTW32_SEMAPHORE_LEVEL
|
|
||||||
#define PTW32_SEMAPHORE_LEVEL 1
|
|
||||||
/* Include 1b, 1c and 1d */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(INCLUDE_NP)
|
|
||||||
#undef PTW32_SEMAPHORE_LEVEL
|
|
||||||
#define PTW32_SEMAPHORE_LEVEL 2
|
|
||||||
/* Include Non-Portable extensions */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PTW32_SEMAPHORE_LEVEL_MAX 3
|
|
||||||
|
|
||||||
#if !defined(PTW32_SEMAPHORE_LEVEL)
|
|
||||||
#define PTW32_SEMAPHORE_LEVEL PTW32_SEMAPHORE_LEVEL_MAX
|
|
||||||
/* Include everything */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__GNUC__) && ! defined (__declspec)
|
|
||||||
# error Please upgrade your GNU compiler to one that supports __declspec.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When building the library, you should define PTW32_BUILD so that
|
|
||||||
* the variables/functions are exported correctly. When using the library,
|
|
||||||
* do NOT define PTW32_BUILD, and then the variables/functions will
|
|
||||||
* be imported correctly.
|
|
||||||
*/
|
|
||||||
#if !defined(PTW32_STATIC_LIB)
|
|
||||||
# if defined(PTW32_BUILD)
|
|
||||||
# define PTW32_DLLPORT __declspec (dllexport)
|
|
||||||
# else
|
|
||||||
# define PTW32_DLLPORT __declspec (dllimport)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define PTW32_DLLPORT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is a duplicate of what is in the autoconf config.h,
|
|
||||||
* which is only used when building the pthread-win32 libraries.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(PTW32_CONFIG_H)
|
|
||||||
# if defined(WINCE)
|
|
||||||
# define NEED_ERRNO
|
|
||||||
# define NEED_SEM
|
|
||||||
# endif
|
|
||||||
# if defined(__MINGW64__)
|
|
||||||
# define HAVE_STRUCT_TIMESPEC
|
|
||||||
# define HAVE_MODE_T
|
|
||||||
# elif defined(_UWIN) || defined(__MINGW32__)
|
|
||||||
# define HAVE_MODE_T
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX
|
|
||||||
#if defined(NEED_ERRNO)
|
|
||||||
#include "need_errno.h"
|
|
||||||
#else
|
|
||||||
#include <errno.h>
|
|
||||||
#endif
|
|
||||||
#endif /* PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX */
|
|
||||||
|
|
||||||
#define _POSIX_SEMAPHORES
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#if !defined(HAVE_MODE_T)
|
|
||||||
typedef unsigned int mode_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct sem_t_ * sem_t;
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_init (sem_t * sem,
|
|
||||||
int pshared,
|
|
||||||
unsigned int value);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_destroy (sem_t * sem);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_trywait (sem_t * sem);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_wait (sem_t * sem);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_timedwait (sem_t * sem,
|
|
||||||
const struct timespec * abstime);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_post (sem_t * sem);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_post_multiple (sem_t * sem,
|
|
||||||
int count);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_open (const char * name,
|
|
||||||
int oflag,
|
|
||||||
mode_t mode,
|
|
||||||
unsigned int value);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_close (sem_t * sem);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_unlink (const char * name);
|
|
||||||
|
|
||||||
PTW32_DLLPORT int __cdecl sem_getvalue (sem_t * sem,
|
|
||||||
int * sval);
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
} /* End of extern "C" */
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#undef PTW32_SEMAPHORE_LEVEL
|
|
||||||
#undef PTW32_SEMAPHORE_LEVEL_MAX
|
|
||||||
|
|
||||||
#endif /* !SEMAPHORE_H */
|
|
Binary file not shown.
@ -226,7 +226,8 @@
|
|||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/debug/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>libpthreadVC2-i686d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -256,7 +257,8 @@
|
|||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/static/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>libpthreadVC2-i686.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SSE2|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SSE2|Win32'">
|
||||||
@ -286,7 +288,8 @@
|
|||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/static/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>libpthreadVC2-i686.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_DLL|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_DLL|Win32'">
|
||||||
@ -316,7 +319,6 @@
|
|||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.1</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/shared/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -334,8 +336,8 @@
|
|||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/debug/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>pthreadVC2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>libpthreadVC2-x64d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -365,8 +367,8 @@
|
|||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/static/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>pthreadVC2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>libpthreadVC2-x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SSE2|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SSE2|x64'">
|
||||||
@ -396,8 +398,8 @@
|
|||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/static/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>pthreadVC2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>libpthreadVC2-x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_DLL|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_DLL|x64'">
|
||||||
@ -427,8 +429,6 @@
|
|||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.2</MinimumRequiredVersion>
|
||||||
<AdditionalLibraryDirectories>$(ProjectDir)../etc/deps/pthreadw32/lib/$(PlatformToolset)/shared/$(PlatformTarget);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>pthreadVC2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
@ -203,7 +203,7 @@
|
|||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<DisableSpecificWarnings>4706;4204</DisableSpecificWarnings>
|
<DisableSpecificWarnings>4706;4204</DisableSpecificWarnings>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
|
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
|
||||||
@ -222,7 +222,7 @@
|
|||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
@ -254,7 +254,7 @@
|
|||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
@ -286,7 +286,7 @@
|
|||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_DLL;SLUNKCRYPT_SHARED=1;SLUNKCRYPT_EXPORT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_DLL;SLUNKCRYPT_SHARED=1;SLUNKCRYPT_EXPORT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
@ -305,6 +305,8 @@
|
|||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\shared;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>pthreadVC2-i686.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -314,7 +316,7 @@
|
|||||||
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<DisableSpecificWarnings>4706;4204</DisableSpecificWarnings>
|
<DisableSpecificWarnings>4706;4204</DisableSpecificWarnings>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
|
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
|
||||||
@ -333,7 +335,7 @@
|
|||||||
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
@ -365,7 +367,7 @@
|
|||||||
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
@ -397,7 +399,7 @@
|
|||||||
<PreprocessorDefinitions>NDEBUG;_DLL;SLUNKCRYPT_SHARED=1;SLUNKCRYPT_EXPORT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_DLL;SLUNKCRYPT_SHARED=1;SLUNKCRYPT_EXPORT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreadw32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)..\etc\deps\pthreads4w\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
@ -416,6 +418,8 @@
|
|||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<AdditionalLibraryDirectories>$(ProjectDir)..\etc\deps\pthreads4w\lib\msvc-v141\shared;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>pthreadVC2-x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
Loading…
Reference in New Issue
Block a user