From 3ba260020096fd09ee10a0e7866accc924cfaa75 Mon Sep 17 00:00:00 2001 From: Sam Aaron Date: Thu, 5 Jan 2023 15:05:10 +0000 Subject: [PATCH] Build - remove Erlang headers - these are now in the external subprojects sp_midi and sp_link --- app/external/CMakeLists.txt | 14 - prebuilt/macos/headers/erlang/driver_int.h | 42 - prebuilt/macos/headers/erlang/ei.h | 889 ------------------ prebuilt/macos/headers/erlang/ei_connect.h | 27 - prebuilt/macos/headers/erlang/eicode.h | 27 - prebuilt/macos/headers/erlang/erl_driver.h | 636 ------------- prebuilt/macos/headers/erlang/erl_drv_nif.h | 170 ---- .../headers/erlang/erl_fixed_size_int_types.h | 161 ---- .../headers/erlang/erl_int_sizes_config.h | 38 - .../headers/erlang/erl_memory_trace_parser.h | 157 ---- prebuilt/macos/headers/erlang/erl_nif.h | 413 -------- .../macos/headers/erlang/erl_nif_api_funcs.h | 654 ------------- prebuilt/windows/headers/erlang/driver_int.h | 40 - prebuilt/windows/headers/erlang/ei.h | 719 -------------- prebuilt/windows/headers/erlang/ei_connect.h | 27 - prebuilt/windows/headers/erlang/ei_global.h | 29 - prebuilt/windows/headers/erlang/eicode.h | 27 - prebuilt/windows/headers/erlang/erl_driver.h | 636 ------------- prebuilt/windows/headers/erlang/erl_drv_nif.h | 171 ---- .../headers/erlang/erl_fixed_size_int_types.h | 161 ---- .../headers/erlang/erl_int_sizes_config.h | 38 - .../headers/erlang/erl_memory_trace_parser.h | 157 ---- prebuilt/windows/headers/erlang/erl_nif.h | 419 --------- .../headers/erlang/erl_nif_api_funcs.h | 660 ------------- .../headers/erlang/erl_win_dyn_driver.h | 518 ---------- 25 files changed, 6830 deletions(-) delete mode 100644 prebuilt/macos/headers/erlang/driver_int.h delete mode 100644 prebuilt/macos/headers/erlang/ei.h delete mode 100644 prebuilt/macos/headers/erlang/ei_connect.h delete mode 100644 prebuilt/macos/headers/erlang/eicode.h delete mode 100644 prebuilt/macos/headers/erlang/erl_driver.h delete mode 100644 prebuilt/macos/headers/erlang/erl_drv_nif.h delete mode 100644 prebuilt/macos/headers/erlang/erl_fixed_size_int_types.h delete mode 100644 prebuilt/macos/headers/erlang/erl_int_sizes_config.h delete mode 100644 prebuilt/macos/headers/erlang/erl_memory_trace_parser.h delete mode 100644 prebuilt/macos/headers/erlang/erl_nif.h delete mode 100644 prebuilt/macos/headers/erlang/erl_nif_api_funcs.h delete mode 100644 prebuilt/windows/headers/erlang/driver_int.h delete mode 100644 prebuilt/windows/headers/erlang/ei.h delete mode 100644 prebuilt/windows/headers/erlang/ei_connect.h delete mode 100644 prebuilt/windows/headers/erlang/ei_global.h delete mode 100644 prebuilt/windows/headers/erlang/eicode.h delete mode 100644 prebuilt/windows/headers/erlang/erl_driver.h delete mode 100644 prebuilt/windows/headers/erlang/erl_drv_nif.h delete mode 100644 prebuilt/windows/headers/erlang/erl_fixed_size_int_types.h delete mode 100644 prebuilt/windows/headers/erlang/erl_int_sizes_config.h delete mode 100644 prebuilt/windows/headers/erlang/erl_memory_trace_parser.h delete mode 100644 prebuilt/windows/headers/erlang/erl_nif.h delete mode 100644 prebuilt/windows/headers/erlang/erl_nif_api_funcs.h delete mode 100644 prebuilt/windows/headers/erlang/erl_win_dyn_driver.h diff --git a/app/external/CMakeLists.txt b/app/external/CMakeLists.txt index 33a552693b..3657c357bb 100644 --- a/app/external/CMakeLists.txt +++ b/app/external/CMakeLists.txt @@ -5,20 +5,8 @@ message(STATUS "Externals Builder") project(ExternalsBuilder) -if(WIN32) - set(ERLANG_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../prebuilt/windows/headers/erlang CACHE STRING "Path to the Erlang header files") -elseif(${CMAKE_SYSTEM_NAME} MATCHES Darwin) # macOS - set(ERLANG_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../prebuilt/macos/headers/erlang CACHE STRING "Path to the Erlang header files") -else() - execute_process( - COMMAND erl -noshell -eval "io:format(\"~s~n\", [filename:join([lists:concat([code:root_dir(), \"/erts-\", erlang:system_info(version)]), \"include\"])]), init:stop(0)." - OUTPUT_VARIABLE FOUND_ERLANG_INCLUDE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) - set(ERLANG_INCLUDE_PATH ${FOUND_ERLANG_INCLUDE_PATH} CACHE STRING "Path to the Erlang header files") -endif() - option(USE_SYSTEM_LIBS "Use system libraries instead of bundled libraries when building" OFF) -message(STATUS "ERLANG_INCLUDE_PATH: ${ERLANG_INCLUDE_PATH}") message(STATUS "USE_SYSTEM_LIBS: ${USE_SYSTEM_LIBS}") include(GNUInstallDirs) @@ -33,7 +21,6 @@ ExternalProject_Add(sp_midi INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv - -DERLANG_INCLUDE_PATH=${ERLANG_INCLUDE_PATH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -DUSE_SYSTEM_RTMIDI=${USE_SYSTEM_LIBS} BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} @@ -45,7 +32,6 @@ ExternalProject_Add(sp_link INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv - -DERLANG_INCLUDE_PATH=${ERLANG_INCLUDE_PATH} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} ) diff --git a/prebuilt/macos/headers/erlang/driver_int.h b/prebuilt/macos/headers/erlang/driver_int.h deleted file mode 100644 index 840b832878..0000000000 --- a/prebuilt/macos/headers/erlang/driver_int.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 1997-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -/* - * System dependant driver declarations - */ - -#ifndef __DRIVER_INT_H__ -#define __DRIVER_INT_H__ - -#ifdef HAVE_SYS_UIO_H -#include -#include - -typedef struct iovec SysIOVec; - -#else - -typedef struct { - char* iov_base; - int iov_len; -} SysIOVec; - -#endif - -#endif diff --git a/prebuilt/macos/headers/erlang/ei.h b/prebuilt/macos/headers/erlang/ei.h deleted file mode 100644 index 803e22d4b2..0000000000 --- a/prebuilt/macos/headers/erlang/ei.h +++ /dev/null @@ -1,889 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 1998-2020. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -#ifndef EI_H -#define EI_H - -#define EI_HAVE_TIMEOUT 1 /* Flag to user code that we have them */ -#define USE_EI_UNDOCUMENTED /* Want declarations for undocumented */ - -/************************************************************************/ -/* This file defines the complete interface to ei */ -/************************************************************************/ - -/* -------------------------------------------------------------------- */ -/* Include types needed below */ -/* -------------------------------------------------------------------- */ - -#if defined(__WIN32__) -#include -#include -#include -typedef LONG_PTR ssize_t; /* Sigh... */ -#else -#include /* ssize_t */ -#endif - -#include /* Need type FILE */ -#include /* Need EHOSTUNREACH, ENOMEM, ... */ - -#if !(defined(__WIN32__) || defined(_WIN32)) -# include -#endif - -#ifdef __has_attribute -#if __has_attribute(deprecated) -#define EI_HAVE_DEPRECATED_ATTR__ 1 -#else -#undef EI_HAVE_DEPRECATED_ATTR__ -#endif -#endif - -#ifdef EI_NO_DEPR_WARN -#undef EI_HAVE_DEPRECATED_ATTR__ -#endif - -#ifdef EI_HAVE_DEPRECATED_ATTR__ -#define EI_DEPRECATED_ATTR_NAME deprecated -#define EI_DEPRECATED_ATTR __attribute__((EI_DEPRECATED_ATTR_NAME)) -#else -#define EI_DEPRECATED_ATTR_NAME -#define EI_DEPRECATED_ATTR -#endif - -/* -------------------------------------------------------------------- */ -/* Defines part of API */ -/* -------------------------------------------------------------------- */ - -/* - * Some error codes might be missing, so here's a backstop definitions - * of the ones we use with `erl_errno': - */ - -#ifndef EMSGSIZE /* Message too long */ -#define EMSGSIZE EIO -#endif - -#ifndef ETIMEDOUT /* Connection timed out */ -#define ETIMEDOUT EIO -#endif - -#ifndef EHOSTUNREACH /* No route to host */ -#define EHOSTUNREACH EIO -#endif - -/* FIXME just a few are documented, does it mean they can't be returned? */ - -#define ERL_ERROR -1 /* Error of some kind */ -#define ERL_NO_DAEMON -2 /* No contact with EPMD */ -#define ERL_NO_PORT -3 /* No port received from EPMD */ -#define ERL_CONNECT_FAIL -4 /* Connect to Erlang Node failed */ -#define ERL_TIMEOUT -5 /* A timeout has expired */ -#define ERL_NO_REMOTE -6 /* Cannot execute rsh */ - -#define ERL_TICK 0 -#define ERL_MSG 1 - -#define ERL_NO_TIMEOUT -1 - -/* these are the control message types */ -#define ERL_LINK 1 -#define ERL_SEND 2 -#define ERL_EXIT 3 -#define ERL_UNLINK 4 -#define ERL_NODE_LINK 5 -#define ERL_REG_SEND 6 -#define ERL_GROUP_LEADER 7 -#define ERL_EXIT2 8 -#define ERL_PASS_THROUGH 'p' - -/* new ones for tracing, from Kenneth */ -#define ERL_SEND_TT 12 -#define ERL_EXIT_TT 13 -#define ERL_REG_SEND_TT 16 -#define ERL_EXIT2_TT 18 -#define ERL_MONITOR_P 19 -#define ERL_DEMONITOR_P 20 -#define ERL_MONITOR_P_EXIT 21 - - -/* -------------------------------------------------------------------- */ -/* Defines used for ei_get_type_internal() output */ -/* -------------------------------------------------------------------- */ -/* - * these are the term type indicators used in - * the external (distribution) format - */ - -/* FIXME we don't want to export these..... */ - -#define ERL_SMALL_INTEGER_EXT 'a' -#define ERL_INTEGER_EXT 'b' -#define ERL_FLOAT_EXT 'c' -#define NEW_FLOAT_EXT 'F' -#define ERL_ATOM_EXT 'd' -#define ERL_SMALL_ATOM_EXT 's' -#define ERL_ATOM_UTF8_EXT 'v' -#define ERL_SMALL_ATOM_UTF8_EXT 'w' -#define ERL_REFERENCE_EXT 'e' -#define ERL_NEW_REFERENCE_EXT 'r' -#define ERL_NEWER_REFERENCE_EXT 'Z' -#define ERL_PORT_EXT 'f' -#define ERL_NEW_PORT_EXT 'Y' -#define ERL_PID_EXT 'g' -#define ERL_NEW_PID_EXT 'X' -#define ERL_SMALL_TUPLE_EXT 'h' -#define ERL_LARGE_TUPLE_EXT 'i' -#define ERL_NIL_EXT 'j' -#define ERL_STRING_EXT 'k' -#define ERL_LIST_EXT 'l' -#define ERL_BINARY_EXT 'm' -#define ERL_BIT_BINARY_EXT 'M' -#define ERL_SMALL_BIG_EXT 'n' -#define ERL_LARGE_BIG_EXT 'o' -#define ERL_NEW_FUN_EXT 'p' -#define ERL_MAP_EXT 't' -#define ERL_FUN_EXT 'u' -#define ERL_EXPORT_EXT 'q' - - -#define ERL_NEW_CACHE 'N' /* c nodes don't know these two */ -#define ERL_CACHED_ATOM 'C' - - -/* -------------------------------------------------------------------- */ -/* Define the erl_errno macro */ -/* -------------------------------------------------------------------- */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * GCC's attributes are too useful to not use. Other compilers - * just lose opportunities to optimize and warn. - */ -#if !defined(__GNUC__) || __GNUC__ < 2 -# define __attribute__(foo) /* nothing */ -#endif - -/* - * Define the 'erl_errno' facility. Unfortunately this lives on in - * the 'ei' interface as well.... :-( - */ - -#if defined(_REENTRANT) || defined(__WIN32__) - -/* 'erl_errno' as a function return value */ -volatile int* __erl_errno_place(void) __attribute__ ((__const__)); - -#define erl_errno (*__erl_errno_place ()) - -#else /* !_REENTRANT && !__WIN32__ */ - -extern volatile int __erl_errno; - -#define erl_errno __erl_errno - -#endif /* !_REENTRANT && !__WIN32__ */ - - -/* -------------------------------------------------------------------- */ -/* Type definitions */ -/* -------------------------------------------------------------------- */ - -/* - * To avoid confusion about the MAXHOSTNAMELEN when compiling the - * library and when using the library we set a value that we use - */ - -#define EI_MAX_COOKIE_SIZE 512 -#define MAXATOMLEN (255 + 1) -#define MAXATOMLEN_UTF8 (255*4 + 1) -#define EI_MAXHOSTNAMELEN (MAXATOMLEN - 2) -#define EI_MAXALIVELEN (MAXATOMLEN - 2) -#define MAXNODELEN MAXATOMLEN - -typedef enum { - ERLANG_ASCII = 1, - ERLANG_LATIN1 = 2, - ERLANG_UTF8 = 4 -}erlang_char_encoding; - -/* a pid */ -typedef struct { - char node[MAXATOMLEN_UTF8]; - unsigned int num; - unsigned int serial; - unsigned int creation; -} erlang_pid; - -/* a port */ -typedef struct { - char node[MAXATOMLEN_UTF8]; - unsigned int id; - unsigned int creation; -} erlang_port; - -/* a ref */ -typedef struct { - char node[MAXATOMLEN_UTF8]; - int len; - unsigned int n[3]; - unsigned int creation; -} erlang_ref; - -/* a trace token */ -typedef struct { - long serial; - long prev; - erlang_pid from; - long label; - long flags; -} erlang_trace; - -/* a message */ -typedef struct { - long msgtype; - erlang_pid from; - erlang_pid to; - char toname[MAXATOMLEN_UTF8]; - char cookie[MAXATOMLEN_UTF8]; - erlang_trace token; -} erlang_msg; - -/* a fun */ -typedef struct { - long arity; - char module[MAXATOMLEN_UTF8]; - enum { EI_FUN_CLOSURE, EI_FUN_EXPORT } type; - union { - struct { - char md5[16]; - long index; - long old_index; - long uniq; - long n_free_vars; - erlang_pid pid; - long free_var_len; - char* free_vars; - } closure; - struct { - char* func; - int func_allocated; - } exprt; - } u; -} erlang_fun; - -/* a big */ -typedef struct { - unsigned int arity; - int is_neg; - void *digits; -} erlang_big; - -typedef struct { - char ei_type; - int arity; - int size; - union { - long i_val; - double d_val; - char atom_name[MAXATOMLEN_UTF8]; - erlang_pid pid; - erlang_port port; - erlang_ref ref; - } value; -} ei_term; - -/* XXX */ - -typedef struct { - char ipadr[4]; /* stored in network byte order */ - char nodename[MAXNODELEN+1]; -} ErlConnect; - -#define EI_SCLBK_INF_TMO (~((unsigned) 0)) - -#define EI_SCLBK_FLG_FULL_IMPL (1 << 0) - -/* - * HACK: AIX defines many socket functions like accept to be naccept, which - * pollutes the global namespace. Set up an ugly ifdef for consumers of this - * API here so they get a mangled name for AIX and the sane name elsewhere. - */ -#ifdef _AIX -#define EI_ACCEPT_NAME accept_ei -#else -#define EI_ACCEPT_NAME accept -#endif - -typedef struct { - int flags; - - int (*socket)(void **ctx, void *setup_ctx); - int (*close)(void *ctx); - int (*listen)(void *ctx, void *addr, int *len, int backlog); - int (*EI_ACCEPT_NAME)(void **ctx, void *addr, int *len, unsigned tmo); - int (*connect)(void *ctx, void *addr, int len, unsigned tmo); - int (*writev)(void *ctx, const void *iov, int iovcnt, ssize_t *len, unsigned tmo); - int (*write)(void *ctx, const char *buf, ssize_t *len, unsigned tmo); - int (*read)(void *ctx, char *buf, ssize_t *len, unsigned tmo); - - int (*handshake_packet_header_size)(void *ctx, int *sz); - int (*connect_handshake_complete)(void *ctx); - int (*accept_handshake_complete)(void *ctx); - int (*get_fd)(void *ctx, int *fd); - - /* end of version 1 */ - -} ei_socket_callbacks; - -typedef struct ei_cnode_s { - char thishostname[EI_MAXHOSTNAMELEN+1]; - char thisnodename[MAXNODELEN+1]; - char thisalivename[EI_MAXALIVELEN+1]; -/* Currently this_ipaddr isn't used */ -/* struct in_addr this_ipaddr; */ - char ei_connect_cookie[EI_MAX_COOKIE_SIZE+1]; - unsigned int creation; - erlang_pid self; - ei_socket_callbacks *cbs; - void *setup_context; - unsigned int pidsn; -} ei_cnode; - -typedef struct in_addr *Erl_IpAddr; - - -/* A dynamic version of ei XX */ - -typedef struct ei_x_buff_TAG { - char* buff; - int buffsz; - int index; -} ei_x_buff; - -/* -------------------------------------------------------------------- */ -/* Function definitions (listed in same order as documentation) */ -/* -------------------------------------------------------------------- */ - -/* Handle the connection */ - -int ei_connect_init(ei_cnode* ec, const char* this_node_name, - const char *cookie, short creation); -int ei_connect_xinit (ei_cnode* ec, const char *thishostname, - const char *thisalivename, const char *thisnodename, - Erl_IpAddr thisipaddr, const char *cookie, - const short creation); - -int ei_connect_init_ussi(ei_cnode* ec, const char* this_node_name, - const char *cookie, short creation, - ei_socket_callbacks *cbs, int cbs_sz, - void *setup_context); -int ei_connect_xinit_ussi(ei_cnode* ec, const char *thishostname, - const char *thisalivename, const char *thisnodename, - Erl_IpAddr thisipaddr, const char *cookie, - const short creation, ei_socket_callbacks *cbs, - int cbs_sz, void *setup_context); - -int ei_connect(ei_cnode* ec, char *nodename); -int ei_connect_tmo(ei_cnode* ec, char *nodename, unsigned ms); -int ei_connect_host_port(ei_cnode* ec, char *hostname, int port); -int ei_connect_host_port_tmo(ei_cnode* ec, char *hostname, int port, unsigned ms); -int ei_xconnect(ei_cnode* ec, Erl_IpAddr adr, char *alivename); -int ei_xconnect_tmo(ei_cnode* ec, Erl_IpAddr adr, char *alivename, unsigned ms); -int ei_xconnect_host_port(ei_cnode* ec, Erl_IpAddr adr, int port); -int ei_xconnect_host_port_tmo(ei_cnode* ec, Erl_IpAddr adr, int port, unsigned ms); - -int ei_receive(int fd, unsigned char *bufp, int bufsize); -int ei_receive_tmo(int fd, unsigned char *bufp, int bufsize, unsigned ms); -int ei_receive_msg(int fd, erlang_msg* msg, ei_x_buff* x); -int ei_receive_msg_tmo(int fd, erlang_msg* msg, ei_x_buff* x, unsigned ms); -int ei_xreceive_msg(int fd, erlang_msg* msg, ei_x_buff* x); -int ei_xreceive_msg_tmo(int fd, erlang_msg* msg, ei_x_buff* x, unsigned ms); - -int ei_send(int fd, erlang_pid* to, char* buf, int len); -int ei_send_tmo(int fd, erlang_pid* to, char* buf, int len, unsigned ms); -int ei_reg_send(ei_cnode* ec, int fd, char *server_name, char* buf, int len); -int ei_reg_send_tmo(ei_cnode* ec, int fd, char *server_name, char* buf, int len, unsigned ms); - -int ei_rpc(ei_cnode* ec, int fd, char *mod, char *fun, - const char* inbuf, int inbuflen, ei_x_buff* x); -int ei_rpc_to(ei_cnode* ec, int fd, char *mod, char *fun, - const char* buf, int len); -int ei_rpc_from(ei_cnode* ec, int fd, int timeout, erlang_msg* msg, - ei_x_buff* x); - -int ei_publish(ei_cnode* ec, int port); -int ei_publish_tmo(ei_cnode* ec, int port, unsigned ms); -int ei_listen(ei_cnode *ec, int *port, int backlog); -int ei_xlisten(ei_cnode *ec, Erl_IpAddr adr, int *port, int backlog); -int ei_accept(ei_cnode* ec, int lfd, ErlConnect *conp); -int ei_accept_tmo(ei_cnode* ec, int lfd, ErlConnect *conp, unsigned ms); -int ei_unpublish(ei_cnode* ec); -int ei_unpublish_tmo(const char *alive, unsigned ms); - -int ei_close_connection(int fd); - -const char *ei_thisnodename(const ei_cnode* ec); -const char *ei_thishostname(const ei_cnode* ec); -const char *ei_thisalivename(const ei_cnode* ec); - -erlang_pid *ei_self(ei_cnode* ec); -int ei_make_pid(ei_cnode *ec, erlang_pid *pid); -int ei_make_ref(ei_cnode *ec, erlang_ref *ref); - -/* - * settings - */ - -void ei_set_compat_rel(unsigned rel); -void ei_set_tracelevel(int); -int ei_get_tracelevel(void); - -/* - * We have erl_gethost*() so we include ei versions as well. - */ - -struct hostent *ei_gethostbyname(const char *name); -struct hostent *ei_gethostbyaddr(const char *addr, int len, int type); -struct hostent *ei_gethostbyname_r(const char *name, - struct hostent *hostp, - char *buffer, - int buflen, - int *h_errnop); -struct hostent *ei_gethostbyaddr_r(const char *addr, - int length, - int type, - struct hostent *hostp, - char *buffer, - int buflen, - int *h_errnop); - - -/* Encode/decode functions */ - -int ei_encode_version(char *buf, int *index); -int ei_x_encode_version(ei_x_buff* x); -int ei_encode_long(char *buf, int *index, long p); -int ei_x_encode_long(ei_x_buff* x, long n); -int ei_encode_ulong(char *buf, int *index, unsigned long p); -int ei_x_encode_ulong(ei_x_buff* x, unsigned long n); -int ei_encode_double(char *buf, int *index, double p); -int ei_x_encode_double(ei_x_buff* x, double dbl); -int ei_encode_boolean(char *buf, int *index, int p); -int ei_x_encode_boolean(ei_x_buff* x, int p); -int ei_encode_char(char *buf, int *index, char p); -int ei_x_encode_char(ei_x_buff* x, char p); -int ei_encode_string(char *buf, int *index, const char *p); -int ei_encode_string_len(char *buf, int *index, const char *p, int len); -int ei_x_encode_string(ei_x_buff* x, const char* s); -int ei_x_encode_string_len(ei_x_buff* x, const char* s, int len); -int ei_encode_atom(char *buf, int *index, const char *p); -int ei_encode_atom_as(char *buf, int *index, const char *p, - erlang_char_encoding from, erlang_char_encoding to); -int ei_encode_atom_len(char *buf, int *index, const char *p, int len); -int ei_encode_atom_len_as(char *buf, int *index, const char *p, int len, - erlang_char_encoding from, erlang_char_encoding to); -int ei_x_encode_atom(ei_x_buff* x, const char* s); -int ei_x_encode_atom_as(ei_x_buff* x, const char* s, - erlang_char_encoding from, erlang_char_encoding to); -int ei_x_encode_atom_len(ei_x_buff* x, const char* s, int len); -int ei_x_encode_atom_len_as(ei_x_buff* x, const char* s, int len, - erlang_char_encoding from, erlang_char_encoding to); -int ei_encode_binary(char *buf, int *index, const void *p, long len); -int ei_encode_bitstring(char *buf, int *index, const char *p, size_t bitoffs, size_t bits); -int ei_x_encode_binary(ei_x_buff* x, const void* s, int len); -int ei_x_encode_bitstring(ei_x_buff* x, const char* p, size_t bitoffs, size_t bits); -int ei_encode_pid(char *buf, int *index, const erlang_pid *p); -int ei_x_encode_pid(ei_x_buff* x, const erlang_pid* pid); -int ei_encode_fun(char* buf, int* index, const erlang_fun* p); -int ei_x_encode_fun(ei_x_buff* x, const erlang_fun* fun); -int ei_encode_port(char *buf, int *index, const erlang_port *p); -int ei_x_encode_port(ei_x_buff* x, const erlang_port *p); -int ei_encode_ref(char *buf, int *index, const erlang_ref *p); -int ei_x_encode_ref(ei_x_buff* x, const erlang_ref *p); -int ei_encode_trace(char *buf, int *index, const erlang_trace *p); -int ei_x_encode_trace(ei_x_buff* x, const erlang_trace *p); -int ei_encode_tuple_header(char *buf, int *index, int arity); -int ei_x_encode_tuple_header(ei_x_buff* x, long n); -int ei_encode_list_header(char *buf, int *index, int arity); -int ei_x_encode_list_header(ei_x_buff* x, long n); -#define ei_encode_empty_list(buf,i) ei_encode_list_header(buf,i,0) -int ei_x_encode_empty_list(ei_x_buff* x); -int ei_encode_map_header(char *buf, int *index, int arity); -int ei_x_encode_map_header(ei_x_buff* x, long n); - -/* - * ei_get_type() returns the type and "size" of the item at - * buf[index]. For strings and atoms, size is the number of characters - * not including the terminating 0. For binaries, size is the number - * of bytes. For lists and tuples, size is the arity of the - * object. For other types, size is 0. In all cases, index is left - * unchanged. - */ - -int ei_get_type(const char *buf, const int *index, int *type, int *size); - -/* Step through buffer, decoding the given type into the buffer - * provided. On success, 0 is returned and index is updated to point - * to the start of the next item in the buffer. If the type of item at - * buf[index] is not the requested type, -1 is returned and index is - * not updated. The buffer provided by the caller must be sufficiently - * large to contain the decoded object. - */ -int ei_decode_version(const char *buf, int *index, int *version); -int ei_decode_long(const char *buf, int *index, long *p); -int ei_decode_ulong(const char *buf, int *index, unsigned long *p); -int ei_decode_double(const char *buf, int *index, double *p); -int ei_decode_boolean(const char *buf, int *index, int *p); -int ei_decode_char(const char *buf, int *index, char *p); -int ei_decode_string(const char *buf, int *index, char *p); -int ei_decode_atom(const char *buf, int *index, char *p); -int ei_decode_atom_as(const char *buf, int *index, char *p, int destlen, erlang_char_encoding want, erlang_char_encoding* was, erlang_char_encoding* result); -int ei_decode_binary(const char *buf, int *index, void *p, long *len); -int ei_decode_bitstring(const char *buf, int *index, const char** pp, - unsigned int* bitoffsp, size_t *nbitsp); - -int ei_decode_fun(const char* buf, int* index, erlang_fun* p); -void free_fun(erlang_fun* f); -int ei_decode_pid(const char *buf, int *index, erlang_pid *p); -int ei_decode_port(const char *buf, int *index, erlang_port *p); -int ei_decode_ref(const char *buf, int *index, erlang_ref *p); -int ei_decode_trace(const char *buf, int *index, erlang_trace *p); -int ei_decode_tuple_header(const char *buf, int *index, int *arity); -int ei_decode_list_header(const char *buf, int *index, int *arity); -int ei_decode_map_header(const char *buf, int *index, int *arity); -int ei_decode_iodata(const char *buf, int* index, int *szp, char *out_buf); - -/* - * ei_decode_ei_term() returns 1 if term is decoded, 0 if term is OK, - * but not decoded here and -1 if something is wrong. ONLY changes - * index if term is decoded (return value 1)! - */ - -int ei_decode_ei_term(const char* buf, int* index, ei_term* term); - - -/* - * ei_print_term to print out a binary coded term - */ - -int ei_print_term(FILE *fp, const char* buf, int* index); -int ei_s_print_term(char** s, const char* buf, int* index); - -/* - * format to build binary format terms a bit like printf - */ - -int ei_x_format(ei_x_buff* x, const char* fmt, ...); -int ei_x_format_wo_ver(ei_x_buff* x, const char *fmt, ...); - -int ei_x_new(ei_x_buff* x); -int ei_x_new_with_version(ei_x_buff* x); -int ei_x_free(ei_x_buff* x); -int ei_x_append(ei_x_buff* x, const ei_x_buff* x2); -int ei_x_append_buf(ei_x_buff* x, const char* buf, int len); -int ei_skip_term(const char* buf, int* index); - -int ei_cmp_refs(erlang_ref *a, erlang_ref *b); -int ei_cmp_pids(erlang_pid *a, erlang_pid *b); -int ei_cmp_ports(erlang_port *a, erlang_port *b); - -/*************************************************************************** - * - * Hash types needed by registry types - * - ***************************************************************************/ - -#define EI_SMALLKEY 32 - -typedef struct bucket_s { - int rawhash; - const char *key; - char keybuf[EI_SMALLKEY]; - const void *value; - struct bucket_s *next; -} ei_bucket; - -/* users of the package declare variables as pointers to this. */ -typedef struct { - ei_bucket **tab; - int (*hash)(const char *); /* hash function for this table */ - int size; /* size of table */ - int nelem; /* nr elements */ - int npos; /* nr occupied positions */ - ei_bucket *freelist; /* reuseable freed buckets */ -} ei_hash; - - -/*************************************************************************** - * - * Registry defines, types, functions - * - ***************************************************************************/ - -/* -------------------------------------------------------------------- */ -/* XXXXXXXXXXX */ -/* -------------------------------------------------------------------- */ - -/* registry object attributes */ -#define EI_DIRTY 0x01 /* dirty bit (object value differs from backup) */ -#define EI_DELET 0x02 /* object is deleted */ -#define EI_INT 0x10 /* object is an integer */ -#define EI_FLT 0x20 /* object is a float */ -#define EI_STR 0x40 /* object is a string */ -#define EI_BIN 0x80 /* object is a binary, i.e. pointer to arbitrary type */ - - -/* -------------------------------------------------------------------- */ -/* XXXXXXXXXXX */ -/* -------------------------------------------------------------------- */ - -typedef struct ei_reg_inode { - int attr; - int size; - union { - long i; - double f; - char *s; - void *p; - } val; - struct ei_reg_inode *next; -} ei_reg_obj; - -typedef struct { - ei_reg_obj *freelist; - ei_hash *tab; -} ei_reg; - -struct ei_reg_stat { - int attr; /* object attributes (see above) */ - int size; /* size in bytes (for STR and BIN) 0 for others */ -}; - -struct ei_reg_tabstat { - int size; /* size of table */ - int nelem; /* number of stored elements */ - int npos; /* number of occupied positions */ - int collisions; /* number of positions with more than one element */ -}; - - -int ei_init(void); - -/* -------------------------------------------------------------------- */ -/* XXXXXXXXXXX */ -/* -------------------------------------------------------------------- */ - -/* FIXME move comments to source */ - -/* open / close registry. On open, a descriptor is returned that must - * be specified in all subsequent calls to registry functions. You can - * open as many registries as you like. - */ -ei_reg *ei_reg_open(int size) EI_DEPRECATED_ATTR; -int ei_reg_resize(ei_reg *oldreg, int newsize) EI_DEPRECATED_ATTR; -int ei_reg_close(ei_reg *reg) EI_DEPRECATED_ATTR; - -/* set values... these routines assign values to keys. If the key - * exists, the previous value is discarded and the new one replaces - * it. - * - * BIN objects require an additional argument indicating the size in - * bytes of the stored object. This will be used when the object is - * backed up, since it will need to be copied at that time. Remember - * also that pointers are process-space specific and it is not - * meaningful to back them up for later recall. If you are storing - * binary objects for backup, make sure that they are self-contained - * (without references to other objects). - * - * On success the function returns 0, otherwise a value - * indicating the reason for failure will be returned. - */ -int ei_reg_setival(ei_reg *reg, const char *key, long i) EI_DEPRECATED_ATTR; -int ei_reg_setfval(ei_reg *reg, const char *key, double f) EI_DEPRECATED_ATTR; -int ei_reg_setsval(ei_reg *reg, const char *key, const char *s) EI_DEPRECATED_ATTR; -int ei_reg_setpval(ei_reg *reg, const char *key, const void *p, int size) EI_DEPRECATED_ATTR; - -/* general set function (specifiy type via flags) - * optional arguments are as for equivalent type-specific function, - * i.e.: - * ei_reg_setval(fd, path, EI_INT, int i); - * ei_reg_setval(fd, path, EI_FLT, float f); - * ei_reg_setval(fd, path, EI_STR, const char *s); - * ei_reg_setval(fd, path, EI_BIN, const void *p, int size); - */ -int ei_reg_setval(ei_reg *reg, const char *key, int flags, ...) EI_DEPRECATED_ATTR; - -/* get value of specific type object */ -/* warning: it may be difficult to detect errors when using these - * functions, since the error values are returned "in band" - */ -long ei_reg_getival(ei_reg *reg, const char *key) EI_DEPRECATED_ATTR; -double ei_reg_getfval(ei_reg *reg, const char *key) EI_DEPRECATED_ATTR; -const char *ei_reg_getsval(ei_reg *reg, const char *key) EI_DEPRECATED_ATTR; -const void *ei_reg_getpval(ei_reg *reg, const char *key, int *size) EI_DEPRECATED_ATTR; - -/* get value of any type object (must specify) - * Retrieve a value from an object. The type of value expected and a - * pointer to a large enough buffer must be provided. flags must be - * set to the appropriate type (see type constants above) and the - * object type must match. If (flags == 0) the pointer is *assumed* to - * be of the correct type for the object. In any case, the actual - * object type is always returned on success. - * - * The argument following flags must be one of int*, double*, const - * char** and const void**. - * - * for BIN objects an int* is needed to return the size of the object, i.e. - * int ei_reg_getval(ei_reg *reg, const char *path, int flags, void **p, int *size); - */ -int ei_reg_getval(ei_reg *reg, const char *key, int flags, ...) EI_DEPRECATED_ATTR; - -/* mark the object as dirty. Normally this operation will not be - * necessary, as it is done automatically by all of the above 'set' - * functions. However, if you modify the contents of an object pointed - * to by a STR or BIN object, then the registry will not be aware of - * the change. As a result, the object may be missed on a subsequent - * backup operation. Use this function to set the dirty bit on the - * object. - */ -int ei_reg_markdirty(ei_reg *reg, const char *key) EI_DEPRECATED_ATTR; - -/* remove objects. The value, if any, is discarded. For STR and BIN - * objects, the object itself is removed using free(). */ -int ei_reg_delete(ei_reg *reg, const char *key) EI_DEPRECATED_ATTR; - -/* get information about an object */ -int ei_reg_stat(ei_reg *reg, const char *key, struct ei_reg_stat *obuf) EI_DEPRECATED_ATTR; - -/* get information about table */ -int ei_reg_tabstat(ei_reg *reg, struct ei_reg_tabstat *obuf) EI_DEPRECATED_ATTR; - -/* dump to / restore from backup */ -/* fd is open descriptor to Erlang, mntab is Mnesia table name */ -/* flags here: */ -#define EI_FORCE 0x1 /* dump all records (not just dirty ones) */ -#define EI_NOPURGE 0x2 /* don't purge deleted records */ -int ei_reg_dump(int fd, ei_reg *reg, const char *mntab, int flags) EI_DEPRECATED_ATTR; -int ei_reg_restore(int fd, ei_reg *reg, const char *mntab) EI_DEPRECATED_ATTR; -int ei_reg_purge(ei_reg *reg) EI_DEPRECATED_ATTR; - -/* -------------------------------------------------------------------- */ -/* The ei_global functions */ -/* -------------------------------------------------------------------- */ -char **ei_global_names(ei_cnode *ec, int fd, int *count); -int ei_global_whereis(ei_cnode *ec, int fd, const char *name, erlang_pid* pid, char *node); -int ei_global_register(int fd, const char *name, erlang_pid *self); -int ei_global_unregister(ei_cnode *ec, int fd, const char *name); - -/* -------------------------------------------------------------------- */ -/* Encoding/decoding bugnums to GNU MP format */ -/* -------------------------------------------------------------------- */ - -/* If the user included we supply some more functions */ - -#if defined(__GNU_MP_VERSION) \ - && __GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR >= 1 - -int ei_decode_bignum(const char *buf, int *index, mpz_t obj); -int ei_encode_bignum(char *buf, int *index, mpz_t obj); -int ei_x_encode_bignum(ei_x_buff *x, mpz_t obj); - -#endif /* __GNU_MP_VERSION */ - -/* -------------------------------------------------------------------- */ -/* Function definitions not documented FIXME */ -/* -------------------------------------------------------------------- */ - -/* FIXME replace this primitive type size code */ - -#ifdef __WIN32__ -#define EI_LONGLONG __int64 -#define EI_ULONGLONG unsigned __int64 -#else -#define EI_LONGLONG long long -#define EI_ULONGLONG unsigned long long -#endif - -int ei_decode_longlong(const char *buf, int *index, EI_LONGLONG *p); -int ei_decode_ulonglong(const char *buf, int *index, EI_ULONGLONG *p); -int ei_encode_longlong(char *buf, int *index, EI_LONGLONG p); -int ei_encode_ulonglong(char *buf, int *index, EI_ULONGLONG p); -int ei_x_encode_longlong(ei_x_buff* x, EI_LONGLONG n); -int ei_x_encode_ulonglong(ei_x_buff* x, EI_ULONGLONG n); - -#ifdef USE_EI_UNDOCUMENTED - -/* - * Decode a list of integers into an integer array (i.e. even if it is - * encoded as a string). count gets number of items in array. - * See "decode_intlist.c". - */ - -int ei_decode_intlist(const char *buf, int *index, long *a, int *count); - -/* - * FIXME: used in IC, document? - * bufp = address of pointer to dynamically allocated buffer - may be reallocated by - * this function if it is too small for the message - * bufsz = in/out value: in=user buffer size, out=new buffer size - * msglen = nr bytes in received message - */ -int ei_receive_encoded(int fd, char **bufp, int *bufsz, erlang_msg *to, - int *msglen); -int ei_receive_encoded_tmo(int fd, char **bufp, int *bufsz, erlang_msg *to, - int *msglen, unsigned ms); -int ei_send_encoded(int fd, const erlang_pid *to, char *msg, int msglen); -int ei_send_encoded_tmo(int fd, const erlang_pid *to, char *msg, int msglen, - unsigned ms); -int ei_send_reg_encoded(int fd, const erlang_pid *from, const char *to, - char *msg, int msglen); -int ei_send_reg_encoded_tmo(int fd, const erlang_pid *from, const char *to, - char *msg, int msglen, unsigned ms); - -/* - * Bacward compatibility with old undocumented but used interface... - * FIXME use wrapper function instead?! - */ -#define ei_send_encoded_timeout(Fd,To,Msg,MsgLen,Ms) \ - ei_send_encoded_tmo((Fd),(To),(Msg),(MsgLen),(Ms)) -#define ei_send_reg_encoded_timeout(Fd,From,To,Msg,MsgLen,Ms) \ - ei_send_reg_encoded_tmo((Fd),(From),(To),(Msg),(MsgLen),(Ms)) - - -/* FIXME: is this really the best way to handle bignums? */ -int ei_encode_big(char *buf, int *index, erlang_big* big); -int ei_x_encode_big(ei_x_buff* x, erlang_big* big); -int ei_decode_big(const char *buf, int *index, erlang_big* p); -int ei_big_comp(erlang_big *x, erlang_big *y); -int ei_big_to_double(erlang_big *b, double *resp); -int ei_small_to_big(int s, erlang_big *b); -erlang_big *ei_alloc_big(unsigned int arity); -void ei_free_big(erlang_big *b); - -#endif /* USE_EI_UNDOCUMENTED */ - -#ifdef __cplusplus -} -#endif - -#endif /* EI_H */ diff --git a/prebuilt/macos/headers/erlang/ei_connect.h b/prebuilt/macos/headers/erlang/ei_connect.h deleted file mode 100644 index 825fee0165..0000000000 --- a/prebuilt/macos/headers/erlang/ei_connect.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2003-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -#ifndef EI_CONNECT_H -#define EI_CONNECT_H - -/* Dummy for now.... */ - -#include "ei.h" - -#endif /* EI_CONNECT_H */ diff --git a/prebuilt/macos/headers/erlang/eicode.h b/prebuilt/macos/headers/erlang/eicode.h deleted file mode 100644 index efba630d13..0000000000 --- a/prebuilt/macos/headers/erlang/eicode.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2003-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -#ifndef EICODE_H -#define EICODE_H - -/* Dummy for now.... */ - -#include "ei.h" - -#endif /* EICODE_H */ diff --git a/prebuilt/macos/headers/erlang/erl_driver.h b/prebuilt/macos/headers/erlang/erl_driver.h deleted file mode 100644 index d5379a40d5..0000000000 --- a/prebuilt/macos/headers/erlang/erl_driver.h +++ /dev/null @@ -1,636 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 1999-2017. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* - * Include file for erlang driver writers. - */ - -#ifndef __ERL_DRIVER_H__ -#define __ERL_DRIVER_H__ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#define ERL_DRV_DEPRECATED_FUNC -#ifdef __GNUC__ -# if __GNUC__ >= 3 -# undef ERL_DRV_DEPRECATED_FUNC -# define ERL_DRV_DEPRECATED_FUNC __attribute__((deprecated)) -# endif -#endif - -#include "erl_drv_nif.h" - -#include - -#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_) -#ifndef STATIC_ERLANG_DRIVER - /* Windows dynamic drivers, everything is different... */ -#define ERL_DRIVER_TYPES_ONLY -#define WIN32_DYNAMIC_ERL_DRIVER -#endif -#endif - -#ifndef EXTERN -# ifdef __cplusplus -# define EXTERN extern "C" -# else -# define EXTERN extern -# endif -#endif - -#define ERL_DRV_READ ((int)ERL_NIF_SELECT_READ) -#define ERL_DRV_WRITE ((int)ERL_NIF_SELECT_WRITE) -#define ERL_DRV_USE ((int)ERL_NIF_SELECT_STOP) -#define ERL_DRV_USE_NO_CALLBACK (ERL_DRV_USE | (ERL_DRV_USE << 1)) - -/* Old deprecated */ -#define DO_READ ERL_DRV_READ -#define DO_WRITE ERL_DRV_WRITE - -#define ERL_DRV_EXTENDED_MARKER (0xfeeeeeed) -#define ERL_DRV_EXTENDED_MAJOR_VERSION 3 -#define ERL_DRV_EXTENDED_MINOR_VERSION 3 - -/* - * The emulator will refuse to load a driver with a major version - * lower than ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD. The load - * may however fail if user have not removed use of deprecated - * symbols. - * - * The ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD have to allow - * loading of drivers built at least two major OTP releases - * ago. - * - * Bump of major version to 3 happened in OTP 17. That is, in - * OTP 19 we can increase ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD - * to 3. - */ -#define ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD 2 - -/* - * The emulator will refuse to load a driver with different major - * version than the one used by the emulator. - */ - - -/* Values for set_port_control_flags() */ - -#define PORT_CONTROL_FLAG_BINARY (1 << 0) -#define PORT_CONTROL_FLAG_HEAVY (1 << 1) - -/* Values for get_port_flags() */ - -#define PORT_FLAG_BINARY (1 << 0) -#define PORT_FLAG_LINE (1 << 1) - - -#define ERL_DRV_FLAG_USE_PORT_LOCKING (1 << 0) -#define ERL_DRV_FLAG_SOFT_BUSY (1 << 1) -#define ERL_DRV_FLAG_NO_BUSY_MSGQ (1 << 2) -#define ERL_DRV_FLAG_USE_INIT_ACK (1 << 3) - -/* - * Integer types - */ - -typedef ErlNapiUInt64 ErlDrvUInt64; -typedef ErlNapiSInt64 ErlDrvSInt64; -typedef ErlNapiUInt ErlDrvUInt; -typedef ErlNapiSInt ErlDrvSInt; -typedef ErlNapiUInt ErlDrvTermData; - -#if defined(__WIN32__) || defined(_WIN32) -typedef ErlDrvUInt ErlDrvSizeT; -typedef ErlDrvSInt ErlDrvSSizeT; -#else -typedef size_t ErlDrvSizeT; -typedef ssize_t ErlDrvSSizeT; -#endif - -/* - * A binary as seen in a driver. Note that a binary should never be - * altered by the driver when it has been sent to Erlang. - */ - -typedef struct erl_drv_binary { - ErlDrvSInt orig_size; /* total length of binary */ - char orig_bytes[1]; /* the data (char instead of byte!) */ -} ErlDrvBinary; - - -/* - * Note: These types are incomplete to catch type errors easier. - */ - -typedef struct _erl_drv_data* ErlDrvData; /* Data to be used by the driver itself. */ -#ifndef ERL_SYS_DRV -typedef struct _erl_drv_event* ErlDrvEvent; /* An event to be selected on. */ -#endif -typedef struct _erl_drv_port* ErlDrvPort; /* A port descriptor. */ -typedef struct _erl_drv_port* ErlDrvThreadData; /* Thread data. */ - -typedef struct { - unsigned long megasecs; - unsigned long secs; - unsigned long microsecs; -} ErlDrvNowData; - -typedef ErlDrvSInt64 ErlDrvTime; - -#define ERL_DRV_TIME_ERROR ((ErlDrvSInt64) ERTS_NAPI_TIME_ERROR__) - -typedef enum { - ERL_DRV_SEC = ERTS_NAPI_SEC__, - ERL_DRV_MSEC = ERTS_NAPI_MSEC__, - ERL_DRV_USEC = ERTS_NAPI_USEC__, - ERL_DRV_NSEC = ERTS_NAPI_NSEC__ -} ErlDrvTimeUnit; - -/* - * Error codes that can be return from driver. - */ - -/* - * Exception code from open_port/2 will be {'EXIT',{einval,Where}}. - */ -#define ERL_DRV_ERROR_GENERAL ((ErlDrvData) -1) - -/* - * Exception code from open_port/2 will be {'EXIT',{Errno,Where}}, - * where Errno is a textual representation of the errno variable - * (e.g. eacces if errno is EACCES). - */ -#define ERL_DRV_ERROR_ERRNO ((ErlDrvData) -2) - -/* - * Exception code from open_port/2 will be {'EXIT',{badarg,Where}}. - */ -#define ERL_DRV_ERROR_BADARG ((ErlDrvData) -3) - -typedef struct erl_io_vec { - int vsize; /* length of vectors */ - ErlDrvSizeT size; /* total size in bytes */ - SysIOVec* iov; - ErlDrvBinary** binv; -} ErlIOVec; - -/* - * erl driver thread types - */ - -typedef struct ErlDrvTid_ *ErlDrvTid; -typedef struct ErlDrvMutex_ ErlDrvMutex; -typedef struct ErlDrvCond_ ErlDrvCond; -typedef struct ErlDrvRWLock_ ErlDrvRWLock; -typedef int ErlDrvTSDKey; - -/* - * - */ -typedef struct erl_drv_port_data_lock * ErlDrvPDL; - -/* - * This structure defines a driver. - */ - -typedef struct erl_drv_entry { - int (*init)(void); /* called at system start up for statically - linked drivers, and after loading for - dynamically loaded drivers */ - -#ifndef ERL_SYS_DRV - ErlDrvData (*start)(ErlDrvPort port, char *command); - /* called when open_port/2 is invoked. - return value -1 means failure. */ -#else - ErlDrvData (*start)(ErlDrvPort port, char *command, SysDriverOpts* opts); - /* special options, only for system driver */ -#endif - void (*stop)(ErlDrvData drv_data); - /* called when port is closed, and when the - emulator is halted. */ - void (*output)(ErlDrvData drv_data, char *buf, ErlDrvSizeT len); - /* called when we have output from erlang to - the port */ - void (*ready_input)(ErlDrvData drv_data, ErlDrvEvent event); - /* called when we have input from one of - the driver's handles */ - void (*ready_output)(ErlDrvData drv_data, ErlDrvEvent event); - /* called when output is possible to one of - the driver's handles */ - char *driver_name; /* name supplied as command - in open_port XXX ? */ - void (*finish)(void); /* called before unloading the driver - - DYNAMIC DRIVERS ONLY */ - void *handle; /* Reserved -- Used by emulator internally */ - ErlDrvSSizeT (*control)(ErlDrvData drv_data, unsigned int command, - char *buf, ErlDrvSizeT len, char **rbuf, - ErlDrvSizeT rlen); /* "ioctl" for drivers - invoked by - port_control/3 */ - void (*timeout)(ErlDrvData drv_data); /* Handling of timeout in driver */ - void (*outputv)(ErlDrvData drv_data, ErlIOVec *ev); - /* called when we have output from erlang - to the port */ - void (*ready_async)(ErlDrvData drv_data, ErlDrvThreadData thread_data); - void (*flush)(ErlDrvData drv_data); - /* called when the port is about to be - closed, and there is data in the - driver queue that needs to be flushed - before 'stop' can be called */ - ErlDrvSSizeT (*call)(ErlDrvData drv_data, - unsigned int command, char *buf, ErlDrvSizeT len, - char **rbuf, ErlDrvSizeT rlen, - unsigned int *flags); /* Works mostly like 'control', - a synchronous - call into the driver. */ - void (*unused_event_callback)(void); - int extended_marker; /* ERL_DRV_EXTENDED_MARKER */ - int major_version; /* ERL_DRV_EXTENDED_MAJOR_VERSION */ - int minor_version; /* ERL_DRV_EXTENDED_MINOR_VERSION */ - int driver_flags; /* ERL_DRV_FLAGs */ - void *handle2; /* Reserved -- Used by emulator internally */ - void (*process_exit)(ErlDrvData drv_data, ErlDrvMonitor *monitor); - /* Called when a process monitor fires */ - void (*stop_select)(ErlDrvEvent event, void* reserved); - /* Called on behalf of driver_select when - it is safe to release 'event'. A typical - unix driver would call close(event) */ - void (*emergency_close)(ErlDrvData drv_data); - /* called when the port is closed abruptly. - specifically when erl_crash_dump is called. */ - /* When adding entries here, dont forget to pad in obsolete/driver.h */ -} ErlDrvEntry; - -/* - * This macro is used to name a dynamic driver's init function in - * a way that doesn't lead to conflicts. This is crucial when using - * operating systems that has one namespace for all symbols - * (e.g. VxWorks). Example: if you have an dynamic driver C source - * file named echo_drv.c, you use the macro like this: - * - * DRIVER_INIT(echo_drv) - * { - * .... - * } - * - * This function will be called by the Erlang I/O system when the driver is loaded. - * It must initialize a ErlDrvEntry structure and return a pointer to it. - */ - -#ifdef STATIC_ERLANG_DRIVER -# define ERLANG_DRIVER_NAME(NAME) NAME ## _driver_init -# define ERL_DRIVER_EXPORT -#else -# define ERLANG_DRIVER_NAME(NAME) driver_init -# if defined(__GNUC__) && __GNUC__ >= 4 -# define ERL_DRIVER_EXPORT __attribute__ ((visibility("default"))) -# elif defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) -# define ERL_DRIVER_EXPORT __global -# else -# define ERL_DRIVER_EXPORT -# endif -#endif - -#ifndef ERL_DRIVER_TYPES_ONLY - -#define DRIVER_INIT(DRIVER_NAME) \ - ERL_DRIVER_EXPORT ErlDrvEntry* ERLANG_DRIVER_NAME(DRIVER_NAME)(void); \ - ERL_DRIVER_EXPORT ErlDrvEntry* ERLANG_DRIVER_NAME(DRIVER_NAME)(void) - -#define ERL_DRV_BUSY_MSGQ_DISABLED (~((ErlDrvSizeT) 0)) -#define ERL_DRV_BUSY_MSGQ_READ_ONLY ((ErlDrvSizeT) 0) -#define ERL_DRV_BUSY_MSGQ_LIM_MAX (ERL_DRV_BUSY_MSGQ_DISABLED - 1) -#define ERL_DRV_BUSY_MSGQ_LIM_MIN ((ErlDrvSizeT) 1) - -/* - * These are the functions available for driver writers. - */ -EXTERN void erl_drv_busy_msgq_limits(ErlDrvPort port, - ErlDrvSizeT *low, - ErlDrvSizeT *high); - -EXTERN int driver_select(ErlDrvPort port, ErlDrvEvent event, int mode, int on); - -EXTERN int driver_output(ErlDrvPort port, char *buf, ErlDrvSizeT len); -EXTERN int driver_output2(ErlDrvPort port, char *hbuf, ErlDrvSizeT hlen, - char *buf, ErlDrvSizeT len); -EXTERN int driver_output_binary(ErlDrvPort port, char *hbuf, ErlDrvSizeT hlen, - ErlDrvBinary* bin, - ErlDrvSizeT offset, ErlDrvSizeT len); -EXTERN int driver_outputv(ErlDrvPort port, char* hbuf, ErlDrvSizeT hlen, - ErlIOVec *ev, ErlDrvSizeT skip); -EXTERN ErlDrvSizeT driver_vec_to_buf(ErlIOVec *ev, char *buf, ErlDrvSizeT len); -EXTERN int driver_set_timer(ErlDrvPort port, unsigned long time); -EXTERN int driver_cancel_timer(ErlDrvPort port); -EXTERN int driver_read_timer(ErlDrvPort port, unsigned long *time_left); - -/* - * Inform runtime system about lengthy work. - */ -EXTERN int erl_drv_consume_timeslice(ErlDrvPort port, int percent); - -/* - * Get plain-text error message from within a driver - */ -EXTERN char* erl_errno_id(int error); - -/* - * The following functions are used to initiate a close of a port - * from a driver. - */ -EXTERN int driver_failure_eof(ErlDrvPort port); -EXTERN int driver_failure_atom(ErlDrvPort port, char *string); -EXTERN int driver_failure_posix(ErlDrvPort port, int error); -EXTERN int driver_failure(ErlDrvPort port, int error); -EXTERN int driver_exit (ErlDrvPort port, int err); - - -/* - * Port Data Lock - */ - -EXTERN ErlDrvPDL driver_pdl_create(ErlDrvPort); -EXTERN void driver_pdl_lock(ErlDrvPDL); -EXTERN void driver_pdl_unlock(ErlDrvPDL); -EXTERN ErlDrvSInt driver_pdl_get_refc(ErlDrvPDL); -EXTERN ErlDrvSInt driver_pdl_inc_refc(ErlDrvPDL); -EXTERN ErlDrvSInt driver_pdl_dec_refc(ErlDrvPDL); - -/* - * Process monitors - */ -EXTERN int -driver_monitor_process(ErlDrvPort port, ErlDrvTermData process, - ErlDrvMonitor *monitor); -EXTERN int -driver_demonitor_process(ErlDrvPort port, const ErlDrvMonitor *monitor); -EXTERN ErlDrvTermData -driver_get_monitored_process(ErlDrvPort port, const ErlDrvMonitor *monitor); -EXTERN int driver_compare_monitors(const ErlDrvMonitor *monitor1, - const ErlDrvMonitor *monitor2); - -/* - * Port attributes - */ -EXTERN void set_busy_port(ErlDrvPort port, int on); -EXTERN void set_port_control_flags(ErlDrvPort port, int flags); - -EXTERN int get_port_flags(ErlDrvPort port); - - -/* Binary interface */ - -/* - * NOTE: DO NOT overwrite a binary with new data (if the data is delivered); - * since the binary is a shared object it MUST be written once. - */ - -EXTERN ErlDrvBinary* driver_alloc_binary(ErlDrvSizeT size); -EXTERN ErlDrvBinary* driver_realloc_binary(ErlDrvBinary *bin, ErlDrvSizeT size); -EXTERN void driver_free_binary(ErlDrvBinary *bin); - -/* Referenc count on driver binaries */ -EXTERN ErlDrvSInt driver_binary_get_refc(ErlDrvBinary *dbp); -EXTERN ErlDrvSInt driver_binary_inc_refc(ErlDrvBinary *dbp); -EXTERN ErlDrvSInt driver_binary_dec_refc(ErlDrvBinary *dbp); - -/* Allocation interface */ -EXTERN void *driver_alloc(ErlDrvSizeT size); -EXTERN void *driver_realloc(void *ptr, ErlDrvSizeT size); -EXTERN void driver_free(void *ptr); - -/* Queue interface */ -EXTERN int driver_enq(ErlDrvPort port, char* buf, ErlDrvSizeT len); -EXTERN int driver_pushq(ErlDrvPort port, char* buf, ErlDrvSizeT len); -EXTERN ErlDrvSizeT driver_deq(ErlDrvPort port, ErlDrvSizeT size); -EXTERN ErlDrvSizeT driver_sizeq(ErlDrvPort port); -EXTERN int driver_enq_bin(ErlDrvPort port, ErlDrvBinary *bin, ErlDrvSizeT offset, - ErlDrvSizeT len); -EXTERN int driver_pushq_bin(ErlDrvPort port, ErlDrvBinary *bin, ErlDrvSizeT offset, - ErlDrvSizeT len); - -EXTERN ErlDrvSizeT driver_peekqv(ErlDrvPort port, ErlIOVec *ev); -EXTERN SysIOVec* driver_peekq(ErlDrvPort port, int *vlen); -EXTERN int driver_enqv(ErlDrvPort port, ErlIOVec *ev, ErlDrvSizeT skip); -EXTERN int driver_pushqv(ErlDrvPort port, ErlIOVec *ev, ErlDrvSizeT skip); - -/* - * Add and remove driver entries. - */ -EXTERN void add_driver_entry(ErlDrvEntry *de); -EXTERN int remove_driver_entry(ErlDrvEntry *de); - -/* - * System info - */ -EXTERN void driver_system_info(ErlDrvSysInfo *sip, size_t si_size); - -/* - * erl driver thread functions. - */ - -EXTERN ErlDrvMutex *erl_drv_mutex_create(char *name); -EXTERN void erl_drv_mutex_destroy(ErlDrvMutex *mtx); -EXTERN int erl_drv_mutex_trylock(ErlDrvMutex *mtx); -EXTERN void erl_drv_mutex_lock(ErlDrvMutex *mtx); -EXTERN void erl_drv_mutex_unlock(ErlDrvMutex *mtx); -EXTERN ErlDrvCond *erl_drv_cond_create(char *name); -EXTERN void erl_drv_cond_destroy(ErlDrvCond *cnd); -EXTERN void erl_drv_cond_signal(ErlDrvCond *cnd); -EXTERN void erl_drv_cond_broadcast(ErlDrvCond *cnd); -EXTERN void erl_drv_cond_wait(ErlDrvCond *cnd, ErlDrvMutex *mtx); -EXTERN ErlDrvRWLock *erl_drv_rwlock_create(char *name); -EXTERN void erl_drv_rwlock_destroy(ErlDrvRWLock *rwlck); -EXTERN int erl_drv_rwlock_tryrlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_rlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_runlock(ErlDrvRWLock *rwlck); -EXTERN int erl_drv_rwlock_tryrwlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_rwlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_rwunlock(ErlDrvRWLock *rwlck); -EXTERN int erl_drv_tsd_key_create(char *name, ErlDrvTSDKey *key); -EXTERN void erl_drv_tsd_key_destroy(ErlDrvTSDKey key); -EXTERN void erl_drv_tsd_set(ErlDrvTSDKey key, void *data); -EXTERN void *erl_drv_tsd_get(ErlDrvTSDKey key); -EXTERN ErlDrvThreadOpts *erl_drv_thread_opts_create(char *name); -EXTERN void erl_drv_thread_opts_destroy(ErlDrvThreadOpts *opts); -EXTERN int erl_drv_thread_create(char *name, - ErlDrvTid *tid, - void * (*func)(void *), - void *args, - ErlDrvThreadOpts *opts); -EXTERN ErlDrvTid erl_drv_thread_self(void); -EXTERN int erl_drv_equal_tids(ErlDrvTid tid1, ErlDrvTid tid2); -EXTERN void erl_drv_thread_exit(void *resp); -EXTERN int erl_drv_thread_join(ErlDrvTid, void **respp); - -EXTERN char* erl_drv_mutex_name(ErlDrvMutex *mtx); -EXTERN char* erl_drv_cond_name(ErlDrvCond *cnd); -EXTERN char* erl_drv_rwlock_name(ErlDrvRWLock *rwlck); -EXTERN char* erl_drv_thread_name(ErlDrvTid tid); - -/* - * Misc. - */ -EXTERN int null_func(void); - -#endif /* !ERL_DRIVER_TYPES_ONLY */ - -/* Constants for return flags from the 'port_call' callback */ -#define DRIVER_CALL_KEEP_BUFFER 0x1 - -/* ErlDrvTerm is the type to use for casts when building - * terms that should be sent to connected process, - * for instance a tuple on the form {tcp, Port, [Tag|Binary]} - * - * ErlDrvTerm spec[] = { - * ERL_DRV_ATOM, driver_mk_atom("tcp"), - * ERL_DRV_PORT, driver_mk_port(drv->ix), - * ERL_DRV_INT, REPLY_TAG, - * ERL_DRV_BINARY, (ErlDrvTerm)bin, 50, 0, - * ERL_DRV_LIST, 2, - * ERL_DRV_TUPLE, 3, - * } - * - */ - -#define TERM_DATA(x) ((ErlDrvTermData) (x)) - -/* Possible types to send from driver Argument type */ -#define ERL_DRV_NIL ((ErlDrvTermData) 1) /* None */ -#define ERL_DRV_ATOM ((ErlDrvTermData) 2) /* driver_mk_atom(string) */ -#define ERL_DRV_INT ((ErlDrvTermData) 3) /* ErlDrvSInt */ -#define ERL_DRV_PORT ((ErlDrvTermData) 4) /* driver_mk_port(ix) */ -#define ERL_DRV_BINARY ((ErlDrvTermData) 5) /* ErlDrvBinary*, - * ErlDrvUInt size, - * ErlDrvUInt offs */ -#define ERL_DRV_STRING ((ErlDrvTermData) 6) /* char*, ErlDrvUInt */ -#define ERL_DRV_TUPLE ((ErlDrvTermData) 7) /* ErlDrvUInt */ -#define ERL_DRV_LIST ((ErlDrvTermData) 8) /* ErlDrvUInt */ -#define ERL_DRV_STRING_CONS ((ErlDrvTermData) 9) /* char*, ErlDrvUInt */ -#define ERL_DRV_PID ((ErlDrvTermData) 10) /* driver_connected,... */ - -#define ERL_DRV_FLOAT ((ErlDrvTermData) 11) /* double * */ -#define ERL_DRV_EXT2TERM ((ErlDrvTermData) 12) /* char *, ErlDrvUInt */ -#define ERL_DRV_UINT ((ErlDrvTermData) 13) /* ErlDrvUInt */ -#define ERL_DRV_BUF2BINARY ((ErlDrvTermData) 14) /* char *, ErlDrvUInt */ -#define ERL_DRV_INT64 ((ErlDrvTermData) 15) /* ErlDrvSInt64 * */ -#define ERL_DRV_UINT64 ((ErlDrvTermData) 16) /* ErlDrvUInt64 * */ - -#define ERL_DRV_MAP ((ErlDrvTermData) 17) /* ErlDrvUInt */ - -#ifndef ERL_DRIVER_TYPES_ONLY - -/* make terms for driver_output_term and driver_send_term */ -EXTERN ErlDrvTermData driver_mk_atom(char*); -EXTERN ErlDrvTermData driver_mk_port(ErlDrvPort); -EXTERN ErlDrvTermData driver_connected(ErlDrvPort); -EXTERN ErlDrvTermData driver_caller(ErlDrvPort); -extern const ErlDrvTermData driver_term_nil; -EXTERN ErlDrvTermData driver_mk_term_nil(void); -EXTERN ErlDrvPort driver_create_port(ErlDrvPort creator_port, - ErlDrvTermData connected, /* pid */ - char* name, /* driver name */ - ErlDrvData drv_data); - - -/* - * driver_output_term() is deprecated, and scheduled for removal in - * OTP-R17. Use erl_drv_output_term() instead. For more information - * see the erl_driver(3) documentation. - */ -EXTERN int driver_output_term(ErlDrvPort ix, - ErlDrvTermData* data, - int len) ERL_DRV_DEPRECATED_FUNC; -/* - * driver_send_term() is deprecated, and scheduled for removal in - * OTP-R17. Use erl_drv_send_term() instead. For more information - * see the erl_driver(3) documentation. - */ -EXTERN int driver_send_term(ErlDrvPort ix, - ErlDrvTermData to, - ErlDrvTermData* data, - int len) ERL_DRV_DEPRECATED_FUNC; - -/* output term data to the port owner */ -EXTERN int erl_drv_output_term(ErlDrvTermData port, - ErlDrvTermData* data, - int len); -/* output term data to a specific process */ -EXTERN int erl_drv_send_term(ErlDrvTermData port, - ErlDrvTermData to, - ErlDrvTermData* data, - int len); - -/* Async IO functions */ -EXTERN unsigned int driver_async_port_key(ErlDrvPort port); - -EXTERN long driver_async(ErlDrvPort ix, - unsigned int* key, - void (*async_invoke)(void*), - void* async_data, - void (*async_free)(void*)); - -/* Locks the driver in the machine "forever", there is - no unlock function. Note that this is almost never useful, as an open - port towards the driver locks it until the port is closed, why unexpected - unloading "never" happens. */ -EXTERN int driver_lock_driver(ErlDrvPort ix); - -/* Get the current 'now' timestamp (analogue to erlang:now()) */ -EXTERN int driver_get_now(ErlDrvNowData *now) ERL_DRV_DEPRECATED_FUNC; - -/* Erlang Monotonic Time */ -EXTERN ErlDrvTime erl_drv_monotonic_time(ErlDrvTimeUnit time_unit); -/* Time offset between Erlang Monotonic Time and Erlang System Time */ -EXTERN ErlDrvTime erl_drv_time_offset(ErlDrvTimeUnit time_unit); -/* Time unit conversion */ -EXTERN ErlDrvTime erl_drv_convert_time_unit(ErlDrvTime val, - ErlDrvTimeUnit from, - ErlDrvTimeUnit to); - -/* These were removed from the ANSI version, now they're back. */ - -EXTERN void *driver_dl_open(char *); -EXTERN void *driver_dl_sym(void *, char *); -EXTERN int driver_dl_close(void *); -EXTERN char *driver_dl_error(void); - -/* environment */ -EXTERN int erl_drv_putenv(const char *key, char *value); -EXTERN int erl_drv_getenv(const char *key, char *value, size_t *value_size); - -/* spawn start init ack */ -EXTERN void erl_drv_init_ack(ErlDrvPort ix, ErlDrvData res); - -/* set the pid seen in port_info */ -EXTERN void erl_drv_set_os_pid(ErlDrvPort ix, ErlDrvSInt pid); - -#endif /* !ERL_DRIVER_TYPES_ONLY */ - -#ifdef WIN32_DYNAMIC_ERL_DRIVER -# include "erl_win_dyn_driver.h" -#endif - -#endif - -/* also in global.h, but driver's can't include global.h */ -void dtrace_drvport_str(ErlDrvPort port, char *port_buf); diff --git a/prebuilt/macos/headers/erlang/erl_drv_nif.h b/prebuilt/macos/headers/erlang/erl_drv_nif.h deleted file mode 100644 index bf14d824b1..0000000000 --- a/prebuilt/macos/headers/erlang/erl_drv_nif.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2010-2020. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* - * Common structures for both erl_driver.h and erl_nif.h - */ - -#ifndef __ERL_DRV_NIF_H__ -#define __ERL_DRV_NIF_H__ - -typedef struct { - int driver_major_version; - int driver_minor_version; - char *erts_version; - char *otp_release; - int thread_support; - int smp_support; - int async_threads; - int scheduler_threads; - int nif_major_version; - int nif_minor_version; - int dirty_scheduler_support; -} ErlDrvSysInfo; - -typedef struct { - int suggested_stack_size; -} ErlDrvThreadOpts; - - -typedef enum { - ERL_DIRTY_JOB_CPU_BOUND = 1, - ERL_DIRTY_JOB_IO_BOUND = 2 -} ErlDirtyJobFlags; - -/* Values for enif_select AND mode arg for driver_select() */ -enum ErlNifSelectFlags { - ERL_NIF_SELECT_READ = (1 << 0), - ERL_NIF_SELECT_WRITE = (1 << 1), - ERL_NIF_SELECT_STOP = (1 << 2), - ERL_NIF_SELECT_CANCEL = (1 << 3), - ERL_NIF_SELECT_CUSTOM_MSG= (1 << 4) -}; - -/* - * A driver monitor - */ -typedef struct { - unsigned char data[sizeof(void *)*4]; -} ErlDrvMonitor; - - -#ifdef SIZEOF_CHAR -# define SIZEOF_CHAR_SAVED__ SIZEOF_CHAR -# undef SIZEOF_CHAR -#endif -#ifdef SIZEOF_SHORT -# define SIZEOF_SHORT_SAVED__ SIZEOF_SHORT -# undef SIZEOF_SHORT -#endif -#ifdef SIZEOF_INT -# define SIZEOF_INT_SAVED__ SIZEOF_INT -# undef SIZEOF_INT -#endif -#ifdef SIZEOF_LONG -# define SIZEOF_LONG_SAVED__ SIZEOF_LONG -# undef SIZEOF_LONG -#endif -#ifdef SIZEOF_LONG_LONG -# define SIZEOF_LONG_LONG_SAVED__ SIZEOF_LONG_LONG -# undef SIZEOF_LONG_LONG -#endif -#include "erl_int_sizes_config.h" -#if defined(SIZEOF_CHAR_SAVED__) && SIZEOF_CHAR_SAVED__ != SIZEOF_CHAR -# error SIZEOF_CHAR mismatch -#endif -#if defined(SIZEOF_SHORT_SAVED__) && SIZEOF_SHORT_SAVED__ != SIZEOF_SHORT -# error SIZEOF_SHORT mismatch -#endif -#if defined(SIZEOF_INT_SAVED__) && SIZEOF_INT_SAVED__ != SIZEOF_INT -# error SIZEOF_INT mismatch -#endif -#if defined(SIZEOF_LONG_SAVED__) && SIZEOF_LONG_SAVED__ != SIZEOF_LONG -# error SIZEOF_LONG mismatch -#endif -#if defined(SIZEOF_LONG_LONG_SAVED__) && SIZEOF_LONG_LONG_SAVED__ != SIZEOF_LONG_LONG -# error SIZEOF_LONG_LONG mismatch -#endif - -#if !defined(__GNUC__) && (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -typedef unsigned __int64 ErlNapiUInt64; -typedef signed __int64 ErlNapiSInt64; -#define ERL_NAPI_SINT64_MAX__ 9223372036854775807i64 -#define ERL_NAPI_SINT64_MIN__ (-ERL_NAPI_SINT64_MAX__ - 1i64) -#elif SIZEOF_LONG == 8 -typedef unsigned long ErlNapiUInt64; -typedef signed long ErlNapiSInt64; -#define ERL_NAPI_SINT64_MAX__ 9223372036854775807L -#define ERL_NAPI_SINT64_MIN__ (-ERL_NAPI_SINT64_MAX__ - 1L) -#elif SIZEOF_LONG_LONG == 8 -typedef unsigned long long ErlNapiUInt64; -typedef signed long long ErlNapiSInt64; -#define ERL_NAPI_SINT64_MAX__ 9223372036854775807LL -#define ERL_NAPI_SINT64_MIN__ (-ERL_NAPI_SINT64_MAX__ - 1LL) -#else -# error No 64-bit integer type -#endif - -#if SIZEOF_VOID_P == 8 -typedef ErlNapiUInt64 ErlNapiUInt; -typedef ErlNapiSInt64 ErlNapiSInt; -#elif SIZEOF_VOID_P == 4 -# if SIZEOF_LONG == SIZEOF_VOID_P -typedef unsigned long ErlNapiUInt; -typedef signed long ErlNapiSInt; -# elif SIZEOF_INT == SIZEOF_VOID_P -typedef unsigned int ErlNapiUInt; -typedef signed int ErlNapiSInt; -# else -# error No 32-bit integer type -# endif -#else -# error Not support arch -#endif - -#define ERTS_NAPI_TIME_ERROR__ ERL_NAPI_SINT64_MIN__ - -#define ERTS_NAPI_SEC__ 0 -#define ERTS_NAPI_MSEC__ 1 -#define ERTS_NAPI_USEC__ 2 -#define ERTS_NAPI_NSEC__ 3 - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -/* - * This structure can be cast to a WSABUF structure. - */ -typedef struct _SysIOVec { - unsigned long iov_len; - char* iov_base; -} SysIOVec; -#else /* Unix */ -# include -# ifdef HAVE_SYS_UIO_H -# include -typedef struct iovec SysIOVec; -# else -typedef struct { - char* iov_base; - size_t iov_len; -} SysIOVec; -# endif -#endif - -#endif /* __ERL_DRV_NIF_H__ */ diff --git a/prebuilt/macos/headers/erlang/erl_fixed_size_int_types.h b/prebuilt/macos/headers/erlang/erl_fixed_size_int_types.h deleted file mode 100644 index 9f47bdd797..0000000000 --- a/prebuilt/macos/headers/erlang/erl_fixed_size_int_types.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2004-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - - -/* - * Description: - * - * Author: Rickard Green - */ - -#ifndef FIXED_SIZE_INT_TYPES_H__ -#define FIXED_SIZE_INT_TYPES_H__ - -#ifdef SIZEOF_CHAR -# define SIZEOF_CHAR_SAVED__ SIZEOF_CHAR -# undef SIZEOF_CHAR -#endif - -#ifdef SIZEOF_SHORT -# define SIZEOF_SHORT_SAVED__ SIZEOF_SHORT -# undef SIZEOF_SHORT -#endif - -#ifdef SIZEOF_INT -# define SIZEOF_INT_SAVED__ SIZEOF_INT -# undef SIZEOF_INT -#endif - -#ifdef SIZEOF_LONG -# define SIZEOF_LONG_SAVED__ SIZEOF_LONG -# undef SIZEOF_LONG -#endif - -#ifdef SIZEOF_LONG_LONG -# define SIZEOF_LONG_LONG_SAVED__ SIZEOF_LONG_LONG -# undef SIZEOF_LONG_LONG -#endif - -#include "erl_int_sizes_config.h" - -#ifdef SIZEOF_CHAR_SAVED__ -# if SIZEOF_CHAR != SIZEOF_CHAR_SAVED__ -# error char type size mismatch -# endif -# undef SIZEOF_CHAR_SAVED__ -#endif - -#ifdef SIZEOF_SHORT_SAVED__ -# if SIZEOF_SHORT != SIZEOF_SHORT_SAVED__ -# error short type size mismatch -# endif -# undef SIZEOF_SHORT_SAVED__ -#endif - -#ifdef SIZEOF_INT_SAVED__ -# if SIZEOF_INT != SIZEOF_INT_SAVED__ -# error int type size mismatch -# endif -# undef SIZEOF_INT_SAVED__ -#endif - -#ifdef SIZEOF_LONG_SAVED__ -# if SIZEOF_LONG != SIZEOF_LONG_SAVED__ -# error long type size mismatch -# endif -# undef SIZEOF_LONG_SAVED__ -#endif - -#ifdef SIZEOF_LONG_LONG_SAVED__ -# if SIZEOF_LONG_LONG != SIZEOF_LONG_LONG_SAVED__ -# error long long type size mismatch -# endif -# undef SIZEOF_LONG_LONG_SAVED__ -#endif - - -#if SIZEOF_LONG == 8 -#define HAVE_INT_64 1 -typedef unsigned long usgnd_int_64; -typedef signed long sgnd_int_64; -#define USGND_INT_64_FSTR "lu" -#define SGND_INT_64_FSTR "ld" -#elif SIZEOF_LONG_LONG == 8 -#define HAVE_INT_64 1 -typedef unsigned long long usgnd_int_64; -typedef signed long long sgnd_int_64; -#define USGND_INT_64_FSTR "llu" -#define SGND_INT_64_FSTR "lld" -#else -#define HAVE_INT_64 0 -#endif - -#if SIZEOF_LONG == 4 -typedef unsigned long usgnd_int_32; -typedef signed long sgnd_int_32; -#define USGND_INT_32_FSTR "lu" -#define SGND_INT_32_FSTR "ld" -#elif SIZEOF_INT == 4 -typedef unsigned int usgnd_int_32; -typedef signed int sgnd_int_32; -#define USGND_INT_32_FSTR "u" -#define SGND_INT_32_FSTR "d" -#else -#error Found no appropriate type to use for 'usgnd_int_32' and 'sgnd_int_32' -#endif - -#if SIZEOF_INT == 2 -typedef unsigned int usgnd_int_16; -typedef signed int sgnd_int_16; -#define USGND_INT_16_FSTR "u" -#define SI_16_FSTR "d" -#elif SIZEOF_SHORT == 2 -typedef unsigned short usgnd_int_16; -typedef signed short sgnd_int_16; -#define USGND_INT_16_FSTR "u" -#define SGND_INT_16_FSTR "d" -#else -#error Found no appropriate type to use for 'usgnd_int_16' and 'sgnd_int_16' -#endif - -#if SIZEOF_CHAR == 1 -typedef unsigned char usgnd_int_8; -typedef signed char sgnd_int_8; -#define USGND_INT_8_FSTR "u" -#define SGND_INT_8_FSTR "d" -#else -/* This should *never* happen! */ -#error Found no appropriate type to use for 'usgnd_int_8' and 'sgnd_int_8' -#endif - - -#if HAVE_INT_64 -typedef usgnd_int_64 usgnd_int_max; -typedef sgnd_int_64 sgnd_int_max; -#define USGND_INT_MAX_FSTR USGND_INT_64_FSTR -#define SGND_INT_MAX_FSTR SGND_INT_64_FSTR -#else -typedef usgnd_int_32 usgnd_int_max; -typedef sgnd_int_32 sgnd_int_max; -#define USGND_INT_MAX_FSTR USGND_INT_32_FSTR -#define SGND_INT_MAX_FSTR SGND_INT_32_FSTR -#endif - -#endif /* #ifndef FIXED_SIZE_INT_TYPES_H__ */ diff --git a/prebuilt/macos/headers/erlang/erl_int_sizes_config.h b/prebuilt/macos/headers/erlang/erl_int_sizes_config.h deleted file mode 100644 index c2514e5516..0000000000 --- a/prebuilt/macos/headers/erlang/erl_int_sizes_config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* include/x86_64-apple-darwin19.4.0/erl_int_sizes_config.h. Generated from erl_int_sizes_config.h.in by configure. */ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2004-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* The number of bytes in a char. */ -#define SIZEOF_CHAR 1 - -/* The number of bytes in a short. */ -#define SIZEOF_SHORT 2 - -/* The number of bytes in a int. */ -#define SIZEOF_INT 4 - -/* The number of bytes in a long. */ -#define SIZEOF_LONG 8 - -/* The number of bytes in a long long. */ -#define SIZEOF_LONG_LONG 8 - -/* The size of a pointer. */ -#define SIZEOF_VOID_P 8 diff --git a/prebuilt/macos/headers/erlang/erl_memory_trace_parser.h b/prebuilt/macos/headers/erlang/erl_memory_trace_parser.h deleted file mode 100644 index 3170ebc0d0..0000000000 --- a/prebuilt/macos/headers/erlang/erl_memory_trace_parser.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2004-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - - -/* - * Description: - * - * Author: Rickard Green - */ - -#ifndef ERL_MTRACE_PARSER_H__ -#define ERL_MTRACE_PARSER_H__ - -#include -#include "erl_fixed_size_int_types.h" - -/* emtp_parse() return values */ -#define EMTP_MIN_ERROR EMTP_NO_TRACE_ERROR - -#define EMTP_NO_TRACE_ERROR (-11) -#define EMTP_HEADER_TAG_IN_BODY_ERROR (-10) -#define EMTP_BODY_TAG_IN_HEADER_ERROR ( -9) -#define EMTP_NOT_SUPPORTED_MTRACE_VERSION_ERROR ( -8) -#define EMTP_NOT_AN_ERL_MTRACE_ERROR ( -7) -#define EMTP_NO_MEMORY_ERROR ( -6) -#define EMTP_BAD_OP_SIZE_ERROR ( -5) -#define EMTP_NO_OPERATIONS_ERROR ( -4) -#define EMTP_NOT_SUPPORTED_64_BITS_TRACE_ERROR ( -3) -#define EMTP_PARSE_ERROR ( -2) -#define EMTP_UNKNOWN_TAG_ERROR ( -1) -#define EMTP_END_OF_TRACE ( 0) -#define EMTP_END_OF_TRACE_GARBAGE_FOLLOWS ( 1) -#define EMTP_ALL_OPS_FILLED ( 2) -#define EMTP_NEED_MORE_TRACE ( 3) -#define EMTP_HEADER_PARSED ( 4) - -/* Allocator flags */ -#define EMTP_ALLOCATOR_FLAG_HAVE_USED_CARRIERS_INFO (1 << 0) - -/* Block type flags */ -/* #define EMTP_BLOCK_TYPE_FLAG_X */ - - -typedef struct { - usgnd_int_32 major; - usgnd_int_32 minor; -} emtp_version; - -typedef struct { - emtp_version parser; - emtp_version trace; -} emtp_versions; - -typedef struct { - int valid; - usgnd_int_32 flags; - char * name; - struct { - usgnd_int_16 no_providers; - usgnd_int_16 * provider; - } carrier; -} emtp_allocator; - -typedef struct { - int valid; - usgnd_int_32 flags; - char * name; - sgnd_int_32 allocator; -} emtp_block_type; - -typedef struct { - emtp_versions version; - int bits; - char * nodename; - char * hostname; - char * pid; - struct { - usgnd_int_32 year; - usgnd_int_32 month; - usgnd_int_32 day; - usgnd_int_32 hour; - usgnd_int_32 minute; - usgnd_int_32 second; - usgnd_int_32 micro_second; - } start_time; - usgnd_int_16 segment_ix; - usgnd_int_16 max_allocator_ix; - emtp_allocator ** allocator; - usgnd_int_16 max_block_type_ix; - emtp_block_type ** block_type; - int have_carrier_info; - int have_segment_carrier_info; -} emtp_info; - -typedef struct emtp_state_ emtp_state; - -enum emtp_op_type_ { - EMTP_UNDEF = 0, - EMTP_ALLOC = 1, - EMTP_REALLOC = 2, - EMTP_FREE = 3, - EMTP_CARRIER_ALLOC = 4, - EMTP_CARRIER_REALLOC = 5, - EMTP_CARRIER_FREE = 6, - EMTP_STOP = 7, - EMTP_EXIT = 8 -}; - -typedef enum emtp_op_type_ emtp_op_type; - -typedef struct { - usgnd_int_16 type; - usgnd_int_16 carrier_type; - usgnd_int_max new_ptr; - usgnd_int_max prev_ptr; - usgnd_int_max new_size; -} emtp_block_op; - -typedef struct { - emtp_op_type type; - struct { - usgnd_int_32 secs; - usgnd_int_32 usecs; - } time; - union { - emtp_block_op block; - usgnd_int_32 exit_status; - } u; -} emtp_operation; - -const char *emtp_error_string(int); -int emtp_get_info(emtp_info *ip, size_t *isz, emtp_state *sp); -emtp_state *emtp_state_new(void * (*alloc)(size_t), - void * (*realloc)(void *, size_t), - void (*free)(void *)); -void emtp_state_destroy(emtp_state *sp); -int emtp_parse(emtp_state *sp, - usgnd_int_8 **tracepp, size_t *trace_lenp, - emtp_operation *op_start, size_t op_size, size_t *op_lenp); -#endif diff --git a/prebuilt/macos/headers/erlang/erl_nif.h b/prebuilt/macos/headers/erlang/erl_nif.h deleted file mode 100644 index 5f25960053..0000000000 --- a/prebuilt/macos/headers/erlang/erl_nif.h +++ /dev/null @@ -1,413 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2009-2020. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* Include file for writers of Native Implemented Functions. -*/ - -#ifndef __ERL_NIF_H__ -#define __ERL_NIF_H__ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "erl_drv_nif.h" - -/* Version history: -** 0.1: R13B03 -** 1.0: R13B04 -** 2.0: R14A -** 2.1: R14B02 "vm_variant" -** 2.2: R14B03 enif_is_exception -** 2.3: R15 enif_make_reverse_list, enif_is_number -** 2.4: R16 enif_consume_timeslice -** 2.5: First experimental maps API additions (libs of this version is not compatible with any other VM) -** 2.5: R17 Maps API additions -** 2.6: R17 with maps -** R17 dirty schedulers -** 2.7: 17.3 add enif_schedule_nif -** remove enif_schedule_dirty_nif, enif_schedule_dirty_nif_finalizer, enif_dirty_nif_finalizer -** add ErlNifEntry options -** add ErlNifFunc flags -** 2.8: 18.0 add enif_has_pending_exception -** 2.9: 18.2 enif_getenv -** 2.10: Time API -** 2.11: 19.0 enif_snprintf -** 2.12: 20.0 add enif_select, enif_open_resource_type_x -** 2.13: 20.1 add enif_ioq -** 2.14: 21.0 add enif_ioq_peek_head, enif_(mutex|cond|rwlock|thread)_name -** enif_vfprintf, enif_vsnprintf, enif_make_map_from_arrays -** 2.15: 22.0 ERL_NIF_SELECT_CANCEL, enif_select_(read|write) -** enif_term_type -*/ -#define ERL_NIF_MAJOR_VERSION 2 -#define ERL_NIF_MINOR_VERSION 15 - -/* - * WHEN CHANGING INTERFACE VERSION, also replace erts version below with - * a ticket number e.g. "erts-@OTP-12345@". The syntax is the same as for - * runtime dependencies so multiple tickets should be separated with ":", e.g. - * "erts-@OTP-12345:OTP-54321@". - * - * If you're not on the OTP team, you should use a placeholder like - * erts-@MyName@ instead. - */ -#define ERL_NIF_MIN_ERTS_VERSION "erts-10.4" - -/* - * The emulator will refuse to load a nif-lib with a major version - * lower than ERL_NIF_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD. The load - * may however fail if user have not removed use of deprecated - * symbols. - * - * The ERL_NIF_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD have to allow - * loading of nif-libs built at least two major OTP releases - * ago. - */ -#define ERL_NIF_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD 2 - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef ErlNapiUInt64 ErlNifUInt64; -typedef ErlNapiSInt64 ErlNifSInt64; -typedef ErlNapiUInt ErlNifUInt; -typedef ErlNapiSInt ErlNifSInt; - -# define ERL_NIF_VM_VARIANT "beam.vanilla" -typedef ErlNifUInt ERL_NIF_TERM; - -typedef ERL_NIF_TERM ERL_NIF_UINT; - -typedef ErlNifSInt64 ErlNifTime; - -#define ERL_NIF_TIME_ERROR ((ErlNifSInt64) ERTS_NAPI_TIME_ERROR__) - -typedef enum { - ERL_NIF_SEC = ERTS_NAPI_SEC__, - ERL_NIF_MSEC = ERTS_NAPI_MSEC__, - ERL_NIF_USEC = ERTS_NAPI_USEC__, - ERL_NIF_NSEC = ERTS_NAPI_NSEC__ -} ErlNifTimeUnit; - -struct enif_environment_t; -typedef struct enif_environment_t ErlNifEnv; - -typedef struct enif_func_t -{ - const char* name; - unsigned arity; - ERL_NIF_TERM (*fptr)(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); - unsigned flags; -}ErlNifFunc; - - -typedef struct enif_entry_t -{ - int major; - int minor; - const char* name; - int num_of_funcs; - ErlNifFunc* funcs; - int (*load) (ErlNifEnv*, void** priv_data, ERL_NIF_TERM load_info); - int (*reload) (ErlNifEnv*, void** priv_data, ERL_NIF_TERM load_info); - int (*upgrade)(ErlNifEnv*, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info); - void (*unload) (ErlNifEnv*, void* priv_data); - - /* Added in 2.1 */ - const char* vm_variant; - - /* Added in 2.7 */ - unsigned options; /* Unused. Can be set to 0 or 1 (dirty sched config) */ - - /* Added in 2.12 */ - size_t sizeof_ErlNifResourceTypeInit; - - /* Added in 2.14 */ - const char* min_erts; -}ErlNifEntry; - - -typedef struct -{ - size_t size; - unsigned char* data; - - /* Internals (avert your eyes) */ - void* ref_bin; - /* for future additions to be ABI compatible (same struct size) */ - void* __spare__[2]; -}ErlNifBinary; - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -typedef void* ErlNifEvent; /* FIXME: Use 'HANDLE' somehow without breaking existing source */ -#else -typedef int ErlNifEvent; -#endif - -/* Return bits from enif_select: */ -#define ERL_NIF_SELECT_STOP_CALLED (1 << 0) -#define ERL_NIF_SELECT_STOP_SCHEDULED (1 << 1) -#define ERL_NIF_SELECT_INVALID_EVENT (1 << 2) -#define ERL_NIF_SELECT_FAILED (1 << 3) -#define ERL_NIF_SELECT_READ_CANCELLED (1 << 4) -#define ERL_NIF_SELECT_WRITE_CANCELLED (1 << 5) - -typedef enum -{ - ERL_NIF_RT_CREATE = 1, - ERL_NIF_RT_TAKEOVER = 2 -}ErlNifResourceFlags; - -typedef enum -{ - ERL_NIF_LATIN1 = 1 -}ErlNifCharEncoding; - -typedef struct -{ - ERL_NIF_TERM pid; /* internal, may change */ -} ErlNifPid; - -typedef struct -{ - ERL_NIF_TERM port_id; /* internal, may change */ -}ErlNifPort; - -typedef ErlDrvMonitor ErlNifMonitor; - -typedef struct enif_resource_type_t ErlNifResourceType; -typedef void ErlNifResourceDtor(ErlNifEnv*, void*); -typedef void ErlNifResourceStop(ErlNifEnv*, void*, ErlNifEvent, int is_direct_call); -typedef void ErlNifResourceDown(ErlNifEnv*, void*, ErlNifPid*, ErlNifMonitor*); - -typedef struct { - ErlNifResourceDtor* dtor; - ErlNifResourceStop* stop; /* at ERL_NIF_SELECT_STOP event */ - ErlNifResourceDown* down; /* enif_monitor_process */ -} ErlNifResourceTypeInit; - -typedef ErlDrvSysInfo ErlNifSysInfo; - -typedef struct ErlDrvTid_ *ErlNifTid; -typedef struct ErlDrvMutex_ ErlNifMutex; -typedef struct ErlDrvCond_ ErlNifCond; -typedef struct ErlDrvRWLock_ ErlNifRWLock; -typedef int ErlNifTSDKey; - -typedef ErlDrvThreadOpts ErlNifThreadOpts; - -typedef enum -{ - ERL_NIF_DIRTY_JOB_CPU_BOUND = ERL_DIRTY_JOB_CPU_BOUND, - ERL_NIF_DIRTY_JOB_IO_BOUND = ERL_DIRTY_JOB_IO_BOUND -}ErlNifDirtyTaskFlags; - -typedef struct /* All fields all internal and may change */ -{ - ERL_NIF_TERM map; - ERL_NIF_UINT size; - ERL_NIF_UINT idx; - union { - struct { - ERL_NIF_TERM *ks; - ERL_NIF_TERM *vs; - }flat; - struct { - struct ErtsDynamicWStack_* wstack; - ERL_NIF_TERM* kv; - }hash; - }u; - void* __spare__[2]; /* for future additions to be ABI compatible (same struct size) */ -} ErlNifMapIterator; - -typedef enum { - ERL_NIF_MAP_ITERATOR_FIRST = 1, - ERL_NIF_MAP_ITERATOR_LAST = 2, - - /* deprecated synonyms (undocumented in 17 and 18-rc) */ - ERL_NIF_MAP_ITERATOR_HEAD = ERL_NIF_MAP_ITERATOR_FIRST, - ERL_NIF_MAP_ITERATOR_TAIL = ERL_NIF_MAP_ITERATOR_LAST -} ErlNifMapIteratorEntry; - -typedef enum { - ERL_NIF_UNIQUE_POSITIVE = (1 << 0), - ERL_NIF_UNIQUE_MONOTONIC = (1 << 1) -} ErlNifUniqueInteger; - -typedef enum { - ERL_NIF_BIN2TERM_SAFE = 0x20000000 -} ErlNifBinaryToTerm; - -typedef enum { - ERL_NIF_INTERNAL_HASH = 1, - ERL_NIF_PHASH2 = 2 -} ErlNifHash; - -#define ERL_NIF_IOVEC_SIZE 16 - -typedef struct erl_nif_io_vec { - int iovcnt; /* length of vectors */ - size_t size; /* total size in bytes */ - SysIOVec *iov; - - /* internals (avert your eyes) */ - void **ref_bins; /* Binary[] */ - int flags; - - /* Used when stack allocating the io vec */ - SysIOVec small_iov[ERL_NIF_IOVEC_SIZE]; - void *small_ref_bin[ERL_NIF_IOVEC_SIZE]; -} ErlNifIOVec; - -typedef struct erts_io_queue ErlNifIOQueue; - -typedef enum { - ERL_NIF_IOQ_NORMAL = 1 -} ErlNifIOQueueOpts; - -typedef enum { - ERL_NIF_TERM_TYPE_ATOM = 1, - ERL_NIF_TERM_TYPE_BITSTRING = 2, - ERL_NIF_TERM_TYPE_FLOAT = 3, - ERL_NIF_TERM_TYPE_FUN = 4, - ERL_NIF_TERM_TYPE_INTEGER = 5, - ERL_NIF_TERM_TYPE_LIST = 6, - ERL_NIF_TERM_TYPE_MAP = 7, - ERL_NIF_TERM_TYPE_PID = 8, - ERL_NIF_TERM_TYPE_PORT = 9, - ERL_NIF_TERM_TYPE_REFERENCE = 10, - ERL_NIF_TERM_TYPE_TUPLE = 11, - - /* This is a dummy value intended to coax the compiler into warning about - * unhandled values in a switch even if all the above values have been - * handled. We can add new entries at any time so the user must always - * have a default case. */ - ERL_NIF_TERM_TYPE__MISSING_DEFAULT_CASE__READ_THE_MANUAL = -1 -} ErlNifTermType; - -/* - * Return values from enif_thread_type(). Negative values - * reserved for specific types of non-scheduler threads. - * Positive values reserved for scheduler thread types. - */ - -#define ERL_NIF_THR_UNDEFINED 0 -#define ERL_NIF_THR_NORMAL_SCHEDULER 1 -#define ERL_NIF_THR_DIRTY_CPU_SCHEDULER 2 -#define ERL_NIF_THR_DIRTY_IO_SCHEDULER 3 - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -# define ERL_NIF_API_FUNC_DECL(RET_TYPE, NAME, ARGS) RET_TYPE (*NAME) ARGS -typedef struct { -# include "erl_nif_api_funcs.h" - void* erts_alc_test; -} TWinDynNifCallbacks; -extern TWinDynNifCallbacks WinDynNifCallbacks; -# undef ERL_NIF_API_FUNC_DECL -#endif - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) && !defined(STATIC_ERLANG_DRIVER) && !defined(STATIC_ERLANG_NIF) -# define ERL_NIF_API_FUNC_MACRO(NAME) (WinDynNifCallbacks.NAME) -# include "erl_nif_api_funcs.h" -/* note that we have to keep ERL_NIF_API_FUNC_MACRO defined */ - -#else /* non windows or included from emulator itself */ - -# define ERL_NIF_API_FUNC_DECL(RET_TYPE, NAME, ARGS) extern RET_TYPE NAME ARGS -# include "erl_nif_api_funcs.h" -# undef ERL_NIF_API_FUNC_DECL -#endif - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -# define ERL_NIF_INIT_GLOB TWinDynNifCallbacks WinDynNifCallbacks; -# define ERL_NIF_INIT_ARGS TWinDynNifCallbacks* callbacks -# define ERL_NIF_INIT_BODY memcpy(&WinDynNifCallbacks,callbacks,sizeof(TWinDynNifCallbacks)) -# define ERL_NIF_INIT_EXPORT __declspec(dllexport) -#else -# define ERL_NIF_INIT_GLOB -# define ERL_NIF_INIT_ARGS void -# define ERL_NIF_INIT_BODY -# if defined(__GNUC__) && __GNUC__ >= 4 -# define ERL_NIF_INIT_EXPORT __attribute__ ((visibility("default"))) -# elif defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) -# define ERL_NIF_INIT_EXPORT __global -# else -# define ERL_NIF_INIT_EXPORT -# endif -#endif - -#ifdef STATIC_ERLANG_NIF -# define ERL_NIF_INIT_DECL(MODNAME) ErlNifEntry* MODNAME ## _nif_init(ERL_NIF_INIT_ARGS) -#else -# define ERL_NIF_INIT_DECL(MODNAME) ERL_NIF_INIT_EXPORT ErlNifEntry* nif_init(ERL_NIF_INIT_ARGS) -#endif - -#ifdef __cplusplus -} -# define ERL_NIF_INIT_PROLOGUE extern "C" { -# define ERL_NIF_INIT_EPILOGUE } -#else -# define ERL_NIF_INIT_PROLOGUE -# define ERL_NIF_INIT_EPILOGUE -#endif - - -#define ERL_NIF_INIT(NAME, FUNCS, LOAD, RELOAD, UPGRADE, UNLOAD) \ -ERL_NIF_INIT_PROLOGUE \ -ERL_NIF_INIT_GLOB \ -ERL_NIF_INIT_DECL(NAME); \ -ERL_NIF_INIT_DECL(NAME) \ -{ \ - static ErlNifEntry entry = \ - { \ - ERL_NIF_MAJOR_VERSION, \ - ERL_NIF_MINOR_VERSION, \ - #NAME, \ - sizeof(FUNCS) / sizeof(*FUNCS), \ - FUNCS, \ - LOAD, RELOAD, UPGRADE, UNLOAD, \ - ERL_NIF_VM_VARIANT, \ - 1, \ - sizeof(ErlNifResourceTypeInit), \ - ERL_NIF_MIN_ERTS_VERSION \ - }; \ - ERL_NIF_INIT_BODY; \ - return &entry; \ -} \ -ERL_NIF_INIT_EPILOGUE - -#if defined(USE_DYNAMIC_TRACE) && (defined(USE_DTRACE) || defined(USE_SYSTEMTAP)) -#define HAVE_USE_DTRACE 1 -#endif - -#ifdef HAVE_USE_DTRACE -ERL_NIF_TERM erl_nif_user_trace_s1(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -ERL_NIF_TERM erl_nif_user_trace_i4s4(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -ERL_NIF_TERM erl_nif_user_trace_n(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -#endif - -#endif /* __ERL_NIF_H__ */ - diff --git a/prebuilt/macos/headers/erlang/erl_nif_api_funcs.h b/prebuilt/macos/headers/erlang/erl_nif_api_funcs.h deleted file mode 100644 index f719dfe868..0000000000 --- a/prebuilt/macos/headers/erlang/erl_nif_api_funcs.h +++ /dev/null @@ -1,654 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2009-2020. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -#if !defined(ERL_NIF_API_FUNC_DECL) && !defined(ERL_NIF_API_FUNC_MACRO) -# error This file should not be included directly -#endif - -/* -** WARNING: Add new ERL_NIF_API_FUNC_DECL entries at the bottom of the list -** to keep compatibility on Windows!!! -** -** And don't forget to increase ERL_NIF_MINOR_VERSION in erl_nif.h -** when adding functions to the API. -*/ -#ifdef ERL_NIF_API_FUNC_DECL -ERL_NIF_API_FUNC_DECL(void*,enif_priv_data,(ErlNifEnv*)); -ERL_NIF_API_FUNC_DECL(void*,enif_alloc,(size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_free,(void* ptr)); -ERL_NIF_API_FUNC_DECL(int,enif_is_atom,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_binary,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_ref,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_inspect_binary,(ErlNifEnv*, ERL_NIF_TERM bin_term, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(int,enif_alloc_binary,(size_t size, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(int,enif_realloc_binary,(ErlNifBinary* bin, size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_release_binary,(ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(int,enif_get_int,(ErlNifEnv*, ERL_NIF_TERM term, int* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_ulong,(ErlNifEnv*, ERL_NIF_TERM term, unsigned long* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_double,(ErlNifEnv*, ERL_NIF_TERM term, double* dp)); -ERL_NIF_API_FUNC_DECL(int,enif_get_list_cell,(ErlNifEnv* env, ERL_NIF_TERM term, ERL_NIF_TERM* head, ERL_NIF_TERM* tail)); -ERL_NIF_API_FUNC_DECL(int,enif_get_tuple,(ErlNifEnv* env, ERL_NIF_TERM tpl, int* arity, const ERL_NIF_TERM** array)); -ERL_NIF_API_FUNC_DECL(int,enif_is_identical,(ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)); -ERL_NIF_API_FUNC_DECL(int,enif_compare,(ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_binary,(ErlNifEnv* env, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_badarg,(ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_int,(ErlNifEnv* env, int i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ulong,(ErlNifEnv* env, unsigned long i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_double,(ErlNifEnv* env, double d)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_atom,(ErlNifEnv* env, const char* name)); -ERL_NIF_API_FUNC_DECL(int,enif_make_existing_atom,(ErlNifEnv* env, const char* name, ERL_NIF_TERM* atom, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_tuple,(ErlNifEnv* env, unsigned cnt, ...)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list,(ErlNifEnv* env, unsigned cnt, ...)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list_cell,(ErlNifEnv* env, ERL_NIF_TERM car, ERL_NIF_TERM cdr)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_string,(ErlNifEnv* env, const char* string, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ref,(ErlNifEnv* env)); - -ERL_NIF_API_FUNC_DECL(ErlNifMutex*,enif_mutex_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_mutex_destroy,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(int,enif_mutex_trylock,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(void,enif_mutex_lock,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(void,enif_mutex_unlock,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(ErlNifCond*,enif_cond_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_destroy,(ErlNifCond *cnd)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_signal,(ErlNifCond *cnd)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_broadcast,(ErlNifCond *cnd)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_wait,(ErlNifCond *cnd, ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(ErlNifRWLock*,enif_rwlock_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_destroy,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(int,enif_rwlock_tryrlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_runlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(int,enif_rwlock_tryrwlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rwlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rwunlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(int,enif_tsd_key_create,(char *name, ErlNifTSDKey *key)); -ERL_NIF_API_FUNC_DECL(void,enif_tsd_key_destroy,(ErlNifTSDKey key)); -ERL_NIF_API_FUNC_DECL(void,enif_tsd_set,(ErlNifTSDKey key, void *data)); -ERL_NIF_API_FUNC_DECL(void*,enif_tsd_get,(ErlNifTSDKey key)); -ERL_NIF_API_FUNC_DECL(ErlNifThreadOpts*,enif_thread_opts_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_thread_opts_destroy,(ErlNifThreadOpts *opts)); -ERL_NIF_API_FUNC_DECL(int,enif_thread_create,(char *name,ErlNifTid *tid,void * (*func)(void *),void *args,ErlNifThreadOpts *opts)); -ERL_NIF_API_FUNC_DECL(ErlNifTid,enif_thread_self,(void)); -ERL_NIF_API_FUNC_DECL(int,enif_equal_tids,(ErlNifTid tid1, ErlNifTid tid2)); -ERL_NIF_API_FUNC_DECL(void,enif_thread_exit,(void *resp)); -ERL_NIF_API_FUNC_DECL(int,enif_thread_join,(ErlNifTid, void **respp)); - -ERL_NIF_API_FUNC_DECL(void*,enif_realloc,(void* ptr, size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_system_info,(ErlNifSysInfo *sip, size_t si_size)); -ERL_NIF_API_FUNC_DECL(int,enif_fprintf,(FILE* filep, const char *format, ...)); -ERL_NIF_API_FUNC_DECL(int,enif_inspect_iolist_as_binary,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_sub_binary,(ErlNifEnv*, ERL_NIF_TERM bin_term, size_t pos, size_t size)); -ERL_NIF_API_FUNC_DECL(int,enif_get_string,(ErlNifEnv*, ERL_NIF_TERM list, char* buf, unsigned len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(int,enif_get_atom,(ErlNifEnv*, ERL_NIF_TERM atom, char* buf, unsigned len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(int,enif_is_fun,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_pid,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_port,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_get_uint,(ErlNifEnv*, ERL_NIF_TERM term, unsigned* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_long,(ErlNifEnv*, ERL_NIF_TERM term, long* ip)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_uint,(ErlNifEnv*, unsigned i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_long,(ErlNifEnv*, long i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_tuple_from_array,(ErlNifEnv*, const ERL_NIF_TERM arr[], unsigned cnt)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list_from_array,(ErlNifEnv*, const ERL_NIF_TERM arr[], unsigned cnt)); -ERL_NIF_API_FUNC_DECL(int,enif_is_empty_list,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(ErlNifResourceType*,enif_open_resource_type,(ErlNifEnv*, const char* module_str, const char* name_str, void (*dtor)(ErlNifEnv*,void *), ErlNifResourceFlags flags, ErlNifResourceFlags* tried)); -ERL_NIF_API_FUNC_DECL(void*,enif_alloc_resource,(ErlNifResourceType* type, size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_release_resource,(void* obj)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_resource,(ErlNifEnv*, void* obj)); -ERL_NIF_API_FUNC_DECL(int,enif_get_resource,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifResourceType* type, void** objp)); -ERL_NIF_API_FUNC_DECL(size_t,enif_sizeof_resource,(void* obj)); -ERL_NIF_API_FUNC_DECL(unsigned char*,enif_make_new_binary,(ErlNifEnv*,size_t size,ERL_NIF_TERM* termp)); -ERL_NIF_API_FUNC_DECL(int,enif_is_list,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_tuple,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_get_atom_length,(ErlNifEnv*, ERL_NIF_TERM atom, unsigned* len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(int,enif_get_list_length,(ErlNifEnv* env, ERL_NIF_TERM term, unsigned* len)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_make_atom_len,(ErlNifEnv* env, const char* name, size_t len)); -ERL_NIF_API_FUNC_DECL(int, enif_make_existing_atom_len,(ErlNifEnv* env, const char* name, size_t len, ERL_NIF_TERM* atom, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_string_len,(ErlNifEnv* env, const char* string, size_t len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ErlNifEnv*,enif_alloc_env,(void)); -ERL_NIF_API_FUNC_DECL(void,enif_free_env,(ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(void,enif_clear_env,(ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(int,enif_send,(ErlNifEnv* env, const ErlNifPid* to_pid, ErlNifEnv* msg_env, ERL_NIF_TERM msg)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_copy,(ErlNifEnv* dst_env, ERL_NIF_TERM src_term)); -ERL_NIF_API_FUNC_DECL(ErlNifPid*,enif_self,(ErlNifEnv* caller_env, ErlNifPid* pid)); -ERL_NIF_API_FUNC_DECL(int,enif_get_local_pid,(ErlNifEnv* env, ERL_NIF_TERM, ErlNifPid* pid)); -ERL_NIF_API_FUNC_DECL(void,enif_keep_resource,(void* obj)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_resource_binary,(ErlNifEnv*,void* obj,const void* data, size_t size)); -#if SIZEOF_LONG != 8 -ERL_NIF_API_FUNC_DECL(int,enif_get_int64,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifSInt64* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_uint64,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifUInt64* ip)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_int64,(ErlNifEnv*, ErlNifSInt64)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_uint64,(ErlNifEnv*, ErlNifUInt64)); -#endif -ERL_NIF_API_FUNC_DECL(int,enif_is_exception,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_make_reverse_list,(ErlNifEnv*, ERL_NIF_TERM term, ERL_NIF_TERM *list)); -ERL_NIF_API_FUNC_DECL(int,enif_is_number,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(void*,enif_dlopen,(const char* lib, void (*err_handler)(void*,const char*), void* err_arg)); -ERL_NIF_API_FUNC_DECL(void*,enif_dlsym,(void* handle, const char* symbol, void (*err_handler)(void*,const char*), void* err_arg)); -ERL_NIF_API_FUNC_DECL(int,enif_consume_timeslice,(ErlNifEnv*, int percent)); -ERL_NIF_API_FUNC_DECL(int, enif_is_map, (ErlNifEnv* env, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int, enif_get_map_size, (ErlNifEnv* env, ERL_NIF_TERM term, size_t *size)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_make_new_map, (ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(int, enif_make_map_put, (ErlNifEnv* env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM value, ERL_NIF_TERM* map_out)); -ERL_NIF_API_FUNC_DECL(int, enif_get_map_value, (ErlNifEnv* env, ERL_NIF_TERM map, ERL_NIF_TERM key, ERL_NIF_TERM* value)); -ERL_NIF_API_FUNC_DECL(int, enif_make_map_update, (ErlNifEnv* env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM value, ERL_NIF_TERM* map_out)); -ERL_NIF_API_FUNC_DECL(int, enif_make_map_remove, (ErlNifEnv* env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM* map_out)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_create, (ErlNifEnv *env, ERL_NIF_TERM map, ErlNifMapIterator *iter, ErlNifMapIteratorEntry entry)); -ERL_NIF_API_FUNC_DECL(void, enif_map_iterator_destroy, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_is_head, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_is_tail, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_next, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_prev, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_get_pair, (ErlNifEnv *env, ErlNifMapIterator *iter, ERL_NIF_TERM *key, ERL_NIF_TERM *value)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_schedule_nif,(ErlNifEnv*,const char*,int,ERL_NIF_TERM (*)(ErlNifEnv*,int,const ERL_NIF_TERM[]),int,const ERL_NIF_TERM[])); -ERL_NIF_API_FUNC_DECL(int, enif_has_pending_exception, (ErlNifEnv *env, ERL_NIF_TERM* reason)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_raise_exception, (ErlNifEnv *env, ERL_NIF_TERM reason)); -ERL_NIF_API_FUNC_DECL(int,enif_getenv,(const char* key, char* value, size_t* value_size)); -ERL_NIF_API_FUNC_DECL(ErlNifTime, enif_monotonic_time, (ErlNifTimeUnit)); -ERL_NIF_API_FUNC_DECL(ErlNifTime, enif_time_offset, (ErlNifTimeUnit)); -ERL_NIF_API_FUNC_DECL(ErlNifTime, enif_convert_time_unit, (ErlNifTime, ErlNifTimeUnit, ErlNifTimeUnit)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_now_time, (ErlNifEnv *env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_cpu_time, (ErlNifEnv *env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_make_unique_integer, (ErlNifEnv *env, ErlNifUniqueInteger properties)); -ERL_NIF_API_FUNC_DECL(int, enif_is_current_process_alive, (ErlNifEnv *env)); -ERL_NIF_API_FUNC_DECL(int, enif_is_process_alive, (ErlNifEnv *env, ErlNifPid *pid)); -ERL_NIF_API_FUNC_DECL(int, enif_is_port_alive, (ErlNifEnv *env, ErlNifPort *port_id)); -ERL_NIF_API_FUNC_DECL(int, enif_get_local_port, (ErlNifEnv* env, ERL_NIF_TERM, ErlNifPort* port_id)); -ERL_NIF_API_FUNC_DECL(int, enif_term_to_binary, (ErlNifEnv *env, ERL_NIF_TERM term, ErlNifBinary *bin)); -ERL_NIF_API_FUNC_DECL(size_t, enif_binary_to_term, (ErlNifEnv *env, const unsigned char* data, size_t sz, ERL_NIF_TERM *term, unsigned int opts)); -ERL_NIF_API_FUNC_DECL(int, enif_port_command, (ErlNifEnv *env, const ErlNifPort* to_port, ErlNifEnv *msg_env, ERL_NIF_TERM msg)); -ERL_NIF_API_FUNC_DECL(int,enif_thread_type,(void)); -ERL_NIF_API_FUNC_DECL(int,enif_snprintf,(char * buffer, size_t size, const char *format, ...)); -ERL_NIF_API_FUNC_DECL(int,enif_select,(ErlNifEnv* env, ErlNifEvent e, enum ErlNifSelectFlags flags, void* obj, const ErlNifPid* pid, ERL_NIF_TERM ref)); -ERL_NIF_API_FUNC_DECL(ErlNifResourceType*,enif_open_resource_type_x,(ErlNifEnv*, const char* name_str, const ErlNifResourceTypeInit*, ErlNifResourceFlags flags, ErlNifResourceFlags* tried)); -ERL_NIF_API_FUNC_DECL(int, enif_monitor_process,(ErlNifEnv*,void* obj,const ErlNifPid*,ErlNifMonitor *monitor)); -ERL_NIF_API_FUNC_DECL(int, enif_demonitor_process,(ErlNifEnv*,void* obj,const ErlNifMonitor *monitor)); -ERL_NIF_API_FUNC_DECL(int, enif_compare_monitors,(const ErlNifMonitor*,const ErlNifMonitor*)); -ERL_NIF_API_FUNC_DECL(ErlNifUInt64,enif_hash,(ErlNifHash type, ERL_NIF_TERM term, ErlNifUInt64 salt)); -ERL_NIF_API_FUNC_DECL(int, enif_whereis_pid, (ErlNifEnv *env, ERL_NIF_TERM name, ErlNifPid *pid)); -ERL_NIF_API_FUNC_DECL(int, enif_whereis_port, (ErlNifEnv *env, ERL_NIF_TERM name, ErlNifPort *port)); - -ERL_NIF_API_FUNC_DECL(ErlNifIOQueue *,enif_ioq_create,(ErlNifIOQueueOpts opts)); -ERL_NIF_API_FUNC_DECL(void,enif_ioq_destroy,(ErlNifIOQueue *q)); - -ERL_NIF_API_FUNC_DECL(int,enif_ioq_enq_binary,(ErlNifIOQueue *q, ErlNifBinary *bin, size_t skip)); -ERL_NIF_API_FUNC_DECL(int,enif_ioq_enqv,(ErlNifIOQueue *q, ErlNifIOVec *iov, size_t skip)); - -ERL_NIF_API_FUNC_DECL(size_t,enif_ioq_size,(ErlNifIOQueue *q)); -ERL_NIF_API_FUNC_DECL(int,enif_ioq_deq,(ErlNifIOQueue *q, size_t count, size_t *size)); - -ERL_NIF_API_FUNC_DECL(SysIOVec*,enif_ioq_peek,(ErlNifIOQueue *q, int *iovlen)); - -ERL_NIF_API_FUNC_DECL(int,enif_inspect_iovec,(ErlNifEnv *env, size_t max_length, ERL_NIF_TERM iovec_term, ERL_NIF_TERM *tail, ErlNifIOVec **iovec)); -ERL_NIF_API_FUNC_DECL(void,enif_free_iovec,(ErlNifIOVec *iov)); - -ERL_NIF_API_FUNC_DECL(int,enif_ioq_peek_head,(ErlNifEnv *env, ErlNifIOQueue *q, size_t *size, ERL_NIF_TERM *head)); - -ERL_NIF_API_FUNC_DECL(char*,enif_mutex_name,(ErlNifMutex*)); -ERL_NIF_API_FUNC_DECL(char*,enif_cond_name,(ErlNifCond*)); -ERL_NIF_API_FUNC_DECL(char*,enif_rwlock_name,(ErlNifRWLock*)); -ERL_NIF_API_FUNC_DECL(char*,enif_thread_name,(ErlNifTid)); - -ERL_NIF_API_FUNC_DECL(int,enif_vfprintf,(FILE*, const char *fmt, va_list)); -ERL_NIF_API_FUNC_DECL(int,enif_vsnprintf,(char*, size_t, const char *fmt, va_list)); - -ERL_NIF_API_FUNC_DECL(int,enif_make_map_from_arrays,(ErlNifEnv *env, ERL_NIF_TERM keys[], ERL_NIF_TERM values[], size_t cnt, ERL_NIF_TERM *map_out)); - -ERL_NIF_API_FUNC_DECL(int,enif_select_x,(ErlNifEnv* env, ErlNifEvent e, enum ErlNifSelectFlags flags, void* obj, const ErlNifPid* pid, ERL_NIF_TERM msg, ErlNifEnv* msg_env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_monitor_term,(ErlNifEnv* env, const ErlNifMonitor*)); -ERL_NIF_API_FUNC_DECL(void,enif_set_pid_undefined,(ErlNifPid* pid)); -ERL_NIF_API_FUNC_DECL(int,enif_is_pid_undefined,(const ErlNifPid* pid)); - -ERL_NIF_API_FUNC_DECL(ErlNifTermType,enif_term_type,(ErlNifEnv* env, ERL_NIF_TERM term)); - -/* -** ADD NEW ENTRIES HERE (before this comment) !!! -*/ -#endif /* ERL_NIF_API_FUNC_DECL */ - -/* -** Please keep the ERL_NIF_API_FUNC_MACRO list below in the same order -** as the ERL_NIF_API_FUNC_DECL list above -*/ -#ifdef ERL_NIF_API_FUNC_MACRO -# define enif_priv_data ERL_NIF_API_FUNC_MACRO(enif_priv_data) -# define enif_alloc ERL_NIF_API_FUNC_MACRO(enif_alloc) -# define enif_free ERL_NIF_API_FUNC_MACRO(enif_free) -# define enif_is_atom ERL_NIF_API_FUNC_MACRO(enif_is_atom) -# define enif_is_binary ERL_NIF_API_FUNC_MACRO(enif_is_binary) -# define enif_is_ref ERL_NIF_API_FUNC_MACRO(enif_is_ref) -# define enif_inspect_binary ERL_NIF_API_FUNC_MACRO(enif_inspect_binary) -# define enif_alloc_binary ERL_NIF_API_FUNC_MACRO(enif_alloc_binary) -# define enif_realloc_binary ERL_NIF_API_FUNC_MACRO(enif_realloc_binary) -# define enif_release_binary ERL_NIF_API_FUNC_MACRO(enif_release_binary) -# define enif_get_int ERL_NIF_API_FUNC_MACRO(enif_get_int) -# define enif_get_ulong ERL_NIF_API_FUNC_MACRO(enif_get_ulong) -# define enif_get_double ERL_NIF_API_FUNC_MACRO(enif_get_double) -# define enif_get_tuple ERL_NIF_API_FUNC_MACRO(enif_get_tuple) -# define enif_get_list_cell ERL_NIF_API_FUNC_MACRO(enif_get_list_cell) -# define enif_is_identical ERL_NIF_API_FUNC_MACRO(enif_is_identical) -# define enif_compare ERL_NIF_API_FUNC_MACRO(enif_compare) - -# define enif_make_binary ERL_NIF_API_FUNC_MACRO(enif_make_binary) -# define enif_make_badarg ERL_NIF_API_FUNC_MACRO(enif_make_badarg) -# define enif_make_int ERL_NIF_API_FUNC_MACRO(enif_make_int) -# define enif_make_ulong ERL_NIF_API_FUNC_MACRO(enif_make_ulong) -# define enif_make_double ERL_NIF_API_FUNC_MACRO(enif_make_double) -# define enif_make_atom ERL_NIF_API_FUNC_MACRO(enif_make_atom) -# define enif_make_existing_atom ERL_NIF_API_FUNC_MACRO(enif_make_existing_atom) -# define enif_make_tuple ERL_NIF_API_FUNC_MACRO(enif_make_tuple) -# define enif_make_list ERL_NIF_API_FUNC_MACRO(enif_make_list) -# define enif_make_list_cell ERL_NIF_API_FUNC_MACRO(enif_make_list_cell) -# define enif_make_string ERL_NIF_API_FUNC_MACRO(enif_make_string) -# define enif_make_ref ERL_NIF_API_FUNC_MACRO(enif_make_ref) - -# define enif_mutex_create ERL_NIF_API_FUNC_MACRO(enif_mutex_create) -# define enif_mutex_destroy ERL_NIF_API_FUNC_MACRO(enif_mutex_destroy) -# define enif_mutex_trylock ERL_NIF_API_FUNC_MACRO(enif_mutex_trylock) -# define enif_mutex_lock ERL_NIF_API_FUNC_MACRO(enif_mutex_lock) -# define enif_mutex_unlock ERL_NIF_API_FUNC_MACRO(enif_mutex_unlock) -# define enif_cond_create ERL_NIF_API_FUNC_MACRO(enif_cond_create) -# define enif_cond_destroy ERL_NIF_API_FUNC_MACRO(enif_cond_destroy) -# define enif_cond_signal ERL_NIF_API_FUNC_MACRO(enif_cond_signal) -# define enif_cond_broadcast ERL_NIF_API_FUNC_MACRO(enif_cond_broadcast) -# define enif_cond_wait ERL_NIF_API_FUNC_MACRO(enif_cond_wait) -# define enif_rwlock_create ERL_NIF_API_FUNC_MACRO(enif_rwlock_create) -# define enif_rwlock_destroy ERL_NIF_API_FUNC_MACRO(enif_rwlock_destroy) -# define enif_rwlock_tryrlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_tryrlock) -# define enif_rwlock_rlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rlock) -# define enif_rwlock_runlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_runlock) -# define enif_rwlock_tryrwlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_tryrwlock) -# define enif_rwlock_rwlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rwlock) -# define enif_rwlock_rwunlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rwunlock) -# define enif_tsd_key_create ERL_NIF_API_FUNC_MACRO(enif_tsd_key_create) -# define enif_tsd_key_destroy ERL_NIF_API_FUNC_MACRO(enif_tsd_key_destroy) -# define enif_tsd_set ERL_NIF_API_FUNC_MACRO(enif_tsd_set) -# define enif_tsd_get ERL_NIF_API_FUNC_MACRO(enif_tsd_get) -# define enif_thread_opts_create ERL_NIF_API_FUNC_MACRO(enif_thread_opts_create) -# define enif_thread_opts_destroy ERL_NIF_API_FUNC_MACRO(enif_thread_opts_destroy) -# define enif_thread_create ERL_NIF_API_FUNC_MACRO(enif_thread_create) -# define enif_thread_self ERL_NIF_API_FUNC_MACRO(enif_thread_self) -# define enif_equal_tids ERL_NIF_API_FUNC_MACRO(enif_equal_tids) -# define enif_thread_exit ERL_NIF_API_FUNC_MACRO(enif_thread_exit) -# define enif_thread_join ERL_NIF_API_FUNC_MACRO(enif_thread_join) - -# define enif_realloc ERL_NIF_API_FUNC_MACRO(enif_realloc) -# define enif_system_info ERL_NIF_API_FUNC_MACRO(enif_system_info) -# define enif_fprintf ERL_NIF_API_FUNC_MACRO(enif_fprintf) -# define enif_inspect_iolist_as_binary ERL_NIF_API_FUNC_MACRO(enif_inspect_iolist_as_binary) -# define enif_make_sub_binary ERL_NIF_API_FUNC_MACRO(enif_make_sub_binary) -# define enif_get_string ERL_NIF_API_FUNC_MACRO(enif_get_string) -# define enif_get_atom ERL_NIF_API_FUNC_MACRO(enif_get_atom) -# define enif_is_fun ERL_NIF_API_FUNC_MACRO(enif_is_fun) -# define enif_is_pid ERL_NIF_API_FUNC_MACRO(enif_is_pid) -# define enif_is_port ERL_NIF_API_FUNC_MACRO(enif_is_port) -# define enif_get_uint ERL_NIF_API_FUNC_MACRO(enif_get_uint) -# define enif_get_long ERL_NIF_API_FUNC_MACRO(enif_get_long) -# define enif_make_uint ERL_NIF_API_FUNC_MACRO(enif_make_uint) -# define enif_make_long ERL_NIF_API_FUNC_MACRO(enif_make_long) -# define enif_make_tuple_from_array ERL_NIF_API_FUNC_MACRO(enif_make_tuple_from_array) -# define enif_make_list_from_array ERL_NIF_API_FUNC_MACRO(enif_make_list_from_array) -# define enif_is_empty_list ERL_NIF_API_FUNC_MACRO(enif_is_empty_list) -# define enif_open_resource_type ERL_NIF_API_FUNC_MACRO(enif_open_resource_type) -# define enif_alloc_resource ERL_NIF_API_FUNC_MACRO(enif_alloc_resource) -# define enif_release_resource ERL_NIF_API_FUNC_MACRO(enif_release_resource) -# define enif_make_resource ERL_NIF_API_FUNC_MACRO(enif_make_resource) -# define enif_get_resource ERL_NIF_API_FUNC_MACRO(enif_get_resource) -# define enif_sizeof_resource ERL_NIF_API_FUNC_MACRO(enif_sizeof_resource) -# define enif_make_new_binary ERL_NIF_API_FUNC_MACRO(enif_make_new_binary) -# define enif_is_list ERL_NIF_API_FUNC_MACRO(enif_is_list) -# define enif_is_tuple ERL_NIF_API_FUNC_MACRO(enif_is_tuple) -# define enif_get_atom_length ERL_NIF_API_FUNC_MACRO(enif_get_atom_length) -# define enif_get_list_length ERL_NIF_API_FUNC_MACRO(enif_get_list_length) -# define enif_make_atom_len ERL_NIF_API_FUNC_MACRO(enif_make_atom_len) -# define enif_make_existing_atom_len ERL_NIF_API_FUNC_MACRO(enif_make_existing_atom_len) -# define enif_make_string_len ERL_NIF_API_FUNC_MACRO(enif_make_string_len) -# define enif_alloc_env ERL_NIF_API_FUNC_MACRO(enif_alloc_env) -# define enif_free_env ERL_NIF_API_FUNC_MACRO(enif_free_env) -# define enif_clear_env ERL_NIF_API_FUNC_MACRO(enif_clear_env) -# define enif_send ERL_NIF_API_FUNC_MACRO(enif_send) -# define enif_make_copy ERL_NIF_API_FUNC_MACRO(enif_make_copy) -# define enif_self ERL_NIF_API_FUNC_MACRO(enif_self) -# define enif_get_local_pid ERL_NIF_API_FUNC_MACRO(enif_get_local_pid) -# define enif_keep_resource ERL_NIF_API_FUNC_MACRO(enif_keep_resource) -# define enif_make_resource_binary ERL_NIF_API_FUNC_MACRO(enif_make_resource_binary) -#if SIZEOF_LONG != 8 -# define enif_get_int64 ERL_NIF_API_FUNC_MACRO(enif_get_int64) -# define enif_get_uint64 ERL_NIF_API_FUNC_MACRO(enif_get_uint64) -# define enif_make_int64 ERL_NIF_API_FUNC_MACRO(enif_make_int64) -# define enif_make_uint64 ERL_NIF_API_FUNC_MACRO(enif_make_uint64) -#endif -# define enif_is_exception ERL_NIF_API_FUNC_MACRO(enif_is_exception) -# define enif_make_reverse_list ERL_NIF_API_FUNC_MACRO(enif_make_reverse_list) -# define enif_is_number ERL_NIF_API_FUNC_MACRO(enif_is_number) -# define enif_dlopen ERL_NIF_API_FUNC_MACRO(enif_dlopen) -# define enif_dlsym ERL_NIF_API_FUNC_MACRO(enif_dlsym) -# define enif_consume_timeslice ERL_NIF_API_FUNC_MACRO(enif_consume_timeslice) -# define enif_is_map ERL_NIF_API_FUNC_MACRO(enif_is_map) -# define enif_get_map_size ERL_NIF_API_FUNC_MACRO(enif_get_map_size) -# define enif_make_new_map ERL_NIF_API_FUNC_MACRO(enif_make_new_map) -# define enif_make_map_put ERL_NIF_API_FUNC_MACRO(enif_make_map_put) -# define enif_get_map_value ERL_NIF_API_FUNC_MACRO(enif_get_map_value) -# define enif_make_map_update ERL_NIF_API_FUNC_MACRO(enif_make_map_update) -# define enif_make_map_remove ERL_NIF_API_FUNC_MACRO(enif_make_map_remove) -# define enif_map_iterator_create ERL_NIF_API_FUNC_MACRO(enif_map_iterator_create) -# define enif_map_iterator_destroy ERL_NIF_API_FUNC_MACRO(enif_map_iterator_destroy) -# define enif_map_iterator_is_head ERL_NIF_API_FUNC_MACRO(enif_map_iterator_is_head) -# define enif_map_iterator_is_tail ERL_NIF_API_FUNC_MACRO(enif_map_iterator_is_tail) -# define enif_map_iterator_next ERL_NIF_API_FUNC_MACRO(enif_map_iterator_next) -# define enif_map_iterator_prev ERL_NIF_API_FUNC_MACRO(enif_map_iterator_prev) -# define enif_map_iterator_get_pair ERL_NIF_API_FUNC_MACRO(enif_map_iterator_get_pair) -# define enif_schedule_nif ERL_NIF_API_FUNC_MACRO(enif_schedule_nif) -# define enif_has_pending_exception ERL_NIF_API_FUNC_MACRO(enif_has_pending_exception) -# define enif_raise_exception ERL_NIF_API_FUNC_MACRO(enif_raise_exception) -# define enif_getenv ERL_NIF_API_FUNC_MACRO(enif_getenv) -# define enif_monotonic_time ERL_NIF_API_FUNC_MACRO(enif_monotonic_time) -# define enif_time_offset ERL_NIF_API_FUNC_MACRO(enif_time_offset) -# define enif_convert_time_unit ERL_NIF_API_FUNC_MACRO(enif_convert_time_unit) -# define enif_now_time ERL_NIF_API_FUNC_MACRO(enif_now_time) -# define enif_cpu_time ERL_NIF_API_FUNC_MACRO(enif_cpu_time) -# define enif_make_unique_integer ERL_NIF_API_FUNC_MACRO(enif_make_unique_integer) -# define enif_is_current_process_alive ERL_NIF_API_FUNC_MACRO(enif_is_current_process_alive) -# define enif_is_process_alive ERL_NIF_API_FUNC_MACRO(enif_is_process_alive) -# define enif_is_port_alive ERL_NIF_API_FUNC_MACRO(enif_is_port_alive) -# define enif_get_local_port ERL_NIF_API_FUNC_MACRO(enif_get_local_port) -# define enif_term_to_binary ERL_NIF_API_FUNC_MACRO(enif_term_to_binary) -# define enif_binary_to_term ERL_NIF_API_FUNC_MACRO(enif_binary_to_term) -# define enif_port_command ERL_NIF_API_FUNC_MACRO(enif_port_command) -# define enif_thread_type ERL_NIF_API_FUNC_MACRO(enif_thread_type) -# define enif_snprintf ERL_NIF_API_FUNC_MACRO(enif_snprintf) -# define enif_select ERL_NIF_API_FUNC_MACRO(enif_select) -# define enif_open_resource_type_x ERL_NIF_API_FUNC_MACRO(enif_open_resource_type_x) -# define enif_monitor_process ERL_NIF_API_FUNC_MACRO(enif_monitor_process) -# define enif_demonitor_process ERL_NIF_API_FUNC_MACRO(enif_demonitor_process) -# define enif_compare_monitors ERL_NIF_API_FUNC_MACRO(enif_compare_monitors) -# define enif_hash ERL_NIF_API_FUNC_MACRO(enif_hash) -# define enif_whereis_pid ERL_NIF_API_FUNC_MACRO(enif_whereis_pid) -# define enif_whereis_port ERL_NIF_API_FUNC_MACRO(enif_whereis_port) -# define enif_ioq_create ERL_NIF_API_FUNC_MACRO(enif_ioq_create) -# define enif_ioq_destroy ERL_NIF_API_FUNC_MACRO(enif_ioq_destroy) -# define enif_ioq_enq ERL_NIF_API_FUNC_MACRO(enif_ioq_enq) -# define enif_ioq_enq_binary ERL_NIF_API_FUNC_MACRO(enif_ioq_enq_binary) -# define enif_ioq_enqv ERL_NIF_API_FUNC_MACRO(enif_ioq_enqv) -# define enif_ioq_size ERL_NIF_API_FUNC_MACRO(enif_ioq_size) -# define enif_ioq_deq ERL_NIF_API_FUNC_MACRO(enif_ioq_deq) -# define enif_ioq_peek ERL_NIF_API_FUNC_MACRO(enif_ioq_peek) -# define enif_inspect_iovec ERL_NIF_API_FUNC_MACRO(enif_inspect_iovec) -# define enif_free_iovec ERL_NIF_API_FUNC_MACRO(enif_free_iovec) -# define enif_ioq_peek_head ERL_NIF_API_FUNC_MACRO(enif_ioq_peek_head) -# define enif_mutex_name ERL_NIF_API_FUNC_MACRO(enif_mutex_name) -# define enif_cond_name ERL_NIF_API_FUNC_MACRO(enif_cond_name) -# define enif_rwlock_name ERL_NIF_API_FUNC_MACRO(enif_rwlock_name) -# define enif_thread_name ERL_NIF_API_FUNC_MACRO(enif_thread_name) -# define enif_vfprintf ERL_NIF_API_FUNC_MACRO(enif_vfprintf) -# define enif_vsnprintf ERL_NIF_API_FUNC_MACRO(enif_vsnprintf) -# define enif_make_map_from_arrays ERL_NIF_API_FUNC_MACRO(enif_make_map_from_arrays) -# define enif_select_x ERL_NIF_API_FUNC_MACRO(enif_select_x) -# define enif_make_monitor_term ERL_NIF_API_FUNC_MACRO(enif_make_monitor_term) -# define enif_set_pid_undefined ERL_NIF_API_FUNC_MACRO(enif_set_pid_undefined) -# define enif_is_pid_undefined ERL_NIF_API_FUNC_MACRO(enif_is_pid_undefined) -# define enif_term_type ERL_NIF_API_FUNC_MACRO(enif_term_type) - -/* -** ADD NEW ENTRIES HERE (before this comment) -*/ - -/* - * Conditional EXPERIMENTAL stuff always last - * Must be moved up and made unconditional to support binary backward - * compatibility on Windows. - */ -#endif /* ERL_NIF_API_FUNC_MACRO */ - - -#if defined(__GNUC__) && !(defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) - -/* Inline functions for compile time type checking of arguments to - variadic functions. -*/ - -# define ERL_NIF_INLINE __inline__ - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple1(ErlNifEnv* env, - ERL_NIF_TERM e1) -{ - return enif_make_tuple(env, 1, e1); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple2(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2) -{ - return enif_make_tuple(env, 2, e1, e2); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple3(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3) -{ - return enif_make_tuple(env, 3, e1, e2, e3); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple4(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4) -{ - return enif_make_tuple(env, 4, e1, e2, e3, e4); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple5(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5) -{ - return enif_make_tuple(env, 5, e1, e2, e3, e4, e5); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple6(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6) -{ - return enif_make_tuple(env, 6, e1, e2, e3, e4, e5, e6); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple7(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7) -{ - return enif_make_tuple(env, 7, e1, e2, e3, e4, e5, e6, e7); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple8(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8) -{ - return enif_make_tuple(env, 8, e1, e2, e3, e4, e5, e6, e7, e8); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple9(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8, - ERL_NIF_TERM e9) -{ - return enif_make_tuple(env, 9, e1, e2, e3, e4, e5, e6, e7, e8, e9); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list1(ErlNifEnv* env, - ERL_NIF_TERM e1) -{ - return enif_make_list(env, 1, e1); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list2(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2) -{ - return enif_make_list(env, 2, e1, e2); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list3(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3) -{ - return enif_make_list(env, 3, e1, e2, e3); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list4(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4) -{ - return enif_make_list(env, 4, e1, e2, e3, e4); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list5(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5) -{ - return enif_make_list(env, 5, e1, e2, e3, e4, e5); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list6(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6) -{ - return enif_make_list(env, 6, e1, e2, e3, e4, e5, e6); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list7(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7) -{ - return enif_make_list(env, 7, e1, e2, e3, e4, e5, e6, e7); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list8(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8) -{ - return enif_make_list(env, 8, e1, e2, e3, e4, e5, e6, e7, e8); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list9(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8, - ERL_NIF_TERM e9) -{ - return enif_make_list(env, 9, e1, e2, e3, e4, e5, e6, e7, e8, e9); -} - -# undef ERL_NIF_INLINE - -#else /* fallback with macros */ - -#ifndef enif_make_list1 -# define enif_make_list1(ENV,E1) enif_make_list(ENV,1,E1) -# define enif_make_list2(ENV,E1,E2) enif_make_list(ENV,2,E1,E2) -# define enif_make_list3(ENV,E1,E2,E3) enif_make_list(ENV,3,E1,E2,E3) -# define enif_make_list4(ENV,E1,E2,E3,E4) enif_make_list(ENV,4,E1,E2,E3,E4) -# define enif_make_list5(ENV,E1,E2,E3,E4,E5) enif_make_list(ENV,5,E1,E2,E3,E4,E5) -# define enif_make_list6(ENV,E1,E2,E3,E4,E5,E6) enif_make_list(ENV,6,E1,E2,E3,E4,E5,E6) -# define enif_make_list7(ENV,E1,E2,E3,E4,E5,E6,E7) enif_make_list(ENV,7,E1,E2,E3,E4,E5,E6,E7) -# define enif_make_list8(ENV,E1,E2,E3,E4,E5,E6,E7,E8) enif_make_list(ENV,8,E1,E2,E3,E4,E5,E6,E7,E8) -# define enif_make_list9(ENV,E1,E2,E3,E4,E5,E6,E7,E8,E9) enif_make_list(ENV,9,E1,E2,E3,E4,E5,E6,E7,E8,E9) -# define enif_make_tuple1(ENV,E1) enif_make_tuple(ENV,1,E1) -# define enif_make_tuple2(ENV,E1,E2) enif_make_tuple(ENV,2,E1,E2) -# define enif_make_tuple3(ENV,E1,E2,E3) enif_make_tuple(ENV,3,E1,E2,E3) -# define enif_make_tuple4(ENV,E1,E2,E3,E4) enif_make_tuple(ENV,4,E1,E2,E3,E4) -# define enif_make_tuple5(ENV,E1,E2,E3,E4,E5) enif_make_tuple(ENV,5,E1,E2,E3,E4,E5) -# define enif_make_tuple6(ENV,E1,E2,E3,E4,E5,E6) enif_make_tuple(ENV,6,E1,E2,E3,E4,E5,E6) -# define enif_make_tuple7(ENV,E1,E2,E3,E4,E5,E6,E7) enif_make_tuple(ENV,7,E1,E2,E3,E4,E5,E6,E7) -# define enif_make_tuple8(ENV,E1,E2,E3,E4,E5,E6,E7,E8) enif_make_tuple(ENV,8,E1,E2,E3,E4,E5,E6,E7,E8) -# define enif_make_tuple9(ENV,E1,E2,E3,E4,E5,E6,E7,E8,E9) enif_make_tuple(ENV,9,E1,E2,E3,E4,E5,E6,E7,E8,E9) -#endif - -#endif /* __GNUC__ && !WIN32 */ - -#ifndef enif_make_pid - -# define enif_make_pid(ENV, PID) ((void)(ENV),(const ERL_NIF_TERM)((PID)->pid)) -# define enif_compare_pids(A, B) (enif_compare((A)->pid,(B)->pid)) -# define enif_select_read(ENV, E, OBJ, PID, MSG, MSG_ENV) \ - enif_select_x(ENV, E, ERL_NIF_SELECT_READ | ERL_NIF_SELECT_CUSTOM_MSG, \ - OBJ, PID, MSG, MSG_ENV) -# define enif_select_write(ENV, E, OBJ, PID, MSG, MSG_ENV) \ - enif_select_x(ENV, E, ERL_NIF_SELECT_WRITE | ERL_NIF_SELECT_CUSTOM_MSG, \ - OBJ, PID, MSG, MSG_ENV) - -#if SIZEOF_LONG == 8 -# define enif_get_int64 enif_get_long -# define enif_get_uint64 enif_get_ulong -# define enif_make_int64 enif_make_long -# define enif_make_uint64 enif_make_ulong -#endif - -#endif - diff --git a/prebuilt/windows/headers/erlang/driver_int.h b/prebuilt/windows/headers/erlang/driver_int.h deleted file mode 100644 index 50097d3fd2..0000000000 --- a/prebuilt/windows/headers/erlang/driver_int.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 1997-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -/*---------------------------------------------------------------------- -** Purpose : System dependant driver declarations -**---------------------------------------------------------------------- */ - -#ifndef __DRIVER_INT_H__ -#define __DRIVER_INT_H__ - -#if !defined __WIN32__ -# define __WIN32__ -#endif - -/* - * This structure can be cast to a WSABUF structure. - */ - -typedef struct _SysIOVec { - unsigned long iov_len; - char* iov_base; -} SysIOVec; - -#endif diff --git a/prebuilt/windows/headers/erlang/ei.h b/prebuilt/windows/headers/erlang/ei.h deleted file mode 100644 index f171bf1a8d..0000000000 --- a/prebuilt/windows/headers/erlang/ei.h +++ /dev/null @@ -1,719 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 1998-2020. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -#ifndef EI_H -#define EI_H - -#define EI_HAVE_TIMEOUT 1 /* Flag to user code that we have them */ -#define USE_EI_UNDOCUMENTED /* Want declarations for undocumented */ - -/************************************************************************/ -/* This file defines the complete interface to ei */ -/************************************************************************/ - -/* -------------------------------------------------------------------- */ -/* Include types needed below */ -/* -------------------------------------------------------------------- */ - -#if defined(__WIN32__) -#include -#include -#include -typedef LONG_PTR ssize_t; /* Sigh... */ -#else -#include /* ssize_t */ -#endif - -#include /* Need type FILE */ -#include /* Need EHOSTUNREACH, ENOMEM, ... */ - -#if !(defined(__WIN32__) || defined(_WIN32)) -# include -#endif - -#ifdef __has_attribute -#if __has_attribute(deprecated) -#define EI_HAVE_DEPRECATED_ATTR__ 1 -#else -#undef EI_HAVE_DEPRECATED_ATTR__ -#endif -#endif - -#ifdef EI_NO_DEPR_WARN -#undef EI_HAVE_DEPRECATED_ATTR__ -#endif - -#ifdef EI_HAVE_DEPRECATED_ATTR__ -#define EI_DEPRECATED_ATTR_NAME deprecated -#define EI_DEPRECATED_ATTR __attribute__((EI_DEPRECATED_ATTR_NAME)) -#else -#define EI_DEPRECATED_ATTR_NAME -#define EI_DEPRECATED_ATTR -#endif - -/* -------------------------------------------------------------------- */ -/* Defines part of API */ -/* -------------------------------------------------------------------- */ - -/* - * Some error codes might be missing, so here's a backstop definitions - * of the ones we use with `erl_errno': - */ - -#ifndef EMSGSIZE /* Message too long */ -#define EMSGSIZE EIO -#endif - -#ifndef ETIMEDOUT /* Connection timed out */ -#define ETIMEDOUT EIO -#endif - -#ifndef EHOSTUNREACH /* No route to host */ -#define EHOSTUNREACH EIO -#endif - -/* FIXME just a few are documented, does it mean they can't be returned? */ - -#define ERL_ERROR -1 /* Error of some kind */ -#define ERL_NO_DAEMON -2 /* No contact with EPMD */ -#define ERL_NO_PORT -3 /* No port received from EPMD */ -#define ERL_CONNECT_FAIL -4 /* Connect to Erlang Node failed */ -#define ERL_TIMEOUT -5 /* A timeout has expired */ -#define ERL_NO_REMOTE -6 /* Cannot execute rsh */ - -#define ERL_TICK 0 -#define ERL_MSG 1 - -#define ERL_NO_TIMEOUT -1 - -/* these are the control message types */ -#define ERL_LINK 1 -#define ERL_SEND 2 -#define ERL_EXIT 3 -#define ERL_UNLINK 4 -#define ERL_NODE_LINK 5 -#define ERL_REG_SEND 6 -#define ERL_GROUP_LEADER 7 -#define ERL_EXIT2 8 -#define ERL_PASS_THROUGH 'p' - -/* new ones for tracing, from Kenneth */ -#define ERL_SEND_TT 12 -#define ERL_EXIT_TT 13 -#define ERL_REG_SEND_TT 16 -#define ERL_EXIT2_TT 18 -#define ERL_MONITOR_P 19 -#define ERL_DEMONITOR_P 20 -#define ERL_MONITOR_P_EXIT 21 - -/* For ei_xrpc_to */ -#define EI_RPC_FETCH_STDOUT 1 -/* -------------------------------------------------------------------- */ -/* Defines used for ei_get_type_internal() output */ -/* -------------------------------------------------------------------- */ -/* - * these are the term type indicators used in - * the external (distribution) format - */ - -/* FIXME we don't want to export these..... */ - -#define ERL_SMALL_INTEGER_EXT 'a' -#define ERL_INTEGER_EXT 'b' -#define ERL_FLOAT_EXT 'c' -#define NEW_FLOAT_EXT 'F' -#define ERL_ATOM_EXT 'd' -#define ERL_SMALL_ATOM_EXT 's' -#define ERL_ATOM_UTF8_EXT 'v' -#define ERL_SMALL_ATOM_UTF8_EXT 'w' -#define ERL_REFERENCE_EXT 'e' -#define ERL_NEW_REFERENCE_EXT 'r' -#define ERL_NEWER_REFERENCE_EXT 'Z' -#define ERL_PORT_EXT 'f' -#define ERL_NEW_PORT_EXT 'Y' -#define ERL_PID_EXT 'g' -#define ERL_NEW_PID_EXT 'X' -#define ERL_SMALL_TUPLE_EXT 'h' -#define ERL_LARGE_TUPLE_EXT 'i' -#define ERL_NIL_EXT 'j' -#define ERL_STRING_EXT 'k' -#define ERL_LIST_EXT 'l' -#define ERL_BINARY_EXT 'm' -#define ERL_BIT_BINARY_EXT 'M' -#define ERL_SMALL_BIG_EXT 'n' -#define ERL_LARGE_BIG_EXT 'o' -#define ERL_NEW_FUN_EXT 'p' -#define ERL_MAP_EXT 't' -#define ERL_FUN_EXT 'u' -#define ERL_EXPORT_EXT 'q' -#define ERL_V4_PORT_EXT 'x' - - -#define ERL_NEW_CACHE 'N' /* c nodes don't know these two */ -#define ERL_CACHED_ATOM 'C' - - -/* -------------------------------------------------------------------- */ -/* Define the erl_errno macro */ -/* -------------------------------------------------------------------- */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * GCC's attributes are too useful to not use. Other compilers - * just lose opportunities to optimize and warn. - */ -#if !defined(__GNUC__) || __GNUC__ < 2 -# define __attribute__(foo) /* nothing */ -#endif - -/* - * Define the 'erl_errno' facility. Unfortunately this lives on in - * the 'ei' interface as well.... :-( - */ - -#if defined(_REENTRANT) || defined(__WIN32__) - -/* 'erl_errno' as a function return value */ -volatile int* __erl_errno_place(void) __attribute__ ((__const__)); - -#define erl_errno (*__erl_errno_place ()) - -#else /* !_REENTRANT && !__WIN32__ */ - -extern volatile int __erl_errno; - -#define erl_errno __erl_errno - -#endif /* !_REENTRANT && !__WIN32__ */ - - -/* -------------------------------------------------------------------- */ -/* Type definitions */ -/* -------------------------------------------------------------------- */ - -#ifdef __WIN32__ -#define EI_LONGLONG __int64 -#define EI_ULONGLONG unsigned __int64 -#else -#define EI_LONGLONG long long -#define EI_ULONGLONG unsigned long long -#endif - -/* - * To avoid confusion about the MAXHOSTNAMELEN when compiling the - * library and when using the library we set a value that we use - */ - -#define EI_MAX_COOKIE_SIZE 512 -#define MAXATOMLEN (255 + 1) -#define MAXATOMLEN_UTF8 (255*4 + 1) -#define EI_MAXHOSTNAMELEN (MAXATOMLEN - 2) -#define EI_MAXALIVELEN (MAXATOMLEN - 2) -#define MAXNODELEN MAXATOMLEN - -typedef enum { - ERLANG_ASCII = 1, - ERLANG_LATIN1 = 2, - ERLANG_UTF8 = 4 -}erlang_char_encoding; - -/* a pid */ -typedef struct { - char node[MAXATOMLEN_UTF8]; - unsigned int num; - unsigned int serial; - unsigned int creation; -} erlang_pid; - -/* a port */ -typedef struct { - char node[MAXATOMLEN_UTF8]; - EI_ULONGLONG id; - unsigned int creation; -} erlang_port; - -/* a ref */ -typedef struct { - char node[MAXATOMLEN_UTF8]; - int len; - unsigned int n[5]; - unsigned int creation; -} erlang_ref; - -/* a trace token */ -typedef struct { - long serial; - long prev; - erlang_pid from; - long label; - long flags; -} erlang_trace; - -/* a message */ -typedef struct { - long msgtype; - erlang_pid from; - erlang_pid to; - char toname[MAXATOMLEN_UTF8]; - char cookie[MAXATOMLEN_UTF8]; - erlang_trace token; -} erlang_msg; - -/* a fun */ -typedef struct { - long arity; - char module[MAXATOMLEN_UTF8]; - enum { EI_FUN_CLOSURE, EI_FUN_EXPORT } type; - union { - struct { - char md5[16]; - long index; - long old_index; - long uniq; - long n_free_vars; - erlang_pid pid; - long free_var_len; - char* free_vars; - } closure; - struct { - char* func; - int func_allocated; - } exprt; - } u; -} erlang_fun; - -/* a big */ -typedef struct { - unsigned int arity; - int is_neg; - void *digits; -} erlang_big; - -typedef struct { - char ei_type; - int arity; - int size; - union { - long i_val; - double d_val; - char atom_name[MAXATOMLEN_UTF8]; - erlang_pid pid; - erlang_port port; - erlang_ref ref; - } value; -} ei_term; - -/* XXX */ - -typedef struct { - char ipadr[4]; /* stored in network byte order */ - char nodename[MAXNODELEN+1]; -} ErlConnect; - -#define EI_SCLBK_INF_TMO (~((unsigned) 0)) - -#define EI_SCLBK_FLG_FULL_IMPL (1 << 0) - -/* - * HACK: AIX defines many socket functions like accept to be naccept, which - * pollutes the global namespace. Set up an ugly ifdef for consumers of this - * API here so they get a mangled name for AIX and the sane name elsewhere. - */ -#ifdef _AIX -#define EI_ACCEPT_NAME accept_ei -#else -#define EI_ACCEPT_NAME accept -#endif - -typedef struct { - int flags; - - int (*socket)(void **ctx, void *setup_ctx); - int (*close)(void *ctx); - int (*listen)(void *ctx, void *addr, int *len, int backlog); - int (*EI_ACCEPT_NAME)(void **ctx, void *addr, int *len, unsigned tmo); - int (*connect)(void *ctx, void *addr, int len, unsigned tmo); - int (*writev)(void *ctx, const void *iov, int iovcnt, ssize_t *len, unsigned tmo); - int (*write)(void *ctx, const char *buf, ssize_t *len, unsigned tmo); - int (*read)(void *ctx, char *buf, ssize_t *len, unsigned tmo); - - int (*handshake_packet_header_size)(void *ctx, int *sz); - int (*connect_handshake_complete)(void *ctx); - int (*accept_handshake_complete)(void *ctx); - int (*get_fd)(void *ctx, int *fd); - - /* end of version 1 */ - -} ei_socket_callbacks; - -typedef struct ei_cnode_s { - char thishostname[EI_MAXHOSTNAMELEN+1]; - char thisnodename[MAXNODELEN+1]; - char thisalivename[EI_MAXALIVELEN+1]; -/* Currently this_ipaddr isn't used */ -/* struct in_addr this_ipaddr; */ - char ei_connect_cookie[EI_MAX_COOKIE_SIZE+1]; - unsigned int creation; - erlang_pid self; - ei_socket_callbacks *cbs; - void *setup_context; - unsigned int pidsn; -} ei_cnode; - -typedef struct in_addr *Erl_IpAddr; - - -/* A dynamic version of ei XX */ - -typedef struct ei_x_buff_TAG { - char* buff; - int buffsz; - int index; -} ei_x_buff; - -/* -------------------------------------------------------------------- */ -/* Function definitions (listed in same order as documentation) */ -/* -------------------------------------------------------------------- */ - -/* Handle the connection */ - -int ei_connect_init(ei_cnode* ec, const char* this_node_name, - const char *cookie, short creation); -int ei_connect_xinit (ei_cnode* ec, const char *thishostname, - const char *thisalivename, const char *thisnodename, - Erl_IpAddr thisipaddr, const char *cookie, - const short creation); - -int ei_connect_init_ussi(ei_cnode* ec, const char* this_node_name, - const char *cookie, short creation, - ei_socket_callbacks *cbs, int cbs_sz, - void *setup_context); -int ei_connect_xinit_ussi(ei_cnode* ec, const char *thishostname, - const char *thisalivename, const char *thisnodename, - Erl_IpAddr thisipaddr, const char *cookie, - const short creation, ei_socket_callbacks *cbs, - int cbs_sz, void *setup_context); - -int ei_connect(ei_cnode* ec, char *nodename); -int ei_connect_tmo(ei_cnode* ec, char *nodename, unsigned ms); -int ei_connect_host_port(ei_cnode* ec, char *hostname, int port); -int ei_connect_host_port_tmo(ei_cnode* ec, char *hostname, int port, unsigned ms); -int ei_xconnect(ei_cnode* ec, Erl_IpAddr adr, char *alivename); -int ei_xconnect_tmo(ei_cnode* ec, Erl_IpAddr adr, char *alivename, unsigned ms); -int ei_xconnect_host_port(ei_cnode* ec, Erl_IpAddr adr, int port); -int ei_xconnect_host_port_tmo(ei_cnode* ec, Erl_IpAddr adr, int port, unsigned ms); - -int ei_receive(int fd, unsigned char *bufp, int bufsize); -int ei_receive_tmo(int fd, unsigned char *bufp, int bufsize, unsigned ms); -int ei_receive_msg(int fd, erlang_msg* msg, ei_x_buff* x); -int ei_receive_msg_tmo(int fd, erlang_msg* msg, ei_x_buff* x, unsigned ms); -int ei_xreceive_msg(int fd, erlang_msg* msg, ei_x_buff* x); -int ei_xreceive_msg_tmo(int fd, erlang_msg* msg, ei_x_buff* x, unsigned ms); - -int ei_send(int fd, erlang_pid* to, char* buf, int len); -int ei_send_tmo(int fd, erlang_pid* to, char* buf, int len, unsigned ms); -int ei_reg_send(ei_cnode* ec, int fd, char *server_name, char* buf, int len); -int ei_reg_send_tmo(ei_cnode* ec, int fd, char *server_name, char* buf, int len, unsigned ms); - -int ei_rpc(ei_cnode* ec, int fd, char *mod, char *fun, - const char* inbuf, int inbuflen, ei_x_buff* x); -int ei_xrpc_to(ei_cnode* ec, int fd, char *mod, char *fun, - const char* buf, int len, int flags); -int ei_rpc_to(ei_cnode* ec, int fd, char *mod, char *fun, - const char* buf, int len); -int ei_rpc_from(ei_cnode* ec, int fd, int timeout, erlang_msg* msg, - ei_x_buff* x); - -int ei_publish(ei_cnode* ec, int port); -int ei_publish_tmo(ei_cnode* ec, int port, unsigned ms); -int ei_listen(ei_cnode *ec, int *port, int backlog); -int ei_xlisten(ei_cnode *ec, Erl_IpAddr adr, int *port, int backlog); -int ei_accept(ei_cnode* ec, int lfd, ErlConnect *conp); -int ei_accept_tmo(ei_cnode* ec, int lfd, ErlConnect *conp, unsigned ms); -int ei_unpublish(ei_cnode* ec); -int ei_unpublish_tmo(const char *alive, unsigned ms); - -int ei_close_connection(int fd); - -const char *ei_thisnodename(const ei_cnode* ec); -const char *ei_thishostname(const ei_cnode* ec); -const char *ei_thisalivename(const ei_cnode* ec); - -erlang_pid *ei_self(ei_cnode* ec); -int ei_make_pid(ei_cnode *ec, erlang_pid *pid); -int ei_make_ref(ei_cnode *ec, erlang_ref *ref); - -/* - * settings - */ - -void ei_set_compat_rel(unsigned rel); -void ei_set_tracelevel(int); -int ei_get_tracelevel(void); - -/* - * We have erl_gethost*() so we include ei versions as well. - */ - -struct hostent *ei_gethostbyname(const char *name); -struct hostent *ei_gethostbyaddr(const char *addr, int len, int type); -struct hostent *ei_gethostbyname_r(const char *name, - struct hostent *hostp, - char *buffer, - int buflen, - int *h_errnop); -struct hostent *ei_gethostbyaddr_r(const char *addr, - int length, - int type, - struct hostent *hostp, - char *buffer, - int buflen, - int *h_errnop); - - -/* Encode/decode functions */ - -int ei_encode_version(char *buf, int *index); -int ei_x_encode_version(ei_x_buff* x); -int ei_encode_long(char *buf, int *index, long p); -int ei_x_encode_long(ei_x_buff* x, long n); -int ei_encode_ulong(char *buf, int *index, unsigned long p); -int ei_x_encode_ulong(ei_x_buff* x, unsigned long n); -int ei_encode_double(char *buf, int *index, double p); -int ei_x_encode_double(ei_x_buff* x, double dbl); -int ei_encode_boolean(char *buf, int *index, int p); -int ei_x_encode_boolean(ei_x_buff* x, int p); -int ei_encode_char(char *buf, int *index, char p); -int ei_x_encode_char(ei_x_buff* x, char p); -int ei_encode_string(char *buf, int *index, const char *p); -int ei_encode_string_len(char *buf, int *index, const char *p, int len); -int ei_x_encode_string(ei_x_buff* x, const char* s); -int ei_x_encode_string_len(ei_x_buff* x, const char* s, int len); -int ei_encode_atom(char *buf, int *index, const char *p); -int ei_encode_atom_as(char *buf, int *index, const char *p, - erlang_char_encoding from, erlang_char_encoding to); -int ei_encode_atom_len(char *buf, int *index, const char *p, int len); -int ei_encode_atom_len_as(char *buf, int *index, const char *p, int len, - erlang_char_encoding from, erlang_char_encoding to); -int ei_x_encode_atom(ei_x_buff* x, const char* s); -int ei_x_encode_atom_as(ei_x_buff* x, const char* s, - erlang_char_encoding from, erlang_char_encoding to); -int ei_x_encode_atom_len(ei_x_buff* x, const char* s, int len); -int ei_x_encode_atom_len_as(ei_x_buff* x, const char* s, int len, - erlang_char_encoding from, erlang_char_encoding to); -int ei_encode_binary(char *buf, int *index, const void *p, long len); -int ei_encode_bitstring(char *buf, int *index, const char *p, size_t bitoffs, size_t bits); -int ei_x_encode_binary(ei_x_buff* x, const void* s, int len); -int ei_x_encode_bitstring(ei_x_buff* x, const char* p, size_t bitoffs, size_t bits); -int ei_encode_pid(char *buf, int *index, const erlang_pid *p); -int ei_x_encode_pid(ei_x_buff* x, const erlang_pid* pid); -int ei_encode_fun(char* buf, int* index, const erlang_fun* p); -int ei_x_encode_fun(ei_x_buff* x, const erlang_fun* fun); -int ei_encode_port(char *buf, int *index, const erlang_port *p); -int ei_x_encode_port(ei_x_buff* x, const erlang_port *p); -int ei_encode_ref(char *buf, int *index, const erlang_ref *p); -int ei_x_encode_ref(ei_x_buff* x, const erlang_ref *p); -int ei_encode_trace(char *buf, int *index, const erlang_trace *p); -int ei_x_encode_trace(ei_x_buff* x, const erlang_trace *p); -int ei_encode_tuple_header(char *buf, int *index, int arity); -int ei_x_encode_tuple_header(ei_x_buff* x, long n); -int ei_encode_list_header(char *buf, int *index, int arity); -int ei_x_encode_list_header(ei_x_buff* x, long n); -#define ei_encode_empty_list(buf,i) ei_encode_list_header(buf,i,0) -int ei_x_encode_empty_list(ei_x_buff* x); -int ei_encode_map_header(char *buf, int *index, int arity); -int ei_x_encode_map_header(ei_x_buff* x, long n); - -/* - * ei_get_type() returns the type and "size" of the item at - * buf[index]. For strings and atoms, size is the number of characters - * not including the terminating 0. For binaries, size is the number - * of bytes. For lists and tuples, size is the arity of the - * object. For other types, size is 0. In all cases, index is left - * unchanged. - */ - -int ei_get_type(const char *buf, const int *index, int *type, int *size); - -/* Step through buffer, decoding the given type into the buffer - * provided. On success, 0 is returned and index is updated to point - * to the start of the next item in the buffer. If the type of item at - * buf[index] is not the requested type, -1 is returned and index is - * not updated. The buffer provided by the caller must be sufficiently - * large to contain the decoded object. - */ -int ei_decode_version(const char *buf, int *index, int *version); -int ei_decode_long(const char *buf, int *index, long *p); -int ei_decode_ulong(const char *buf, int *index, unsigned long *p); -int ei_decode_double(const char *buf, int *index, double *p); -int ei_decode_boolean(const char *buf, int *index, int *p); -int ei_decode_char(const char *buf, int *index, char *p); -int ei_decode_string(const char *buf, int *index, char *p); -int ei_decode_atom(const char *buf, int *index, char *p); -int ei_decode_atom_as(const char *buf, int *index, char *p, int destlen, erlang_char_encoding want, erlang_char_encoding* was, erlang_char_encoding* result); -int ei_decode_binary(const char *buf, int *index, void *p, long *len); -int ei_decode_bitstring(const char *buf, int *index, const char** pp, - unsigned int* bitoffsp, size_t *nbitsp); - -int ei_decode_fun(const char* buf, int* index, erlang_fun* p); -void free_fun(erlang_fun* f); -int ei_decode_pid(const char *buf, int *index, erlang_pid *p); -int ei_decode_port(const char *buf, int *index, erlang_port *p); -int ei_decode_ref(const char *buf, int *index, erlang_ref *p); -int ei_decode_trace(const char *buf, int *index, erlang_trace *p); -int ei_decode_tuple_header(const char *buf, int *index, int *arity); -int ei_decode_list_header(const char *buf, int *index, int *arity); -int ei_decode_map_header(const char *buf, int *index, int *arity); -int ei_decode_iodata(const char *buf, int* index, int *szp, char *out_buf); - -/* - * ei_decode_ei_term() returns 1 if term is decoded, 0 if term is OK, - * but not decoded here and -1 if something is wrong. ONLY changes - * index if term is decoded (return value 1)! - */ - -int ei_decode_ei_term(const char* buf, int* index, ei_term* term); - - -/* - * ei_print_term to print out a binary coded term - */ - -int ei_print_term(FILE *fp, const char* buf, int* index); -int ei_s_print_term(char** s, const char* buf, int* index); - -/* - * format to build binary format terms a bit like printf - */ - -int ei_x_format(ei_x_buff* x, const char* fmt, ...); -int ei_x_format_wo_ver(ei_x_buff* x, const char *fmt, ...); - -int ei_x_new(ei_x_buff* x); -int ei_x_new_with_version(ei_x_buff* x); -int ei_x_free(ei_x_buff* x); -int ei_x_append(ei_x_buff* x, const ei_x_buff* x2); -int ei_x_append_buf(ei_x_buff* x, const char* buf, int len); -int ei_skip_term(const char* buf, int* index); - -int ei_cmp_refs(erlang_ref *a, erlang_ref *b); -int ei_cmp_pids(erlang_pid *a, erlang_pid *b); -int ei_cmp_ports(erlang_port *a, erlang_port *b); - -/* -------------------------------------------------------------------- */ -/* Initialize erl_interface */ -/* -------------------------------------------------------------------- */ - -int ei_init(void); - -/* -------------------------------------------------------------------- */ -/* The ei_global functions */ -/* -------------------------------------------------------------------- */ -char **ei_global_names(ei_cnode *ec, int fd, int *count); -int ei_global_whereis(ei_cnode *ec, int fd, const char *name, erlang_pid* pid, char *node); -int ei_global_register(int fd, const char *name, erlang_pid *self); -int ei_global_unregister(ei_cnode *ec, int fd, const char *name); - -/* -------------------------------------------------------------------- */ -/* Encoding/decoding bugnums to GNU MP format */ -/* -------------------------------------------------------------------- */ - -/* If the user included we supply some more functions */ - -#if defined(__GNU_MP_VERSION) \ - && __GNU_MP_VERSION == 4 && __GNU_MP_VERSION_MINOR >= 1 - -int ei_decode_bignum(const char *buf, int *index, mpz_t obj); -int ei_encode_bignum(char *buf, int *index, mpz_t obj); -int ei_x_encode_bignum(ei_x_buff *x, mpz_t obj); - -#endif /* __GNU_MP_VERSION */ - -/* -------------------------------------------------------------------- */ -/* Function definitions not documented FIXME */ -/* -------------------------------------------------------------------- */ - -/* FIXME replace this primitive type size code */ - -int ei_decode_longlong(const char *buf, int *index, EI_LONGLONG *p); -int ei_decode_ulonglong(const char *buf, int *index, EI_ULONGLONG *p); -int ei_encode_longlong(char *buf, int *index, EI_LONGLONG p); -int ei_encode_ulonglong(char *buf, int *index, EI_ULONGLONG p); -int ei_x_encode_longlong(ei_x_buff* x, EI_LONGLONG n); -int ei_x_encode_ulonglong(ei_x_buff* x, EI_ULONGLONG n); - -#ifdef USE_EI_UNDOCUMENTED - -/* - * Decode a list of integers into an integer array (i.e. even if it is - * encoded as a string). count gets number of items in array. - * See "decode_intlist.c". - */ - -int ei_decode_intlist(const char *buf, int *index, long *a, int *count); - -/* - * FIXME: used in IC, document? - * bufp = address of pointer to dynamically allocated buffer - may be reallocated by - * this function if it is too small for the message - * bufsz = in/out value: in=user buffer size, out=new buffer size - * msglen = nr bytes in received message - */ -int ei_receive_encoded(int fd, char **bufp, int *bufsz, erlang_msg *to, - int *msglen); -int ei_receive_encoded_tmo(int fd, char **bufp, int *bufsz, erlang_msg *to, - int *msglen, unsigned ms); -int ei_send_encoded(int fd, const erlang_pid *to, char *msg, int msglen); -int ei_send_encoded_tmo(int fd, const erlang_pid *to, char *msg, int msglen, - unsigned ms); -int ei_send_reg_encoded(int fd, const erlang_pid *from, const char *to, - char *msg, int msglen); -int ei_send_reg_encoded_tmo(int fd, const erlang_pid *from, const char *to, - char *msg, int msglen, unsigned ms); - -/* - * Bacward compatibility with old undocumented but used interface... - * FIXME use wrapper function instead?! - */ -#define ei_send_encoded_timeout(Fd,To,Msg,MsgLen,Ms) \ - ei_send_encoded_tmo((Fd),(To),(Msg),(MsgLen),(Ms)) -#define ei_send_reg_encoded_timeout(Fd,From,To,Msg,MsgLen,Ms) \ - ei_send_reg_encoded_tmo((Fd),(From),(To),(Msg),(MsgLen),(Ms)) - - -/* FIXME: is this really the best way to handle bignums? */ -int ei_encode_big(char *buf, int *index, erlang_big* big); -int ei_x_encode_big(ei_x_buff* x, erlang_big* big); -int ei_decode_big(const char *buf, int *index, erlang_big* p); -int ei_big_comp(erlang_big *x, erlang_big *y); -int ei_big_to_double(erlang_big *b, double *resp); -int ei_small_to_big(int s, erlang_big *b); -erlang_big *ei_alloc_big(unsigned int arity); -void ei_free_big(erlang_big *b); - -#endif /* USE_EI_UNDOCUMENTED */ - -#ifdef __cplusplus -} -#endif - -#endif /* EI_H */ diff --git a/prebuilt/windows/headers/erlang/ei_connect.h b/prebuilt/windows/headers/erlang/ei_connect.h deleted file mode 100644 index 825fee0165..0000000000 --- a/prebuilt/windows/headers/erlang/ei_connect.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2003-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -#ifndef EI_CONNECT_H -#define EI_CONNECT_H - -/* Dummy for now.... */ - -#include "ei.h" - -#endif /* EI_CONNECT_H */ diff --git a/prebuilt/windows/headers/erlang/ei_global.h b/prebuilt/windows/headers/erlang/ei_global.h deleted file mode 100644 index b85a31217d..0000000000 --- a/prebuilt/windows/headers/erlang/ei_global.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 1998-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -#ifndef _EI_GLOBAL_H -#define _EI_GLOBAL_H -#include "ei.h" - -char **ei_global_names(ei_cnode *ec, int fd, int *count); -int ei_global_whereis(ei_cnode *ec, int fd, const char *name, erlang_pid* pid, char *node); -int ei_global_register(int fd, const char *name, erlang_pid *self); -int ei_global_unregister(ei_cnode *ec, int fd, const char *name); - -#endif /* _EI_GLOBAL_H */ diff --git a/prebuilt/windows/headers/erlang/eicode.h b/prebuilt/windows/headers/erlang/eicode.h deleted file mode 100644 index efba630d13..0000000000 --- a/prebuilt/windows/headers/erlang/eicode.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2003-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ -#ifndef EICODE_H -#define EICODE_H - -/* Dummy for now.... */ - -#include "ei.h" - -#endif /* EICODE_H */ diff --git a/prebuilt/windows/headers/erlang/erl_driver.h b/prebuilt/windows/headers/erlang/erl_driver.h deleted file mode 100644 index d5379a40d5..0000000000 --- a/prebuilt/windows/headers/erlang/erl_driver.h +++ /dev/null @@ -1,636 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 1999-2017. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* - * Include file for erlang driver writers. - */ - -#ifndef __ERL_DRIVER_H__ -#define __ERL_DRIVER_H__ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#define ERL_DRV_DEPRECATED_FUNC -#ifdef __GNUC__ -# if __GNUC__ >= 3 -# undef ERL_DRV_DEPRECATED_FUNC -# define ERL_DRV_DEPRECATED_FUNC __attribute__((deprecated)) -# endif -#endif - -#include "erl_drv_nif.h" - -#include - -#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_) -#ifndef STATIC_ERLANG_DRIVER - /* Windows dynamic drivers, everything is different... */ -#define ERL_DRIVER_TYPES_ONLY -#define WIN32_DYNAMIC_ERL_DRIVER -#endif -#endif - -#ifndef EXTERN -# ifdef __cplusplus -# define EXTERN extern "C" -# else -# define EXTERN extern -# endif -#endif - -#define ERL_DRV_READ ((int)ERL_NIF_SELECT_READ) -#define ERL_DRV_WRITE ((int)ERL_NIF_SELECT_WRITE) -#define ERL_DRV_USE ((int)ERL_NIF_SELECT_STOP) -#define ERL_DRV_USE_NO_CALLBACK (ERL_DRV_USE | (ERL_DRV_USE << 1)) - -/* Old deprecated */ -#define DO_READ ERL_DRV_READ -#define DO_WRITE ERL_DRV_WRITE - -#define ERL_DRV_EXTENDED_MARKER (0xfeeeeeed) -#define ERL_DRV_EXTENDED_MAJOR_VERSION 3 -#define ERL_DRV_EXTENDED_MINOR_VERSION 3 - -/* - * The emulator will refuse to load a driver with a major version - * lower than ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD. The load - * may however fail if user have not removed use of deprecated - * symbols. - * - * The ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD have to allow - * loading of drivers built at least two major OTP releases - * ago. - * - * Bump of major version to 3 happened in OTP 17. That is, in - * OTP 19 we can increase ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD - * to 3. - */ -#define ERL_DRV_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD 2 - -/* - * The emulator will refuse to load a driver with different major - * version than the one used by the emulator. - */ - - -/* Values for set_port_control_flags() */ - -#define PORT_CONTROL_FLAG_BINARY (1 << 0) -#define PORT_CONTROL_FLAG_HEAVY (1 << 1) - -/* Values for get_port_flags() */ - -#define PORT_FLAG_BINARY (1 << 0) -#define PORT_FLAG_LINE (1 << 1) - - -#define ERL_DRV_FLAG_USE_PORT_LOCKING (1 << 0) -#define ERL_DRV_FLAG_SOFT_BUSY (1 << 1) -#define ERL_DRV_FLAG_NO_BUSY_MSGQ (1 << 2) -#define ERL_DRV_FLAG_USE_INIT_ACK (1 << 3) - -/* - * Integer types - */ - -typedef ErlNapiUInt64 ErlDrvUInt64; -typedef ErlNapiSInt64 ErlDrvSInt64; -typedef ErlNapiUInt ErlDrvUInt; -typedef ErlNapiSInt ErlDrvSInt; -typedef ErlNapiUInt ErlDrvTermData; - -#if defined(__WIN32__) || defined(_WIN32) -typedef ErlDrvUInt ErlDrvSizeT; -typedef ErlDrvSInt ErlDrvSSizeT; -#else -typedef size_t ErlDrvSizeT; -typedef ssize_t ErlDrvSSizeT; -#endif - -/* - * A binary as seen in a driver. Note that a binary should never be - * altered by the driver when it has been sent to Erlang. - */ - -typedef struct erl_drv_binary { - ErlDrvSInt orig_size; /* total length of binary */ - char orig_bytes[1]; /* the data (char instead of byte!) */ -} ErlDrvBinary; - - -/* - * Note: These types are incomplete to catch type errors easier. - */ - -typedef struct _erl_drv_data* ErlDrvData; /* Data to be used by the driver itself. */ -#ifndef ERL_SYS_DRV -typedef struct _erl_drv_event* ErlDrvEvent; /* An event to be selected on. */ -#endif -typedef struct _erl_drv_port* ErlDrvPort; /* A port descriptor. */ -typedef struct _erl_drv_port* ErlDrvThreadData; /* Thread data. */ - -typedef struct { - unsigned long megasecs; - unsigned long secs; - unsigned long microsecs; -} ErlDrvNowData; - -typedef ErlDrvSInt64 ErlDrvTime; - -#define ERL_DRV_TIME_ERROR ((ErlDrvSInt64) ERTS_NAPI_TIME_ERROR__) - -typedef enum { - ERL_DRV_SEC = ERTS_NAPI_SEC__, - ERL_DRV_MSEC = ERTS_NAPI_MSEC__, - ERL_DRV_USEC = ERTS_NAPI_USEC__, - ERL_DRV_NSEC = ERTS_NAPI_NSEC__ -} ErlDrvTimeUnit; - -/* - * Error codes that can be return from driver. - */ - -/* - * Exception code from open_port/2 will be {'EXIT',{einval,Where}}. - */ -#define ERL_DRV_ERROR_GENERAL ((ErlDrvData) -1) - -/* - * Exception code from open_port/2 will be {'EXIT',{Errno,Where}}, - * where Errno is a textual representation of the errno variable - * (e.g. eacces if errno is EACCES). - */ -#define ERL_DRV_ERROR_ERRNO ((ErlDrvData) -2) - -/* - * Exception code from open_port/2 will be {'EXIT',{badarg,Where}}. - */ -#define ERL_DRV_ERROR_BADARG ((ErlDrvData) -3) - -typedef struct erl_io_vec { - int vsize; /* length of vectors */ - ErlDrvSizeT size; /* total size in bytes */ - SysIOVec* iov; - ErlDrvBinary** binv; -} ErlIOVec; - -/* - * erl driver thread types - */ - -typedef struct ErlDrvTid_ *ErlDrvTid; -typedef struct ErlDrvMutex_ ErlDrvMutex; -typedef struct ErlDrvCond_ ErlDrvCond; -typedef struct ErlDrvRWLock_ ErlDrvRWLock; -typedef int ErlDrvTSDKey; - -/* - * - */ -typedef struct erl_drv_port_data_lock * ErlDrvPDL; - -/* - * This structure defines a driver. - */ - -typedef struct erl_drv_entry { - int (*init)(void); /* called at system start up for statically - linked drivers, and after loading for - dynamically loaded drivers */ - -#ifndef ERL_SYS_DRV - ErlDrvData (*start)(ErlDrvPort port, char *command); - /* called when open_port/2 is invoked. - return value -1 means failure. */ -#else - ErlDrvData (*start)(ErlDrvPort port, char *command, SysDriverOpts* opts); - /* special options, only for system driver */ -#endif - void (*stop)(ErlDrvData drv_data); - /* called when port is closed, and when the - emulator is halted. */ - void (*output)(ErlDrvData drv_data, char *buf, ErlDrvSizeT len); - /* called when we have output from erlang to - the port */ - void (*ready_input)(ErlDrvData drv_data, ErlDrvEvent event); - /* called when we have input from one of - the driver's handles */ - void (*ready_output)(ErlDrvData drv_data, ErlDrvEvent event); - /* called when output is possible to one of - the driver's handles */ - char *driver_name; /* name supplied as command - in open_port XXX ? */ - void (*finish)(void); /* called before unloading the driver - - DYNAMIC DRIVERS ONLY */ - void *handle; /* Reserved -- Used by emulator internally */ - ErlDrvSSizeT (*control)(ErlDrvData drv_data, unsigned int command, - char *buf, ErlDrvSizeT len, char **rbuf, - ErlDrvSizeT rlen); /* "ioctl" for drivers - invoked by - port_control/3 */ - void (*timeout)(ErlDrvData drv_data); /* Handling of timeout in driver */ - void (*outputv)(ErlDrvData drv_data, ErlIOVec *ev); - /* called when we have output from erlang - to the port */ - void (*ready_async)(ErlDrvData drv_data, ErlDrvThreadData thread_data); - void (*flush)(ErlDrvData drv_data); - /* called when the port is about to be - closed, and there is data in the - driver queue that needs to be flushed - before 'stop' can be called */ - ErlDrvSSizeT (*call)(ErlDrvData drv_data, - unsigned int command, char *buf, ErlDrvSizeT len, - char **rbuf, ErlDrvSizeT rlen, - unsigned int *flags); /* Works mostly like 'control', - a synchronous - call into the driver. */ - void (*unused_event_callback)(void); - int extended_marker; /* ERL_DRV_EXTENDED_MARKER */ - int major_version; /* ERL_DRV_EXTENDED_MAJOR_VERSION */ - int minor_version; /* ERL_DRV_EXTENDED_MINOR_VERSION */ - int driver_flags; /* ERL_DRV_FLAGs */ - void *handle2; /* Reserved -- Used by emulator internally */ - void (*process_exit)(ErlDrvData drv_data, ErlDrvMonitor *monitor); - /* Called when a process monitor fires */ - void (*stop_select)(ErlDrvEvent event, void* reserved); - /* Called on behalf of driver_select when - it is safe to release 'event'. A typical - unix driver would call close(event) */ - void (*emergency_close)(ErlDrvData drv_data); - /* called when the port is closed abruptly. - specifically when erl_crash_dump is called. */ - /* When adding entries here, dont forget to pad in obsolete/driver.h */ -} ErlDrvEntry; - -/* - * This macro is used to name a dynamic driver's init function in - * a way that doesn't lead to conflicts. This is crucial when using - * operating systems that has one namespace for all symbols - * (e.g. VxWorks). Example: if you have an dynamic driver C source - * file named echo_drv.c, you use the macro like this: - * - * DRIVER_INIT(echo_drv) - * { - * .... - * } - * - * This function will be called by the Erlang I/O system when the driver is loaded. - * It must initialize a ErlDrvEntry structure and return a pointer to it. - */ - -#ifdef STATIC_ERLANG_DRIVER -# define ERLANG_DRIVER_NAME(NAME) NAME ## _driver_init -# define ERL_DRIVER_EXPORT -#else -# define ERLANG_DRIVER_NAME(NAME) driver_init -# if defined(__GNUC__) && __GNUC__ >= 4 -# define ERL_DRIVER_EXPORT __attribute__ ((visibility("default"))) -# elif defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) -# define ERL_DRIVER_EXPORT __global -# else -# define ERL_DRIVER_EXPORT -# endif -#endif - -#ifndef ERL_DRIVER_TYPES_ONLY - -#define DRIVER_INIT(DRIVER_NAME) \ - ERL_DRIVER_EXPORT ErlDrvEntry* ERLANG_DRIVER_NAME(DRIVER_NAME)(void); \ - ERL_DRIVER_EXPORT ErlDrvEntry* ERLANG_DRIVER_NAME(DRIVER_NAME)(void) - -#define ERL_DRV_BUSY_MSGQ_DISABLED (~((ErlDrvSizeT) 0)) -#define ERL_DRV_BUSY_MSGQ_READ_ONLY ((ErlDrvSizeT) 0) -#define ERL_DRV_BUSY_MSGQ_LIM_MAX (ERL_DRV_BUSY_MSGQ_DISABLED - 1) -#define ERL_DRV_BUSY_MSGQ_LIM_MIN ((ErlDrvSizeT) 1) - -/* - * These are the functions available for driver writers. - */ -EXTERN void erl_drv_busy_msgq_limits(ErlDrvPort port, - ErlDrvSizeT *low, - ErlDrvSizeT *high); - -EXTERN int driver_select(ErlDrvPort port, ErlDrvEvent event, int mode, int on); - -EXTERN int driver_output(ErlDrvPort port, char *buf, ErlDrvSizeT len); -EXTERN int driver_output2(ErlDrvPort port, char *hbuf, ErlDrvSizeT hlen, - char *buf, ErlDrvSizeT len); -EXTERN int driver_output_binary(ErlDrvPort port, char *hbuf, ErlDrvSizeT hlen, - ErlDrvBinary* bin, - ErlDrvSizeT offset, ErlDrvSizeT len); -EXTERN int driver_outputv(ErlDrvPort port, char* hbuf, ErlDrvSizeT hlen, - ErlIOVec *ev, ErlDrvSizeT skip); -EXTERN ErlDrvSizeT driver_vec_to_buf(ErlIOVec *ev, char *buf, ErlDrvSizeT len); -EXTERN int driver_set_timer(ErlDrvPort port, unsigned long time); -EXTERN int driver_cancel_timer(ErlDrvPort port); -EXTERN int driver_read_timer(ErlDrvPort port, unsigned long *time_left); - -/* - * Inform runtime system about lengthy work. - */ -EXTERN int erl_drv_consume_timeslice(ErlDrvPort port, int percent); - -/* - * Get plain-text error message from within a driver - */ -EXTERN char* erl_errno_id(int error); - -/* - * The following functions are used to initiate a close of a port - * from a driver. - */ -EXTERN int driver_failure_eof(ErlDrvPort port); -EXTERN int driver_failure_atom(ErlDrvPort port, char *string); -EXTERN int driver_failure_posix(ErlDrvPort port, int error); -EXTERN int driver_failure(ErlDrvPort port, int error); -EXTERN int driver_exit (ErlDrvPort port, int err); - - -/* - * Port Data Lock - */ - -EXTERN ErlDrvPDL driver_pdl_create(ErlDrvPort); -EXTERN void driver_pdl_lock(ErlDrvPDL); -EXTERN void driver_pdl_unlock(ErlDrvPDL); -EXTERN ErlDrvSInt driver_pdl_get_refc(ErlDrvPDL); -EXTERN ErlDrvSInt driver_pdl_inc_refc(ErlDrvPDL); -EXTERN ErlDrvSInt driver_pdl_dec_refc(ErlDrvPDL); - -/* - * Process monitors - */ -EXTERN int -driver_monitor_process(ErlDrvPort port, ErlDrvTermData process, - ErlDrvMonitor *monitor); -EXTERN int -driver_demonitor_process(ErlDrvPort port, const ErlDrvMonitor *monitor); -EXTERN ErlDrvTermData -driver_get_monitored_process(ErlDrvPort port, const ErlDrvMonitor *monitor); -EXTERN int driver_compare_monitors(const ErlDrvMonitor *monitor1, - const ErlDrvMonitor *monitor2); - -/* - * Port attributes - */ -EXTERN void set_busy_port(ErlDrvPort port, int on); -EXTERN void set_port_control_flags(ErlDrvPort port, int flags); - -EXTERN int get_port_flags(ErlDrvPort port); - - -/* Binary interface */ - -/* - * NOTE: DO NOT overwrite a binary with new data (if the data is delivered); - * since the binary is a shared object it MUST be written once. - */ - -EXTERN ErlDrvBinary* driver_alloc_binary(ErlDrvSizeT size); -EXTERN ErlDrvBinary* driver_realloc_binary(ErlDrvBinary *bin, ErlDrvSizeT size); -EXTERN void driver_free_binary(ErlDrvBinary *bin); - -/* Referenc count on driver binaries */ -EXTERN ErlDrvSInt driver_binary_get_refc(ErlDrvBinary *dbp); -EXTERN ErlDrvSInt driver_binary_inc_refc(ErlDrvBinary *dbp); -EXTERN ErlDrvSInt driver_binary_dec_refc(ErlDrvBinary *dbp); - -/* Allocation interface */ -EXTERN void *driver_alloc(ErlDrvSizeT size); -EXTERN void *driver_realloc(void *ptr, ErlDrvSizeT size); -EXTERN void driver_free(void *ptr); - -/* Queue interface */ -EXTERN int driver_enq(ErlDrvPort port, char* buf, ErlDrvSizeT len); -EXTERN int driver_pushq(ErlDrvPort port, char* buf, ErlDrvSizeT len); -EXTERN ErlDrvSizeT driver_deq(ErlDrvPort port, ErlDrvSizeT size); -EXTERN ErlDrvSizeT driver_sizeq(ErlDrvPort port); -EXTERN int driver_enq_bin(ErlDrvPort port, ErlDrvBinary *bin, ErlDrvSizeT offset, - ErlDrvSizeT len); -EXTERN int driver_pushq_bin(ErlDrvPort port, ErlDrvBinary *bin, ErlDrvSizeT offset, - ErlDrvSizeT len); - -EXTERN ErlDrvSizeT driver_peekqv(ErlDrvPort port, ErlIOVec *ev); -EXTERN SysIOVec* driver_peekq(ErlDrvPort port, int *vlen); -EXTERN int driver_enqv(ErlDrvPort port, ErlIOVec *ev, ErlDrvSizeT skip); -EXTERN int driver_pushqv(ErlDrvPort port, ErlIOVec *ev, ErlDrvSizeT skip); - -/* - * Add and remove driver entries. - */ -EXTERN void add_driver_entry(ErlDrvEntry *de); -EXTERN int remove_driver_entry(ErlDrvEntry *de); - -/* - * System info - */ -EXTERN void driver_system_info(ErlDrvSysInfo *sip, size_t si_size); - -/* - * erl driver thread functions. - */ - -EXTERN ErlDrvMutex *erl_drv_mutex_create(char *name); -EXTERN void erl_drv_mutex_destroy(ErlDrvMutex *mtx); -EXTERN int erl_drv_mutex_trylock(ErlDrvMutex *mtx); -EXTERN void erl_drv_mutex_lock(ErlDrvMutex *mtx); -EXTERN void erl_drv_mutex_unlock(ErlDrvMutex *mtx); -EXTERN ErlDrvCond *erl_drv_cond_create(char *name); -EXTERN void erl_drv_cond_destroy(ErlDrvCond *cnd); -EXTERN void erl_drv_cond_signal(ErlDrvCond *cnd); -EXTERN void erl_drv_cond_broadcast(ErlDrvCond *cnd); -EXTERN void erl_drv_cond_wait(ErlDrvCond *cnd, ErlDrvMutex *mtx); -EXTERN ErlDrvRWLock *erl_drv_rwlock_create(char *name); -EXTERN void erl_drv_rwlock_destroy(ErlDrvRWLock *rwlck); -EXTERN int erl_drv_rwlock_tryrlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_rlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_runlock(ErlDrvRWLock *rwlck); -EXTERN int erl_drv_rwlock_tryrwlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_rwlock(ErlDrvRWLock *rwlck); -EXTERN void erl_drv_rwlock_rwunlock(ErlDrvRWLock *rwlck); -EXTERN int erl_drv_tsd_key_create(char *name, ErlDrvTSDKey *key); -EXTERN void erl_drv_tsd_key_destroy(ErlDrvTSDKey key); -EXTERN void erl_drv_tsd_set(ErlDrvTSDKey key, void *data); -EXTERN void *erl_drv_tsd_get(ErlDrvTSDKey key); -EXTERN ErlDrvThreadOpts *erl_drv_thread_opts_create(char *name); -EXTERN void erl_drv_thread_opts_destroy(ErlDrvThreadOpts *opts); -EXTERN int erl_drv_thread_create(char *name, - ErlDrvTid *tid, - void * (*func)(void *), - void *args, - ErlDrvThreadOpts *opts); -EXTERN ErlDrvTid erl_drv_thread_self(void); -EXTERN int erl_drv_equal_tids(ErlDrvTid tid1, ErlDrvTid tid2); -EXTERN void erl_drv_thread_exit(void *resp); -EXTERN int erl_drv_thread_join(ErlDrvTid, void **respp); - -EXTERN char* erl_drv_mutex_name(ErlDrvMutex *mtx); -EXTERN char* erl_drv_cond_name(ErlDrvCond *cnd); -EXTERN char* erl_drv_rwlock_name(ErlDrvRWLock *rwlck); -EXTERN char* erl_drv_thread_name(ErlDrvTid tid); - -/* - * Misc. - */ -EXTERN int null_func(void); - -#endif /* !ERL_DRIVER_TYPES_ONLY */ - -/* Constants for return flags from the 'port_call' callback */ -#define DRIVER_CALL_KEEP_BUFFER 0x1 - -/* ErlDrvTerm is the type to use for casts when building - * terms that should be sent to connected process, - * for instance a tuple on the form {tcp, Port, [Tag|Binary]} - * - * ErlDrvTerm spec[] = { - * ERL_DRV_ATOM, driver_mk_atom("tcp"), - * ERL_DRV_PORT, driver_mk_port(drv->ix), - * ERL_DRV_INT, REPLY_TAG, - * ERL_DRV_BINARY, (ErlDrvTerm)bin, 50, 0, - * ERL_DRV_LIST, 2, - * ERL_DRV_TUPLE, 3, - * } - * - */ - -#define TERM_DATA(x) ((ErlDrvTermData) (x)) - -/* Possible types to send from driver Argument type */ -#define ERL_DRV_NIL ((ErlDrvTermData) 1) /* None */ -#define ERL_DRV_ATOM ((ErlDrvTermData) 2) /* driver_mk_atom(string) */ -#define ERL_DRV_INT ((ErlDrvTermData) 3) /* ErlDrvSInt */ -#define ERL_DRV_PORT ((ErlDrvTermData) 4) /* driver_mk_port(ix) */ -#define ERL_DRV_BINARY ((ErlDrvTermData) 5) /* ErlDrvBinary*, - * ErlDrvUInt size, - * ErlDrvUInt offs */ -#define ERL_DRV_STRING ((ErlDrvTermData) 6) /* char*, ErlDrvUInt */ -#define ERL_DRV_TUPLE ((ErlDrvTermData) 7) /* ErlDrvUInt */ -#define ERL_DRV_LIST ((ErlDrvTermData) 8) /* ErlDrvUInt */ -#define ERL_DRV_STRING_CONS ((ErlDrvTermData) 9) /* char*, ErlDrvUInt */ -#define ERL_DRV_PID ((ErlDrvTermData) 10) /* driver_connected,... */ - -#define ERL_DRV_FLOAT ((ErlDrvTermData) 11) /* double * */ -#define ERL_DRV_EXT2TERM ((ErlDrvTermData) 12) /* char *, ErlDrvUInt */ -#define ERL_DRV_UINT ((ErlDrvTermData) 13) /* ErlDrvUInt */ -#define ERL_DRV_BUF2BINARY ((ErlDrvTermData) 14) /* char *, ErlDrvUInt */ -#define ERL_DRV_INT64 ((ErlDrvTermData) 15) /* ErlDrvSInt64 * */ -#define ERL_DRV_UINT64 ((ErlDrvTermData) 16) /* ErlDrvUInt64 * */ - -#define ERL_DRV_MAP ((ErlDrvTermData) 17) /* ErlDrvUInt */ - -#ifndef ERL_DRIVER_TYPES_ONLY - -/* make terms for driver_output_term and driver_send_term */ -EXTERN ErlDrvTermData driver_mk_atom(char*); -EXTERN ErlDrvTermData driver_mk_port(ErlDrvPort); -EXTERN ErlDrvTermData driver_connected(ErlDrvPort); -EXTERN ErlDrvTermData driver_caller(ErlDrvPort); -extern const ErlDrvTermData driver_term_nil; -EXTERN ErlDrvTermData driver_mk_term_nil(void); -EXTERN ErlDrvPort driver_create_port(ErlDrvPort creator_port, - ErlDrvTermData connected, /* pid */ - char* name, /* driver name */ - ErlDrvData drv_data); - - -/* - * driver_output_term() is deprecated, and scheduled for removal in - * OTP-R17. Use erl_drv_output_term() instead. For more information - * see the erl_driver(3) documentation. - */ -EXTERN int driver_output_term(ErlDrvPort ix, - ErlDrvTermData* data, - int len) ERL_DRV_DEPRECATED_FUNC; -/* - * driver_send_term() is deprecated, and scheduled for removal in - * OTP-R17. Use erl_drv_send_term() instead. For more information - * see the erl_driver(3) documentation. - */ -EXTERN int driver_send_term(ErlDrvPort ix, - ErlDrvTermData to, - ErlDrvTermData* data, - int len) ERL_DRV_DEPRECATED_FUNC; - -/* output term data to the port owner */ -EXTERN int erl_drv_output_term(ErlDrvTermData port, - ErlDrvTermData* data, - int len); -/* output term data to a specific process */ -EXTERN int erl_drv_send_term(ErlDrvTermData port, - ErlDrvTermData to, - ErlDrvTermData* data, - int len); - -/* Async IO functions */ -EXTERN unsigned int driver_async_port_key(ErlDrvPort port); - -EXTERN long driver_async(ErlDrvPort ix, - unsigned int* key, - void (*async_invoke)(void*), - void* async_data, - void (*async_free)(void*)); - -/* Locks the driver in the machine "forever", there is - no unlock function. Note that this is almost never useful, as an open - port towards the driver locks it until the port is closed, why unexpected - unloading "never" happens. */ -EXTERN int driver_lock_driver(ErlDrvPort ix); - -/* Get the current 'now' timestamp (analogue to erlang:now()) */ -EXTERN int driver_get_now(ErlDrvNowData *now) ERL_DRV_DEPRECATED_FUNC; - -/* Erlang Monotonic Time */ -EXTERN ErlDrvTime erl_drv_monotonic_time(ErlDrvTimeUnit time_unit); -/* Time offset between Erlang Monotonic Time and Erlang System Time */ -EXTERN ErlDrvTime erl_drv_time_offset(ErlDrvTimeUnit time_unit); -/* Time unit conversion */ -EXTERN ErlDrvTime erl_drv_convert_time_unit(ErlDrvTime val, - ErlDrvTimeUnit from, - ErlDrvTimeUnit to); - -/* These were removed from the ANSI version, now they're back. */ - -EXTERN void *driver_dl_open(char *); -EXTERN void *driver_dl_sym(void *, char *); -EXTERN int driver_dl_close(void *); -EXTERN char *driver_dl_error(void); - -/* environment */ -EXTERN int erl_drv_putenv(const char *key, char *value); -EXTERN int erl_drv_getenv(const char *key, char *value, size_t *value_size); - -/* spawn start init ack */ -EXTERN void erl_drv_init_ack(ErlDrvPort ix, ErlDrvData res); - -/* set the pid seen in port_info */ -EXTERN void erl_drv_set_os_pid(ErlDrvPort ix, ErlDrvSInt pid); - -#endif /* !ERL_DRIVER_TYPES_ONLY */ - -#ifdef WIN32_DYNAMIC_ERL_DRIVER -# include "erl_win_dyn_driver.h" -#endif - -#endif - -/* also in global.h, but driver's can't include global.h */ -void dtrace_drvport_str(ErlDrvPort port, char *port_buf); diff --git a/prebuilt/windows/headers/erlang/erl_drv_nif.h b/prebuilt/windows/headers/erlang/erl_drv_nif.h deleted file mode 100644 index 53d1a3a531..0000000000 --- a/prebuilt/windows/headers/erlang/erl_drv_nif.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2010-2020. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* - * Common structures for both erl_driver.h and erl_nif.h - */ - -#ifndef __ERL_DRV_NIF_H__ -#define __ERL_DRV_NIF_H__ - -typedef struct { - int driver_major_version; - int driver_minor_version; - char *erts_version; - char *otp_release; - int thread_support; - int smp_support; - int async_threads; - int scheduler_threads; - int nif_major_version; - int nif_minor_version; - int dirty_scheduler_support; -} ErlDrvSysInfo; - -typedef struct { - int suggested_stack_size; -} ErlDrvThreadOpts; - - -typedef enum { - ERL_DIRTY_JOB_CPU_BOUND = 1, - ERL_DIRTY_JOB_IO_BOUND = 2 -} ErlDirtyJobFlags; - -/* Values for enif_select AND mode arg for driver_select() */ -enum ErlNifSelectFlags { - ERL_NIF_SELECT_READ = (1 << 0), - ERL_NIF_SELECT_WRITE = (1 << 1), - ERL_NIF_SELECT_STOP = (1 << 2), - ERL_NIF_SELECT_CANCEL = (1 << 3), - ERL_NIF_SELECT_CUSTOM_MSG= (1 << 4), - ERL_NIF_SELECT_ERROR = (1 << 5) -}; - -/* - * A driver monitor - */ -typedef struct { - unsigned char data[sizeof(void *)*4]; -} ErlDrvMonitor; - - -#ifdef SIZEOF_CHAR -# define SIZEOF_CHAR_SAVED__ SIZEOF_CHAR -# undef SIZEOF_CHAR -#endif -#ifdef SIZEOF_SHORT -# define SIZEOF_SHORT_SAVED__ SIZEOF_SHORT -# undef SIZEOF_SHORT -#endif -#ifdef SIZEOF_INT -# define SIZEOF_INT_SAVED__ SIZEOF_INT -# undef SIZEOF_INT -#endif -#ifdef SIZEOF_LONG -# define SIZEOF_LONG_SAVED__ SIZEOF_LONG -# undef SIZEOF_LONG -#endif -#ifdef SIZEOF_LONG_LONG -# define SIZEOF_LONG_LONG_SAVED__ SIZEOF_LONG_LONG -# undef SIZEOF_LONG_LONG -#endif -#include "erl_int_sizes_config.h" -#if defined(SIZEOF_CHAR_SAVED__) && SIZEOF_CHAR_SAVED__ != SIZEOF_CHAR -# error SIZEOF_CHAR mismatch -#endif -#if defined(SIZEOF_SHORT_SAVED__) && SIZEOF_SHORT_SAVED__ != SIZEOF_SHORT -# error SIZEOF_SHORT mismatch -#endif -#if defined(SIZEOF_INT_SAVED__) && SIZEOF_INT_SAVED__ != SIZEOF_INT -# error SIZEOF_INT mismatch -#endif -#if defined(SIZEOF_LONG_SAVED__) && SIZEOF_LONG_SAVED__ != SIZEOF_LONG -# error SIZEOF_LONG mismatch -#endif -#if defined(SIZEOF_LONG_LONG_SAVED__) && SIZEOF_LONG_LONG_SAVED__ != SIZEOF_LONG_LONG -# error SIZEOF_LONG_LONG mismatch -#endif - -#if !defined(__GNUC__) && (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -typedef unsigned __int64 ErlNapiUInt64; -typedef signed __int64 ErlNapiSInt64; -#define ERL_NAPI_SINT64_MAX__ 9223372036854775807i64 -#define ERL_NAPI_SINT64_MIN__ (-ERL_NAPI_SINT64_MAX__ - 1i64) -#elif SIZEOF_LONG == 8 -typedef unsigned long ErlNapiUInt64; -typedef signed long ErlNapiSInt64; -#define ERL_NAPI_SINT64_MAX__ 9223372036854775807L -#define ERL_NAPI_SINT64_MIN__ (-ERL_NAPI_SINT64_MAX__ - 1L) -#elif SIZEOF_LONG_LONG == 8 -typedef unsigned long long ErlNapiUInt64; -typedef signed long long ErlNapiSInt64; -#define ERL_NAPI_SINT64_MAX__ 9223372036854775807LL -#define ERL_NAPI_SINT64_MIN__ (-ERL_NAPI_SINT64_MAX__ - 1LL) -#else -# error No 64-bit integer type -#endif - -#if SIZEOF_VOID_P == 8 -typedef ErlNapiUInt64 ErlNapiUInt; -typedef ErlNapiSInt64 ErlNapiSInt; -#elif SIZEOF_VOID_P == 4 -# if SIZEOF_LONG == SIZEOF_VOID_P -typedef unsigned long ErlNapiUInt; -typedef signed long ErlNapiSInt; -# elif SIZEOF_INT == SIZEOF_VOID_P -typedef unsigned int ErlNapiUInt; -typedef signed int ErlNapiSInt; -# else -# error No 32-bit integer type -# endif -#else -# error Not support arch -#endif - -#define ERTS_NAPI_TIME_ERROR__ ERL_NAPI_SINT64_MIN__ - -#define ERTS_NAPI_SEC__ 0 -#define ERTS_NAPI_MSEC__ 1 -#define ERTS_NAPI_USEC__ 2 -#define ERTS_NAPI_NSEC__ 3 - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -/* - * This structure can be cast to a WSABUF structure. - */ -typedef struct _SysIOVec { - unsigned long iov_len; - char* iov_base; -} SysIOVec; -#else /* Unix */ -# include -# ifdef HAVE_SYS_UIO_H -# include -typedef struct iovec SysIOVec; -# else -typedef struct { - char* iov_base; - size_t iov_len; -} SysIOVec; -# endif -#endif - -#endif /* __ERL_DRV_NIF_H__ */ diff --git a/prebuilt/windows/headers/erlang/erl_fixed_size_int_types.h b/prebuilt/windows/headers/erlang/erl_fixed_size_int_types.h deleted file mode 100644 index 9f47bdd797..0000000000 --- a/prebuilt/windows/headers/erlang/erl_fixed_size_int_types.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2004-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - - -/* - * Description: - * - * Author: Rickard Green - */ - -#ifndef FIXED_SIZE_INT_TYPES_H__ -#define FIXED_SIZE_INT_TYPES_H__ - -#ifdef SIZEOF_CHAR -# define SIZEOF_CHAR_SAVED__ SIZEOF_CHAR -# undef SIZEOF_CHAR -#endif - -#ifdef SIZEOF_SHORT -# define SIZEOF_SHORT_SAVED__ SIZEOF_SHORT -# undef SIZEOF_SHORT -#endif - -#ifdef SIZEOF_INT -# define SIZEOF_INT_SAVED__ SIZEOF_INT -# undef SIZEOF_INT -#endif - -#ifdef SIZEOF_LONG -# define SIZEOF_LONG_SAVED__ SIZEOF_LONG -# undef SIZEOF_LONG -#endif - -#ifdef SIZEOF_LONG_LONG -# define SIZEOF_LONG_LONG_SAVED__ SIZEOF_LONG_LONG -# undef SIZEOF_LONG_LONG -#endif - -#include "erl_int_sizes_config.h" - -#ifdef SIZEOF_CHAR_SAVED__ -# if SIZEOF_CHAR != SIZEOF_CHAR_SAVED__ -# error char type size mismatch -# endif -# undef SIZEOF_CHAR_SAVED__ -#endif - -#ifdef SIZEOF_SHORT_SAVED__ -# if SIZEOF_SHORT != SIZEOF_SHORT_SAVED__ -# error short type size mismatch -# endif -# undef SIZEOF_SHORT_SAVED__ -#endif - -#ifdef SIZEOF_INT_SAVED__ -# if SIZEOF_INT != SIZEOF_INT_SAVED__ -# error int type size mismatch -# endif -# undef SIZEOF_INT_SAVED__ -#endif - -#ifdef SIZEOF_LONG_SAVED__ -# if SIZEOF_LONG != SIZEOF_LONG_SAVED__ -# error long type size mismatch -# endif -# undef SIZEOF_LONG_SAVED__ -#endif - -#ifdef SIZEOF_LONG_LONG_SAVED__ -# if SIZEOF_LONG_LONG != SIZEOF_LONG_LONG_SAVED__ -# error long long type size mismatch -# endif -# undef SIZEOF_LONG_LONG_SAVED__ -#endif - - -#if SIZEOF_LONG == 8 -#define HAVE_INT_64 1 -typedef unsigned long usgnd_int_64; -typedef signed long sgnd_int_64; -#define USGND_INT_64_FSTR "lu" -#define SGND_INT_64_FSTR "ld" -#elif SIZEOF_LONG_LONG == 8 -#define HAVE_INT_64 1 -typedef unsigned long long usgnd_int_64; -typedef signed long long sgnd_int_64; -#define USGND_INT_64_FSTR "llu" -#define SGND_INT_64_FSTR "lld" -#else -#define HAVE_INT_64 0 -#endif - -#if SIZEOF_LONG == 4 -typedef unsigned long usgnd_int_32; -typedef signed long sgnd_int_32; -#define USGND_INT_32_FSTR "lu" -#define SGND_INT_32_FSTR "ld" -#elif SIZEOF_INT == 4 -typedef unsigned int usgnd_int_32; -typedef signed int sgnd_int_32; -#define USGND_INT_32_FSTR "u" -#define SGND_INT_32_FSTR "d" -#else -#error Found no appropriate type to use for 'usgnd_int_32' and 'sgnd_int_32' -#endif - -#if SIZEOF_INT == 2 -typedef unsigned int usgnd_int_16; -typedef signed int sgnd_int_16; -#define USGND_INT_16_FSTR "u" -#define SI_16_FSTR "d" -#elif SIZEOF_SHORT == 2 -typedef unsigned short usgnd_int_16; -typedef signed short sgnd_int_16; -#define USGND_INT_16_FSTR "u" -#define SGND_INT_16_FSTR "d" -#else -#error Found no appropriate type to use for 'usgnd_int_16' and 'sgnd_int_16' -#endif - -#if SIZEOF_CHAR == 1 -typedef unsigned char usgnd_int_8; -typedef signed char sgnd_int_8; -#define USGND_INT_8_FSTR "u" -#define SGND_INT_8_FSTR "d" -#else -/* This should *never* happen! */ -#error Found no appropriate type to use for 'usgnd_int_8' and 'sgnd_int_8' -#endif - - -#if HAVE_INT_64 -typedef usgnd_int_64 usgnd_int_max; -typedef sgnd_int_64 sgnd_int_max; -#define USGND_INT_MAX_FSTR USGND_INT_64_FSTR -#define SGND_INT_MAX_FSTR SGND_INT_64_FSTR -#else -typedef usgnd_int_32 usgnd_int_max; -typedef sgnd_int_32 sgnd_int_max; -#define USGND_INT_MAX_FSTR USGND_INT_32_FSTR -#define SGND_INT_MAX_FSTR SGND_INT_32_FSTR -#endif - -#endif /* #ifndef FIXED_SIZE_INT_TYPES_H__ */ diff --git a/prebuilt/windows/headers/erlang/erl_int_sizes_config.h b/prebuilt/windows/headers/erlang/erl_int_sizes_config.h deleted file mode 100644 index 0c48772614..0000000000 --- a/prebuilt/windows/headers/erlang/erl_int_sizes_config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* include/win32/erl_int_sizes_config.h. Generated from erl_int_sizes_config.h.in by configure. */ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2004-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* The number of bytes in a char. */ -#define SIZEOF_CHAR 1 - -/* The number of bytes in a short. */ -#define SIZEOF_SHORT 2 - -/* The number of bytes in a int. */ -#define SIZEOF_INT 4 - -/* The number of bytes in a long. */ -#define SIZEOF_LONG 4 - -/* The number of bytes in a long long. */ -#define SIZEOF_LONG_LONG 8 - -/* The size of a pointer. */ -#define SIZEOF_VOID_P 8 diff --git a/prebuilt/windows/headers/erlang/erl_memory_trace_parser.h b/prebuilt/windows/headers/erlang/erl_memory_trace_parser.h deleted file mode 100644 index 3170ebc0d0..0000000000 --- a/prebuilt/windows/headers/erlang/erl_memory_trace_parser.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2004-2016. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - - -/* - * Description: - * - * Author: Rickard Green - */ - -#ifndef ERL_MTRACE_PARSER_H__ -#define ERL_MTRACE_PARSER_H__ - -#include -#include "erl_fixed_size_int_types.h" - -/* emtp_parse() return values */ -#define EMTP_MIN_ERROR EMTP_NO_TRACE_ERROR - -#define EMTP_NO_TRACE_ERROR (-11) -#define EMTP_HEADER_TAG_IN_BODY_ERROR (-10) -#define EMTP_BODY_TAG_IN_HEADER_ERROR ( -9) -#define EMTP_NOT_SUPPORTED_MTRACE_VERSION_ERROR ( -8) -#define EMTP_NOT_AN_ERL_MTRACE_ERROR ( -7) -#define EMTP_NO_MEMORY_ERROR ( -6) -#define EMTP_BAD_OP_SIZE_ERROR ( -5) -#define EMTP_NO_OPERATIONS_ERROR ( -4) -#define EMTP_NOT_SUPPORTED_64_BITS_TRACE_ERROR ( -3) -#define EMTP_PARSE_ERROR ( -2) -#define EMTP_UNKNOWN_TAG_ERROR ( -1) -#define EMTP_END_OF_TRACE ( 0) -#define EMTP_END_OF_TRACE_GARBAGE_FOLLOWS ( 1) -#define EMTP_ALL_OPS_FILLED ( 2) -#define EMTP_NEED_MORE_TRACE ( 3) -#define EMTP_HEADER_PARSED ( 4) - -/* Allocator flags */ -#define EMTP_ALLOCATOR_FLAG_HAVE_USED_CARRIERS_INFO (1 << 0) - -/* Block type flags */ -/* #define EMTP_BLOCK_TYPE_FLAG_X */ - - -typedef struct { - usgnd_int_32 major; - usgnd_int_32 minor; -} emtp_version; - -typedef struct { - emtp_version parser; - emtp_version trace; -} emtp_versions; - -typedef struct { - int valid; - usgnd_int_32 flags; - char * name; - struct { - usgnd_int_16 no_providers; - usgnd_int_16 * provider; - } carrier; -} emtp_allocator; - -typedef struct { - int valid; - usgnd_int_32 flags; - char * name; - sgnd_int_32 allocator; -} emtp_block_type; - -typedef struct { - emtp_versions version; - int bits; - char * nodename; - char * hostname; - char * pid; - struct { - usgnd_int_32 year; - usgnd_int_32 month; - usgnd_int_32 day; - usgnd_int_32 hour; - usgnd_int_32 minute; - usgnd_int_32 second; - usgnd_int_32 micro_second; - } start_time; - usgnd_int_16 segment_ix; - usgnd_int_16 max_allocator_ix; - emtp_allocator ** allocator; - usgnd_int_16 max_block_type_ix; - emtp_block_type ** block_type; - int have_carrier_info; - int have_segment_carrier_info; -} emtp_info; - -typedef struct emtp_state_ emtp_state; - -enum emtp_op_type_ { - EMTP_UNDEF = 0, - EMTP_ALLOC = 1, - EMTP_REALLOC = 2, - EMTP_FREE = 3, - EMTP_CARRIER_ALLOC = 4, - EMTP_CARRIER_REALLOC = 5, - EMTP_CARRIER_FREE = 6, - EMTP_STOP = 7, - EMTP_EXIT = 8 -}; - -typedef enum emtp_op_type_ emtp_op_type; - -typedef struct { - usgnd_int_16 type; - usgnd_int_16 carrier_type; - usgnd_int_max new_ptr; - usgnd_int_max prev_ptr; - usgnd_int_max new_size; -} emtp_block_op; - -typedef struct { - emtp_op_type type; - struct { - usgnd_int_32 secs; - usgnd_int_32 usecs; - } time; - union { - emtp_block_op block; - usgnd_int_32 exit_status; - } u; -} emtp_operation; - -const char *emtp_error_string(int); -int emtp_get_info(emtp_info *ip, size_t *isz, emtp_state *sp); -emtp_state *emtp_state_new(void * (*alloc)(size_t), - void * (*realloc)(void *, size_t), - void (*free)(void *)); -void emtp_state_destroy(emtp_state *sp); -int emtp_parse(emtp_state *sp, - usgnd_int_8 **tracepp, size_t *trace_lenp, - emtp_operation *op_start, size_t op_size, size_t *op_lenp); -#endif diff --git a/prebuilt/windows/headers/erlang/erl_nif.h b/prebuilt/windows/headers/erlang/erl_nif.h deleted file mode 100644 index e7858a5e3a..0000000000 --- a/prebuilt/windows/headers/erlang/erl_nif.h +++ /dev/null @@ -1,419 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2009-2021. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* Include file for writers of Native Implemented Functions. -*/ - -#ifndef __ERL_NIF_H__ -#define __ERL_NIF_H__ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "erl_drv_nif.h" - -/* Version history: -** 0.1: R13B03 -** 1.0: R13B04 -** 2.0: R14A -** 2.1: R14B02 "vm_variant" -** 2.2: R14B03 enif_is_exception -** 2.3: R15 enif_make_reverse_list, enif_is_number -** 2.4: R16 enif_consume_timeslice -** 2.5: First experimental maps API additions (libs of this version is not compatible with any other VM) -** 2.5: R17 Maps API additions -** 2.6: R17 with maps -** R17 dirty schedulers -** 2.7: 17.3 add enif_schedule_nif -** remove enif_schedule_dirty_nif, enif_schedule_dirty_nif_finalizer, enif_dirty_nif_finalizer -** add ErlNifEntry options -** add ErlNifFunc flags -** 2.8: 18.0 add enif_has_pending_exception -** 2.9: 18.2 enif_getenv -** 2.10: Time API -** 2.11: 19.0 enif_snprintf -** 2.12: 20.0 add enif_select, enif_open_resource_type_x -** 2.13: 20.1 add enif_ioq -** 2.14: 21.0 add enif_ioq_peek_head, enif_(mutex|cond|rwlock|thread)_name -** enif_vfprintf, enif_vsnprintf, enif_make_map_from_arrays -** 2.15: 22.0 ERL_NIF_SELECT_CANCEL, enif_select_(read|write) -** enif_term_type -** 2.16: 24.0 enif_init_resource_type, enif_dynamic_resource_call -*/ -#define ERL_NIF_MAJOR_VERSION 2 -#define ERL_NIF_MINOR_VERSION 16 - -/* - * WHEN CHANGING INTERFACE VERSION, also replace erts version below with - * a ticket number e.g. "erts-@OTP-12345@". The syntax is the same as for - * runtime dependencies so multiple tickets should be separated with ":", e.g. - * "erts-@OTP-12345:OTP-54321@". - * - * If you're not on the OTP team, you should use a placeholder like - * erts-@MyName@ instead. - */ -#define ERL_NIF_MIN_ERTS_VERSION "erts-12.0" - -/* - * The emulator will refuse to load a nif-lib with a major version - * lower than ERL_NIF_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD. The load - * may however fail if user have not removed use of deprecated - * symbols. - * - * The ERL_NIF_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD have to allow - * loading of nif-libs built at least two major OTP releases - * ago. - */ -#define ERL_NIF_MIN_REQUIRED_MAJOR_VERSION_ON_LOAD 2 - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef ErlNapiUInt64 ErlNifUInt64; -typedef ErlNapiSInt64 ErlNifSInt64; -typedef ErlNapiUInt ErlNifUInt; -typedef ErlNapiSInt ErlNifSInt; - -#define ERL_NIF_VM_VARIANT "beam.vanilla" -typedef ErlNifUInt ERL_NIF_TERM; - -typedef ERL_NIF_TERM ERL_NIF_UINT; - -typedef ErlNifSInt64 ErlNifTime; - -#define ERL_NIF_TIME_ERROR ((ErlNifSInt64) ERTS_NAPI_TIME_ERROR__) - -typedef enum { - ERL_NIF_SEC = ERTS_NAPI_SEC__, - ERL_NIF_MSEC = ERTS_NAPI_MSEC__, - ERL_NIF_USEC = ERTS_NAPI_USEC__, - ERL_NIF_NSEC = ERTS_NAPI_NSEC__ -} ErlNifTimeUnit; - -struct enif_environment_t; -typedef struct enif_environment_t ErlNifEnv; - -typedef struct enif_func_t -{ - const char* name; - unsigned arity; - ERL_NIF_TERM (*fptr)(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); - unsigned flags; -}ErlNifFunc; - - -typedef struct enif_entry_t -{ - int major; - int minor; - const char* name; - int num_of_funcs; - ErlNifFunc* funcs; - int (*load) (ErlNifEnv*, void** priv_data, ERL_NIF_TERM load_info); - int (*reload) (ErlNifEnv*, void** priv_data, ERL_NIF_TERM load_info); - int (*upgrade)(ErlNifEnv*, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info); - void (*unload) (ErlNifEnv*, void* priv_data); - - /* Added in 2.1 */ - const char* vm_variant; - - /* Added in 2.7 */ - unsigned options; /* Unused. Can be set to 0 or 1 (dirty sched config) */ - - /* Added in 2.12 */ - size_t sizeof_ErlNifResourceTypeInit; - - /* Added in 2.14 */ - const char* min_erts; -}ErlNifEntry; - - -typedef struct -{ - size_t size; - unsigned char* data; - - /* Internals (avert your eyes) */ - void* ref_bin; - /* for future additions to be ABI compatible (same struct size) */ - void* __spare__[2]; -}ErlNifBinary; - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -typedef void* ErlNifEvent; /* FIXME: Use 'HANDLE' somehow without breaking existing source */ -#else -typedef int ErlNifEvent; -#endif - -/* Return bits from enif_select: */ -#define ERL_NIF_SELECT_STOP_CALLED (1 << 0) -#define ERL_NIF_SELECT_STOP_SCHEDULED (1 << 1) -#define ERL_NIF_SELECT_INVALID_EVENT (1 << 2) -#define ERL_NIF_SELECT_FAILED (1 << 3) -#define ERL_NIF_SELECT_READ_CANCELLED (1 << 4) -#define ERL_NIF_SELECT_WRITE_CANCELLED (1 << 5) -#define ERL_NIF_SELECT_ERROR_CANCELLED (1 << 6) -#define ERL_NIF_SELECT_NOTSUP (1 << 7) - -typedef enum -{ - ERL_NIF_RT_CREATE = 1, - ERL_NIF_RT_TAKEOVER = 2 -}ErlNifResourceFlags; - -typedef enum -{ - ERL_NIF_LATIN1 = 1 -}ErlNifCharEncoding; - -typedef struct -{ - ERL_NIF_TERM pid; /* internal, may change */ -} ErlNifPid; - -typedef struct -{ - ERL_NIF_TERM port_id; /* internal, may change */ -}ErlNifPort; - -typedef ErlDrvMonitor ErlNifMonitor; - -typedef struct enif_resource_type_t ErlNifResourceType; -typedef void ErlNifResourceDtor(ErlNifEnv*, void*); -typedef void ErlNifResourceStop(ErlNifEnv*, void*, ErlNifEvent, int is_direct_call); -typedef void ErlNifResourceDown(ErlNifEnv*, void*, ErlNifPid*, ErlNifMonitor*); -typedef void ErlNifResourceDynCall(ErlNifEnv*, void* obj, void* call_data); - -typedef struct { - ErlNifResourceDtor* dtor; - ErlNifResourceStop* stop; /* at ERL_NIF_SELECT_STOP event */ - ErlNifResourceDown* down; /* enif_monitor_process */ - int members; - ErlNifResourceDynCall* dyncall; -} ErlNifResourceTypeInit; - -typedef ErlDrvSysInfo ErlNifSysInfo; - -typedef struct ErlDrvTid_ *ErlNifTid; -typedef struct ErlDrvMutex_ ErlNifMutex; -typedef struct ErlDrvCond_ ErlNifCond; -typedef struct ErlDrvRWLock_ ErlNifRWLock; -typedef int ErlNifTSDKey; - -typedef ErlDrvThreadOpts ErlNifThreadOpts; - -typedef enum -{ - ERL_NIF_DIRTY_JOB_CPU_BOUND = ERL_DIRTY_JOB_CPU_BOUND, - ERL_NIF_DIRTY_JOB_IO_BOUND = ERL_DIRTY_JOB_IO_BOUND -}ErlNifDirtyTaskFlags; - -typedef struct /* All fields all internal and may change */ -{ - ERL_NIF_TERM map; - ERL_NIF_UINT size; - ERL_NIF_UINT idx; - union { - struct { - ERL_NIF_TERM *ks; - ERL_NIF_TERM *vs; - }flat; - struct { - struct ErtsDynamicWStack_* wstack; - ERL_NIF_TERM* kv; - }hash; - }u; - void* __spare__[2]; /* for future additions to be ABI compatible (same struct size) */ -} ErlNifMapIterator; - -typedef enum { - ERL_NIF_MAP_ITERATOR_FIRST = 1, - ERL_NIF_MAP_ITERATOR_LAST = 2, - - /* deprecated synonyms (undocumented in 17 and 18-rc) */ - ERL_NIF_MAP_ITERATOR_HEAD = ERL_NIF_MAP_ITERATOR_FIRST, - ERL_NIF_MAP_ITERATOR_TAIL = ERL_NIF_MAP_ITERATOR_LAST -} ErlNifMapIteratorEntry; - -typedef enum { - ERL_NIF_UNIQUE_POSITIVE = (1 << 0), - ERL_NIF_UNIQUE_MONOTONIC = (1 << 1) -} ErlNifUniqueInteger; - -typedef enum { - ERL_NIF_BIN2TERM_SAFE = 0x20000000 -} ErlNifBinaryToTerm; - -typedef enum { - ERL_NIF_INTERNAL_HASH = 1, - ERL_NIF_PHASH2 = 2 -} ErlNifHash; - -#define ERL_NIF_IOVEC_SIZE 16 - -typedef struct erl_nif_io_vec { - int iovcnt; /* length of vectors */ - size_t size; /* total size in bytes */ - SysIOVec *iov; - - /* internals (avert your eyes) */ - void **ref_bins; /* Binary[] */ - int flags; - - /* Used when stack allocating the io vec */ - SysIOVec small_iov[ERL_NIF_IOVEC_SIZE]; - void *small_ref_bin[ERL_NIF_IOVEC_SIZE]; -} ErlNifIOVec; - -typedef struct erts_io_queue ErlNifIOQueue; - -typedef enum { - ERL_NIF_IOQ_NORMAL = 1 -} ErlNifIOQueueOpts; - -typedef enum { - ERL_NIF_TERM_TYPE_ATOM = 1, - ERL_NIF_TERM_TYPE_BITSTRING = 2, - ERL_NIF_TERM_TYPE_FLOAT = 3, - ERL_NIF_TERM_TYPE_FUN = 4, - ERL_NIF_TERM_TYPE_INTEGER = 5, - ERL_NIF_TERM_TYPE_LIST = 6, - ERL_NIF_TERM_TYPE_MAP = 7, - ERL_NIF_TERM_TYPE_PID = 8, - ERL_NIF_TERM_TYPE_PORT = 9, - ERL_NIF_TERM_TYPE_REFERENCE = 10, - ERL_NIF_TERM_TYPE_TUPLE = 11, - - /* This is a dummy value intended to coax the compiler into warning about - * unhandled values in a switch even if all the above values have been - * handled. We can add new entries at any time so the user must always - * have a default case. */ - ERL_NIF_TERM_TYPE__MISSING_DEFAULT_CASE__READ_THE_MANUAL = -1 -} ErlNifTermType; - -/* - * Return values from enif_thread_type(). Negative values - * reserved for specific types of non-scheduler threads. - * Positive values reserved for scheduler thread types. - */ - -#define ERL_NIF_THR_UNDEFINED 0 -#define ERL_NIF_THR_NORMAL_SCHEDULER 1 -#define ERL_NIF_THR_DIRTY_CPU_SCHEDULER 2 -#define ERL_NIF_THR_DIRTY_IO_SCHEDULER 3 - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -# define ERL_NIF_API_FUNC_DECL(RET_TYPE, NAME, ARGS) RET_TYPE (*NAME) ARGS -typedef struct { -# include "erl_nif_api_funcs.h" - void* erts_alc_test; -} TWinDynNifCallbacks; -extern TWinDynNifCallbacks WinDynNifCallbacks; -# undef ERL_NIF_API_FUNC_DECL -#endif - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) && !defined(STATIC_ERLANG_DRIVER) && !defined(STATIC_ERLANG_NIF) -# define ERL_NIF_API_FUNC_MACRO(NAME) (WinDynNifCallbacks.NAME) -# include "erl_nif_api_funcs.h" -/* note that we have to keep ERL_NIF_API_FUNC_MACRO defined */ - -#else /* non windows or included from emulator itself */ - -# define ERL_NIF_API_FUNC_DECL(RET_TYPE, NAME, ARGS) extern RET_TYPE NAME ARGS -# include "erl_nif_api_funcs.h" -# undef ERL_NIF_API_FUNC_DECL -#endif - -#if (defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) -# define ERL_NIF_INIT_GLOB TWinDynNifCallbacks WinDynNifCallbacks; -# define ERL_NIF_INIT_ARGS TWinDynNifCallbacks* callbacks -# define ERL_NIF_INIT_BODY memcpy(&WinDynNifCallbacks,callbacks,sizeof(TWinDynNifCallbacks)) -# define ERL_NIF_INIT_EXPORT __declspec(dllexport) -#else -# define ERL_NIF_INIT_GLOB -# define ERL_NIF_INIT_ARGS void -# define ERL_NIF_INIT_BODY -# if defined(__GNUC__) && __GNUC__ >= 4 -# define ERL_NIF_INIT_EXPORT __attribute__ ((visibility("default"))) -# elif defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) -# define ERL_NIF_INIT_EXPORT __global -# else -# define ERL_NIF_INIT_EXPORT -# endif -#endif - -#ifdef STATIC_ERLANG_NIF -# define ERL_NIF_INIT_DECL(MODNAME) ErlNifEntry* MODNAME ## _nif_init(ERL_NIF_INIT_ARGS) -#else -# define ERL_NIF_INIT_DECL(MODNAME) ERL_NIF_INIT_EXPORT ErlNifEntry* nif_init(ERL_NIF_INIT_ARGS) -#endif - -#ifdef __cplusplus -} -# define ERL_NIF_INIT_PROLOGUE extern "C" { -# define ERL_NIF_INIT_EPILOGUE } -#else -# define ERL_NIF_INIT_PROLOGUE -# define ERL_NIF_INIT_EPILOGUE -#endif - - -#define ERL_NIF_INIT(NAME, FUNCS, LOAD, RELOAD, UPGRADE, UNLOAD) \ -ERL_NIF_INIT_PROLOGUE \ -ERL_NIF_INIT_GLOB \ -ERL_NIF_INIT_DECL(NAME); \ -ERL_NIF_INIT_DECL(NAME) \ -{ \ - static ErlNifEntry entry = \ - { \ - ERL_NIF_MAJOR_VERSION, \ - ERL_NIF_MINOR_VERSION, \ - #NAME, \ - sizeof(FUNCS) / sizeof(*FUNCS), \ - FUNCS, \ - LOAD, RELOAD, UPGRADE, UNLOAD, \ - ERL_NIF_VM_VARIANT, \ - 1, \ - sizeof(ErlNifResourceTypeInit), \ - ERL_NIF_MIN_ERTS_VERSION \ - }; \ - ERL_NIF_INIT_BODY; \ - return &entry; \ -} \ -ERL_NIF_INIT_EPILOGUE - -#if defined(USE_DYNAMIC_TRACE) && (defined(USE_DTRACE) || defined(USE_SYSTEMTAP)) -#define HAVE_USE_DTRACE 1 -#endif - -#ifdef HAVE_USE_DTRACE -ERL_NIF_TERM erl_nif_user_trace_s1(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -ERL_NIF_TERM erl_nif_user_trace_i4s4(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -ERL_NIF_TERM erl_nif_user_trace_n(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -#endif - -#endif /* __ERL_NIF_H__ */ - diff --git a/prebuilt/windows/headers/erlang/erl_nif_api_funcs.h b/prebuilt/windows/headers/erlang/erl_nif_api_funcs.h deleted file mode 100644 index 27fa953099..0000000000 --- a/prebuilt/windows/headers/erlang/erl_nif_api_funcs.h +++ /dev/null @@ -1,660 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2009-2021. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -#if !defined(ERL_NIF_API_FUNC_DECL) && !defined(ERL_NIF_API_FUNC_MACRO) -# error This file should not be included directly -#endif - -/* -** WARNING: Add new ERL_NIF_API_FUNC_DECL entries at the bottom of the list -** to keep compatibility on Windows!!! -** -** And don't forget to increase ERL_NIF_MINOR_VERSION in erl_nif.h -** when adding functions to the API. -*/ -#ifdef ERL_NIF_API_FUNC_DECL -ERL_NIF_API_FUNC_DECL(void*,enif_priv_data,(ErlNifEnv*)); -ERL_NIF_API_FUNC_DECL(void*,enif_alloc,(size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_free,(void* ptr)); -ERL_NIF_API_FUNC_DECL(int,enif_is_atom,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_binary,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_ref,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_inspect_binary,(ErlNifEnv*, ERL_NIF_TERM bin_term, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(int,enif_alloc_binary,(size_t size, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(int,enif_realloc_binary,(ErlNifBinary* bin, size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_release_binary,(ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(int,enif_get_int,(ErlNifEnv*, ERL_NIF_TERM term, int* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_ulong,(ErlNifEnv*, ERL_NIF_TERM term, unsigned long* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_double,(ErlNifEnv*, ERL_NIF_TERM term, double* dp)); -ERL_NIF_API_FUNC_DECL(int,enif_get_list_cell,(ErlNifEnv* env, ERL_NIF_TERM term, ERL_NIF_TERM* head, ERL_NIF_TERM* tail)); -ERL_NIF_API_FUNC_DECL(int,enif_get_tuple,(ErlNifEnv* env, ERL_NIF_TERM tpl, int* arity, const ERL_NIF_TERM** array)); -ERL_NIF_API_FUNC_DECL(int,enif_is_identical,(ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)); -ERL_NIF_API_FUNC_DECL(int,enif_compare,(ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_binary,(ErlNifEnv* env, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_badarg,(ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_int,(ErlNifEnv* env, int i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ulong,(ErlNifEnv* env, unsigned long i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_double,(ErlNifEnv* env, double d)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_atom,(ErlNifEnv* env, const char* name)); -ERL_NIF_API_FUNC_DECL(int,enif_make_existing_atom,(ErlNifEnv* env, const char* name, ERL_NIF_TERM* atom, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_tuple,(ErlNifEnv* env, unsigned cnt, ...)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list,(ErlNifEnv* env, unsigned cnt, ...)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list_cell,(ErlNifEnv* env, ERL_NIF_TERM car, ERL_NIF_TERM cdr)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_string,(ErlNifEnv* env, const char* string, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ref,(ErlNifEnv* env)); - -ERL_NIF_API_FUNC_DECL(ErlNifMutex*,enif_mutex_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_mutex_destroy,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(int,enif_mutex_trylock,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(void,enif_mutex_lock,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(void,enif_mutex_unlock,(ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(ErlNifCond*,enif_cond_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_destroy,(ErlNifCond *cnd)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_signal,(ErlNifCond *cnd)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_broadcast,(ErlNifCond *cnd)); -ERL_NIF_API_FUNC_DECL(void,enif_cond_wait,(ErlNifCond *cnd, ErlNifMutex *mtx)); -ERL_NIF_API_FUNC_DECL(ErlNifRWLock*,enif_rwlock_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_destroy,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(int,enif_rwlock_tryrlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_runlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(int,enif_rwlock_tryrwlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rwlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rwunlock,(ErlNifRWLock *rwlck)); -ERL_NIF_API_FUNC_DECL(int,enif_tsd_key_create,(char *name, ErlNifTSDKey *key)); -ERL_NIF_API_FUNC_DECL(void,enif_tsd_key_destroy,(ErlNifTSDKey key)); -ERL_NIF_API_FUNC_DECL(void,enif_tsd_set,(ErlNifTSDKey key, void *data)); -ERL_NIF_API_FUNC_DECL(void*,enif_tsd_get,(ErlNifTSDKey key)); -ERL_NIF_API_FUNC_DECL(ErlNifThreadOpts*,enif_thread_opts_create,(char *name)); -ERL_NIF_API_FUNC_DECL(void,enif_thread_opts_destroy,(ErlNifThreadOpts *opts)); -ERL_NIF_API_FUNC_DECL(int,enif_thread_create,(char *name,ErlNifTid *tid,void * (*func)(void *),void *args,ErlNifThreadOpts *opts)); -ERL_NIF_API_FUNC_DECL(ErlNifTid,enif_thread_self,(void)); -ERL_NIF_API_FUNC_DECL(int,enif_equal_tids,(ErlNifTid tid1, ErlNifTid tid2)); -ERL_NIF_API_FUNC_DECL(void,enif_thread_exit,(void *resp)); -ERL_NIF_API_FUNC_DECL(int,enif_thread_join,(ErlNifTid, void **respp)); - -ERL_NIF_API_FUNC_DECL(void*,enif_realloc,(void* ptr, size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_system_info,(ErlNifSysInfo *sip, size_t si_size)); -ERL_NIF_API_FUNC_DECL(int,enif_fprintf,(FILE* filep, const char *format, ...)); -ERL_NIF_API_FUNC_DECL(int,enif_inspect_iolist_as_binary,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifBinary* bin)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_sub_binary,(ErlNifEnv*, ERL_NIF_TERM bin_term, size_t pos, size_t size)); -ERL_NIF_API_FUNC_DECL(int,enif_get_string,(ErlNifEnv*, ERL_NIF_TERM list, char* buf, unsigned len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(int,enif_get_atom,(ErlNifEnv*, ERL_NIF_TERM atom, char* buf, unsigned len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(int,enif_is_fun,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_pid,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_port,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_get_uint,(ErlNifEnv*, ERL_NIF_TERM term, unsigned* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_long,(ErlNifEnv*, ERL_NIF_TERM term, long* ip)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_uint,(ErlNifEnv*, unsigned i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_long,(ErlNifEnv*, long i)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_tuple_from_array,(ErlNifEnv*, const ERL_NIF_TERM arr[], unsigned cnt)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list_from_array,(ErlNifEnv*, const ERL_NIF_TERM arr[], unsigned cnt)); -ERL_NIF_API_FUNC_DECL(int,enif_is_empty_list,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(ErlNifResourceType*,enif_open_resource_type,(ErlNifEnv*, const char* module_str, const char* name_str, void (*dtor)(ErlNifEnv*,void *), ErlNifResourceFlags flags, ErlNifResourceFlags* tried)); -ERL_NIF_API_FUNC_DECL(void*,enif_alloc_resource,(ErlNifResourceType* type, size_t size)); -ERL_NIF_API_FUNC_DECL(void,enif_release_resource,(void* obj)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_resource,(ErlNifEnv*, void* obj)); -ERL_NIF_API_FUNC_DECL(int,enif_get_resource,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifResourceType* type, void** objp)); -ERL_NIF_API_FUNC_DECL(size_t,enif_sizeof_resource,(void* obj)); -ERL_NIF_API_FUNC_DECL(unsigned char*,enif_make_new_binary,(ErlNifEnv*,size_t size,ERL_NIF_TERM* termp)); -ERL_NIF_API_FUNC_DECL(int,enif_is_list,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_is_tuple,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_get_atom_length,(ErlNifEnv*, ERL_NIF_TERM atom, unsigned* len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(int,enif_get_list_length,(ErlNifEnv* env, ERL_NIF_TERM term, unsigned* len)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_make_atom_len,(ErlNifEnv* env, const char* name, size_t len)); -ERL_NIF_API_FUNC_DECL(int, enif_make_existing_atom_len,(ErlNifEnv* env, const char* name, size_t len, ERL_NIF_TERM* atom, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_string_len,(ErlNifEnv* env, const char* string, size_t len, ErlNifCharEncoding)); -ERL_NIF_API_FUNC_DECL(ErlNifEnv*,enif_alloc_env,(void)); -ERL_NIF_API_FUNC_DECL(void,enif_free_env,(ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(void,enif_clear_env,(ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(int,enif_send,(ErlNifEnv* env, const ErlNifPid* to_pid, ErlNifEnv* msg_env, ERL_NIF_TERM msg)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_copy,(ErlNifEnv* dst_env, ERL_NIF_TERM src_term)); -ERL_NIF_API_FUNC_DECL(ErlNifPid*,enif_self,(ErlNifEnv* caller_env, ErlNifPid* pid)); -ERL_NIF_API_FUNC_DECL(int,enif_get_local_pid,(ErlNifEnv* env, ERL_NIF_TERM, ErlNifPid* pid)); -ERL_NIF_API_FUNC_DECL(void,enif_keep_resource,(void* obj)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_resource_binary,(ErlNifEnv*,void* obj,const void* data, size_t size)); -#if SIZEOF_LONG != 8 -ERL_NIF_API_FUNC_DECL(int,enif_get_int64,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifSInt64* ip)); -ERL_NIF_API_FUNC_DECL(int,enif_get_uint64,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifUInt64* ip)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_int64,(ErlNifEnv*, ErlNifSInt64)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_uint64,(ErlNifEnv*, ErlNifUInt64)); -#endif -ERL_NIF_API_FUNC_DECL(int,enif_is_exception,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int,enif_make_reverse_list,(ErlNifEnv*, ERL_NIF_TERM term, ERL_NIF_TERM *list)); -ERL_NIF_API_FUNC_DECL(int,enif_is_number,(ErlNifEnv*, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(void*,enif_dlopen,(const char* lib, void (*err_handler)(void*,const char*), void* err_arg)); -ERL_NIF_API_FUNC_DECL(void*,enif_dlsym,(void* handle, const char* symbol, void (*err_handler)(void*,const char*), void* err_arg)); -ERL_NIF_API_FUNC_DECL(int,enif_consume_timeslice,(ErlNifEnv*, int percent)); -ERL_NIF_API_FUNC_DECL(int, enif_is_map, (ErlNifEnv* env, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(int, enif_get_map_size, (ErlNifEnv* env, ERL_NIF_TERM term, size_t *size)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_make_new_map, (ErlNifEnv* env)); -ERL_NIF_API_FUNC_DECL(int, enif_make_map_put, (ErlNifEnv* env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM value, ERL_NIF_TERM* map_out)); -ERL_NIF_API_FUNC_DECL(int, enif_get_map_value, (ErlNifEnv* env, ERL_NIF_TERM map, ERL_NIF_TERM key, ERL_NIF_TERM* value)); -ERL_NIF_API_FUNC_DECL(int, enif_make_map_update, (ErlNifEnv* env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM value, ERL_NIF_TERM* map_out)); -ERL_NIF_API_FUNC_DECL(int, enif_make_map_remove, (ErlNifEnv* env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM* map_out)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_create, (ErlNifEnv *env, ERL_NIF_TERM map, ErlNifMapIterator *iter, ErlNifMapIteratorEntry entry)); -ERL_NIF_API_FUNC_DECL(void, enif_map_iterator_destroy, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_is_head, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_is_tail, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_next, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_prev, (ErlNifEnv *env, ErlNifMapIterator *iter)); -ERL_NIF_API_FUNC_DECL(int, enif_map_iterator_get_pair, (ErlNifEnv *env, ErlNifMapIterator *iter, ERL_NIF_TERM *key, ERL_NIF_TERM *value)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_schedule_nif,(ErlNifEnv*,const char*,int,ERL_NIF_TERM (*)(ErlNifEnv*,int,const ERL_NIF_TERM[]),int,const ERL_NIF_TERM[])); -ERL_NIF_API_FUNC_DECL(int, enif_has_pending_exception, (ErlNifEnv *env, ERL_NIF_TERM* reason)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_raise_exception, (ErlNifEnv *env, ERL_NIF_TERM reason)); -ERL_NIF_API_FUNC_DECL(int,enif_getenv,(const char* key, char* value, size_t* value_size)); -ERL_NIF_API_FUNC_DECL(ErlNifTime, enif_monotonic_time, (ErlNifTimeUnit)); -ERL_NIF_API_FUNC_DECL(ErlNifTime, enif_time_offset, (ErlNifTimeUnit)); -ERL_NIF_API_FUNC_DECL(ErlNifTime, enif_convert_time_unit, (ErlNifTime, ErlNifTimeUnit, ErlNifTimeUnit)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_now_time, (ErlNifEnv *env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_cpu_time, (ErlNifEnv *env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_make_unique_integer, (ErlNifEnv *env, ErlNifUniqueInteger properties)); -ERL_NIF_API_FUNC_DECL(int, enif_is_current_process_alive, (ErlNifEnv *env)); -ERL_NIF_API_FUNC_DECL(int, enif_is_process_alive, (ErlNifEnv *env, ErlNifPid *pid)); -ERL_NIF_API_FUNC_DECL(int, enif_is_port_alive, (ErlNifEnv *env, ErlNifPort *port_id)); -ERL_NIF_API_FUNC_DECL(int, enif_get_local_port, (ErlNifEnv* env, ERL_NIF_TERM, ErlNifPort* port_id)); -ERL_NIF_API_FUNC_DECL(int, enif_term_to_binary, (ErlNifEnv *env, ERL_NIF_TERM term, ErlNifBinary *bin)); -ERL_NIF_API_FUNC_DECL(size_t, enif_binary_to_term, (ErlNifEnv *env, const unsigned char* data, size_t sz, ERL_NIF_TERM *term, unsigned int opts)); -ERL_NIF_API_FUNC_DECL(int, enif_port_command, (ErlNifEnv *env, const ErlNifPort* to_port, ErlNifEnv *msg_env, ERL_NIF_TERM msg)); -ERL_NIF_API_FUNC_DECL(int,enif_thread_type,(void)); -ERL_NIF_API_FUNC_DECL(int,enif_snprintf,(char * buffer, size_t size, const char *format, ...)); -ERL_NIF_API_FUNC_DECL(int,enif_select,(ErlNifEnv* env, ErlNifEvent e, enum ErlNifSelectFlags flags, void* obj, const ErlNifPid* pid, ERL_NIF_TERM ref)); -ERL_NIF_API_FUNC_DECL(ErlNifResourceType*,enif_open_resource_type_x,(ErlNifEnv*, const char* name_str, const ErlNifResourceTypeInit*, ErlNifResourceFlags flags, ErlNifResourceFlags* tried)); -ERL_NIF_API_FUNC_DECL(int, enif_monitor_process,(ErlNifEnv*,void* obj,const ErlNifPid*,ErlNifMonitor *monitor)); -ERL_NIF_API_FUNC_DECL(int, enif_demonitor_process,(ErlNifEnv*,void* obj,const ErlNifMonitor *monitor)); -ERL_NIF_API_FUNC_DECL(int, enif_compare_monitors,(const ErlNifMonitor*,const ErlNifMonitor*)); -ERL_NIF_API_FUNC_DECL(ErlNifUInt64,enif_hash,(ErlNifHash type, ERL_NIF_TERM term, ErlNifUInt64 salt)); -ERL_NIF_API_FUNC_DECL(int, enif_whereis_pid, (ErlNifEnv *env, ERL_NIF_TERM name, ErlNifPid *pid)); -ERL_NIF_API_FUNC_DECL(int, enif_whereis_port, (ErlNifEnv *env, ERL_NIF_TERM name, ErlNifPort *port)); - -ERL_NIF_API_FUNC_DECL(ErlNifIOQueue *,enif_ioq_create,(ErlNifIOQueueOpts opts)); -ERL_NIF_API_FUNC_DECL(void,enif_ioq_destroy,(ErlNifIOQueue *q)); - -ERL_NIF_API_FUNC_DECL(int,enif_ioq_enq_binary,(ErlNifIOQueue *q, ErlNifBinary *bin, size_t skip)); -ERL_NIF_API_FUNC_DECL(int,enif_ioq_enqv,(ErlNifIOQueue *q, ErlNifIOVec *iov, size_t skip)); - -ERL_NIF_API_FUNC_DECL(size_t,enif_ioq_size,(ErlNifIOQueue *q)); -ERL_NIF_API_FUNC_DECL(int,enif_ioq_deq,(ErlNifIOQueue *q, size_t count, size_t *size)); - -ERL_NIF_API_FUNC_DECL(SysIOVec*,enif_ioq_peek,(ErlNifIOQueue *q, int *iovlen)); - -ERL_NIF_API_FUNC_DECL(int,enif_inspect_iovec,(ErlNifEnv *env, size_t max_length, ERL_NIF_TERM iovec_term, ERL_NIF_TERM *tail, ErlNifIOVec **iovec)); -ERL_NIF_API_FUNC_DECL(void,enif_free_iovec,(ErlNifIOVec *iov)); - -ERL_NIF_API_FUNC_DECL(int,enif_ioq_peek_head,(ErlNifEnv *env, ErlNifIOQueue *q, size_t *size, ERL_NIF_TERM *head)); - -ERL_NIF_API_FUNC_DECL(char*,enif_mutex_name,(ErlNifMutex*)); -ERL_NIF_API_FUNC_DECL(char*,enif_cond_name,(ErlNifCond*)); -ERL_NIF_API_FUNC_DECL(char*,enif_rwlock_name,(ErlNifRWLock*)); -ERL_NIF_API_FUNC_DECL(char*,enif_thread_name,(ErlNifTid)); - -ERL_NIF_API_FUNC_DECL(int,enif_vfprintf,(FILE*, const char *fmt, va_list)); -ERL_NIF_API_FUNC_DECL(int,enif_vsnprintf,(char*, size_t, const char *fmt, va_list)); - -ERL_NIF_API_FUNC_DECL(int,enif_make_map_from_arrays,(ErlNifEnv *env, ERL_NIF_TERM keys[], ERL_NIF_TERM values[], size_t cnt, ERL_NIF_TERM *map_out)); - -ERL_NIF_API_FUNC_DECL(int,enif_select_x,(ErlNifEnv* env, ErlNifEvent e, enum ErlNifSelectFlags flags, void* obj, const ErlNifPid* pid, ERL_NIF_TERM msg, ErlNifEnv* msg_env)); -ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_monitor_term,(ErlNifEnv* env, const ErlNifMonitor*)); -ERL_NIF_API_FUNC_DECL(void,enif_set_pid_undefined,(ErlNifPid* pid)); -ERL_NIF_API_FUNC_DECL(int,enif_is_pid_undefined,(const ErlNifPid* pid)); - -ERL_NIF_API_FUNC_DECL(ErlNifTermType,enif_term_type,(ErlNifEnv* env, ERL_NIF_TERM term)); -ERL_NIF_API_FUNC_DECL(ErlNifResourceType*,enif_init_resource_type,(ErlNifEnv*, const char* name_str, const ErlNifResourceTypeInit*, ErlNifResourceFlags flags, ErlNifResourceFlags* tried)); -ERL_NIF_API_FUNC_DECL(int,enif_dynamic_resource_call,(ErlNifEnv*, ERL_NIF_TERM mod, ERL_NIF_TERM name, ERL_NIF_TERM rsrc, void* call_data)); - -/* -** ADD NEW ENTRIES HERE (before this comment) !!! -*/ -#endif /* ERL_NIF_API_FUNC_DECL */ - -/* -** Please keep the ERL_NIF_API_FUNC_MACRO list below in the same order -** as the ERL_NIF_API_FUNC_DECL list above -*/ -#ifdef ERL_NIF_API_FUNC_MACRO -# define enif_priv_data ERL_NIF_API_FUNC_MACRO(enif_priv_data) -# define enif_alloc ERL_NIF_API_FUNC_MACRO(enif_alloc) -# define enif_free ERL_NIF_API_FUNC_MACRO(enif_free) -# define enif_is_atom ERL_NIF_API_FUNC_MACRO(enif_is_atom) -# define enif_is_binary ERL_NIF_API_FUNC_MACRO(enif_is_binary) -# define enif_is_ref ERL_NIF_API_FUNC_MACRO(enif_is_ref) -# define enif_inspect_binary ERL_NIF_API_FUNC_MACRO(enif_inspect_binary) -# define enif_alloc_binary ERL_NIF_API_FUNC_MACRO(enif_alloc_binary) -# define enif_realloc_binary ERL_NIF_API_FUNC_MACRO(enif_realloc_binary) -# define enif_release_binary ERL_NIF_API_FUNC_MACRO(enif_release_binary) -# define enif_get_int ERL_NIF_API_FUNC_MACRO(enif_get_int) -# define enif_get_ulong ERL_NIF_API_FUNC_MACRO(enif_get_ulong) -# define enif_get_double ERL_NIF_API_FUNC_MACRO(enif_get_double) -# define enif_get_tuple ERL_NIF_API_FUNC_MACRO(enif_get_tuple) -# define enif_get_list_cell ERL_NIF_API_FUNC_MACRO(enif_get_list_cell) -# define enif_is_identical ERL_NIF_API_FUNC_MACRO(enif_is_identical) -# define enif_compare ERL_NIF_API_FUNC_MACRO(enif_compare) - -# define enif_make_binary ERL_NIF_API_FUNC_MACRO(enif_make_binary) -# define enif_make_badarg ERL_NIF_API_FUNC_MACRO(enif_make_badarg) -# define enif_make_int ERL_NIF_API_FUNC_MACRO(enif_make_int) -# define enif_make_ulong ERL_NIF_API_FUNC_MACRO(enif_make_ulong) -# define enif_make_double ERL_NIF_API_FUNC_MACRO(enif_make_double) -# define enif_make_atom ERL_NIF_API_FUNC_MACRO(enif_make_atom) -# define enif_make_existing_atom ERL_NIF_API_FUNC_MACRO(enif_make_existing_atom) -# define enif_make_tuple ERL_NIF_API_FUNC_MACRO(enif_make_tuple) -# define enif_make_list ERL_NIF_API_FUNC_MACRO(enif_make_list) -# define enif_make_list_cell ERL_NIF_API_FUNC_MACRO(enif_make_list_cell) -# define enif_make_string ERL_NIF_API_FUNC_MACRO(enif_make_string) -# define enif_make_ref ERL_NIF_API_FUNC_MACRO(enif_make_ref) - -# define enif_mutex_create ERL_NIF_API_FUNC_MACRO(enif_mutex_create) -# define enif_mutex_destroy ERL_NIF_API_FUNC_MACRO(enif_mutex_destroy) -# define enif_mutex_trylock ERL_NIF_API_FUNC_MACRO(enif_mutex_trylock) -# define enif_mutex_lock ERL_NIF_API_FUNC_MACRO(enif_mutex_lock) -# define enif_mutex_unlock ERL_NIF_API_FUNC_MACRO(enif_mutex_unlock) -# define enif_cond_create ERL_NIF_API_FUNC_MACRO(enif_cond_create) -# define enif_cond_destroy ERL_NIF_API_FUNC_MACRO(enif_cond_destroy) -# define enif_cond_signal ERL_NIF_API_FUNC_MACRO(enif_cond_signal) -# define enif_cond_broadcast ERL_NIF_API_FUNC_MACRO(enif_cond_broadcast) -# define enif_cond_wait ERL_NIF_API_FUNC_MACRO(enif_cond_wait) -# define enif_rwlock_create ERL_NIF_API_FUNC_MACRO(enif_rwlock_create) -# define enif_rwlock_destroy ERL_NIF_API_FUNC_MACRO(enif_rwlock_destroy) -# define enif_rwlock_tryrlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_tryrlock) -# define enif_rwlock_rlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rlock) -# define enif_rwlock_runlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_runlock) -# define enif_rwlock_tryrwlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_tryrwlock) -# define enif_rwlock_rwlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rwlock) -# define enif_rwlock_rwunlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rwunlock) -# define enif_tsd_key_create ERL_NIF_API_FUNC_MACRO(enif_tsd_key_create) -# define enif_tsd_key_destroy ERL_NIF_API_FUNC_MACRO(enif_tsd_key_destroy) -# define enif_tsd_set ERL_NIF_API_FUNC_MACRO(enif_tsd_set) -# define enif_tsd_get ERL_NIF_API_FUNC_MACRO(enif_tsd_get) -# define enif_thread_opts_create ERL_NIF_API_FUNC_MACRO(enif_thread_opts_create) -# define enif_thread_opts_destroy ERL_NIF_API_FUNC_MACRO(enif_thread_opts_destroy) -# define enif_thread_create ERL_NIF_API_FUNC_MACRO(enif_thread_create) -# define enif_thread_self ERL_NIF_API_FUNC_MACRO(enif_thread_self) -# define enif_equal_tids ERL_NIF_API_FUNC_MACRO(enif_equal_tids) -# define enif_thread_exit ERL_NIF_API_FUNC_MACRO(enif_thread_exit) -# define enif_thread_join ERL_NIF_API_FUNC_MACRO(enif_thread_join) - -# define enif_realloc ERL_NIF_API_FUNC_MACRO(enif_realloc) -# define enif_system_info ERL_NIF_API_FUNC_MACRO(enif_system_info) -# define enif_fprintf ERL_NIF_API_FUNC_MACRO(enif_fprintf) -# define enif_inspect_iolist_as_binary ERL_NIF_API_FUNC_MACRO(enif_inspect_iolist_as_binary) -# define enif_make_sub_binary ERL_NIF_API_FUNC_MACRO(enif_make_sub_binary) -# define enif_get_string ERL_NIF_API_FUNC_MACRO(enif_get_string) -# define enif_get_atom ERL_NIF_API_FUNC_MACRO(enif_get_atom) -# define enif_is_fun ERL_NIF_API_FUNC_MACRO(enif_is_fun) -# define enif_is_pid ERL_NIF_API_FUNC_MACRO(enif_is_pid) -# define enif_is_port ERL_NIF_API_FUNC_MACRO(enif_is_port) -# define enif_get_uint ERL_NIF_API_FUNC_MACRO(enif_get_uint) -# define enif_get_long ERL_NIF_API_FUNC_MACRO(enif_get_long) -# define enif_make_uint ERL_NIF_API_FUNC_MACRO(enif_make_uint) -# define enif_make_long ERL_NIF_API_FUNC_MACRO(enif_make_long) -# define enif_make_tuple_from_array ERL_NIF_API_FUNC_MACRO(enif_make_tuple_from_array) -# define enif_make_list_from_array ERL_NIF_API_FUNC_MACRO(enif_make_list_from_array) -# define enif_is_empty_list ERL_NIF_API_FUNC_MACRO(enif_is_empty_list) -# define enif_open_resource_type ERL_NIF_API_FUNC_MACRO(enif_open_resource_type) -# define enif_alloc_resource ERL_NIF_API_FUNC_MACRO(enif_alloc_resource) -# define enif_release_resource ERL_NIF_API_FUNC_MACRO(enif_release_resource) -# define enif_make_resource ERL_NIF_API_FUNC_MACRO(enif_make_resource) -# define enif_get_resource ERL_NIF_API_FUNC_MACRO(enif_get_resource) -# define enif_sizeof_resource ERL_NIF_API_FUNC_MACRO(enif_sizeof_resource) -# define enif_make_new_binary ERL_NIF_API_FUNC_MACRO(enif_make_new_binary) -# define enif_is_list ERL_NIF_API_FUNC_MACRO(enif_is_list) -# define enif_is_tuple ERL_NIF_API_FUNC_MACRO(enif_is_tuple) -# define enif_get_atom_length ERL_NIF_API_FUNC_MACRO(enif_get_atom_length) -# define enif_get_list_length ERL_NIF_API_FUNC_MACRO(enif_get_list_length) -# define enif_make_atom_len ERL_NIF_API_FUNC_MACRO(enif_make_atom_len) -# define enif_make_existing_atom_len ERL_NIF_API_FUNC_MACRO(enif_make_existing_atom_len) -# define enif_make_string_len ERL_NIF_API_FUNC_MACRO(enif_make_string_len) -# define enif_alloc_env ERL_NIF_API_FUNC_MACRO(enif_alloc_env) -# define enif_free_env ERL_NIF_API_FUNC_MACRO(enif_free_env) -# define enif_clear_env ERL_NIF_API_FUNC_MACRO(enif_clear_env) -# define enif_send ERL_NIF_API_FUNC_MACRO(enif_send) -# define enif_make_copy ERL_NIF_API_FUNC_MACRO(enif_make_copy) -# define enif_self ERL_NIF_API_FUNC_MACRO(enif_self) -# define enif_get_local_pid ERL_NIF_API_FUNC_MACRO(enif_get_local_pid) -# define enif_keep_resource ERL_NIF_API_FUNC_MACRO(enif_keep_resource) -# define enif_make_resource_binary ERL_NIF_API_FUNC_MACRO(enif_make_resource_binary) -#if SIZEOF_LONG != 8 -# define enif_get_int64 ERL_NIF_API_FUNC_MACRO(enif_get_int64) -# define enif_get_uint64 ERL_NIF_API_FUNC_MACRO(enif_get_uint64) -# define enif_make_int64 ERL_NIF_API_FUNC_MACRO(enif_make_int64) -# define enif_make_uint64 ERL_NIF_API_FUNC_MACRO(enif_make_uint64) -#endif -# define enif_is_exception ERL_NIF_API_FUNC_MACRO(enif_is_exception) -# define enif_make_reverse_list ERL_NIF_API_FUNC_MACRO(enif_make_reverse_list) -# define enif_is_number ERL_NIF_API_FUNC_MACRO(enif_is_number) -# define enif_dlopen ERL_NIF_API_FUNC_MACRO(enif_dlopen) -# define enif_dlsym ERL_NIF_API_FUNC_MACRO(enif_dlsym) -# define enif_consume_timeslice ERL_NIF_API_FUNC_MACRO(enif_consume_timeslice) -# define enif_is_map ERL_NIF_API_FUNC_MACRO(enif_is_map) -# define enif_get_map_size ERL_NIF_API_FUNC_MACRO(enif_get_map_size) -# define enif_make_new_map ERL_NIF_API_FUNC_MACRO(enif_make_new_map) -# define enif_make_map_put ERL_NIF_API_FUNC_MACRO(enif_make_map_put) -# define enif_get_map_value ERL_NIF_API_FUNC_MACRO(enif_get_map_value) -# define enif_make_map_update ERL_NIF_API_FUNC_MACRO(enif_make_map_update) -# define enif_make_map_remove ERL_NIF_API_FUNC_MACRO(enif_make_map_remove) -# define enif_map_iterator_create ERL_NIF_API_FUNC_MACRO(enif_map_iterator_create) -# define enif_map_iterator_destroy ERL_NIF_API_FUNC_MACRO(enif_map_iterator_destroy) -# define enif_map_iterator_is_head ERL_NIF_API_FUNC_MACRO(enif_map_iterator_is_head) -# define enif_map_iterator_is_tail ERL_NIF_API_FUNC_MACRO(enif_map_iterator_is_tail) -# define enif_map_iterator_next ERL_NIF_API_FUNC_MACRO(enif_map_iterator_next) -# define enif_map_iterator_prev ERL_NIF_API_FUNC_MACRO(enif_map_iterator_prev) -# define enif_map_iterator_get_pair ERL_NIF_API_FUNC_MACRO(enif_map_iterator_get_pair) -# define enif_schedule_nif ERL_NIF_API_FUNC_MACRO(enif_schedule_nif) -# define enif_has_pending_exception ERL_NIF_API_FUNC_MACRO(enif_has_pending_exception) -# define enif_raise_exception ERL_NIF_API_FUNC_MACRO(enif_raise_exception) -# define enif_getenv ERL_NIF_API_FUNC_MACRO(enif_getenv) -# define enif_monotonic_time ERL_NIF_API_FUNC_MACRO(enif_monotonic_time) -# define enif_time_offset ERL_NIF_API_FUNC_MACRO(enif_time_offset) -# define enif_convert_time_unit ERL_NIF_API_FUNC_MACRO(enif_convert_time_unit) -# define enif_now_time ERL_NIF_API_FUNC_MACRO(enif_now_time) -# define enif_cpu_time ERL_NIF_API_FUNC_MACRO(enif_cpu_time) -# define enif_make_unique_integer ERL_NIF_API_FUNC_MACRO(enif_make_unique_integer) -# define enif_is_current_process_alive ERL_NIF_API_FUNC_MACRO(enif_is_current_process_alive) -# define enif_is_process_alive ERL_NIF_API_FUNC_MACRO(enif_is_process_alive) -# define enif_is_port_alive ERL_NIF_API_FUNC_MACRO(enif_is_port_alive) -# define enif_get_local_port ERL_NIF_API_FUNC_MACRO(enif_get_local_port) -# define enif_term_to_binary ERL_NIF_API_FUNC_MACRO(enif_term_to_binary) -# define enif_binary_to_term ERL_NIF_API_FUNC_MACRO(enif_binary_to_term) -# define enif_port_command ERL_NIF_API_FUNC_MACRO(enif_port_command) -# define enif_thread_type ERL_NIF_API_FUNC_MACRO(enif_thread_type) -# define enif_snprintf ERL_NIF_API_FUNC_MACRO(enif_snprintf) -# define enif_select ERL_NIF_API_FUNC_MACRO(enif_select) -# define enif_open_resource_type_x ERL_NIF_API_FUNC_MACRO(enif_open_resource_type_x) -# define enif_monitor_process ERL_NIF_API_FUNC_MACRO(enif_monitor_process) -# define enif_demonitor_process ERL_NIF_API_FUNC_MACRO(enif_demonitor_process) -# define enif_compare_monitors ERL_NIF_API_FUNC_MACRO(enif_compare_monitors) -# define enif_hash ERL_NIF_API_FUNC_MACRO(enif_hash) -# define enif_whereis_pid ERL_NIF_API_FUNC_MACRO(enif_whereis_pid) -# define enif_whereis_port ERL_NIF_API_FUNC_MACRO(enif_whereis_port) -# define enif_ioq_create ERL_NIF_API_FUNC_MACRO(enif_ioq_create) -# define enif_ioq_destroy ERL_NIF_API_FUNC_MACRO(enif_ioq_destroy) -# define enif_ioq_enq ERL_NIF_API_FUNC_MACRO(enif_ioq_enq) -# define enif_ioq_enq_binary ERL_NIF_API_FUNC_MACRO(enif_ioq_enq_binary) -# define enif_ioq_enqv ERL_NIF_API_FUNC_MACRO(enif_ioq_enqv) -# define enif_ioq_size ERL_NIF_API_FUNC_MACRO(enif_ioq_size) -# define enif_ioq_deq ERL_NIF_API_FUNC_MACRO(enif_ioq_deq) -# define enif_ioq_peek ERL_NIF_API_FUNC_MACRO(enif_ioq_peek) -# define enif_inspect_iovec ERL_NIF_API_FUNC_MACRO(enif_inspect_iovec) -# define enif_free_iovec ERL_NIF_API_FUNC_MACRO(enif_free_iovec) -# define enif_ioq_peek_head ERL_NIF_API_FUNC_MACRO(enif_ioq_peek_head) -# define enif_mutex_name ERL_NIF_API_FUNC_MACRO(enif_mutex_name) -# define enif_cond_name ERL_NIF_API_FUNC_MACRO(enif_cond_name) -# define enif_rwlock_name ERL_NIF_API_FUNC_MACRO(enif_rwlock_name) -# define enif_thread_name ERL_NIF_API_FUNC_MACRO(enif_thread_name) -# define enif_vfprintf ERL_NIF_API_FUNC_MACRO(enif_vfprintf) -# define enif_vsnprintf ERL_NIF_API_FUNC_MACRO(enif_vsnprintf) -# define enif_make_map_from_arrays ERL_NIF_API_FUNC_MACRO(enif_make_map_from_arrays) -# define enif_select_x ERL_NIF_API_FUNC_MACRO(enif_select_x) -# define enif_make_monitor_term ERL_NIF_API_FUNC_MACRO(enif_make_monitor_term) -# define enif_set_pid_undefined ERL_NIF_API_FUNC_MACRO(enif_set_pid_undefined) -# define enif_is_pid_undefined ERL_NIF_API_FUNC_MACRO(enif_is_pid_undefined) -# define enif_term_type ERL_NIF_API_FUNC_MACRO(enif_term_type) -# define enif_init_resource_type ERL_NIF_API_FUNC_MACRO(enif_init_resource_type) -# define enif_dynamic_resource_call ERL_NIF_API_FUNC_MACRO(enif_dynamic_resource_call) -/* -** ADD NEW ENTRIES HERE (before this comment) -*/ - -/* - * Conditional EXPERIMENTAL stuff always last - * Must be moved up and made unconditional to support binary backward - * compatibility on Windows. - */ -#endif /* ERL_NIF_API_FUNC_MACRO */ - - -#if defined(__GNUC__) && !(defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_)) - -/* Inline functions for compile time type checking of arguments to - variadic functions. -*/ - -# define ERL_NIF_INLINE __inline__ - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple1(ErlNifEnv* env, - ERL_NIF_TERM e1) -{ - return enif_make_tuple(env, 1, e1); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple2(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2) -{ - return enif_make_tuple(env, 2, e1, e2); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple3(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3) -{ - return enif_make_tuple(env, 3, e1, e2, e3); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple4(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4) -{ - return enif_make_tuple(env, 4, e1, e2, e3, e4); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple5(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5) -{ - return enif_make_tuple(env, 5, e1, e2, e3, e4, e5); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple6(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6) -{ - return enif_make_tuple(env, 6, e1, e2, e3, e4, e5, e6); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple7(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7) -{ - return enif_make_tuple(env, 7, e1, e2, e3, e4, e5, e6, e7); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple8(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8) -{ - return enif_make_tuple(env, 8, e1, e2, e3, e4, e5, e6, e7, e8); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_tuple9(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8, - ERL_NIF_TERM e9) -{ - return enif_make_tuple(env, 9, e1, e2, e3, e4, e5, e6, e7, e8, e9); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list1(ErlNifEnv* env, - ERL_NIF_TERM e1) -{ - return enif_make_list(env, 1, e1); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list2(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2) -{ - return enif_make_list(env, 2, e1, e2); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list3(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3) -{ - return enif_make_list(env, 3, e1, e2, e3); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list4(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4) -{ - return enif_make_list(env, 4, e1, e2, e3, e4); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list5(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5) -{ - return enif_make_list(env, 5, e1, e2, e3, e4, e5); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list6(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6) -{ - return enif_make_list(env, 6, e1, e2, e3, e4, e5, e6); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list7(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7) -{ - return enif_make_list(env, 7, e1, e2, e3, e4, e5, e6, e7); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list8(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8) -{ - return enif_make_list(env, 8, e1, e2, e3, e4, e5, e6, e7, e8); -} - -static ERL_NIF_INLINE ERL_NIF_TERM enif_make_list9(ErlNifEnv* env, - ERL_NIF_TERM e1, - ERL_NIF_TERM e2, - ERL_NIF_TERM e3, - ERL_NIF_TERM e4, - ERL_NIF_TERM e5, - ERL_NIF_TERM e6, - ERL_NIF_TERM e7, - ERL_NIF_TERM e8, - ERL_NIF_TERM e9) -{ - return enif_make_list(env, 9, e1, e2, e3, e4, e5, e6, e7, e8, e9); -} - -# undef ERL_NIF_INLINE - -#else /* fallback with macros */ - -#ifndef enif_make_list1 -# define enif_make_list1(ENV,E1) enif_make_list(ENV,1,E1) -# define enif_make_list2(ENV,E1,E2) enif_make_list(ENV,2,E1,E2) -# define enif_make_list3(ENV,E1,E2,E3) enif_make_list(ENV,3,E1,E2,E3) -# define enif_make_list4(ENV,E1,E2,E3,E4) enif_make_list(ENV,4,E1,E2,E3,E4) -# define enif_make_list5(ENV,E1,E2,E3,E4,E5) enif_make_list(ENV,5,E1,E2,E3,E4,E5) -# define enif_make_list6(ENV,E1,E2,E3,E4,E5,E6) enif_make_list(ENV,6,E1,E2,E3,E4,E5,E6) -# define enif_make_list7(ENV,E1,E2,E3,E4,E5,E6,E7) enif_make_list(ENV,7,E1,E2,E3,E4,E5,E6,E7) -# define enif_make_list8(ENV,E1,E2,E3,E4,E5,E6,E7,E8) enif_make_list(ENV,8,E1,E2,E3,E4,E5,E6,E7,E8) -# define enif_make_list9(ENV,E1,E2,E3,E4,E5,E6,E7,E8,E9) enif_make_list(ENV,9,E1,E2,E3,E4,E5,E6,E7,E8,E9) -# define enif_make_tuple1(ENV,E1) enif_make_tuple(ENV,1,E1) -# define enif_make_tuple2(ENV,E1,E2) enif_make_tuple(ENV,2,E1,E2) -# define enif_make_tuple3(ENV,E1,E2,E3) enif_make_tuple(ENV,3,E1,E2,E3) -# define enif_make_tuple4(ENV,E1,E2,E3,E4) enif_make_tuple(ENV,4,E1,E2,E3,E4) -# define enif_make_tuple5(ENV,E1,E2,E3,E4,E5) enif_make_tuple(ENV,5,E1,E2,E3,E4,E5) -# define enif_make_tuple6(ENV,E1,E2,E3,E4,E5,E6) enif_make_tuple(ENV,6,E1,E2,E3,E4,E5,E6) -# define enif_make_tuple7(ENV,E1,E2,E3,E4,E5,E6,E7) enif_make_tuple(ENV,7,E1,E2,E3,E4,E5,E6,E7) -# define enif_make_tuple8(ENV,E1,E2,E3,E4,E5,E6,E7,E8) enif_make_tuple(ENV,8,E1,E2,E3,E4,E5,E6,E7,E8) -# define enif_make_tuple9(ENV,E1,E2,E3,E4,E5,E6,E7,E8,E9) enif_make_tuple(ENV,9,E1,E2,E3,E4,E5,E6,E7,E8,E9) -#endif - -#endif /* __GNUC__ && !WIN32 */ - -#ifndef enif_make_pid - -# define enif_make_pid(ENV, PID) ((void)(ENV),(const ERL_NIF_TERM)((PID)->pid)) -# define enif_compare_pids(A, B) (enif_compare((A)->pid,(B)->pid)) -# define enif_select_read(ENV, E, OBJ, PID, MSG, MSG_ENV) \ - enif_select_x(ENV, E, ERL_NIF_SELECT_READ | ERL_NIF_SELECT_CUSTOM_MSG, \ - OBJ, PID, MSG, MSG_ENV) -# define enif_select_write(ENV, E, OBJ, PID, MSG, MSG_ENV) \ - enif_select_x(ENV, E, ERL_NIF_SELECT_WRITE | ERL_NIF_SELECT_CUSTOM_MSG, \ - OBJ, PID, MSG, MSG_ENV) -# define enif_select_error(ENV, E, OBJ, PID, MSG, MSG_ENV) \ - enif_select_x(ENV, E, ERL_NIF_SELECT_ERROR | ERL_NIF_SELECT_CUSTOM_MSG, \ - OBJ, PID, MSG, MSG_ENV) - -#if SIZEOF_LONG == 8 -# define enif_get_int64 enif_get_long -# define enif_get_uint64 enif_get_ulong -# define enif_make_int64 enif_make_long -# define enif_make_uint64 enif_make_ulong -#endif - -#endif - diff --git a/prebuilt/windows/headers/erlang/erl_win_dyn_driver.h b/prebuilt/windows/headers/erlang/erl_win_dyn_driver.h deleted file mode 100644 index c683e8cf49..0000000000 --- a/prebuilt/windows/headers/erlang/erl_win_dyn_driver.h +++ /dev/null @@ -1,518 +0,0 @@ -/* - * %CopyrightBegin% - * - * Copyright Ericsson AB 2003-2018. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * %CopyrightEnd% - */ - -/* - * Include file for erlang driver writers using dynamic drivers on windows. - */ - -/* Maybe this should be auto generated, but I'll leave that for now... */ - -#ifndef _ERL_WIN_DYN_DRIVER_H -#define _ERL_WIN_DYN_DRIVER_H - -#define WDD_FTYPE(FunctionName) TWinDynDriver##FunctionName - -#define WDD_TYPEDEF(RetType, FunctionName, Params) \ - typedef RetType WDD_FTYPE(FunctionName) Params - -WDD_TYPEDEF(int, null_func,(void)); -WDD_TYPEDEF(int, driver_failure_atom,(ErlDrvPort, char *)); -WDD_TYPEDEF(int, driver_failure_posix,(ErlDrvPort, int)); -WDD_TYPEDEF(int, driver_failure,(ErlDrvPort, int)); -WDD_TYPEDEF(int, driver_exit, (ErlDrvPort, int)); -WDD_TYPEDEF(int, driver_failure_eof, (ErlDrvPort)); -WDD_TYPEDEF(void, erl_drv_busy_msgq_limits, (ErlDrvPort, ErlDrvSizeT *, ErlDrvSizeT *)); -WDD_TYPEDEF(int, driver_select, (ErlDrvPort, ErlDrvEvent, int, int)); -WDD_TYPEDEF(int, driver_output, (ErlDrvPort, char *, ErlDrvSizeT)); -WDD_TYPEDEF(int, driver_output2, (ErlDrvPort, char *, ErlDrvSizeT ,char *, ErlDrvSizeT)); -WDD_TYPEDEF(int, driver_output_binary, (ErlDrvPort, char *, ErlDrvSizeT, ErlDrvBinary*, ErlDrvSizeT, ErlDrvSizeT)); -WDD_TYPEDEF(int, driver_outputv, (ErlDrvPort, char*, ErlDrvSizeT, ErlIOVec *, ErlDrvSizeT)); -WDD_TYPEDEF(ErlDrvSizeT, driver_vec_to_buf, (ErlIOVec *, char *, ErlDrvSizeT)); -WDD_TYPEDEF(int, driver_set_timer, (ErlDrvPort, unsigned long)); -WDD_TYPEDEF(int, driver_cancel_timer, (ErlDrvPort)); -WDD_TYPEDEF(int, driver_read_timer, (ErlDrvPort, unsigned long *)); -WDD_TYPEDEF(int, erl_drv_consume_timeslice, (ErlDrvPort, int)); -WDD_TYPEDEF(char *, erl_errno_id, (int)); -WDD_TYPEDEF(void, set_busy_port, (ErlDrvPort, int)); -WDD_TYPEDEF(void, set_port_control_flags, (ErlDrvPort, int)); -WDD_TYPEDEF(int, get_port_flags, (ErlDrvPort)); -WDD_TYPEDEF(ErlDrvBinary *, driver_alloc_binary, (ErlDrvSizeT)); -WDD_TYPEDEF(ErlDrvBinary *, driver_realloc_binary, (ErlDrvBinary *, ErlDrvSizeT)); -WDD_TYPEDEF(void, driver_free_binary, (ErlDrvBinary *)); -WDD_TYPEDEF(void *, driver_alloc, (ErlDrvSizeT)); -WDD_TYPEDEF(void *, driver_realloc, (void *, ErlDrvSizeT)); -WDD_TYPEDEF(void, driver_free, (void *)); -WDD_TYPEDEF(int, driver_enq, (ErlDrvPort, char*, ErlDrvSizeT)); -WDD_TYPEDEF(int, driver_pushq, (ErlDrvPort, char*, ErlDrvSizeT)); -WDD_TYPEDEF(ErlDrvSizeT, driver_deq, (ErlDrvPort, ErlDrvSizeT)); -WDD_TYPEDEF(ErlDrvSizeT, driver_sizeq, (ErlDrvPort)); -WDD_TYPEDEF(int, driver_enq_bin, (ErlDrvPort, ErlDrvBinary *, ErlDrvSizeT, ErlDrvSizeT)); -WDD_TYPEDEF(int, driver_pushq_bin, (ErlDrvPort, ErlDrvBinary *, ErlDrvSizeT, ErlDrvSizeT)); -WDD_TYPEDEF(ErlDrvSizeT, driver_peekqv, (ErlDrvPort, ErlIOVec *)); -WDD_TYPEDEF(SysIOVec *, driver_peekq, (ErlDrvPort, int *)); -WDD_TYPEDEF(int, driver_enqv, (ErlDrvPort, ErlIOVec *, ErlDrvSizeT)); -WDD_TYPEDEF(int, driver_pushqv, (ErlDrvPort, ErlIOVec *, ErlDrvSizeT)); -WDD_TYPEDEF(void, add_driver_entry, (ErlDrvEntry *)); -WDD_TYPEDEF(int, remove_driver_entry, (ErlDrvEntry *)); -WDD_TYPEDEF(ErlDrvTermData, driver_mk_atom, (char*)); -WDD_TYPEDEF(ErlDrvTermData, driver_mk_port,(ErlDrvPort)); -WDD_TYPEDEF(ErlDrvTermData, driver_connected,(ErlDrvPort)); -WDD_TYPEDEF(ErlDrvTermData, driver_caller,(ErlDrvPort)); -WDD_TYPEDEF(ErlDrvTermData, driver_mk_term_nil,(void)); -WDD_TYPEDEF(int, erl_drv_output_term, (ErlDrvTermData, ErlDrvTermData*, int)); -WDD_TYPEDEF(int, driver_output_term, (ErlDrvPort, ErlDrvTermData*, int)); -WDD_TYPEDEF(int, erl_drv_send_term, (ErlDrvTermData, ErlDrvTermData, ErlDrvTermData*, int)); -WDD_TYPEDEF(int, driver_send_term, (ErlDrvPort, ErlDrvTermData, ErlDrvTermData*, int)); -WDD_TYPEDEF(unsigned int, driver_async_port_key, (ErlDrvPort)); -WDD_TYPEDEF(long, driver_async, (ErlDrvPort,unsigned int*,void (*)(void*),void*,void (*)(void*))); -WDD_TYPEDEF(int, driver_lock_driver, (ErlDrvPort)); -WDD_TYPEDEF(void *, driver_dl_open, (char *)); -WDD_TYPEDEF(void *, driver_dl_sym, (void *, char *)); -WDD_TYPEDEF(int, driver_dl_close, (void *)); -WDD_TYPEDEF(char *, driver_dl_error, (void)); -WDD_TYPEDEF(ErlDrvUInt, erts_alc_test, (ErlDrvUInt, - ErlDrvUInt, - ErlDrvUInt, - ErlDrvUInt)); -WDD_TYPEDEF(ErlDrvSInt, driver_binary_get_refc, (ErlDrvBinary *dbp)); -WDD_TYPEDEF(ErlDrvSInt, driver_binary_inc_refc, (ErlDrvBinary *dbp)); -WDD_TYPEDEF(ErlDrvSInt, driver_binary_dec_refc, (ErlDrvBinary *dbp)); -WDD_TYPEDEF(ErlDrvPDL, driver_pdl_create, (ErlDrvPort)); -WDD_TYPEDEF(void, driver_pdl_lock, (ErlDrvPDL)); -WDD_TYPEDEF(void, driver_pdl_unlock, (ErlDrvPDL)); -WDD_TYPEDEF(ErlDrvSInt, driver_pdl_get_refc, (ErlDrvPDL)); -WDD_TYPEDEF(ErlDrvSInt, driver_pdl_inc_refc, (ErlDrvPDL)); -WDD_TYPEDEF(ErlDrvSInt, driver_pdl_dec_refc, (ErlDrvPDL)); -WDD_TYPEDEF(void, driver_system_info, (ErlDrvSysInfo *, size_t)); -WDD_TYPEDEF(int, driver_get_now, (ErlDrvNowData *)); -WDD_TYPEDEF(ErlDrvTime, erl_drv_monotonic_time, (ErlDrvTimeUnit)); -WDD_TYPEDEF(ErlDrvTime, erl_drv_time_offset, (ErlDrvTimeUnit)); -WDD_TYPEDEF(ErlDrvTime, erl_drv_convert_time_unit, (ErlDrvTime, - ErlDrvTimeUnit, - ErlDrvTimeUnit)); -WDD_TYPEDEF(int, driver_monitor_process, (ErlDrvPort port, - ErlDrvTermData process, - ErlDrvMonitor *monitor)); -WDD_TYPEDEF(int, driver_demonitor_process, (ErlDrvPort port, - const ErlDrvMonitor *monitor)); -WDD_TYPEDEF(ErlDrvTermData, driver_get_monitored_process, - (ErlDrvPort port, const ErlDrvMonitor *monitor)); -WDD_TYPEDEF(int, driver_compare_monitors, - (const ErlDrvMonitor *, const ErlDrvMonitor *)); -WDD_TYPEDEF(ErlDrvMutex *, erl_drv_mutex_create, (char *name)); -WDD_TYPEDEF(void, erl_drv_mutex_destroy, (ErlDrvMutex *mtx)); -WDD_TYPEDEF(int, erl_drv_mutex_trylock, (ErlDrvMutex *mtx)); -WDD_TYPEDEF(void, erl_drv_mutex_lock, (ErlDrvMutex *mtx)); -WDD_TYPEDEF(void, erl_drv_mutex_unlock, (ErlDrvMutex *mtx)); -WDD_TYPEDEF(ErlDrvCond *, erl_drv_cond_create, (char *name)); -WDD_TYPEDEF(void, erl_drv_cond_destroy, (ErlDrvCond *cnd)); -WDD_TYPEDEF(void, erl_drv_cond_signal, (ErlDrvCond *cnd)); -WDD_TYPEDEF(void, erl_drv_cond_broadcast, (ErlDrvCond *cnd)); -WDD_TYPEDEF(void, erl_drv_cond_wait, (ErlDrvCond *cnd, ErlDrvMutex *mtx)); -WDD_TYPEDEF(ErlDrvRWLock *, erl_drv_rwlock_create, (char *name)); -WDD_TYPEDEF(void, erl_drv_rwlock_destroy, (ErlDrvRWLock *rwlck)); -WDD_TYPEDEF(int, erl_drv_rwlock_tryrlock, (ErlDrvRWLock *rwlck)); -WDD_TYPEDEF(void, erl_drv_rwlock_rlock, (ErlDrvRWLock *rwlck)); -WDD_TYPEDEF(void, erl_drv_rwlock_runlock, (ErlDrvRWLock *rwlck)); -WDD_TYPEDEF(int, erl_drv_rwlock_tryrwlock, (ErlDrvRWLock *rwlck)); -WDD_TYPEDEF(void, erl_drv_rwlock_rwlock, (ErlDrvRWLock *rwlck)); -WDD_TYPEDEF(void, erl_drv_rwlock_rwunlock, (ErlDrvRWLock *rwlck)); -WDD_TYPEDEF(int, erl_drv_tsd_key_create, (char *name, ErlDrvTSDKey *key)); -WDD_TYPEDEF(void, erl_drv_tsd_key_destroy, (ErlDrvTSDKey key)); -WDD_TYPEDEF(void, erl_drv_tsd_set, (ErlDrvTSDKey key, void *data)); -WDD_TYPEDEF(void *, erl_drv_tsd_get, (ErlDrvTSDKey key)); -WDD_TYPEDEF(ErlDrvThreadOpts *, erl_drv_thread_opts_create, (char *name)); -WDD_TYPEDEF(void, erl_drv_thread_opts_destroy, (ErlDrvThreadOpts *opts)); -WDD_TYPEDEF(int, erl_drv_thread_create, (char *name, - ErlDrvTid *tid, - void * (*func)(void *), - void *args, - ErlDrvThreadOpts *opts)); -WDD_TYPEDEF(ErlDrvTid, erl_drv_thread_self, (void)); -WDD_TYPEDEF(int, erl_drv_equal_tids, (ErlDrvTid tid1, ErlDrvTid tid2)); -WDD_TYPEDEF(void, erl_drv_thread_exit, (void *resp)); -WDD_TYPEDEF(int, erl_drv_thread_join, (ErlDrvTid, void **respp)); -WDD_TYPEDEF(int, erl_drv_putenv, (const char *key, char *value)); -WDD_TYPEDEF(int, erl_drv_getenv, (const char *key, char *value, size_t *value_size)); - -typedef struct { - WDD_FTYPE(null_func) *null_func; - WDD_FTYPE(driver_failure_atom) *driver_failure_atom; - WDD_FTYPE(driver_failure_posix) *driver_failure_posix; - WDD_FTYPE(driver_failure) *driver_failure; - WDD_FTYPE(driver_exit) *driver_exit; - WDD_FTYPE(driver_failure_eof) *driver_failure_eof; - WDD_FTYPE(erl_drv_busy_msgq_limits) *erl_drv_busy_msgq_limits; - WDD_FTYPE(driver_select) *driver_select; - void *REMOVED_driver_event; - WDD_FTYPE(driver_output) *driver_output; - WDD_FTYPE(driver_output2) *driver_output2; - WDD_FTYPE(driver_output_binary) *driver_output_binary; - WDD_FTYPE(driver_outputv) *driver_outputv; - WDD_FTYPE(driver_vec_to_buf) *driver_vec_to_buf; - WDD_FTYPE(driver_set_timer) *driver_set_timer; - WDD_FTYPE(driver_cancel_timer) *driver_cancel_timer; - WDD_FTYPE(driver_read_timer) *driver_read_timer; - WDD_FTYPE(erl_drv_consume_timeslice) *erl_drv_consume_timeslice; - WDD_FTYPE(erl_errno_id) *erl_errno_id; - WDD_FTYPE(set_busy_port)* set_busy_port; - WDD_FTYPE(set_port_control_flags) *set_port_control_flags; - WDD_FTYPE(get_port_flags) *get_port_flags; - WDD_FTYPE(driver_alloc_binary) *driver_alloc_binary; - WDD_FTYPE(driver_realloc_binary) *driver_realloc_binary; - WDD_FTYPE(driver_free_binary) *driver_free_binary; - WDD_FTYPE(driver_alloc) *driver_alloc; - WDD_FTYPE(driver_realloc) *driver_realloc; - WDD_FTYPE(driver_free) *driver_free; - WDD_FTYPE(driver_enq) *driver_enq; - WDD_FTYPE(driver_pushq) *driver_pushq; - WDD_FTYPE(driver_deq) *driver_deq; - WDD_FTYPE(driver_sizeq) *driver_sizeq; - WDD_FTYPE(driver_enq_bin)* driver_enq_bin; - WDD_FTYPE(driver_pushq_bin) *driver_pushq_bin; - WDD_FTYPE(driver_peekqv) *driver_peekqv; - WDD_FTYPE(driver_peekq) *driver_peekq; - WDD_FTYPE(driver_enqv) *driver_enqv; - WDD_FTYPE(driver_pushqv) *driver_pushqv; - WDD_FTYPE(add_driver_entry) *add_driver_entry; - WDD_FTYPE(remove_driver_entry) *remove_driver_entry; - WDD_FTYPE(driver_mk_atom) *driver_mk_atom; - WDD_FTYPE(driver_mk_port) *driver_mk_port; - WDD_FTYPE(driver_connected) *driver_connected; - WDD_FTYPE(driver_caller) *driver_caller; - WDD_FTYPE(driver_mk_term_nil) *driver_mk_term_nil; - WDD_FTYPE(erl_drv_output_term) *erl_drv_output_term; - WDD_FTYPE(driver_output_term) *driver_output_term; - WDD_FTYPE(erl_drv_send_term) *erl_drv_send_term; - WDD_FTYPE(driver_send_term) *driver_send_term; - WDD_FTYPE(driver_async_port_key) *driver_async_port_key; - WDD_FTYPE(driver_async) *driver_async; - WDD_FTYPE(driver_lock_driver) *driver_lock_driver; - WDD_FTYPE(driver_dl_open) *driver_dl_open; - WDD_FTYPE(driver_dl_sym) *driver_dl_sym; - WDD_FTYPE(driver_dl_close) *driver_dl_close; - WDD_FTYPE(driver_dl_error) *driver_dl_error; - WDD_FTYPE(erts_alc_test) *erts_alc_test; - WDD_FTYPE(driver_binary_get_refc) *driver_binary_get_refc; - WDD_FTYPE(driver_binary_inc_refc) *driver_binary_inc_refc; - WDD_FTYPE(driver_binary_dec_refc) *driver_binary_dec_refc; - WDD_FTYPE(driver_pdl_create) *driver_pdl_create; - WDD_FTYPE(driver_pdl_lock) *driver_pdl_lock; - WDD_FTYPE(driver_pdl_unlock) *driver_pdl_unlock; - WDD_FTYPE(driver_pdl_get_refc) *driver_pdl_get_refc; - WDD_FTYPE(driver_pdl_inc_refc) *driver_pdl_inc_refc; - WDD_FTYPE(driver_pdl_dec_refc) *driver_pdl_dec_refc; - WDD_FTYPE(driver_system_info) *driver_system_info; - WDD_FTYPE(driver_get_now) *driver_get_now; - WDD_FTYPE(erl_drv_monotonic_time) *erl_drv_monotonic_time; - WDD_FTYPE(erl_drv_time_offset) *erl_drv_time_offset; - WDD_FTYPE(erl_drv_convert_time_unit) *erl_drv_convert_time_unit; - WDD_FTYPE(driver_monitor_process) *driver_monitor_process; - WDD_FTYPE(driver_demonitor_process) *driver_demonitor_process; - WDD_FTYPE(driver_get_monitored_process) *driver_get_monitored_process; - WDD_FTYPE(driver_compare_monitors) *driver_compare_monitors; - WDD_FTYPE(erl_drv_mutex_create) *erl_drv_mutex_create; - WDD_FTYPE(erl_drv_mutex_destroy) *erl_drv_mutex_destroy; - WDD_FTYPE(erl_drv_mutex_trylock) *erl_drv_mutex_trylock; - WDD_FTYPE(erl_drv_mutex_lock) *erl_drv_mutex_lock; - WDD_FTYPE(erl_drv_mutex_unlock) *erl_drv_mutex_unlock; - WDD_FTYPE(erl_drv_cond_create) *erl_drv_cond_create; - WDD_FTYPE(erl_drv_cond_destroy) *erl_drv_cond_destroy; - WDD_FTYPE(erl_drv_cond_signal) *erl_drv_cond_signal; - WDD_FTYPE(erl_drv_cond_broadcast) *erl_drv_cond_broadcast; - WDD_FTYPE(erl_drv_cond_wait) *erl_drv_cond_wait; - WDD_FTYPE(erl_drv_rwlock_create) *erl_drv_rwlock_create; - WDD_FTYPE(erl_drv_rwlock_destroy) *erl_drv_rwlock_destroy; - WDD_FTYPE(erl_drv_rwlock_tryrlock) *erl_drv_rwlock_tryrlock; - WDD_FTYPE(erl_drv_rwlock_rlock) *erl_drv_rwlock_rlock; - WDD_FTYPE(erl_drv_rwlock_runlock) *erl_drv_rwlock_runlock; - WDD_FTYPE(erl_drv_rwlock_tryrwlock) *erl_drv_rwlock_tryrwlock; - WDD_FTYPE(erl_drv_rwlock_rwlock) *erl_drv_rwlock_rwlock; - WDD_FTYPE(erl_drv_rwlock_rwunlock) *erl_drv_rwlock_rwunlock; - WDD_FTYPE(erl_drv_tsd_key_create) *erl_drv_tsd_key_create; - WDD_FTYPE(erl_drv_tsd_key_destroy) *erl_drv_tsd_key_destroy; - WDD_FTYPE(erl_drv_tsd_set) *erl_drv_tsd_set; - WDD_FTYPE(erl_drv_tsd_get) *erl_drv_tsd_get; - WDD_FTYPE(erl_drv_thread_opts_create) *erl_drv_thread_opts_create; - WDD_FTYPE(erl_drv_thread_opts_destroy) *erl_drv_thread_opts_destroy; - WDD_FTYPE(erl_drv_thread_create) *erl_drv_thread_create; - WDD_FTYPE(erl_drv_thread_self) *erl_drv_thread_self; - WDD_FTYPE(erl_drv_equal_tids) *erl_drv_equal_tids; - WDD_FTYPE(erl_drv_thread_exit) *erl_drv_thread_exit; - WDD_FTYPE(erl_drv_thread_join) *erl_drv_thread_join; - WDD_FTYPE(erl_drv_putenv) *erl_drv_putenv; - WDD_FTYPE(erl_drv_getenv) *erl_drv_getenv; - /* Add new calls here */ -} TWinDynDriverCallbacks; - -/* This header is included explicitly by the ddll static driver, it musn't define things then */ -#ifndef STATIC_ERLANG_DRIVER - -extern TWinDynDriverCallbacks WinDynDriverCallbacks; - -#define null_func (WinDynDriverCallbacks.null_func) -#define driver_failure_atom (WinDynDriverCallbacks.driver_failure_atom) -#define driver_failure_posix (WinDynDriverCallbacks.driver_failure_posix) -#define driver_failure (WinDynDriverCallbacks.driver_failure) -#define driver_exit (WinDynDriverCallbacks.driver_exit) -#define driver_failure_eof (WinDynDriverCallbacks.driver_failure_eof) -#define erl_drv_busy_msgq_limits (WinDynDriverCallbacks.erl_drv_busy_msgq_limits) -#define driver_select (WinDynDriverCallbacks.driver_select) -#define driver_output (WinDynDriverCallbacks.driver_output) -#define driver_output2 (WinDynDriverCallbacks.driver_output2) -#define driver_output_binary (WinDynDriverCallbacks.driver_output_binary) -#define driver_outputv (WinDynDriverCallbacks.driver_outputv) -#define driver_vec_to_buf (WinDynDriverCallbacks.driver_vec_to_buf) -#define driver_set_timer (WinDynDriverCallbacks.driver_set_timer) -#define driver_cancel_timer (WinDynDriverCallbacks.driver_cancel_timer) -#define driver_read_timer (WinDynDriverCallbacks.driver_read_timer) -#define erl_drv_consume_timeslice (WinDynDriverCallbacks.erl_drv_consume_timeslice) -#define erl_errno_id (WinDynDriverCallbacks.erl_errno_id) -#define set_busy_port (WinDynDriverCallbacks.set_busy_port) -#define set_port_control_flags (WinDynDriverCallbacks.set_port_control_flags) -#define get_port_flags (WinDynDriverCallbacks.get_port_flags) -#define driver_alloc_binary (WinDynDriverCallbacks.driver_alloc_binary) -#define driver_realloc_binary (WinDynDriverCallbacks.driver_realloc_binary) -#define driver_free_binary (WinDynDriverCallbacks.driver_free_binary) -#define driver_alloc (WinDynDriverCallbacks.driver_alloc) -#define driver_realloc (WinDynDriverCallbacks.driver_realloc) -#define driver_free (WinDynDriverCallbacks.driver_free) -#define driver_enq (WinDynDriverCallbacks.driver_enq) -#define driver_pushq (WinDynDriverCallbacks.driver_pushq) -#define driver_deq (WinDynDriverCallbacks.driver_deq) -#define driver_sizeq (WinDynDriverCallbacks.driver_sizeq) -#define driver_enq_bin (WinDynDriverCallbacks.driver_enq_bin) -#define driver_pushq_bin (WinDynDriverCallbacks.driver_pushq_bin) -#define driver_peekqv (WinDynDriverCallbacks.driver_peekqv) -#define driver_peekq (WinDynDriverCallbacks.driver_peekq) -#define driver_enqv (WinDynDriverCallbacks.driver_enqv) -#define driver_pushqv (WinDynDriverCallbacks.driver_pushqv) -#define add_driver_entry (WinDynDriverCallbacks.add_driver_entry) -#define remove_driver_entry (WinDynDriverCallbacks.remove_driver_entry) -#define driver_mk_atom (WinDynDriverCallbacks.driver_mk_atom) -#define driver_mk_port (WinDynDriverCallbacks.driver_mk_port) -#define driver_connected (WinDynDriverCallbacks.driver_connected) -#define driver_caller (WinDynDriverCallbacks.driver_caller) -#define driver_mk_term_nil (WinDynDriverCallbacks.driver_mk_term_nil) -#define erl_drv_output_term (WinDynDriverCallbacks.erl_drv_output_term) -#define driver_output_term (WinDynDriverCallbacks.driver_output_term) -#define erl_drv_send_term (WinDynDriverCallbacks.erl_drv_send_term) -#define driver_send_term (WinDynDriverCallbacks.driver_send_term) -#define driver_async_port_key (WinDynDriverCallbacks.driver_async_port_key) -#define driver_async (WinDynDriverCallbacks.driver_async) -#define driver_lock_driver (WinDynDriverCallbacks.driver_lock_driver) -#define driver_dl_open (WinDynDriverCallbacks.driver_dl_open) -#define driver_dl_sym (WinDynDriverCallbacks.driver_dl_sym) -#define driver_dl_close (WinDynDriverCallbacks.driver_dl_close) -#define driver_dl_error (WinDynDriverCallbacks.driver_dl_error) -#define erts_alc_test (WinDynDriverCallbacks.erts_alc_test) -#define driver_binary_get_refc (WinDynDriverCallbacks.driver_binary_get_refc) -#define driver_binary_inc_refc (WinDynDriverCallbacks.driver_binary_inc_refc) -#define driver_binary_dec_refc (WinDynDriverCallbacks.driver_binary_dec_refc) -#define driver_pdl_create (WinDynDriverCallbacks.driver_pdl_create) -#define driver_pdl_lock (WinDynDriverCallbacks.driver_pdl_lock) -#define driver_pdl_unlock (WinDynDriverCallbacks.driver_pdl_unlock) -#define driver_pdl_get_refc (WinDynDriverCallbacks.driver_pdl_get_refc) -#define driver_pdl_inc_refc (WinDynDriverCallbacks.driver_pdl_inc_refc) -#define driver_pdl_dec_refc (WinDynDriverCallbacks.driver_pdl_dec_refc) -#define driver_system_info (WinDynDriverCallbacks.driver_system_info) -#define driver_get_now (WinDynDriverCallbacks.driver_get_now) -#define erl_drv_monotonic_time (WinDynDriverCallbacks.erl_drv_monotonic_time) -#define erl_drv_time_offset (WinDynDriverCallbacks.erl_drv_time_offset) -#define erl_drv_convert_time_unit (WinDynDriverCallbacks.erl_drv_convert_time_unit) -#define driver_monitor_process \ -(WinDynDriverCallbacks.driver_monitor_process) -#define driver_demonitor_process \ -(WinDynDriverCallbacks.driver_demonitor_process) -#define driver_get_monitored_process \ -(WinDynDriverCallbacks.driver_get_monitored_process) -#define driver_compare_monitors \ -(WinDynDriverCallbacks.driver_compare_monitors) -#define erl_drv_mutex_create (WinDynDriverCallbacks.erl_drv_mutex_create) -#define erl_drv_mutex_destroy (WinDynDriverCallbacks.erl_drv_mutex_destroy) -#define erl_drv_mutex_trylock (WinDynDriverCallbacks.erl_drv_mutex_trylock) -#define erl_drv_mutex_lock (WinDynDriverCallbacks.erl_drv_mutex_lock) -#define erl_drv_mutex_unlock (WinDynDriverCallbacks.erl_drv_mutex_unlock) -#define erl_drv_cond_create (WinDynDriverCallbacks.erl_drv_cond_create) -#define erl_drv_cond_destroy (WinDynDriverCallbacks.erl_drv_cond_destroy) -#define erl_drv_cond_signal (WinDynDriverCallbacks.erl_drv_cond_signal) -#define erl_drv_cond_broadcast (WinDynDriverCallbacks.erl_drv_cond_broadcast) -#define erl_drv_cond_wait (WinDynDriverCallbacks.erl_drv_cond_wait) -#define erl_drv_rwlock_create (WinDynDriverCallbacks.erl_drv_rwlock_create) -#define erl_drv_rwlock_destroy (WinDynDriverCallbacks.erl_drv_rwlock_destroy) -#define erl_drv_rwlock_tryrlock (WinDynDriverCallbacks.erl_drv_rwlock_tryrlock) -#define erl_drv_rwlock_rlock (WinDynDriverCallbacks.erl_drv_rwlock_rlock) -#define erl_drv_rwlock_runlock (WinDynDriverCallbacks.erl_drv_rwlock_runlock) -#define erl_drv_rwlock_tryrwlock \ -(WinDynDriverCallbacks.erl_drv_rwlock_tryrwlock) -#define erl_drv_rwlock_rwlock (WinDynDriverCallbacks.erl_drv_rwlock_rwlock) -#define erl_drv_rwlock_rwunlock (WinDynDriverCallbacks.erl_drv_rwlock_rwunlock) -#define erl_drv_tsd_key_create (WinDynDriverCallbacks.erl_drv_tsd_key_create) -#define erl_drv_tsd_key_destroy (WinDynDriverCallbacks.erl_drv_tsd_key_destroy) -#define erl_drv_tsd_set (WinDynDriverCallbacks.erl_drv_tsd_set) -#define erl_drv_tsd_get (WinDynDriverCallbacks.erl_drv_tsd_get) -#define erl_drv_thread_opts_create \ -(WinDynDriverCallbacks.erl_drv_thread_opts_create) -#define erl_drv_thread_opts_destroy \ -(WinDynDriverCallbacks.erl_drv_thread_opts_destroy) -#define erl_drv_thread_create (WinDynDriverCallbacks.erl_drv_thread_create) -#define erl_drv_thread_self (WinDynDriverCallbacks.erl_drv_thread_self) -#define erl_drv_equal_tids (WinDynDriverCallbacks.erl_drv_equal_tids) -#define erl_drv_thread_exit (WinDynDriverCallbacks.erl_drv_thread_exit) -#define erl_drv_thread_join (WinDynDriverCallbacks.erl_drv_thread_join) -#define erl_drv_putenv (WinDynDriverCallbacks.erl_drv_putenv) -#define erl_drv_getenv (WinDynDriverCallbacks.erl_drv_getenv) - -/* The only variable in the interface... */ -#define driver_term_nil (driver_mk_term_nil()) - -#include -#include - -#define DRIVER_INIT(DriverName) \ -ErlDrvEntry *erl_dyndriver_real_driver_init(void); \ -TWinDynDriverCallbacks WinDynDriverCallbacks; \ -__declspec(dllexport) ErlDrvEntry *driver_init(TWinDynDriverCallbacks *callbacks) \ -{ \ - memcpy(&WinDynDriverCallbacks,callbacks,sizeof(TWinDynDriverCallbacks)); \ - return erl_dyndriver_real_driver_init(); \ -} \ -ErlDrvEntry *erl_dyndriver_real_driver_init(void) - -/* This is to make erl_driver.h avoid changing what's done here */ -#define ERL_DRIVER_TYPES_ONLY - -#else /* defined(STATIC_ERLANG_DRIVER) */ -/* This is for the ddll driver */ - -#define ERL_INIT_CALLBACK_STRUCTURE(W) \ -do { \ -((W).null_func) = null_func; \ -((W).driver_failure_atom) = driver_failure_atom; \ -((W).driver_failure_posix) = driver_failure_posix; \ -((W).driver_failure) = driver_failure; \ -((W).driver_exit) = driver_exit; \ -((W).driver_failure_eof) = driver_failure_eof; \ -((W).erl_drv_busy_msgq_limits) = erl_drv_busy_msgq_limits;\ -((W).driver_select) = driver_select; \ -((W).REMOVED_driver_event) = NULL; \ -((W).driver_output) = driver_output; \ -((W).driver_output2) = driver_output2; \ -((W).driver_output_binary) = driver_output_binary; \ -((W).driver_outputv) = driver_outputv; \ -((W).driver_vec_to_buf) = driver_vec_to_buf; \ -((W).driver_set_timer) = driver_set_timer; \ -((W).driver_cancel_timer) = driver_cancel_timer; \ -((W).driver_read_timer) = driver_read_timer; \ -((W).erl_drv_consume_timeslice) = erl_drv_consume_timeslice;\ -((W).erl_errno_id) = erl_errno_id; \ -((W).set_busy_port) = set_busy_port; \ -((W).set_port_control_flags) = set_port_control_flags; \ -((W).get_port_flags) = get_port_flags; \ -((W).driver_alloc_binary) = driver_alloc_binary; \ -((W).driver_realloc_binary) = driver_realloc_binary; \ -((W).driver_free_binary) = driver_free_binary; \ -((W).driver_alloc) = driver_alloc; \ -((W).driver_realloc) = driver_realloc; \ -((W).driver_free) = driver_free; \ -((W).driver_enq) = driver_enq; \ -((W).driver_pushq) = driver_pushq; \ -((W).driver_deq) = driver_deq; \ -((W).driver_sizeq) = driver_sizeq; \ -((W).driver_enq_bin) = driver_enq_bin; \ -((W).driver_pushq_bin) = driver_pushq_bin; \ -((W).driver_peekqv) = driver_peekqv; \ -((W).driver_peekq) = driver_peekq; \ -((W).driver_enqv) = driver_enqv; \ -((W).driver_pushqv) = driver_pushqv; \ -((W).add_driver_entry) = add_driver_entry; \ -((W).remove_driver_entry) = remove_driver_entry; \ -((W).driver_mk_atom) = driver_mk_atom; \ -((W).driver_mk_port) = driver_mk_port; \ -((W).driver_connected) = driver_connected; \ -((W).driver_caller) = driver_caller; \ -((W).driver_mk_term_nil) = driver_mk_term_nil; \ -((W).erl_drv_output_term) = erl_drv_output_term; \ -((W).driver_output_term) = driver_output_term; \ -((W).erl_drv_send_term) = erl_drv_send_term; \ -((W).driver_send_term) = driver_send_term; \ -((W).driver_async_port_key) = driver_async_port_key; \ -((W).driver_async) = driver_async; \ -((W).driver_lock_driver) = driver_lock_driver; \ -((W).driver_dl_open) = driver_dl_open; \ -((W).driver_dl_sym) = driver_dl_sym; \ -((W).driver_dl_close) = driver_dl_close; \ -((W).driver_dl_error) = driver_dl_error; \ -((W).erts_alc_test) = erts_alc_test; \ -((W).driver_binary_get_refc) = driver_binary_get_refc; \ -((W).driver_binary_inc_refc) = driver_binary_inc_refc; \ -((W).driver_binary_dec_refc) = driver_binary_dec_refc; \ -((W).driver_pdl_create) = driver_pdl_create; \ -((W).driver_pdl_lock) = driver_pdl_lock; \ -((W).driver_pdl_unlock) = driver_pdl_unlock; \ -((W).driver_pdl_get_refc) = driver_pdl_get_refc; \ -((W).driver_pdl_inc_refc) = driver_pdl_inc_refc; \ -((W).driver_pdl_dec_refc) = driver_pdl_dec_refc; \ -((W).driver_system_info) = driver_system_info; \ -((W).driver_get_now) = driver_get_now; \ -((W).erl_drv_monotonic_time) = erl_drv_monotonic_time; \ -((W).erl_drv_time_offset) = erl_drv_time_offset; \ -((W).erl_drv_convert_time_unit) = erl_drv_convert_time_unit; \ -((W).driver_monitor_process) = driver_monitor_process; \ -((W).driver_demonitor_process) = driver_demonitor_process; \ -((W).driver_get_monitored_process) = driver_get_monitored_process; \ -((W).driver_compare_monitors) = driver_compare_monitors;\ -((W).erl_drv_mutex_create) = erl_drv_mutex_create; \ -((W).erl_drv_mutex_destroy) = erl_drv_mutex_destroy; \ -((W).erl_drv_mutex_trylock) = erl_drv_mutex_trylock; \ -((W).erl_drv_mutex_lock) = erl_drv_mutex_lock; \ -((W).erl_drv_mutex_unlock) = erl_drv_mutex_unlock; \ -((W).erl_drv_cond_create) = erl_drv_cond_create; \ -((W).erl_drv_cond_destroy) = erl_drv_cond_destroy; \ -((W).erl_drv_cond_signal) = erl_drv_cond_signal; \ -((W).erl_drv_cond_broadcast) = erl_drv_cond_broadcast; \ -((W).erl_drv_cond_wait) = erl_drv_cond_wait; \ -((W).erl_drv_rwlock_create) = erl_drv_rwlock_create; \ -((W).erl_drv_rwlock_destroy) = erl_drv_rwlock_destroy; \ -((W).erl_drv_rwlock_tryrlock) = erl_drv_rwlock_tryrlock;\ -((W).erl_drv_rwlock_rlock) = erl_drv_rwlock_rlock; \ -((W).erl_drv_rwlock_runlock) = erl_drv_rwlock_runlock; \ -((W).erl_drv_rwlock_tryrwlock) = erl_drv_rwlock_tryrwlock;\ -((W).erl_drv_rwlock_rwlock) = erl_drv_rwlock_rwlock; \ -((W).erl_drv_rwlock_rwunlock) = erl_drv_rwlock_rwunlock;\ -((W).erl_drv_tsd_key_create) = erl_drv_tsd_key_create; \ -((W).erl_drv_tsd_key_destroy) = erl_drv_tsd_key_destroy;\ -((W).erl_drv_tsd_set) = erl_drv_tsd_set; \ -((W).erl_drv_tsd_get) = erl_drv_tsd_get; \ -((W).erl_drv_thread_opts_create) = erl_drv_thread_opts_create;\ -((W).erl_drv_thread_opts_destroy) = erl_drv_thread_opts_destroy;\ -((W).erl_drv_thread_create) = erl_drv_thread_create; \ -((W).erl_drv_thread_self) = erl_drv_thread_self; \ -((W).erl_drv_equal_tids) = erl_drv_equal_tids; \ -((W).erl_drv_thread_exit) = erl_drv_thread_exit; \ -((W).erl_drv_thread_join) = erl_drv_thread_join; \ -((W).erl_drv_putenv) = erl_drv_putenv; \ -((W).erl_drv_getenv) = erl_drv_getenv; \ -} while (0) - - - -#endif /* STATIC_ERLANG_DRIVER */ -#endif /* _ERL_WIN_DYN_DRIVER_H */