コード例 #1
0
void gcc_entry(unsigned int entry, unsigned int init_array_start, unsigned int count) 
{
	unsigned int i;
	__init_array ptr;
	unsigned int size = 0;
	vm_get_sym_entry = (vm_get_sym_entry_t)entry;
	
	size = vm_pmng_get_total_heap_size();

#if defined(__LINKIT_ONE__)
 	 if(size > RESERVED_MEMORY_SIZE)
	 {
		g_memory_size = size - RESERVED_MEMORY_SIZE;		
 	 }
#endif

  g_base_address = vm_malloc(g_memory_size);

  ptr = (__init_array)init_array_start;
  for (i = 1; i < count; i++)
  {
  		ptr[i]();
  }
	vm_main();
}
コード例 #2
0
void gcc_entry(unsigned int entry, unsigned int init_array_start, unsigned int count)
{
  __init_array ptr;
  int i;
  VMUINT size = 0;

  vm_get_sym_entry = (vm_get_sym_entry_t)entry;

  size = vm_get_total_heap_size();

  if(size == 0)
  {
  	base_address = vm_malloc(g_size);
  }
  else
  {
  	if(size > RESERVED_MEMORY_SIZE)
		size -= RESERVED_MEMORY_SIZE;

  	base_address = vm_malloc(size);
    	g_size = size;
  }

  __libc_init_array();

  ptr = (__init_array)init_array_start;

  for (i = 1; i < count; i++)
  {
  		ptr[i]();
  }

  // To read/write file in normal thread, we must firstly read/write file at main thread.
  {
      FILE *pf = fopen("README.md", "w+");
      if (pf != NULL) {
        char buf[32];
        char *project_url = "see https://github.com/xiongyihui/Lua_for_LinkIt_One";
        fwrite(project_url, 1, strlen(project_url), pf);
        fseek(pf, 0, SEEK_SET);
        fread(buf, 1, sizeof(buf), pf);
        fclose(pf);
      }
  }

  vm_main();
}
コード例 #3
0
ファイル: main.c プロジェクト: matianfu/redbank
int main() {

  return vm_main();

}