void erl_sys_args(int* argc, char** argv) { ASSERT(argc && argv); max_files = erts_check_io_max_files(); init_smp_sig_notify(); init_smp_sig_suspend(); erts_sys_env_init(); }
void erl_sys_args(int* argc, char** argv) { int i, j; erts_smp_rwmtx_init(&environ_rwmtx, "environ"); i = 1; ASSERT(argc && argv); while (i < *argc) { if(argv[i][0] == '-') { switch (argv[i][1]) { #ifdef ERTS_ENABLE_KERNEL_POLL case 'K': { char *arg = get_value(argv[i] + 2, argv, &i); if (strcmp("true", arg) == 0) { erts_use_kernel_poll = 1; } else if (strcmp("false", arg) == 0) { erts_use_kernel_poll = 0; } else { erts_fprintf(stderr, "bad \"K\" value: %s\n", arg); erts_usage(); } break; } #endif case '-': goto done_parsing; default: break; } } i++; } done_parsing: #ifdef ERTS_ENABLE_KERNEL_POLL if (erts_use_kernel_poll) { char no_kp[10]; size_t no_kp_sz = sizeof(no_kp); int res = erts_sys_getenv_raw("ERL_NO_KERNEL_POLL", no_kp, &no_kp_sz); if (res > 0 || (res == 0 && sys_strcmp("false", no_kp) != 0 && sys_strcmp("FALSE", no_kp) != 0)) { erts_use_kernel_poll = 0; } } #endif init_check_io(); #ifdef ERTS_SMP init_smp_sig_notify(); init_smp_sig_suspend(); #endif /* Handled arguments have been marked with NULL. Slide arguments not handled towards the beginning of argv. */ for (i = 0, j = 0; i < *argc; i++) { if (argv[i]) argv[j++] = argv[i]; } *argc = j; }