コード例 #1
0
ファイル: test.c プロジェクト: ArcEye/3.4.55-rtai
static void receiver(long nothing)
{
	fd_set rxfds;
	RTIME timeout = 0;
	int ready = 0;
	socklen_t fromlen = sizeof(rx_addr);

	rt_printk("RtnetTest: Receiver task initialised\n");

	while(!end) {
		FD_ZERO(&rxfds);
		FD_SET(sock, &rxfds);
		ready = 0;

		ready = rt_dev_select(sock + 1, &rxfds, NULL, NULL, timeout);
		if (ready > 0 && FD_ISSET(sock, &rxfds)) {

			rlen = rt_dev_recvfrom(sock, buffer_in, sizeof(buffer_in), 0, (struct sockaddr*) &rx_addr, &fromlen);

			if (rlen > 0) {
				rx_samp.cnt++;
//				rx_samp.tx = simple_strtoll(buffer_in, NULL, 10);
				sscanf(buffer_in, "%lld", &rx_samp.tx);
				rx_samp.rx = rt_get_real_time_ns();
				rt_mbx_send_if(mbx, &rx_samp, sizeof(rx_samp));
				memset(buffer_in, 0, sizeof(buffer_in));
			}

		} else if (EPERM == -ready) {
			rt_printk("RtnetTest: Failed to rt_dev_select on socket\n");
			end = 1;
			break;

		} else if (EINTR == -ready) {
			rt_printk("RtnetTest: rt_dev_select was interrupted\n");
			end = 1;
			break;
		}
	}

	return;
}
コード例 #2
0
ファイル: module.c プロジェクト: nosnilwar/rtai-raw-gov-3.9.1
static RTAI_SYSCALL_MODE int sys_rtdm_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, nanosecs_rel_t timeout)
{
	return rt_dev_select(nfds, rfds, wfds, efds, timeout);
}