int __init rtcfg_init_frames(void) { int ret; rtskb_queue_init(&rx_queue); rtos_event_sem_init(&rx_event); if (rtskb_pool_init(&rtcfg_pool, num_rtskbs) < num_rtskbs) { ret = -ENOMEM; goto error1; } ret = rtos_task_init(&rx_task, rtcfg_rx_task, 0, RTOS_LOWEST_RT_PRIORITY); if (ret < 0) goto error1; ret = rtdev_add_pack(&rtcfg_packet_type); if (ret < 0) goto error2; return 0; error2: rtos_task_delete(&rx_task); error1: rtos_event_sem_delete(&rx_event); rtskb_pool_release(&rtcfg_pool); return ret; }
int __init nomac_proto_init(void) { int ret; rtskb_queue_init(&nrt_rtskb_queue); rtos_event_init(&wakeup_sem); ret = rtos_task_init(&wrapper_task, nrt_xmit_task, 0, RTOS_LOWEST_RT_PRIORITY); if (ret < 0) { rtos_event_delete(&wakeup_sem); return ret; } return 0; }
int __init rtpc_init(void) { int ret; ret = rtos_nrt_signal_init(&rtpc_nrt_signal, rtpc_signal_handler); if (ret < 0) return ret; rtos_event_sem_init(&dispatch_event); ret = rtos_task_init(&dispatch_task, rtpc_dispatch_handler, 0, RTOS_LOWEST_RT_PRIORITY); if (ret < 0) rtos_nrt_signal_delete(&rtpc_nrt_signal); return ret; }
int init_module(void) { unsigned int add_rtskbs = 30; int ret; unsigned long local_ip; unsigned long client_ip; if (strlen(local_ip_s) != 0) local_ip = rt_inet_aton(local_ip_s); else local_ip = INADDR_ANY; client_ip = rt_inet_aton(client_ip_s); if (reply_size < sizeof(nanosecs_t)) reply_size = sizeof(nanosecs_t); rtos_print("local ip address %s(%8x):%d\n", local_ip_s, (unsigned int)local_ip, RCV_PORT); rtos_print("client ip address %s(%8x):%d\n", client_ip_s, (unsigned int)client_ip, XMT_PORT); rtos_print("reply message size=%d\n", reply_size); /* create rt-socket */ rtos_print("create rtsocket\n"); if ((sock = socket_rt(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { rtos_print("socket not created\n"); return sock; } /* bind the rt-socket to local_addr */ rtos_print("bind rtsocket to local address:port\n"); memset(&local_addr, 0, sizeof(struct sockaddr_in)); local_addr.sin_family = AF_INET; local_addr.sin_port = htons(RCV_PORT); local_addr.sin_addr.s_addr = local_ip; if ((ret = bind_rt(sock, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in))) < 0) { close_rt(sock); rtos_print("can't bind rtsocket\n"); return ret; } /* set client-addr */ rtos_print("connect rtsocket to client address:port\n"); memset(&client_addr, 0, sizeof(struct sockaddr_in)); client_addr.sin_family = AF_INET; client_addr.sin_port = htons(XMT_PORT); client_addr.sin_addr.s_addr = client_ip; if ((ret = connect_rt(sock, (struct sockaddr *)&client_addr, sizeof(struct sockaddr_in))) < 0) { close_rt(sock); rtos_print("can't connect rtsocket\n"); return ret; } /* extend the socket pool */ ret = ioctl_rt(sock, RTNET_RTIOC_EXTPOOL, &add_rtskbs); if (ret != (int)add_rtskbs) { close_rt(sock); rtos_print("ioctl_rt(RTNET_RTIOC_EXTPOOL) = %d\n", ret); return -1; } ret = rtos_task_init(&rt_task, (void *)process, 0, 10); return ret; }
int init_module(void) { unsigned int nonblock = 1; struct sockaddr_in local_addr; struct rtnet_callback callback = {sync_callback, NULL}; rtos_print("rt_event is using the following parameters:\n" " mode = %s\n" " io = 0x%04X\n" " irq = %d\n" " my_ip = %s\n" " dest_ip = %s\n", (mode == MODE_PAR) ? "parallel port" : "serial port", io, irq, my_ip, dest_ip); tdma = open_rt(rtmac_dev, O_RDONLY); if (tdma < 0) { rtos_print("ERROR: RTmac/TDMA not loaded!\n"); return -ENODEV; } sock = socket_rt(AF_INET,SOCK_DGRAM,0); memset(&local_addr, 0, sizeof(struct sockaddr_in)); local_addr.sin_family = AF_INET; local_addr.sin_port = htons(SYNC_PORT); local_addr.sin_addr.s_addr = (strlen(my_ip) != 0) ? rt_inet_aton(my_ip) : INADDR_ANY; bind_rt(sock, (struct sockaddr*)&local_addr, sizeof(struct sockaddr_in)); /* switch to non-blocking */ ioctl_rt(sock, RTNET_RTIOC_NONBLOCK, &nonblock); memset(&dest_addr, 0, sizeof(struct sockaddr_in)); dest_addr.sin_family = AF_INET; dest_addr.sin_port = htons(REPORT_PORT); dest_addr.sin_addr.s_addr = rt_inet_aton(dest_ip); ioctl_rt(sock, RTNET_RTIOC_CALLBACK, &callback); rtos_event_sem_init(&event_sem); if (rtos_irq_request(&irq_handle, irq, irq_handler, NULL) != 0) { rtos_print("ERROR: irq not available!\n"); rtos_event_sem_delete(&event_sem); return -EINVAL; } if (mode == MODE_PAR) { /* trigger interrupt on Acknowledge pin (10) */ outb(0x10, PAR_CONTROL); } else { /* don't forget to specify io and irq (e.g. 0x3F8 / 4) */ outb(0x00, SER_LCR); outb(0x00, SER_IER); /* clear irq sources */ while ((inb(SER_IIR) & 0x01) == 0) { rtos_print("Loop init\n"); inb(SER_LSR); inb(SER_DATA); inb(SER_MSR); } /* enable RTS output and set OUT2 */ outb(0x0A, SER_MCR); /* trigger interrupt on modem status line change */ outb(0x00, SER_LCR); outb(0x0D, SER_IER); } rtos_irq_enable(&irq_handle); return rtos_task_init(&task, event_handler, 0, 10); }
int init_module(void) { int ret; unsigned int i; struct sockaddr_in local_addr; unsigned long dest_ip = rt_inet_aton(dest_ip_s); if (size > 65505) size = 65505; printk("destination ip address %s=%08x\n", dest_ip_s, (unsigned int)dest_ip); printk("size %d\n", size); #ifdef CONFIG_RTOS_STARTSTOP_TIMER printk("start timer %d\n", start_timer); #endif /* fill output buffer with test pattern */ for (i = 0; i < sizeof(buffer_out); i++) buffer_out[i] = i & 0xFF; /* create rt-socket */ sock = rt_dev_socket(AF_INET,SOCK_DGRAM,0); if (sock < 0) { printk(" rt_dev_socket() = %d!\n", sock); return sock; } /* extend the socket pool */ ret = rt_dev_ioctl(sock, RTNET_RTIOC_EXTPOOL, &add_rtskbs); if (ret != (int)add_rtskbs) { printk(" rt_dev_ioctl(RT_IOC_SO_EXTPOOL) = %d\n", ret); rt_dev_close(sock); return -1; } /* bind the rt-socket to a port */ memset(&local_addr, 0, sizeof(struct sockaddr_in)); local_addr.sin_family = AF_INET; local_addr.sin_port = htons(PORT); local_addr.sin_addr.s_addr = INADDR_ANY; ret = rt_dev_bind(sock, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in)); if (ret < 0) { printk(" rt_dev_bind() = %d!\n", ret); rt_dev_close(sock); return ret; } /* set destination address */ memset(&dest_addr, 0, sizeof(struct sockaddr_in)); dest_addr.sin_family = AF_INET; dest_addr.sin_port = htons(PORT); dest_addr.sin_addr.s_addr = dest_ip; #ifdef CONFIG_RTOS_STARTSTOP_TIMER if (start_timer) { rtos_timer_start_oneshot(); } #endif ret = rtos_task_init(&rt_recv_task, recv_msg, 0, 9); if (ret != 0) { printk(" rtos_task_init(recv) = %d!\n", ret); rt_dev_close(sock); return ret; } ret = rtos_task_init_periodic(&rt_xmit_task, send_msg, 0, 10, CYCLE); if (ret != 0) { printk(" rtos_task_init_periodic(xmit) = %d!\n", ret); rt_dev_close(sock); rtos_task_delete(&rt_recv_task); return ret; } return 0; }