Exemplo n.º 1
0
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM* vm, void* reserved) {
    JNIEnv* env;
    struct rlimit max_files;
    struct sigaction sa;

    if ((*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_2) != JNI_OK) {
        return JNI_ERR;
    }

    // Check IPv6 support
    use_IPv6 = check_IPv6(env);

    // Cache field ID to access Socket.fd
    f_fd = cache_field(env, "one/nio/net/NativeSocket", "fd", "I");

    // Allocate table for thread pointer per file descriptor
    getrlimit(RLIMIT_NOFILE, &max_files);
    fd_table = (pthread_t*) calloc(max_files.rlim_max, sizeof(pthread_t));

    // Setup dummy signal handler for SIG_WAKEUP, the signal is used to interrupt blocking I/O
    sa.sa_handler = wakeup_handler;
    sa.sa_flags = 0;
    sigemptyset(&sa.sa_mask);
    sigaction(SIG_WAKEUP, &sa, NULL);

    return JNI_VERSION_1_2;
}
Exemplo n.º 2
0
void japron_cache(JNIEnv *env) 
{
  if (japron_cached) return;
  jgmp_cache(env);
  cache_class(japron_string,       "java/lang/String");
  cache_class(japron_mpqscalar,    "apron/MpqScalar");
  cache_class(japron_mpfrscalar,   "apron/MpfrScalar");
  cache_class(japron_doublescalar, "apron/DoubleScalar");
  cache_class(japron_interval,     "apron/Interval");
  cache_class(japron_coeff,        "apron/Coeff");
  cache_class(japron_dimchange,    "apron/Dimchange");
  cache_class(japron_dimperm,      "apron/Dimperm");
  cache_class(japron_linterm0,     "apron/Linterm0");
  cache_class(japron_linexpr0,     "apron/Linexpr0");
  cache_class(japron_lincons0,     "apron/Lincons0");
  cache_class(japron_generator0,   "apron/Generator0");
  cache_class(japron_texpr0bin,    "apron/Texpr0BinNode");
  cache_class(japron_texpr0un,     "apron/Texpr0UnNode");
  cache_class(japron_texpr0dim,    "apron/Texpr0DimNode");
  cache_class(japron_texpr0cst,    "apron/Texpr0CstNode");
  cache_class(japron_texpr0intern, "apron/Texpr0Intern");
  cache_class(japron_tcons0,       "apron/Tcons0");
  cache_class(japron_manager,      "apron/Manager");
  cache_class(japron_abstract0,    "apron/Abstract0");
  cache_class(japron_environment,  "apron/Environment");
  cache_class(japron_dimension,    "apron/Dimension");
  cache_field(japron_mpqscalar_val,     japron_mpqscalar,    "val",     "Lgmp/Mpq;");
  cache_field(japron_mpfrscalar_val,    japron_mpfrscalar,   "val",     "Lgmp/Mpfr;");
  cache_field(japron_doublescalar_val,  japron_doublescalar, "val",     "D");
  cache_field(japron_interval_inf,      japron_interval,     "inf",     "Lapron/Scalar;");
  cache_field(japron_interval_sup,      japron_interval,     "sup",     "Lapron/Scalar;");
  cache_field(japron_dimchange_ptr,     japron_dimchange,    "ptr",     "J");
  cache_field(japron_dimperm_ptr,       japron_dimperm,      "ptr",     "J");
  cache_field(japron_linterm0_dim,      japron_linterm0,     "dim",     "I");
  cache_field(japron_linterm0_coeff,    japron_linterm0,     "coeff",   "Lapron/Coeff;");
  cache_field(japron_linexpr0_ptr,      japron_linexpr0,     "ptr",     "J");
  cache_field(japron_lincons0_expr,     japron_lincons0,     "expr",    "Lapron/Linexpr0;");
  cache_field(japron_lincons0_kind,     japron_lincons0,     "kind",    "I");
  cache_field(japron_lincons0_scalar,   japron_lincons0,     "scalar",  "Lapron/Scalar;");
  cache_field(japron_generator0_coord,  japron_generator0,   "coord",   "Lapron/Linexpr0;");
  cache_field(japron_generator0_kind,   japron_generator0,   "kind",    "I");
  cache_field(japron_texpr0bin_op,      japron_texpr0bin,    "op",      "I");
  cache_field(japron_texpr0bin_rtype,   japron_texpr0bin,    "rtype",   "I");
  cache_field(japron_texpr0bin_rdir,    japron_texpr0bin,    "rdir",    "I");
  cache_field(japron_texpr0bin_larg,    japron_texpr0bin,    "lArg",    "Lapron/Texpr0Node;");
  cache_field(japron_texpr0bin_rarg,    japron_texpr0bin,    "rArg",    "Lapron/Texpr0Node;");
  cache_field(japron_texpr0un_op,       japron_texpr0un,     "op",      "I");
  cache_field(japron_texpr0un_rtype,    japron_texpr0un,     "rtype",   "I");
  cache_field(japron_texpr0un_rdir,     japron_texpr0un,     "rdir",    "I");
  cache_field(japron_texpr0un_arg,      japron_texpr0un,     "arg",     "Lapron/Texpr0Node;");
  cache_field(japron_texpr0cst_cst,     japron_texpr0cst,    "cst",     "Lapron/Coeff;");
  cache_field(japron_texpr0dim_dim,     japron_texpr0dim,    "dim",     "I");
  cache_field(japron_texpr0intern_ptr,  japron_texpr0intern, "ptr",     "J");
  cache_field(japron_tcons0_expr,       japron_tcons0,       "expr",    "Lapron/Texpr0Intern;");
  cache_field(japron_tcons0_kind,       japron_tcons0,       "kind",    "I");
  cache_field(japron_tcons0_scalar,     japron_tcons0,       "scalar",  "Lapron/Scalar;");
  cache_field(japron_manager_ptr,       japron_manager,      "ptr",     "J");
  cache_field(japron_abstract0_ptr,     japron_abstract0,    "ptr",     "J");
  cache_field(japron_environment_ptr,   japron_environment,  "ptr",     "J");
  cache_field(japron_dimension_intdim,  japron_dimension,    "intDim",  "I");
  cache_field(japron_dimension_realdim, japron_dimension,    "realDim", "I");
  cache_init(japron_abstract0);
  cache_init(japron_dimchange);
  cache_init(japron_dimperm);
  cache_init(japron_environment);
  cache_init(japron_linexpr0);
  cache_init(japron_manager);
  cache_init(japron_texpr0intern);
  japron_cached = 1;
}