示例#1
0
文件: service.c 项目: AzerTyQsdF/osx
int service95_main(int (*main_fn)(int, char **), int argc, char **argv, 
		   char *display_name)
{
    /* Windows 95/98 */
    char *service_name;

    ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_INFO, NULL,
                 "Hooking up the service monitor to watch for shutdown.");

    is_service = 1;
    die_on_logoff = FALSE;

    /* Set up the Win9x server name, as WinNT would */
    ap_server_argv0 = globdat.name = display_name;

    /* Remove spaces from display name to create service name */
    service_name = strdup(display_name);
    ap_remove_spaces(service_name, display_name);

    /* Prevent holding open the (hidden) console */
    real_exit_code = 0;

    Windows9xServiceCtrlHandler(ap_control_handler, service_name);

    atexit(stop_service_monitor);
    
    /* Run the service */
    globdat.exit_status = main_fn(argc, argv);

    return (globdat.exit_status);
}
示例#2
0
文件: main.cpp 项目: Raekye/hmmm
void run_code(const char* code) {
	NExpression* root_expr = getAST(code);
	if (root_expr == NULL) {
		std::cout << "Root expression was null! Ahhhhhhhhhhhhh!" << std::endl;
		return;
	}

	std::string error_str;
	llvm::Module* module = new llvm::Module("top", llvm::getGlobalContext());
	llvm::ExecutionEngine* execution_engine = llvm::EngineBuilder(module).setErrorStr(&error_str).setEngineKind(llvm::EngineKind::JIT).create();
	CodeGen code_gen(module);

	std::cout << "execution engine " << execution_engine << std::endl;
	if (execution_engine == NULL) {
		std::cout << "Unable to create execution engine." << std::endl;
		return;
	}

	NFunction main_fn(root_expr, NType::int_ty());

	// llvm::Value* root_val = root_expr->gen_code(&code_gen);

	// std::cout << "Root val code:" << std::endl;
	// root_val->dump();

	llvm::Function* main_fn_val = (llvm::Function*) main_fn.gen_code(&code_gen);
	std::cout << "Main fn code:" << std::endl;
	main_fn_val->dump();
	void* fn_ptr = execution_engine->getPointerToFunction(main_fn_val);
	int32_t (*fn_ptr_native)() = (int32_t (*)()) fn_ptr;
	int32_t ret = fn_ptr_native();
	std::cout << "Main fn at " << fn_ptr << "; executed: " << ret << std::endl;
}
示例#3
0
文件: compiler.cpp 项目: Raekye/hmmm
void Compiler::run_code(ASTNode* root) {
	std::vector<ASTNodeDeclaration*>* args = new std::vector<ASTNodeDeclaration*>();
	ASTNodeFunctionPrototype* main_fn_prototype = new ASTNodeFunctionPrototype("Int", "main", args);
	ASTNodeFunction main_fn(main_fn_prototype, (ASTNodeBlock*) root);
	main_fn.pass_types(&this->code_gen_context, NULL);
	llvm::Function* main_fn_val = (llvm::Function*) main_fn.gen_code(&this->code_gen_context);
	void* fn_ptr = this->execution_engine->getPointerToFunction(main_fn_val);
	int32_t ret = ((int32_t (*)()) fn_ptr)();
	std::cout << "Main fn at " << fn_ptr << "; executed: " << ret << std::endl;
}
示例#4
0
int main(void)
{
    const float rain[YEARS][MONTHS] =
            {
                    {4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},
                    {8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},
                    {9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},
                    {7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},
                    {7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}
            };
    main_fn(rain);

    return 0;
}