// // Initialize miTLS. // // Called once ahead of using miTLS // // Returns: 0 for error, nonzero for success // int FFI_mitls_init(void) { char *Argv[2]; // Build a stub argv[] to satisfy caml_Startup() Argv[0] = ""; Argv[1] = NULL; // Initialize the OCaml runtime caml_startup(Argv); // Bind to functions registered via Callback.register from ML #define MITLS_FFI_ENTRY(x) \ g_mitls_FFI_##x = caml_named_value("MITLS_FFI_" # x); \ if (!g_mitls_FFI_##x) { \ return 0; \ } MITLS_FFI_LIST #undef MITLS_FFI_ENTRY // On return from caml_startup(), this thread continues to own // the OCaml global runtime lock as if it was running OCaml code. // Release it, so other threads can call into OCaml. caml_release_runtime_system(); return 1; // success }
int add_two(int x, int y) { /* if the shared lib is being loaded for the first time, call the OCaml initialization */ if (caml_add_two == NULL) { caml_startup(NULL); /* no argv */ caml_add_two = caml_named_value("caml_add_two"); } return Int_val(caml_callback2(*caml_add_two, Val_int(x), Val_int(y))); }
int solo5_app_main(char *cmdline) { printf("Solo5: new bindings\n"); solo5_cmdline = cmdline; caml_startup(unused_argv); return 0; }
extern "C" int monda_init (void) { char* argv[2]; argv[0] = xstrdup("--"); argv[1] = NULL; caml_startup (argv); return 1; }
Hunpos hunpos_tagger_new(const char* model_file, const char* morph_table_file, int max_guessed_tags, int theta, int* error) { *error = 0; if(model_file == NULL) { *error = 3; return NULL; } if(morph_table_file == NULL) { morph_table_file = ""; } /* Startup OCaml */ if (is_initialized == 0) { is_initialized = 1; char* dummyargv[2]; dummyargv[0]=""; dummyargv[1]=NULL; caml_startup(dummyargv); } CAMLparam0(); /* get hunpos init function from ocaml */ static value* init_fun; if (init_fun == NULL) { init_fun = caml_named_value("init_from_files"); } Hunpos tagger_fun = (Hunpos) malloc(sizeof(value)); *((value*)tagger_fun) = 0; // we pass some argument to the function CAMLlocalN ( args, 4 ); args[0] = caml_copy_string(model_file); args[1] = caml_copy_string(morph_table_file); args[2] = Val_int(max_guessed_tags); args[3] = Val_int(theta); /* due to the garbage collector we have to register the */ /* returned value not to be deallocated */ caml_register_global_root(tagger_fun); value* t = tagger_fun; *t = caml_callbackN_exn( *init_fun, 4, args ); if (Is_exception_result(*t)) { *error = 1; CAMLreturnT(Hunpos, NULL); } // CAMLreturn1(tagger_fun) CAMLreturnT(Hunpos,tagger_fun); }
int main(int argc, char **argv) { signal(SIGPIPE, SIG_IGN); ev_default_loop(0); fprintf(stderr, "Main: startup\n"); caml_startup(argv); fprintf(stderr, "Main: entering runloop\n"); ev_loop(0); fprintf(stderr, "Main: end\n"); return 0; }
int main(int argc, char ** argv) { printf("Initializing OCaml code...\n"); #ifdef NO_BYTECODE_FILE caml_startup(argv); #else caml_main(argv); #endif printf("Back in C code...\n"); printf("Computing fib(20)...\n"); printf("%s\n", format_result(fib(20))); return 0; }
/* Must be called before any range functions */ void range_startup() { char *argv[] = { "librange", NULL }; caml_startup(argv); cb_range_parse = caml_named_value("ocaml_parse_range"); cb_range_expand = caml_named_value("ocaml_expand_range"); cb_range_compress = caml_named_value("ocaml_compress_range"); cb_range_expand_sorted = caml_named_value("ocaml_sorted_expand_range"); cb_range_set_altpath = caml_named_value("ocaml_range_set_altpath"); cb_range_clear_caches = caml_named_value("ocaml_clear_caches"); cb_range_want_caching = caml_named_value("ocaml_want_caching"); cb_range_want_warnings = caml_named_value("ocaml_want_warnings"); cb_range_set_warning_callback = caml_named_value("ocaml_set_warning_callback"); }
PyMODINIT_FUNC initfunctionality(void) { char *dummy_argv[] = {0}; caml_startup(dummy_argv); value *create_nsimcore_module = caml_named_value("create_nsimcore_module"); if (create_nsimcore_module == NULL) { fprintf(stderr, "Cannot find create_nsimcore_module.\n"); return; } callback(*create_nsimcore_module, Val_unit); }
void app_main(start_info_t *si) { value *v_main; int caml_completed = 0; local_irq_save(irqflags); caml_startup(argv); v_main = caml_named_value("OS.Main.run"); ASSERT(v_main != NULL); while (caml_completed == 0) { evtchn_poll(); caml_completed = Bool_val(caml_callback(*v_main, Val_unit)); } _exit(0); }
int main() { char *double_array[2]; double_array[0] = (char *)malloc(1); double_array[0][0] = 0; double_array[1] = NULL; caml_startup(double_array); std::string s= mk_string(1); char* p; c_echo (s.c_str(), &p); free(p); return 0; }
void app_main(start_info_t *si) { value *v_main; int caml_completed = 0; local_irq_save(irqflags); caml_startup(argv); v_main = caml_named_value(CAML_ENTRYPOINT); if (v_main == NULL){ printk("ERROR: CAML_ENTRYPOINT %s is NULL\n", CAML_ENTRYPOINT); _exit(1); } while (caml_completed == 0) { caml_completed = Bool_val(caml_callback(*v_main, Val_unit)); } _exit(0); }
void __startup(multiboot_info_t *multiboot, int magic) { extern char end; char * argv[1] = { 0 }; //dprintf("Welcome to Snowflake Serial Debugging!\r\n"); mem_start = (unsigned long)&end; // set up exception and irq handlers idt_init(); //paging_init(); unmask_irq(0); update_mask(); caml_startup(argv); // caml_startup has finished initialising the OS //dprintf("INFO: Startup completed. Exiting startup thread...\r\n"); }
void caml_main(char_os **argv) { caml_startup(argv); }
void init_ocaml( char** argv ) { caml_startup( argv ); }
void IDAOCaml_init_interpreter(char **argv) { caml_startup(argv); caml_callback(*caml_named_value("RolfInnerLoopInit"), Val_unit); }
__declspec(dllexport) void __stdcall start_caml_engine() { char * argv[2]; argv[0] = "--"; argv[1] = NULL; caml_startup(argv); }
void init() { static char* argv[2] = { "python", NULL }; caml_startup(argv); }