static void notify_act(Widget w, XEvent *event, String *params, Cardinal *n) { CtrlWidget cw = (CtrlWidget)w; CtrlPart *c = & cw->ctrl; TF(); if( ! c->isflip ) { c->msg.cmd = MSG_FIRE; XtCallCallbacks( w, XtNcallback, (XtPointer) & c->msg ); } else { if( c->msg.state == STATE_ARMED ) { c->msg.state = STATE_SELECTED; c->msg.cmd = MSG_FIRE; XtCallCallbacks( w, XtNcallback, (XtPointer) & c->msg ); } else { c->msg.state = STATE_ARMED; /* make virtual keyboard visible */ vis_setup_slider_t msg; msg.min = c->msg.min_value; msg.max = c->msg.max_value; msg.cur = c->msg.value; sig_send( w, VIS_SETUP_SLIDER, &msg ); } } expose(w, NULL, 0); }
static void button_handle_keyboard_event(widget_t *widget, kbd_event_t event) { button_t *btn = (button_t *) widget; if (event.key == KC_ENTER && event.type == KEY_PRESS) { sig_send(&btn->clicked, NULL); } }
int usys_kill(int *err, uuprocess_t *u, int pid, int sig) { (void) u; hal_mutex_lock(&proc_lock); //panic("kill is not implemented"); uuprocess_t * p = proc_by_pid(pid); if(!p) { hal_mutex_unlock(&proc_lock); *err = ESRCH; return -1; } //int ret = 0; sig_send( &p->signals, sig ); hal_mutex_unlock(&proc_lock); //if(ret) *err = EINVAL; //return ret; return 0; }
void kernel_footprint(void) { init(); // generate code for process struct Process *p = proc_new(proc1_main, 0, sizeof(proc1_stack), proc1_stack); proc_setPri(p, 5); proc_yield(); // generate code for msg Msg msg; msg_initPort(&in_port, event_createSignal(p, SIG_USER1)); msg_put(&in_port, &msg); msg_peek(&in_port); Msg *msg_re = msg_get(&in_port); msg_reply(msg_re); // generate code for signals sig_send(p, SIG_USER0); // generate code for msg Semaphore sem; sem_init(&sem); sem_obtain(&sem); sem_release(&sem); sig_wait(SIG_USER0); }
static void remove_entity(SIGNALING_ENTITY *sig) { struct atmsvc_msg msg; msg.type = as_terminate; sig_send(sig,&msg); dsp_fd_remove(sig->s); (void) close(sig->s); }
static void NORETURN lp_process(void) { while (1) { start = get_hp_ticks(); sig_send(hp_proc, SIG_USER0); sig_wait(SIG_USER0); } }
static void NORETURN hp_process(void) { while (1) { sig_wait(SIG_USER0); end = get_hp_ticks(); timer_delay(100); sig_send(lp_proc, SIG_USER0); } }
static void reset_act(Widget w, XEvent* e, String* s, Cardinal* n) { CtrlWidget cw = (CtrlWidget)w; CtrlPart *c = & cw->ctrl; TF(); if( c->msg.state == STATE_NORMAL ) return; c->msg.state = STATE_NORMAL; expose(w, NULL, 0); /* disable virtual keyboard */ sig_send( w, VIS_REMOVE_SLIDER, NULL ); }
static void button_handle_position_event(widget_t *widget, pos_event_t event) { button_t *btn = (button_t *) widget; widget->window->focus = widget; // TODO make the click logic more robust (mouse grabbing, mouse moves) if (event.btn_num == 1) { if (event.type == POS_RELEASE) { sig_send(&btn->clicked, NULL); } } }
static void NORETURN hp_process(void) { while (1) { sig_wait(SIG_USER0); #if CONFIG_USE_LED LED_ON(); #endif #if CONFIG_USE_HP_TIMER end = timer_hw_hpread(); #endif sig_send(main_proc, SIG_USER0); } }
void NORETURN context_switch(void) { IRQ_ENABLE; timer_init(); proc_init(); #if CONFIG_USE_HP_TIMER ser_init(&out, CONFIG_CTX_DEBUG_PORT); ser_setbaudrate(&out, CONFIG_CTX_DEBUG_BAUDRATE); #endif #if CONFIG_USE_LED LED_INIT(); #endif proc_forbid(); hp_proc = proc_new(hp_process, NULL, PROC_STACK_SIZE, hp_stack); lp_proc = proc_new(lp_process, NULL, PROC_STACK_SIZE, lp_stack); main_proc = proc_current(); proc_setPri(hp_proc, 2); proc_setPri(lp_proc, 1); proc_permit(); while (1) { timer_delay(100); sig_send(lp_proc, SIG_USER0); sig_wait(SIG_USER0); #if CONFIG_USE_HP_TIMER kfile_printf(&out.fd, "Switch: %lu.%lu usec\n\r", hptime_to_us((end - start)), hptime_to_us((end - start) * 1000) % 1000); #endif } }
static void led_test(UNUSED_ARG(Bitmap *, bm)) { led_blinking = !led_blinking; sig_send(led_proc, SIG_USER0); }
void hadarp_wakePolifemo(void) { sig_send(hadarp_proc, SIG_POLIFEMO); }