zimoch
997746e5e2
fix epicsStrtod for 32 bit architectures
2025-03-21 15:16:25 +01:00
zimoch
09f96d056a
Merge branch '7.0' into PSI-7.0
2025-03-21 15:15:57 +01:00
zimoch
1732c9440a
fix for mingw warning about order of header files
2025-03-21 13:49:05 +01:00
zimoch
acf4c92697
fix epicsExport for volatile and const variables
2025-03-21 13:49:04 +01:00
zimoch
93ba98cdca
VxWorks does not mark abort() or exit() noreturn
2025-03-21 13:49:04 +01:00
Jeremy Lorelli
6ea6ae633b
Define NOCRYPT, NOSOUND and NOKANJI before including windows.h
2025-03-19 11:19:45 -05:00
JJL772
fc5d3c9a5c
Disable extraneous WIN32 declarations when including windows.h in epicsAtomicOSD.h
2025-03-19 11:19:45 -05:00
zimoch
c75ad2673e
no longer need extern "C" { } around epicsExport macros
2025-03-19 11:17:14 -05:00
zimoch
b97a35fec8
Don't use __attribute__((noreturn)) on VxWorks
...
VxWorks does not mark abort() or exit() as noreturn.
Thus, functions declared noreturn which end in a call
to those functions cause a compiler warning on vxWorks.
2025-03-19 11:06:26 -05:00
Michael Davidsaver
48ebe2c64e
Avoid initMainThread() except on vxworks
...
Move isOkToBlock tracking to osdThread.
Targets except vxworks can store this flag in epicsThreadOSD.
Continue to use TLS w/ vxWorks.
Note that setting of isOkToBlock for "main" thread becomes lazy.
2025-03-19 10:53:42 -05:00
Michael Davidsaver
13d6ca598c
initHookRegister() make idempotent and MustSucceed
2025-03-05 10:02:38 -06:00
zimoch
43e75e3901
decorate functions that do not return
2025-03-05 09:51:57 -06:00
zimoch
2e77bc8cc1
improve atExit debugging
2025-03-05 11:21:19 +01:00
zimoch
ea7459084e
Merge remote-tracking branch 'github/noreturn' into PSI-7.0
2025-03-04 17:55:32 +01:00
zimoch
ddc49e9f79
Merge remote-tracking branch 'github/epicsExportAddress' into PSI-7.0
2025-03-04 17:55:15 +01:00
zimoch
c5315d95b8
no longer need extern "C" { } around epicsExport macros
2025-03-04 17:45:04 +01:00
zimoch
74d231b04f
decorate functions that do not return
2025-03-04 14:41:05 +01:00
zimoch
23521e0a08
Merge remote-tracking branch 'github/fdManager_using_poll' into PSI-7.0
2025-03-03 17:20:13 +01:00
zimoch
55791ef470
Merge branch 7.0.9 into PSI-7.0
2025-03-03 17:19:23 +01:00
zimoch
7b2fb669ec
Merge remote-tracking branch 'xiaoqiang/7.0' into PSI-7.0
2025-03-03 17:14:20 +01:00
Michael Davidsaver
7384351181
clarify cantProceed() message
2025-02-18 07:30:51 -08:00
zimoch
8f1a3888c6
cleanup coding style in fdManager
2025-02-10 08:47:59 +01:00
zimoch
c9183b5241
fdManager: filter poll flags for Window's sake
2025-02-10 08:47:59 +01:00
zimoch
c3f57ee818
make fdManagerPrivate::fdReg volatile to avoid codacy warning
2025-02-10 08:47:59 +01:00
zimoch
27f4261dfb
use smart pointers in fdManager
2025-02-10 08:47:59 +01:00
zimoch
5eb9997791
fix codacy warning: make fdManagerPrivate constructor explicit
2025-02-10 08:47:59 +01:00
zimoch
bfc2f832ec
fdManager uses poll() on Darwin too
2025-02-10 08:47:59 +01:00
zimoch
f09b235fce
Keep implementation details of fdManager out of header file
2025-02-10 08:47:59 +01:00
zimoch
ece031c88b
fdManager use std::vector
2025-02-10 08:47:59 +01:00
zimoch
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
zimoch
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
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
zimoch
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
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
zimoch
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
zimoch
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
zimoch
5930e8e2e4
time_t has 64 bit o 64 bit architectures
2024-08-09 11:44:26 +02:00