/* * Initialization. * * minithread_system_initialize: * This procedure should be called from your C main procedure * to turn a single threaded UNIX process into a multithreaded * program. * * Initialize any private data structures. * Create the idle thread. * Fork the thread which should call mainproc(mainarg) * Start scheduling. * */ void minithread_system_initialize(proc_t mainproc, arg_t mainarg) { minithread_t clean_up_thread = NULL; int a = 0; void* dummy_ptr = NULL; minithread_t tmp = NULL; tmp = NULL; dummy_ptr = (void*)&a; current_id = 0; // the next thread id to be assigned id_lock = semaphore_create(); semaphore_initialize(id_lock,1); runnable_q = multilevel_queue_new(4); blocked_q = queue_new(); blocked_q_lock = semaphore_create(); semaphore_initialize(blocked_q_lock,1); dead_q = queue_new(); dead_q_lock = semaphore_create(); semaphore_initialize(dead_q_lock,1); dead_sem = semaphore_create(); semaphore_initialize(dead_sem,0); runnable_q_lock = semaphore_create(); semaphore_initialize(runnable_q_lock,1); clean_up_thread = minithread_create(clean_up, NULL); multilevel_queue_enqueue(runnable_q, clean_up_thread->priority,clean_up_thread); runnable_count++; minithread_clock_init(TIME_QUANTA, (interrupt_handler_t)clock_handler); init_alarm(); current_thread = minithread_create(mainproc, mainarg); minithread_switch(&dummy_ptr, &(current_thread->stacktop)); return; }
/*! * @brief initialize all * @return 0 */ int init_battery_meter() { /* init the leds */ init_leds(); /* init the alarm*/ init_alarm(); return 0; }
/* * Initialise comms and accelerometer */ void init_morpheuz(Window *window) { init_alarm(); open_comms(); // Accelerometer accel_data_service_subscribe(25, accel_data_handler); accel_service_set_sampling_rate(ACCEL_SAMPLING_10HZ); // Set click provider window_set_click_config_provider(window, (ClickConfigProvider) click_config_provider); // Set the smart status set_smart_status(); }
struct tcp_sock *tcp_client_create(struct tcp_conf *c) { struct tcp_sock *m; m = calloc(sizeof(struct tcp_sock), 1); if (m == NULL) return NULL; m->conf = c; if (tcp_client_init(m, c) == -1) { free(m); return NULL; } init_alarm(&tcp_connect_alarm, NULL, tcp_connect_alarm_cb); return m; }
void timer_driver_thread(void) { printk("%s%d","timer:",current_pcb->s->value); static struct Message m; init_100hz_timer(); init_alarm(); add_irq_handle(0, timer_intr); while (TRUE) { receive(ANY, &m); switch (m.type) { case TIMER_SET_ALRM: lock(); new_alarm(m.int_msg.p1, m.int_msg.p2); unlock(); } } panic("timer\n"); }
void kermit_send(int fd_out, int fd_in, char *file_list[], int list_size) { unsigned char buffer[0x64], response[0x64]; unsigned char len, seq; int i, file, response_length; char *ptr; tabel = tabelcrc(CRCCCITT); seq = 0; init_alarm(); me.maxl = 79; me.time = 3; me.npad = 0; me.padc = 0x00; me.eol = '\r'; me.qctl = '#'; me.qbin = '&'; me.chkt = '1'; me.rept = '~'; len = 9 + 4; set_settings(buffer, me); set_hf_send_packet(fd_out, fd_in, buffer, len, &seq, 'S', response, &response_length); get_settings(response, &you); for(i = 0; i < list_size; i++) { file = open(file_list[i], O_RDONLY); if(file == -1) { fprintf(stderr, "sender: the file %s could not be opened\n", file_list[i]); continue; } ptr = strrchr(file_list[i], '/'); if(ptr == NULL) { len = strlen(file_list[i]); memcpy(buffer + 4, file_list[i], len); } else { len = strlen(ptr + 1); memcpy(buffer + 4, ptr + 1, len); } len += 4; set_hf_send_packet(fd_out, fd_in, buffer, len, &seq, 'F', response, &response_length); fprintf(stderr, "sender: sending file %s\n", file_list[i]); send_file_data(fd_out, fd_in, file, &seq); len = 4; set_hf_send_packet(fd_out, fd_in, buffer, len, &seq, 'Z', response, &response_length); close(file); } len = 4; set_hf_send_packet(fd_out, fd_in, buffer, len, &seq, 'B', response, &response_length); free(tabel); }
void init() { sigset_t sigmask; sigemptyset(&sigmask); sigaddset(&sigmask, SIGALRM); sigaddset(&sigmask, SIGUSR1); sigprocmask(SIG_BLOCK, &sigmask, NULL); console_print("Emergence Client " VERSION "\n"); SDL_Init(SDL_INIT_AUDIO); init_user(); init_network(); init_timer(); init_openssl(); init_key(); init_download(); init_servers(); create_cvars(); init_console_cvars(); init_render_cvars(); init_map_cvars(); create_control_cvars(); // create_input_cvars(); init_tick_cvars(); init_console(); create_colour_cvars(); struct string_t *string = new_string_string(emergence_home_dir); string_cat_text(string, "/client.config"); if(!exec_config_file(string->text)) { exec_config_file(find_resource("default-controls.config")); } else { char *ver = get_cvar_string("version"); if(*ver == '\0') { struct string_t *command = new_string_text("rm "); string_cat_string(command, emergence_home_dir); string_cat_text(command, "/skins/default.skin*"); console_print("%s\n", command->text); system(command->text); vid_mode = -1; // find a nice mode exec_config_file(find_resource("default-controls.config")); } free(ver); } free_string(string); set_cvar_string("version", VERSION); init_skin(); init_input(); init_control(); init_render(); init_rcon(); init_ping(); create_cvar_command("quit", client_shutdown_char); init_sound(); init_game(); init_alarm(); render_frame(); string = new_string_text("%s%s", emergence_home_dir->text, "/client.autoexec"); if(!exec_config_file(string->text)) exec_config_file(find_resource("default-client.autoexec")); free_string(string); start_server_discovery(); }
int main (int argc, char **argv) { int agentx_subagent = AGENT_TRUE; char c; int rc = 0; pid_t child; /* change this if you want to be a SNMP master agent */ while ((c = getopt (argc, argv, "fds?")) != EOF) switch (c) { case 'f': do_fork = AGENT_TRUE; break; case 'd': debug_register_tokens (AGENT); snmp_enable_stderrlog (); snmp_set_do_debugging (1); break; break; case 's': do_syslog = AGENT_FALSE; break; default: printf ("Usage %s [-dfs]\n", argv[0]); printf ("where -d enables debug mode\n"); printf ("where -f enables forking\n"); printf ("where -s disables logging via syslog facility.\n"); exit (1); } init_snmp_logging (); if (do_syslog == AGENT_TRUE) { snmp_enable_calllog (); snmp_enable_syslog_ident (AGENT, LOG_DAEMON); } snmp_log (LOG_INFO, "Starting %s\n", version); /* we're an agentx subagent? */ if (agentx_subagent) { /* make us a agentx client. */ rc = netsnmp_ds_set_boolean (NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1); } /* initialize the agent library */ rc = init_agent (AGENT); if (rc != 0) { snmp_log (LOG_ERR, "Could not initialize connection to SNMP daemon. \n" "Perhaps you are running %s as non-root?\n", argv[0]); exit (rc); } /* Read configuration information here, before we initialize */ snmpd_register_config_handler (TRAPS_TOKEN, hpiSubagent_parse_config_traps, NULL, "hpiSubagent on/off switch for sending events upon startup"); snmpd_register_config_handler (INTERVAL_TOKEN, hpiSubagent_parse_config_interval, NULL, "hpiSubagent time in seconds before HPI API is queried for information."); snmpd_register_config_handler (MAX_EVENT_TOKEN, hpiSubagent_parse_config_max_event, NULL, "hpiSubagent MAX number of rows for Events."); init_snmp (AGENT); /* Initialize tables */ initialize_table_saHpiTable (); initialize_table_saHpiRdrTable (); initialize_table_saHpiSensorTable (); initialize_table_saHpiCtrlTable (); initialize_table_saHpiInventoryTable (); initialize_table_saHpiWatchdogTable (); initialize_table_saHpiHotSwapTable (); initialize_table_saHpiSystemEventLogTable (); initialize_table_saHpiEventTable (); initialize_table_saHpiSensorReadingCurrentTable (); initialize_table_saHpiSensorReadingMaxTable (); initialize_table_saHpiSensorReadingMinTable (); initialize_table_saHpiSensorReadingNominalTable (); initialize_table_saHpiSensorReadingNormalMaxTable (); initialize_table_saHpiSensorReadingNormalMinTable (); initialize_table_saHpiSensorThdLowCriticalTable (); initialize_table_saHpiSensorThdLowMajorTable (); initialize_table_saHpiSensorThdLowMinorTable (); initialize_table_saHpiSensorThdUpCriticalTable (); initialize_table_saHpiSensorThdUpMajorTable (); initialize_table_saHpiSensorThdUpMinorTable (); initialize_table_saHpiSensorThdNegHysteresisTable (); initialize_table_saHpiSensorThdPosHysteresisTable (); if (send_traps_on_startup == AGENT_TRUE) send_traps = AGENT_TRUE; if (populate_rpt () != AGENT_ERR_NOERROR) { snmp_log (LOG_ERR, "Could not retrieve RPT entries. Exiting\n."); rc = -1; goto stop; } populate_event (); if (init_alarm () != AGENT_ERR_NOERROR) { snmp_log (LOG_ERR, "Could not start our internal loop . Exiting\n."); rc = -1; goto stop; } send_traps = AGENT_TRUE; /* If we're going to be a snmp master agent, initial the ports */ if (!agentx_subagent) init_master_agent (); /* open the port to listen on (defaults to udp:161) */ if (do_fork == AGENT_TRUE) { if ((child = fork ()) < 0) { snmp_log (LOG_ERR, "Could not fork!\n"); exit (-1); } if (child != 0) exit (0); } /* In case we recevie a request to stop (kill -TERM or kill -INT) */ keep_running = 1; signal (SIGTERM, stop_server); signal (SIGINT, stop_server); /* you're main loop here... */ while (keep_running) { /* if you use select(), see snmp_select_info() in snmp_api(3) */ /* --- OR --- */ rc = agent_check_and_process (1); /* 0 == don't block */ } stop: /* at shutdown time */ snmp_log (LOG_INFO, "Stopping %s\n", version); snmp_shutdown (AGENT); return rc; }
int main (int argc, char **argv) { int agentx_subagent = AGENT_TRUE; int c; int rc = 0; SaErrorT rv = SA_OK; SaHpiVersionT hpiVer; SaHpiSessionIdT sessionid; SaHpiDomainInfoT domain_info; SaHpiBoolT run_threaded = TRUE; pid_t child; char * env; /* change this if you want to be a SNMP master agent */ debug_register_tokens (AGENT); snmp_enable_stderrlog (); snmp_set_do_debugging (1); while ((c = getopt (argc, argv, "fdsCx:h?")) != EOF) { switch (c) { case 'f': do_fork = AGENT_TRUE; break; case 'd': debug_register_tokens (AGENT); snmp_enable_stderrlog (); snmp_set_do_debugging (1); break; case 's': do_syslog = AGENT_FALSE; break; case 'C': netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DONT_READ_CONFIGS, 1); break; case 'x': netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET, optarg); break; case 'h': default: usage(argv[0]); exit(1); break; } } if (do_syslog == AGENT_TRUE) { snmp_enable_calllog (); snmp_enable_syslog_ident (AGENT, LOG_DAEMON); } snmp_log (LOG_INFO, "Starting %s\n", version); /* we're an agentx subagent? */ if (agentx_subagent) { /* make us a agentx client. */ rc = netsnmp_ds_set_boolean (NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1); } /* initialize the agent library */ rc = init_agent (AGENT); if (rc != 0) { snmp_log (LOG_ERR, "Could not initialize connection to SNMP daemon. \n" "Perhaps you are running %s as non-root?\n", argv[0]); exit (rc); } /* Read configuration information here, before we initialize */ snmpd_register_config_handler (TRAPS_TOKEN, hpiSubagent_parse_config_traps, NULL, "hpiSubagent on/off switch for sending events upon startup"); snmpd_register_config_handler (MAX_EVENT_TOKEN, hpiSubagent_parse_config_max_event, NULL, "hpiSubagent MAX number of rows for Events."); init_snmp (AGENT); /* * Initialize HPI library */ hpiVer = saHpiVersionGet(); DEBUGMSGTL ((AGENT, "Hpi Version %d Implemented.\n", hpiVer)); rv = saHpiSessionOpen( SAHPI_UNSPECIFIED_DOMAIN_ID, &sessionid, NULL ); if (rv != SA_OK) { DEBUGMSGTL ((AGENT, "saHpiSessionOpen Error: returns %s\n", oh_lookup_error(rv))); exit(-1); } DEBUGMSGTL ((AGENT, "saHpiSessionOpen returns with SessionId %d\n", sessionid)); /* Get the DomainInfo structur, This is how we get theDomainId for this Session */ rv = saHpiDomainInfoGet(sessionid, &domain_info); if (rv != SA_OK) { DEBUGMSGTL ((AGENT, "saHpiSessionOpen Error: returns %s\n", oh_lookup_error(rv))); exit(-1); } /* store session numbers */ store_session_info(sessionid, domain_info.DomainId); /* subscribe all sessions/events */ subcsribe_all_sessions(); /* Resource discovery */ rv = saHpiDiscover(sessionid); if (rv != SA_OK) { DEBUGMSGTL ((AGENT, "saHpiDiscover Error: returns %s\n",oh_lookup_error(rv))); exit(-1); } DEBUGMSGTL ((AGENT, "saHpiDiscover Success!\n")); /* Initialize subagent tables */ init_saHpiDomainInfoTable(); init_saHpiDomainAlarmTable(); init_saHpiDomainReferenceTable(); init_saHpiResourceTable(); init_saHpiRdrTable(); init_saHpiCtrlDigitalTable(); init_saHpiCtrlDiscreteTable(); init_saHpiCtrlAnalogTable(); init_saHpiCtrlStreamTable(); init_saHpiCtrlTextTable(); init_saHpiCtrlOemTable(); init_saHpiSensorTable(); init_saHpiCurrentSensorStateTable(); init_saHpiSensorReadingMaxTable(); init_saHpiSensorReadingMinTable(); init_saHpiSensorReadingNominalTable(); init_saHpiSensorReadingNormalMaxTable(); init_saHpiSensorReadingNormalMinTable(); init_saHpiSensorThdLowCriticalTable(); init_saHpiSensorThdLowMajorTable(); init_saHpiSensorThdLowMinorTable(); init_saHpiSensorThdUpCriticalTable(); init_saHpiSensorThdUpMajorTable(); init_saHpiSensorThdUpMinorTable(); init_saHpiSensorThdPosHysteresisTable(); init_saHpiSensorThdNegHysteresisTable(); init_saHpiInventoryTable(); init_saHpiWatchdogTable(); init_saHpiAnnunciatorTable(); init_saHpiAreaTable(); init_saHpiFieldTable(); init_saHpiEventTable(); init_saHpiResourceEventTable(); init_saHpiDomainEventTable(); init_saHpiSensorEventTable(); init_saHpiOEMEventTable(); init_saHpiHotSwapEventTable(); init_saHpiWatchdogEventTable(); init_saHpiSoftwareEventTable(); init_saHpiSensorEnableChangeEventTable(); init_saHpiUserEventTable(); init_saHpiEventLogInfoTable(); init_saHpiEventLogTable(); init_saHpiResourceEventLogTable(); init_saHpiSensorEventLogTable(); init_saHpiHotSwapEventLogTable(); init_saHpiWatchdogEventLogTable(); init_saHpiSoftwareEventLogTable(); init_saHpiOEMEventLogTable(); init_saHpiUserEventLogTable(); init_saHpiSensorEnableChangeEventLogTable(); init_saHpiDomainEventLogTable(); init_saHpiHotSwapTable(); init_saHpiAutoInsertTimeoutTable(); init_saHpiAutoInsertTimeoutTable(); init_saHpiAnnouncementTable(); init_saHpiAnnouncementEventLogTable(); if (send_traps_on_startup == AGENT_TRUE) send_traps = AGENT_TRUE; /* after initialization populate tables */ populate_saHpiDomainInfoTable(sessionid); populate_saHpiDomainAlarmTable(sessionid); poplulate_saHpiDomainReferenceTable(sessionid); populate_saHpiResourceTable(sessionid); /* populate_saHpiResourceTable() calls: * populate_saHpiRdrTable(); calls: * populate_saHpiCtrlDigitalTable(); * populate_saHpiCtrlDiscreteTable(); * populate_saHpiCtrlAnalogTable(); * populate_saHpiCtrlStreamTable(); * populate_saHpiCtrlTextTable(); * populate_saHpiCtrlOemTable(); * populate_saHpiSensorTable(); * populate_saHpiSesnorReadingMaxTable(); * populate_saHpiSesnorReadingMinTable(); * populate_saHpiSesnorReadingNominalTable(); * populate_saHpiSesnorReadingNormalMaxTable(); * populate_saHpiSesnorReadingNormalMinTable(); * populate_saHpiSensorThdLowCriticalTable(); * populate_saHpiSensorThdLowMajorTable(); * populate_saHpiSensorThdLowMinorTable(); * populate_saHpiSensorThdUpCriticalTable(); * populate_saHpiSensorThdUpMajorTable(); * populate_saHpiSensorThdUpMinorTable(); * populate_saHpiSensorThdPosHysteresisTable(); * populate_saHpiSensorThdNegHysteresisTable(); * populate_saHpiCurrentSensorStateTable(); * populate_saHpiInventoyTable(); * populate_saHpiWatchdogTable(); * populate_saHpiAnnunciatorTable(); * populate_saHpiAreaTable(); * populate_saHpiFieldTable(); * populate_saHpiHotSwapTable(); * populate_saHpiAutoInsertTimeoutTable(); * populate_saHpiAnnouncementTable(); */ populate_saHpiEventTable(sessionid); /* populate_saHpiResourceEventTable(); * populate_saHpiDomainEventTable(); * populate_saHpiSensorEventTable(); * populate_saHpiOemEventTable(); * populate_saHpiHotSwapEventTable(); * populate_saHpiWatchdogEventTable(); * populate_saHpiSoftwareEventTable(); * populate_saHpiSensorEnableChangeEventTable(); * populate_saHpiUserEventTable(); */ populate_saHpiEventLogInfo(sessionid); populate_saHpiEventLog (sessionid); /* * populate_saHpiResourceEventLogTable(); * populate_saHpiSensorEventLogTable(); * populate_saHpiHotSwapEventLogTable(); * populate_saHpiWatchdogEventLogTable(); * populate_saHpiSoftwareEventLogTable(); * populate_saHpiOemEventLogTable(); * populate_saHpiUserEventLogTable(); * populate_saHpiSensorEnableChangeEventLogTable(); * populate_saHpiDomainEventLogTable(); */ /* Determine whether or not we're in threaded mode */ env = getenv("OPENHPI_THREADED"); if ((env == (char *)NULL) || (strcmp(env, "NO") == 0)) { DEBUGMSGTL ((AGENT, "Running in nonthreaded mode. Configuring polling mechanism\n")); run_threaded = SAHPI_FALSE; if (init_alarm() != AGENT_ERR_NOERROR) { snmp_log (LOG_ERR, "Could not initialize polling mechanism. Exiting\n."); rc = -1; goto stop; } } else { DEBUGMSGTL ((AGENT, "Running in threaded mode. Spawing thread\n")); /* start event thread */ set_run_threaded(TRUE); if (start_event_thread(&sessionid) != AGENT_ERR_NOERROR) { snmp_log (LOG_ERR, "Could not start our internal loop . Exiting\n."); rc = -1; goto stop; } } send_traps = AGENT_TRUE; /* If we're going to be a snmp master agent, initial the ports */ if (!agentx_subagent) init_master_agent (); /* open the port to listen on (defaults to udp:161) */ if (do_fork == AGENT_TRUE) { if ((child = fork ()) < 0) { snmp_log (LOG_ERR, "Could not fork!\n"); exit (-1); } if (child != 0) exit (0); } /* In case we recevie a request to stop (kill -TERM or kill -INT) */ keep_running = 1; signal (SIGTERM, stop_server); signal (SIGINT, stop_server); /* you're main loop here... */ while (keep_running) { /* if you use select(), see snmp_select_info() in snmp_api(3) */ /* --- OR --- */ rc = agent_check_and_process (1); } stop: DEBUGMSGTL ((AGENT, "WARNING: closeSaHpiSession: hpiSubagent.c: nolong implemented!")); //closeSaHpiSession(); /* at shutdown time */ snmp_log (LOG_INFO, "Stopping %s\n", version); snmp_shutdown (AGENT); return rc; }