Ejemplo n.º 1
0
        {
            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)                         \
Ejemplo n.º 2
0
    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*/)
{