Use built-in proctitle implementation because there is no such thing as
a process title on zOS.
PR-URL: https://github.com/libuv/libuv/pull/1208
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This patch enables querying and setting the process title on AIX.
libuv takes ownership of the memory for argv and returns a deep copy
of the array and its contents.
It also enables the process_title test case.
The process title can be changed on AIX but is handled differently
to Linux/Mac. Commands like ps read the original argv array passed
to the process instead of the memory at argv[0]. To change the process
title we need to update argv[0] to point at a new string and set
argv[1] to NULL (if it exists). This means the process title
can be set to a string of any length.
PR-URL: https://github.com/libuv/libuv/pull/1187
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Fix all functional test cases:
* use PLO compare,swap,store for atomic instruction
* do not use semaphore.h
* use xplink flag when linking
* scandir implementation
* nanosleep implementation
* add proctitle
* uv_loadavg
* uv_fs_event_init/start
* uv_fs_event_stop
* uv_exepath using __getthent syscall
* read free/total memory from mvs data areas
* uv_resident_set_memory implementation
* network interfaces implementation
* cpu_info implementation
* implement uv__hrtime
* make uv__fs_mkdtemp implementation
* epoll implementation for asyncio
* uv__fs_event_close implementation
* set process title
* read ancillary data that remains on queue
* ancillary data
* implement uv__fs_access
* use /dev/urandom for temporary directory name
* disable proctitle on zos completely
PR-URL: https://github.com/libuv/libuv/pull/1037
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Don't compile uv__set_phys_addr() if SUNOS_NO_IFADDRS is defined,
it has been reported to break the build on Solaris 10.
Bug introduced in commit d75e334 ("sunos: set phys_addr of
interface_address using ARP") from last June.
Fixes: https://github.com/nodejs/node/issues/9856
PR-URL: https://github.com/libuv/libuv/pull/1155
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Handle the case when it's called after the request has ended, or in case
it ended with an error.
PR-URL: https://github.com/libuv/libuv/pull/1181
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
The `out` section is only reachable now if `scandir` returns 0.
PR-URL: https://github.com/libuv/libuv/pull/1189
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
assert expressions should only be scalar
PR-URL: https://github.com/libuv/libuv/pull/1196
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
The error path frees `req->alloc` but that hasn't been set yet when
`service` and `node` are both NULL. Simply return instead of jumping
to the error handling block.
Fixes: https://github.com/libuv/libuv/issues/1122
PR-URL: https://github.com/libuv/libuv/pull/1123
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
uv_spawn() on Windows will fail with ERROR_ELEVATION_REQUIRED
if attempting to run an application that requires elevation.
Fixes: https://github.com/nodejs/node/issues/9464
PR-URL: https://github.com/libuv/libuv/pull/1154
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Fix the #ifdef logic to make sure all the available fields filled in the
`stat` struct are correcly copied into the `uv_stat_t` struct. Before
this change, the `n_sec` were being set to 0.
PR-URL: https://github.com/libuv/libuv/pull/1152
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
When reading from tty is restarted while there is pending data,
uv_tty_read_start calls uv_insert_pending_req instead of uv_tty_queue_read
to avoid losing keypresses. But reading can be stopped and restarted
multiple times before the req is handled, which caused an assertion error.
Setting the UV_HANDLE_READ_PENDING flag prevents uv_insert_pending_req
from being called again until the req is handled.
Fixes: https://github.com/nodejs/node/issues/9690
PR-URL: https://github.com/libuv/libuv/pull/1158
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Remove several conditionals which appear to carefully set or clear
FILE_FLAG_BACKUP_SEMANTICS, but since 4365896,
FILE_FLAG_BACKUP_SEMANTICS is unconditionally ORed into the attributes
before CreateFileW() is called.
PR-URL: https://github.com/libuv/libuv/pull/1149
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-by: Bert Belder <bertbelder@gmail.com>
Apple's fsync and fdatasync explicitly do NOT flush the drive write
cache to the drive platters. This is in contrast to Linux's fsync and
fdatasync which do, according to recent man pages. F_FULLFSYNC is
Apple's equivalent for flushing buffered data to permanent storage.
PR-URL: https://github.com/libuv/libuv/pull/1124
Refs: https://github.com/nodejs/node/issues/9439
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Remove use of the DUMMYUNIONNAME macro from our definitions of
internal winapi anonymous unions. This macro was added to
winternl.h in Windows SDK v7.0a in combination with a conditional
definition of DUMMYUNIONNAME to either empty or `u` depending on
compiler support. libuv doesn't support any compilers that lack
anonymous unions, but does support compilers such as VS 2008 that
complain about the presence of the DUMMYUNIONNAME identifier on an
anonymous union because their winapi headers do not define the
macro publicly.
PR-URL: https://github.com/libuv/libuv/pull/1090
Reviewed-By: João Reis <reis@janeasystems.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
The saved_data variable in uv_loop_close() is only used when
NDEBUG is defined. This commit makes the variable declaration
depend on NDEBUG as well.
PR-URL: https://github.com/libuv/libuv/pull/1093
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
So it aborts in case `pthread_once` fails.
PR-URL: https://github.com/libuv/libuv/pull/1098
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
The compiler is wrong about it being used uninitialized but the warning
is sufficiently annoying that I decided to squelch it.
PR-URL: https://github.com/libuv/libuv/pull/1097
Reviewed-By: Andrius Bentkus <andrius.bentkus@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
default_loop_struct and default_loop_ptr seem to have been overlooked
in commit 32747c7 ("win,unix: move loop functions which have identical
implementations".)
PR-URL: https://github.com/libuv/libuv/pull/1097
Reviewed-By: Andrius Bentkus <andrius.bentkus@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
uv_translate_sys_error() was a private function for Windows.
This commit adds an equivalent function on other platforms, and
exposes it as public API.
Exposing this is useful in scenarios where the application uses
both libuv functions and platform-specific system calls and wants
to report errors uniformly as libuv errors.
Fixes: https://github.com/libuv/libuv/issues/79
PR-URL: https://github.com/libuv/libuv/pull/1060
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
In unix/internal.h, CoreServices is included for AvailabilityMacros.h.
This commit just includes AvailabilityMacros.h directly instead.
PR-URL: https://github.com/libuv/libuv/pull/1092
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Simplify and optimize uv_thread_create() by casting the function pointer
to the prototype that pthread_create() wants. Avoids the indirection of
an intermediate callback and heap-allocating custom state that is really
only there to placate the compiler.
PR-URL: https://github.com/libuv/libuv/pull/1094
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Additional synchronization is needed to ensure that the program
cannot modify the screen state while a line read is getting cancelled.
Also, we need to stop any pending reads *before* calling SetConsoleMode,
or a call to ReadConsole could start while the console is still in raw
mode.
Credit: @orangemocha - Alexis Campailla <orangemocha@nodejs.org>
Fixes: https://github.com/nodejs/node/issues/7837
PR-URL: https://github.com/libuv/libuv/pull/1054
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
alphasort() uses strcoll() in some libcs (notably glibc and musl) which
makes it locale-sensitive.
Replace it with a simple strcmp-based lexicographic comparison for
consistent behavior across platforms.
Remove the special-casing for OpenBSD. It has been exporting function
prototypes conforming to POSIX.1-2008 since OpenBSD 5.3 and that was
released more than three years ago.
OS X 10.7 is now the only special case left.
Fixes: https://github.com/libuv/libuv/issues/1045
PR-URL: https://github.com/libuv/libuv/pull/1046
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
In `musl` libc, defining `_GNU_SOURCE` doesn't automatically define the
other feature definitions, causing that `uv_fs_fstat` would not fill the
`nsec` fields. For the same reason, compile the tests on linux with
`-D_GNU_SOURCE` so the `fs_fstat` tests passes on `musl` platforms.
PR-URL: https://github.com/libuv/libuv/pull/1039
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Introduced in 58ccfd4c21, reviewed by
yours truly :-(
PR-URL: https://github.com/libuv/libuv/pull/1018
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
The type parameter in the "container_of(ptr, type, member)" macro
which uses builtin "offsetof(type, member)" should not require cv
qualifier. Also note that for some platforms, the "offsetof" builtin
does not recognize the cv qualifier in the type.
PR-URL: https://github.com/libuv/libuv/pull/948
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This method uses the poll syscall to determine whether POLLNVAL is
flagged or not.
PR-URL: https://github.com/libuv/libuv/pull/957
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
On zOS the listen call does not bind automatically if the socket
is unbound. Hence the manual binding to an arbitrary port is
required to be done manually.
PR-URL: https://github.com/libuv/libuv/pull/949
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
We do this using __fchattr syscall to change file attributes.
PR-URL: https://github.com/libuv/libuv/pull/956
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Use builtins provided that perform compare and swap operations
using the PLO instruction.
PR-URL: https://github.com/libuv/libuv/pull/1008
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
autotools support only, gvp does not support kfreebsd detection.
PR-URL: https://github.com/libuv/libuv/pull/960
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
- zos: disable test cases not applicable
- zos: build options
- zos: semaphore implementation
- zos: use compare and swap builtins
- zos: struct rusage not the same as other platforms
- zos: backlog<=0 produces undefined behaviour
Will redefine backlog in the following way
* if backlog == 0, set it to 1
* if backlog < 0, set it to SOMAXCONN
- zos: define IMAXBEL as empty flag and implement uv__tty_make_raw
- zos: use udp multicast operations from aix
- zos: ESC in ebcdic
- zos: use LIBPATH for dynamic linker path
- zos: uv_udp_set_ttl only works for ipv6
- zos: increase pthread stack size by factor of 4
- zos: return ENODEV instead of ENXIO errors for setsockopt
- zos: use uv_cond_init the same way as aix
- test: enable oob test for zos
- zos: return EINVAL for zos error code EOPNOTSUPP
PR-URL: https://github.com/libuv/libuv/pull/937
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Treat both the base being NULL or the length being 0 as ENOBUFS.
PR-URL: https://github.com/libuv/libuv/pull/997
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>