Exemplo n.º 1
0
//
// 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
}
Exemplo n.º 2
0
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)));
}
Exemplo n.º 3
0
int solo5_app_main(char *cmdline)
{
    printf("Solo5: new bindings\n");

    solo5_cmdline = cmdline;
    caml_startup(unused_argv);

    return 0;
}
Exemplo n.º 4
0
extern "C" int
monda_init (void)
{
  char* argv[2];
  argv[0] = xstrdup("--");
  argv[1] = NULL;
  caml_startup (argv);
  return 1;
}
Exemplo n.º 5
0
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);

  }
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
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;
}
Exemplo n.º 8
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");
}
Exemplo n.º 9
0
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);
}
Exemplo n.º 10
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("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);
}
Exemplo n.º 11
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;
}
Exemplo n.º 12
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);
}
Exemplo n.º 13
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");
}
Exemplo n.º 14
0
void caml_main(char_os **argv)
{
  caml_startup(argv);
}
Exemplo n.º 15
0
void init_ocaml( char** argv )
{
    caml_startup( argv );
}
Exemplo n.º 16
0
void IDAOCaml_init_interpreter(char **argv)
{
  caml_startup(argv);
  caml_callback(*caml_named_value("RolfInnerLoopInit"), Val_unit);
}
Exemplo n.º 17
0
__declspec(dllexport) void __stdcall start_caml_engine() {
  char * argv[2];
  argv[0] = "--";
  argv[1] = NULL;
  caml_startup(argv);
}
Exemplo n.º 18
0
void init() {
  static char* argv[2] = { "python", NULL };
  caml_startup(argv);
}