Commit Graph

707 Commits

Author SHA1 Message Date
12144fe267 Merge remote-tracking branch 'github/RuntestArchs' into PSI-7.0 2025-03-04 17:49:04 +01:00
23521e0a08 Merge remote-tracking branch 'github/fdManager_using_poll' into PSI-7.0 2025-03-03 17:20:13 +01:00
55791ef470 Merge branch 7.0.9 into PSI-7.0 2025-03-03 17:19:23 +01:00
7b2fb669ec Merge remote-tracking branch 'xiaoqiang/7.0' into PSI-7.0 2025-03-03 17:14:20 +01:00
312a602952 support CROSS_COMPILER_RUNTESTS_ARCHS other than RTEMS 2025-03-03 14:11:45 +01:00
Michael Davidsaver
7384351181 clarify cantProceed() message 2025-02-18 07:30:51 -08:00
9c1334ae15 silence Codacy warning 2025-02-10 08:47:59 +01:00
Michael Davidsaver
9481deacb0 fdManagerTest: quiet codacy warnings 2025-02-10 08:47:59 +01:00
8f1a3888c6 cleanup coding style in fdManager 2025-02-10 08:47:59 +01:00
c9183b5241 fdManager: filter poll flags for Window's sake 2025-02-10 08:47:59 +01:00
c3f57ee818 make fdManagerPrivate::fdReg volatile to avoid codacy warning 2025-02-10 08:47:59 +01:00
27f4261dfb use smart pointers in fdManager 2025-02-10 08:47:59 +01:00
5eb9997791 fix codacy warning: make fdManagerPrivate constructor explicit 2025-02-10 08:47:59 +01:00
bfc2f832ec fdManager uses poll() on Darwin too 2025-02-10 08:47:59 +01:00
f09b235fce Keep implementation details of fdManager out of header file 2025-02-10 08:47:59 +01:00
ece031c88b fdManager use std::vector 2025-02-10 08:47:59 +01:00
cbbbd67843 fdManager uses poll() on Windows and RTEMS too
RTEMS needs to use the "new" network stack
Windows has poll since Vista
Don't use poll on cygwin: it emulates poll() using select().
2025-02-10 08:47:59 +01:00
57c0295024 fdManager changed to use poll()
The implementation using select() limits file desciptors to FD_SETSIZE,
typically 1024 on Linux. This number is too low for some applications,
for example for the CA gateway.
Therefore, Linux builds use poll() instead.
2025-02-10 08:47:59 +01:00
Michael Davidsaver
8f77e941c7 add fdManager test 2025-02-10 08:47:59 +01:00
Michael Davidsaver
c76395abc6 remove fdmgrTest
Not a unittest, and not functional.
2025-02-10 08:47:59 +01:00
Michael Davidsaver
1d19ba4cc2 doc and log for *MustSucceed()
Replace the "never returns NULL." statement which is
manifestly not true.
2025-02-07 09:09:22 -08:00
JJL772
144f9756ea Add iocshSetError in a bunch of places 2025-02-05 10:16:16 -06:00
DW
48eed22f3b check IOCSH_STARTUP_SCRIPT before set 2025-02-05 10:03:35 -06:00
Michael Davidsaver
e4ad4becde rationalize osdMutex
Avoids split allocation.
Eliminates special case free-list.

win32: eliminate pre-XP
rtems-score: eliminate non-fast
2024-12-29 16:35:26 -08:00
Jeremy Lorelli
721e9cc3a7 Add ABORT_ON_ASSERT flag to CONFIG_SITE
This flag causes EPICS to call abort() on assertion failures rather than
suspend the executing thread. With the epicsThreadSuspendSelf() behavior,
an IOC can end up in a difficult to detect error state where one or more
threads has essentially crashed due to an assertion failure.

This also matches the C behavior of assert(3)
2024-12-29 16:34:10 -08:00
Jeremy Lorelli
333be085c0 Fix compile error in tsSLList.h 2024-12-28 12:40:27 -08: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
135193c4bd rtems: Fix shell networking commands
This patch cleans up the shell defines for the libbsd and legacy
network stack shell commands.

The top and rtems shell commands have been added.
2024-10-31 16:21:49 -05:00
Chris Johns
9d65da5c61 rtems: Fix rtems_bsdnet_bootp_server_address decl with RTEMS_LEGACY_STACK
The legacy stack provides this variable and this decl clashed. This was
seen before now due to the link order of libraries.
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
f6cd43b7cc asTrap serverSpecific is dbChannel
Save/restore dbAddr::pfield around callbacks to
avoid corruption if CB forgets to restore.

Need to peak at dbChannel.h during libCom build.
So generate dbCoreAPI.h early, and add extra
-I to source location when compiling dbTrapWrite.c
2024-10-31 12:30:15 -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
Chris Johns
c5f5e4e508 rtems: Allow site local override of the default tick period
Add to configure/CONFIG_SITE.local:

 OP_SYS_CFLAGS += -DCONFIGURE_MICROSECONDS_PER_TICK=1000
2024-09-04 09:59:13 -05: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
03f17a08c3 Merge branch '7.0' into PSI-7.0 2024-08-07 17:30:04 +02:00
Michael Davidsaver
6ca716a77f iocsh: add more iocshSetError() 2024-06-11 13:52:03 -07:00
Michael Davidsaver
77490d4939 space in errPrintf() output 2024-06-11 11:14:07 -07:00
87d492bffd Merge branch '7.0' into PSI-7.0 2024-04-30 14:40:00 +02:00
Érico Nogueira
1a9dc993c1 Fix gmtime messages in epicsTimeZoneTest. 2024-04-29 15:10:47 -07: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