7b2fb669ec
Merge remote-tracking branch 'xiaoqiang/7.0' into PSI-7.0
2025-03-03 17:14:20 +01:00
b53505d339
Merge branch '7.0' into PSI-7.0
2024-12-05 16:58:15 +01:00
Chris Johns
594e5ee9db
rtems: Set the name of EPICS threads so RTEMS commands report the name
...
Use the NP POSIX call pthread_setname_np to set the POSIX thread name.
2024-10-31 16:21:49 -05:00
Chris Johns
83cbf8a4c7
freebsd: Add support for x86 and amd64 builds
...
Use the OS compiler, ie cc and c++.
2024-10-31 16:16:45 -05:00
Michael Davidsaver
152d306ad8
avoid UB with self pthread_join()
2024-10-02 09:22:00 -05:00
Michael Davidsaver
012139638d
posix: epicsThreadCreateOpt() avoid leak of joinable on EPERM
...
On a system where RT priorities have been probed.
When creating a joinable thread, but still fails
with EPERM, the first epicsThreadOSD was leaked.
2024-10-02 09:22:00 -05:00
Érico Nogueira
8045770751
libCom: don't use std::unexpected in epicsThread.
...
Besides being deprecated in C++11 and removed in C++17, the intended use
case for this was always wrong, since std::unexpected() is called by the
C++ runtime when a function throws an exception that was not specified
in its "dynamic exception specification", which is different from an
exception thrown by user code which wasn't caught [1,2]. Using abort()
keeps the same behavior, but with the intended semantics.
We don't use std::abort() to simplify backwards compatibility.
[1] https://github.com/epics-base/epics-base/issues/343
[2] https://en.cppreference.com/w/cpp/error/unexpected
2024-09-09 07:27:32 -07:00
4af01ed26a
Merge branch '7.0' into PSI-7.0
2024-09-06 14:55:12 +02:00
Freddie Akeroyd
dd154180bf
Avoid isnan/isinf redefine in c++ on VS2013 and above
2024-09-04 09:48:03 -05:00
Freddie Akeroyd
574fe116fc
protect isnan/isinf define on c++
2024-09-04 09:48:03 -05:00
d67036fcc0
Merge branch 'aliases' into PSI-7.0
2024-08-26 16:37:57 +02:00
Michael Davidsaver
057eb87101
readline: only keep history for interactive session
2024-08-21 09:36:39 -05:00
5930e8e2e4
time_t has 64 bit o 64 bit architectures
2024-08-09 11:44:26 +02:00
87d492bffd
Merge branch '7.0' into PSI-7.0
2024-04-30 14:40:00 +02:00
Freddie Akeroyd
5dfc6caf3c
Accept should return SOCKET rather than int
2024-03-06 09:48:26 -06:00
Freddie Akeroyd
4720b61c1f
Move call to setThreadName()
...
The call to setThreadName() is moved to avoid a race condition that
can happen with very short lived processes. If the process terminates
very quickly e.g. is a google test runner or the msi.exe command
called from a Makefile during a build, then very occasionally a
crash can occur during process termination if setThreadName() when called
from the newly created thread. This looks to be becauae the DLL it is
trying to call gets unloaded between it getting a handle to the DLL
and making the call. Moving the setThreadName() call to the creating
thread avoids this problem. The issue was only ever seen with statically
linked epics executables, I am unsure if the way a DLL based epics
program unloads might avoid this, or just make it less likely but
still possible. As mentioned above, the issue will only ever occur
to threads that are created during process termination and so would
not affect running IOCs
2024-02-21 09:59:36 -06:00
Michael Davidsaver
07cbf00187
posix: warn on epicsSocketCreate() without osiSockAttach()
2023-12-22 10:26:28 -08:00
Michael Davidsaver
a7a56912eb
default/epicsMessageQueue: initialize threadNode
2023-12-22 10:26:28 -08:00
Michael Davidsaver
fe4a32e425
default/epicsMessageQueue: avoid volatile flag
...
Only one place where eventSent was accessed
without locking. Move this load earlier.
2023-12-22 10:26:28 -08:00
Andrew Johnson
2e6fd505d2
Use epicsSnprintf() for old MSVC compilers
2023-12-14 11:31:36 -06:00
Andrew Johnson
5ecf7d18a8
Clean up Clang 15 sprintf() warnings in libcom and ca
2023-12-13 13:34:25 -06:00
Michael Davidsaver
db2482117d
rationalize osdMutex
...
Avoids split allocation.
Eliminates special case free-list.
win32: eliminate pre-XP
rtems-score: eliminate non-fast
2023-12-04 11:04:51 +01:00
Michael Davidsaver
d31ba6ade3
doc
2023-12-01 16:35:55 +01:00
JJL772
de61390049
Com: Make STATIC_ASSERT macro typedefs unique
2023-12-01 16:35:29 +01:00
Michael Davidsaver
cb6442da71
epicsThreadShow() zombies
...
Flag when the thread has returned, but the tracking
struct is still around. eg. in need of joining.
2023-12-01 15:01:10 +01:00
Érico Nogueira
49b9573f3a
libCom: detect support for backtrace() with __has_include.
...
This is necessary in order to build epics-base with musl libc, for
example, and any other C libraries which don't include this
functionality. In order to not regress builds with older compilers, we
still support the uclibc check. Furthermore, it has been checked that
uclibc-ng (the maintained version of uclibc) doesn't install the
<execinfo.h> header when the functionality is disabled [1] [2].
To avoid repetition, we don't define HAS_EXECINFO to 0 when it is not
available.
[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/Makefile.in?id=cdb07d2cd52af39feb425e6d36c02b30916b9f0a#n224
[2] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/Makefile.in?id=cdb07d2cd52af39feb425e6d36c02b30916b9f0a#n277
2023-12-01 15:01:01 +01:00
1d3a2defa2
Merge 7.0 commit 'ca9c95' into PSI-7.0
2023-12-01 14:21:07 +01:00
Michael Davidsaver
b41787b6bf
doc
2023-10-22 17:42:36 -07:00
JJL772
395015aac4
Com: Make STATIC_ASSERT macro typedefs unique
2023-10-22 17:42:36 -07:00
Michael Davidsaver
45b3bce515
epicsThreadShow() zombies
...
Flag when the thread has returned, but the tracking
struct is still around. eg. in need of joining.
2023-09-22 08:19:25 -07:00
Érico Nogueira
7c4a21eab4
libCom: detect support for backtrace() with __has_include.
...
This is necessary in order to build epics-base with musl libc, for
example, and any other C libraries which don't include this
functionality. In order to not regress builds with older compilers, we
still support the uclibc check. Furthermore, it has been checked that
uclibc-ng (the maintained version of uclibc) doesn't install the
<execinfo.h> header when the functionality is disabled [1] [2].
To avoid repetition, we don't define HAS_EXECINFO to 0 when it is not
available.
[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/Makefile.in?id=cdb07d2cd52af39feb425e6d36c02b30916b9f0a#n224
[2] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/Makefile.in?id=cdb07d2cd52af39feb425e6d36c02b30916b9f0a#n277
2023-09-21 08:18:49 -07:00
Michael Davidsaver
1595ed8860
quieting clang-tidy, non-functional changes
...
Changes to syntax which should not effect generated code
2023-08-28 14:17:00 +02:00
73f80cced9
Merge branch '7.0' into PSI-7.0
2023-08-21 14:14:16 +02:00
Ralph Lange
6636b4b9e7
libCom: check calloc() failure in RTEMS-posix/osdMessageQueue.c
2023-07-22 08:35:59 -07:00
Ralph Lange
b51d1de283
libCom: fix possible memory leak in RTEMS-posix/osdMessageQueue.c
...
found by static code analysis (cppcheck @ sonarqube)
2023-07-22 08:35:59 -07:00
5b058d7d27
Merge branch '7.0' into PSI-7.0
2023-06-22 16:36:32 +02:00
Michael Davidsaver
42604fc794
Allow clang with GCC compilerSpecific.h
...
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / CentOS-7 (push) Failing after 1s
Base / Fedora-33 (push) Failing after 2s
Base / Fedora-latest (push) Failing after 1s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Makes it easier to run clang derivative analysis tools
on builds configured for GCC.
2023-06-13 08:47:13 -07:00
Xiaoqiang Wang
8e8fb81062
explicit include SAL header to help clang-cl compiler
2023-05-13 21:34:55 +02:00
Freddie Akeroyd
f56412d6a5
WIN32: use FlsAlloc() to cleanup epicsThreadOSD
...
Adjust macros for compiling for older MSVC/Win SDK versions
Try to cover missing fibres include in 7.0 SDK
Support Windows XP and above.
Also removed explicit define of _WIN32_WINNT in code if it has not
been passed on compile line. This is possibly a matter for
further discussion
2023-05-01 09:03:52 -07:00
Eva Lott
b878295d06
Added the new annotation EPICS_PRINTF_FMT
2023-05-01 09:03:45 -07:00
f41f11c7f6
fix compiler warning on 32 bit systems
2023-04-28 09:35:49 -05:00
Michael Davidsaver
5507646ce7
posix: optimize epicsThreadOnce()
...
Use atomic ops to short circuit when already initialized
2023-04-18 09:51:24 -05:00
d3dc2afd8d
Merge branch '7.0' (after codeathon 2023) into PSI-7.0
2023-03-29 13:36:52 +02:00
Michael Davidsaver
e22d74310b
RTEMS: ensure epicsThreadMustJoin() short-circuits
2023-03-10 09:52:08 +00:00
64f67d036b
fix epicsThreadSleepQuantum not to fail epicsTimeTest because of unrealistically high clock resolution
2023-02-28 16:08:22 +01:00
5db310813f
Merge branch '7.0' into PSI-7.0
2023-02-15 16:54:36 +01:00
Andrew Johnson
c2364d9d1c
Add license header to new epicsReadlinePvt.h
2022-12-28 12:42:51 -06:00
Michael Davidsaver
166267a32f
ringPointerTest in thread
2022-12-20 20:12:04 -08:00
Michael Davidsaver
07ffc1ffae
Com: introduce epicsReadlinePvt.h
...
Helping IDEs understand gnuReadline.c and osdReadline.c
2022-12-20 20:11:45 -08:00
25a2258663
make NTP driver more robust against strange time stamps
2022-09-12 17:31:25 +02:00