void cmd_retval(ip_header_t * ip, udp_header_t * udp, command_t * command) { make_ip(ntohl(ip->src), ntohl(ip->dest), UDP_H_LEN + COMMAND_LEN, 17, (ip_header_t *)(pkt_buf + ETHER_H_LEN)); make_udp(ntohs(udp->src), ntohs(udp->dest),(unsigned char *) command, COMMAND_LEN, (ip_header_t *)(pkt_buf + ETHER_H_LEN), (udp_header_t *)(pkt_buf + ETHER_H_LEN + IP_H_LEN)); eth_txts(pkt_buf, ETHER_H_LEN + IP_H_LEN + UDP_H_LEN + COMMAND_LEN); syscall_retval = ntohl(command->address); escape_loop = 1; sem_signal(result_sema); if (waiting_thd) { thd_schedule_next(waiting_thd); waiting_thd = NULL; } else thd_schedule(1, 0); }
static void asic_yuv_evt_handler(uint32 code) { sem_signal(&yuv_done); thd_schedule(1, 0); }