65 Commits

Author SHA1 Message Date
Simon Giesecke
a83c57d0bb Problem: identifiers not conformant with naming convention
Solution: fix identifier names
2019-12-08 15:24:48 +01:00
Simon Giesecke
7f43e7ff75 Problem: build targeting Windows XP is broken
Solution: fix build issues
2019-10-19 14:04:55 +02:00
Simon Giesecke
e9b67001dd
Problem: invalid syntax for calling convention on function pointer
Solution: fix syntax and formatting, remove C-ism for defining struct
2019-08-19 10:13:11 +02:00
thomas
64d58c432c relicense add 2019-08-10 11:15:26 -04:00
thomas
87b81926aa no void pointer to store function pointer 2019-08-10 10:43:28 -04:00
Luca Boccassi
4d5e97adac Problem: formatting errors introduced by #3601
Solution: fix them with make clang-format-diff
2019-07-30 13:43:48 +01:00
Jacques Germishuys
b3123a2fd1 Problem: __try and __except isn't universally supported on windows
Solution: Manually push/pop an exception registration record.
Only set the thread name with a debugger present
2019-07-30 11:31:22 +01:00
Luca Boccassi
3c06ec118f Problem: formatting errors
Solution: apply clang-format-diff
2019-06-11 10:31:15 +01:00
Philippe Bernardino Leite
8a02f70706
pthread_equal to compare thread ids
I am trying to port ZeroMQ to z/OS USS and I faced several problems. One of them is this function "is_current_thread" trying to compare two thread ids with operator "==". I've changed the code to use the official function "pthread_equal" to compare thread ids and now it's working fine.
2019-06-10 22:10:01 -03:00
Romain Moret
5b07a1199c Fix compiler error 2019-05-21 15:07:00 +02:00
Romain Moret
27005cc1ae Implement thread name on windows, cleanup thread naming internals 2019-05-21 12:12:19 +02:00
Luca Boccassi
c8d039a3c7 Problem: unused variable warning in thread_start on !Linux
Solution: use LIBZMQ_UNUSED
2019-02-17 20:15:59 +00:00
Luca Boccassi
de76789ac6 Problem: new thread naming breaks build on !Linux and overwrites prefix
Solution: use the thread class function rather than one of the pthread
functions, and take into account the thread prefix context option
2019-02-17 20:15:59 +00:00
Kymeta Corp
484374f2b6 Problem: Threads don't have names which complicates debugging.
Solution:
1. Use optional name parameter in thread_t::start for operating
systems that have thread names.
2. Give start_thread() an optional name parameter for the
thread's name. If this parameter is set, it will be appended to "0MQ:".
If not set, "0MQ" will be used as the thread's name.
3. Give epoll the ability to name its thread. Then use this in
io_thread and reaper to name them.
2019-02-17 20:15:33 +00:00
ilue
e22cd678b6
Fix #3162 2018-06-12 11:10:03 +08:00
Simon Giesecke
7c2d1c1824 Problem: magic literals for UCHAR_MAX
Solution: use UCHAR_MAX constant instead
2018-05-28 18:46:50 +02:00
Simon Giesecke
e3c73d9881 Problem: inconsistent naming style for private data members, conflicts with naming of local variables and member functions
Solution: apply and check _lower_case naming style for private data members
2018-05-27 13:24:07 +02:00
Simon Giesecke
c581f43c97 Problem: parameter naming style inconsistent
Solution: define and apply parameter naming style: lower_case_
2018-05-26 09:34:44 +02:00
Manuel Segura
4726f7262d Pull request to merge porting to WindRiver VxWorks 6.x (#2966)
* Problem: Still need to port over more files to VxWorks 6.x

Solution: Port more files to VxWorks 6.x

* Problem: Need to port over remaining files to VxWorks 6.x. Also remove POSIX thread dependency for VxWorks (because of priority inversion problem in POSIX mutexes with VxWorks 6.x processes)

Solution: Port over remaining files to VxWorks 6.x. Also removed POSIX thread dependency for VxWorks

* Problem: Needed to modify TCP, UDP, TIPC classes with #ifdefs to be compatible with VxWorks 6.x.

Solution:  Modify TCP, UDP, TIPC classes with #ifdefs to be compatible with VxWorks 6.x
2018-03-10 11:03:02 +00:00
Simon Giesecke
e650240580 Problem: data race w.r.t. poll_t::stopping
Solution: remove stopping, stop on thread-safe conditions; add
additional checks for correct thread-safe usage
2018-02-12 14:41:53 +01:00
Simon Giesecke
7ea924c763 Problem: segfault on thread_t::stop if thread was never started
Solution: add started flag
2018-02-11 17:25:36 +00:00
sigiesec
41f459e1dc Problem: formatting inconsistent
Solution: applied clang-format
2018-02-02 15:47:43 +01:00
f18m
2aa0e6fd4d Change ZMQ_THREAD_AFFINITY to ZMQ_THREAD_AFFINITY_CPU_ADD/ZMQ_THREAD_AFFINITY_CPU_REMOVE. Avoid prefix thread names when no prefix was set. 2017-10-25 09:55:47 +02:00
f18m
bfbb4ff2e9 Background threads enhancements (#2778)
* Background thread scheduling 

- add ZMQ_THREAD_AFFINITY ctx option; set all thread scheduling options
from the context of the secondary thread instead of using the main
process thread context!
- change ZMQ_THREAD_PRIORITY to support setting NICE of the background
thread when using SCHED_OTHER
2017-10-16 12:29:03 +01:00
Christopher Hall
997825bdf1 add __FreeBSD__ to ifdefs
On FreeBSD the sysmbol __FreeBSD_kernel__ is only defines if a
specific param.h file is included, unlike Debian/kFreeBSD where this
symbol is always defined.  So also compile the FreeBSD specific code
if __FreeBSD__ is defined for FreeBSD 11 & 12 compatibility.

Signed-off-by: Christopher Hall <hsw@ms2.hinet.net>
2017-10-03 15:30:42 +08:00
Jim Klimov
40a3b0746f Problem: cosmetic setThreadName() can be fatal
Solution: do not assert() the values returned; if we failed to set the thread name - we just have harder debugging, not flawed production conditions.
Closes github issue #2679

Signed-off-by: Jim Klimov <EvgenyKlimov@eaton.com>
2017-08-25 15:30:03 +02:00
Luca Boccassi
092ad50b0c Problem: I can't refactor
Solution: fix ifdef check for pthread_setname
2017-03-12 13:11:11 +00:00
Luca Boccassi
3ab4796c5a Problem: ZMQ background threads are unnamed
Solution: use pthread API to set the name. For now call every thread
"ZMQ b/g thread". Would be nice to number the I/O threads and name
explicitly the reaper thread, but in reality a bit of internal API
churn would be necessary, so perhaps it's not worth it.
This is useful when debugging a process with many threads.
2017-03-12 00:46:15 +00:00
Luca Boccassi
43f3cc5c78 Problem: kFreeBSD does not implement pthread_setschedparam
Solution: do not fail on kFreeBSD if this feature is not available
at runtime.
Thanks Steven Chamberlain <steven@pyro.eu.org> for the patch!
2016-11-05 18:14:22 +00:00
evoskuil
2b798e486a Problem: name conflicts from windows.h, draft API declared in pch. 2016-05-13 20:41:26 -07:00
hitstergtd
e946b0d1a6 Problem: scheduling parameters unused on OSX
Solution:
Mark them with LIBZMQ_UNUSED macro as per convention; although in future the
appropriate pthread code should be updated to support thread scheduling
priorities (for Mac OS X, et. al.)
2016-05-12 16:36:59 +01:00
Yuval Langer
37a4a4075e Fix NetBSD thread scheduling problem.
Defining thread priority for SCHED_OTHER is implementation defined.
Some platforms like NetBSD cannot reassign it as they are dynamic.

<http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_getschedparam.html>

Credit goes to <kamil@netbsd.org> and <riastradh@netbsd.org> for finding this
solution.
2016-04-03 02:34:04 +03:00
Osiris
4a5af9d58b Problem: Precompiled headers not being used
Solution: Phase I - make precompiled.hpp be first file included in every source file
2016-02-18 10:56:52 -06:00
OBATA Akio
7cd60fae59 Change to detect POSIX Thread priority support properly 2016-02-07 16:43:46 +09:00
Constantin Rack
a539b0c6e8 Problem: copyright year is still 2015
Solution: update to 2016
2016-01-28 15:07:31 +01:00
Laszlo Boszormenyi (GCS)
be387d5e56 Last bits of Hurd support 2016-01-20 07:18:22 +01:00
Joe Eli McIlvain
61217a2686 Problem: Source files contain mixed tabs and spaces.
Solution: Convert to spaces and remove trailing whitespace in these files.
2015-08-20 07:46:34 -07:00
Pieter Hintjens
a07244cda2 Merge pull request #1414 from hintjens/master
Problem: source file headers are somewhat confusing about LGPLv3
2015-06-02 23:40:52 +02:00
Pieter Hintjens
8620c3e032 Problem: source file headers are somewhat confusing about LGPLv3
Of course people still "can" distributed the sources under the
LGPLv3. However we provide COPYING.LESSER with additional grants.

Solution: specify these grants in the header of each source file.
2015-06-02 22:33:55 +02:00
ALEKSANDR MELNIKOV
1eb8e2a69f HPUX build and gmake check issues solution (#1412) 2015-06-02 20:17:15 +06:00
Pieter Hintjens
94d9a4ffdf Problem: copyright statements are out of date
Solution: update for 2015

Fixes #1320
2015-01-22 10:32:37 +01:00
Ewen McNeill
501666d07e z/OS: Skip pthread_{get,set}schedparam
Updated:
    src/thread.cpp: On older z/OS UNIX System Services,
        pthread_{get,set}schedparam is not present (searching the
        Internet suggests it may be present in later version than
        the one being used for z/OS UNIX System Services porting).

        Make zmq::thread_t::setSchedulingParameters() a no-op on
        z/OS UNIX System Services.

    NOTE: pthread_{get,set}schedparam appear to have been introduced
    by POSIX.1-2001 or IEEE 1003.1-2004 so may not be universally
    available, and thus more platforms may need this "no-op" treatment.
2014-07-24 13:54:21 +12:00
Joel Lauener
219310b4f0 Thread scheduling parameters: Use ZMQ context options instead of
environment variables.
2014-07-02 14:41:21 +02:00
Pieter Hintjens
2524e26893 Code cleanups 2014-06-25 12:47:39 +02:00
Joel Lauener
112ef6f172 Allow change of pthread priority
Rationale: In a real-time environment it is sometime mandatory to tune
threads priority and scheduling policy. This is required by our users
who mixes real-time and server threads within
the same process. It's not planned to support this on non-pthread
platforms (e.g. Windows).
2014-06-25 09:51:10 +02:00
Pieter Hintjens
45b593e7ed Whitespace fix 2014-02-03 11:03:59 +01:00
Pieter Hintjens
b3b9e046ee Updated copyright statements for 2014 2014-01-02 12:00:57 +01:00
Pieter Hintjens
f0f16505e5 Removed corporate advertisements from source file headers
Copyrights had become ads for Sustrik's corporate sponsors, going against the original
agreement to share copyrights with the community (that agreement was: one line stating
iMatix copyright + one reference to AUTHORS file). The proliferation of corporate ads
is also unfair to the many individual authors. I've removed ALL corporate title from
the source files so the copyright statements can now be centralized in AUTHORS and
source files can be properly updated on an annual basis.
2013-03-12 13:24:57 +01:00
Sébastien Rombauts
41d79bc19e Windows CE support : using standard _WIN32_WCE flag instead of WINCE
- when compiling for Windows CE, a C++ project must define the preprocessor definitions: UNDER_CE=$(CEVersion),_WIN32_WCE=$(CEVersion)
- choosing the "_WIN32_CE" form for uniformization with "_WIN32" and "_WIN32_WINNT" already used in libzmq (boost is using both forms)
- see http://msdn.microsoft.com/en-us/library/ee479161(v=winembedded.60).aspx
2013-02-19 16:49:23 +01:00
boris@boressoft.ru
318ba8836f Add WinCE support.
* Added two new files: errno.hpp and errno.cpp. They are required to use errno functionality on WM.
* zmq.cpp, msg.h: removed inclusion of errno.h because it is included in zmq.h that is also included by .cpp.
* windows.hpp: process.h is included only for desktop builds.
* thread.cpp: on CE CreateThread is used instead of __beginthreadex
* socket_base.cpp, clock.cpp: on CE include cmnintrin.h instead on intrin.h
* signaler.cpp: on Windows should use special macro around event name (for unicode builds)
* err.hpp: make it include errno.hpp (my file) instead on errno.h when building for CE
* err.cpp: use FormatMessage when building for CE (because CE does not have ANSI API functions)
* zmq.h: do not include errno.h whe building for CE
* libzmq.vcproj: add tro new files
2012-03-14 19:12:28 +04:00