{ return enif_make_tuple2(env, enif_make_atom(env, "error"), enif_make_atom(env, erl_errno_id(errno))); } return enif_make_tuple3(env, enif_make_atom(env, "ok"), enif_make_ulong(env, value.tv_sec), enif_make_ulong(env, value.tv_nsec)); } static ErlNifFunc nif_funcs[] = { #if DIRTY_SCHEDULERS_VERSION == 0 {"perf_counter_value", 0, NIF_NAME(perf_counter_value)} #else {"perf_counter_value", 0, NIF_NAME(perf_counter_value), 0} #endif }; #if defined __cplusplus } #endif #if DIRTY_SCHEDULERS_VERSION == 1 #undef ERL_NIF_INIT #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) \
if (::setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(sndbuf)) == -1) { return ::enif_make_tuple2(env, ::enif_make_atom(env, "error"), ::enif_make_atom(env, ::erl_errno_id(errno))); } return ::enif_make_atom(env, "ok"); } static ErlNifFunc nif_funcs[] = { #if DIRTY_SCHEDULERS_VERSION == 0 { "local", 1, NIF_NAME(local)}, { "set", 2, NIF_NAME(set)}, { "setsockopts", 3, NIF_NAME(setsockopts)} #else { "local", 1, NIF_NAME(local), 0}, { "set", 2, NIF_NAME(set), 0}, { "setsockopts", 3, NIF_NAME(setsockopts), 0} #endif }; static void * local_thread(void * /*data*/); static int on_load(ErlNifEnv * /*env*/, void ** /*priv_data*/, ERL_NIF_TERM /*load_info*/) {