/* telnet server */ void telnet_srv() { rt_thread_t tid; if (telnet == RT_NULL) { rt_uint8_t *ptr; telnet = rt_malloc (sizeof(struct telnet_session)); if (telnet == RT_NULL) { rt_kprintf("telnet: no memory\n"); return; } /* init ringbuffer */ ptr = rt_malloc (TELNET_RX_BUFFER); rb_init(&telnet->rx_ringbuffer, ptr, TELNET_RX_BUFFER); /* create rx ringbuffer lock */ telnet->rx_ringbuffer_lock = rt_sem_create("rxrb", 1, RT_IPC_FLAG_FIFO); ptr = rt_malloc (TELNET_TX_BUFFER); rb_init(&telnet->tx_ringbuffer, ptr, TELNET_TX_BUFFER); /* create tx ringbuffer lock */ telnet->tx_ringbuffer_lock = rt_sem_create("txrb", 1, RT_IPC_FLAG_FIFO); /* create network event */ telnet->nw_event = rt_event_create("telnet", RT_IPC_FLAG_FIFO); } tid = rt_thread_create("telnet", telnet_thread, RT_NULL, 2048, 25, 5); if (tid != RT_NULL) rt_thread_startup(tid); }
int init(int& argc, char** argv, const std::string& name, uint32_t options) { ros::init(argc, argv, name, options); node_name = name; srand(time(NULL)); signal(SIGINT, rtros_signal_handler); signal(SIGXCPU, sigxcpu_handler); rt_print_auto_init(1); rt_event_create(&recv_data_msg_event, "recv_data_msg_event", 0, EV_PRIO); return rt_task_shadow(&main_shadow_task, name.c_str(), 0, 0); }
void Commander::Init(const char *name) { rt_thread_t recv_thread; dev = rt_device_find(name); if(dev == RT_NULL) { rt_kprintf("can not find %s!\n", name); return ; } recv_event = rt_event_create("cmdrecv",RT_IPC_FLAG_FIFO); if(recv_event==RT_NULL) { rt_kprintf("commander recv event create error!\n"); return ; } rt_device_set_rx_indicate(dev,data_rx_callback); rt_device_open(dev,RT_DEVICE_FLAG_INT_RX|RT_DEVICE_FLAG_RDWR); recv_thread = rt_thread_create("cmd_recv",recv_thread_entry,RT_NULL,1024,12,5); if(recv_thread != RT_NULL) rt_thread_startup(recv_thread); }
void hm_heatcal_thread_entry(void* parameter) { rt_uint32_t event_set = 0; float heat_used = 0; cal_event = rt_event_create("H_cal", RT_IPC_FLAG_FIFO); RT_ASSERT(cal_event); while(1) { if(rt_event_recv(cal_event, TDC_DATA_FULL_EVENT, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &event_set)==RT_EOK) { if((rt_mutex_take(temp_lock, rt_tick_from_millisecond(LOCK_TACK_WAIT_TIME_MS)) || (rt_mutex_take(tof_lock, rt_tick_from_millisecond(LOCK_TACK_WAIT_TIME_MS)))) != RT_EOK) { rt_kprintf("TOF and temprature take lock error\n"); } heat_used += do_heat_cal(); rt_mutex_release(tof_lock); rt_mutex_release(temp_lock); heat_print(heat_used); } } }
int main(void) { unsigned long long before; RT_ALARM nalrm; RT_BUFFER nbuf; RT_COND ncond; RT_EVENT nevt; RT_HEAP nheap; RT_MUTEX nmtx; RT_PIPE npipe; RT_QUEUE nq; RT_SEM nsem; RT_TASK ntsk; int failed = 0; mlockall(MCL_CURRENT|MCL_FUTURE); rt_print_auto_init(1); rt_fprintf(stderr, "Checking for leaks in native skin services\n"); before = get_used(); check_native(rt_alarm_create(&nalrm, NULL)); check_native(rt_alarm_delete(&nalrm)); check_used("alarm", before, failed); before = get_used(); check_native(rt_buffer_create(&nbuf, NULL, 16384, B_PRIO)); check_native(rt_buffer_delete(&nbuf)); check_used("buffer", before, failed); before = get_used(); check_native(rt_cond_create(&ncond, NULL)); check_native(rt_cond_delete(&ncond)); check_used("cond", before, failed); before = get_used(); check_native(rt_event_create(&nevt, NULL, 0, EV_PRIO)); check_native(rt_event_delete(&nevt)); check_used("event", before, failed); before = get_used(); check_native(rt_heap_create(&nheap, "heap", 16384, H_PRIO | H_SHARED)); check_native(rt_heap_delete(&nheap)); check_used("heap", before, failed); before = get_used(); check_native(rt_mutex_create(&nmtx, NULL)); check_native(rt_mutex_delete(&nmtx)); check_used("mutex", before, failed); before = get_used(); check_native(rt_pipe_create(&npipe, NULL, P_MINOR_AUTO, 0)); check_native(rt_pipe_delete(&npipe)); check_used("pipe", before, failed); before = get_used(); check_native(rt_queue_create(&nq, "queue", 16384, Q_UNLIMITED, Q_PRIO)); check_native(rt_queue_delete(&nq)); check_used("queue", before, failed); before = get_used(); check_native(rt_sem_create(&nsem, NULL, 0, S_PRIO)); check_native(rt_sem_delete(&nsem)); check_used("sem", before, failed); before = get_used(); check_native(rt_task_spawn(&ntsk, NULL, 0, 1, T_JOINABLE, empty, NULL)); check_native(rt_task_join(&ntsk)); sleep(1); /* Leave some time for xnheap * deferred free */ check_used("task", before, failed); return failed ? EXIT_FAILURE : EXIT_SUCCESS; }
int rt_event_create(RT_EVENT *event, const char *name, unsigned long ivalue, int mode) { return __CURRENT(rt_event_create(event, name, ivalue, mode)); }