- 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>
67 lines
2.0 KiB
C
67 lines
2.0 KiB
C
/*
|
|
Copyright (c) 2016, Kari Tristan Helgason <kthelgason@gmail.com>
|
|
|
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
purpose with or without fee is hereby granted, provided that the above
|
|
copyright notice and this permission notice appear in all copies.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#ifndef _UV_PTHREAD_BARRIER_
|
|
#define _UV_PTHREAD_BARRIER_
|
|
#include <errno.h>
|
|
#include <pthread.h>
|
|
#include <semaphore.h> /* sem_t */
|
|
|
|
#define PTHREAD_BARRIER_SERIAL_THREAD 0x12345
|
|
|
|
/*
|
|
* To maintain ABI compatibility with
|
|
* libuv v1.x struct is padded according
|
|
* to target platform
|
|
*/
|
|
#if defined(__ANDROID__)
|
|
# define UV_BARRIER_STRUCT_PADDING \
|
|
sizeof(pthread_mutex_t) + \
|
|
sizeof(pthread_cond_t) + \
|
|
sizeof(unsigned int) - \
|
|
sizeof(void *)
|
|
#elif defined(__APPLE__)
|
|
# define UV_BARRIER_STRUCT_PADDING \
|
|
sizeof(pthread_mutex_t) + \
|
|
2 * sizeof(sem_t) + \
|
|
2 * sizeof(unsigned int) - \
|
|
sizeof(void *)
|
|
#elif defined(__MVS__)
|
|
# define UV_BARRIER_STRUCT_PADDING 0
|
|
#endif
|
|
|
|
typedef struct {
|
|
pthread_mutex_t mutex;
|
|
pthread_cond_t cond;
|
|
unsigned threshold;
|
|
unsigned in;
|
|
unsigned out;
|
|
} _uv_barrier;
|
|
|
|
typedef struct {
|
|
_uv_barrier* b;
|
|
char _pad[UV_BARRIER_STRUCT_PADDING];
|
|
} pthread_barrier_t;
|
|
|
|
int pthread_barrier_init(pthread_barrier_t* barrier,
|
|
const void* barrier_attr,
|
|
unsigned count);
|
|
|
|
int pthread_barrier_wait(pthread_barrier_t* barrier);
|
|
int pthread_barrier_destroy(pthread_barrier_t *barrier);
|
|
|
|
#endif /* _UV_PTHREAD_BARRIER_ */
|