[RTnet-users] failed to issue RTMAC_RTIOC_WAITONCYCLE_EX, error code -38
Brought to you by:
bet-frogger,
kiszka
From: Klemen D. <kle...@ya...> - 2014-05-30 09:45:44
|
Hello everybody, Has anybody successfully tested captured the sync frame on RTAI. I tried to run the tdma-api.c example on rtai (i modified the code a bit), but when i issue the rt_dev_ioctl(fd, RTMAC_RTIOC_WAITONCYCLE_EX, &waitinfo); it returns the "error code -38". Any idea why is that? I set the machine to tdma master on rteth0 interface and the sync frame is transmited. I sniffed the lan with wireshark and it is there. The code i tested is pasted below. Regards Klemen --------------------------------------------------------------------- #include <stdlib.h> #include <stdio.h> #include <signal.h> #include <sys/mman.h> #include <rtnet.h> #include <rtmac.h> int fd; int main(int argc, char *argv[]) { RT_TASK *task; struct rtmac_waitinfo waitinfo; int err; mlockall(MCL_CURRENT | MCL_FUTURE); fd = rt_dev_open("TDMA0", O_RDWR); if (fd < 0) { fprintf(stderr, "failed to open TDMA0\n"); exit(1); } rt_make_hard_real_time(); waitinfo.type = TDMA_WAIT_ON_SYNC; waitinfo.size = sizeof(waitinfo); while (1) { do { err = rt_dev_ioctl(fd, RTMAC_RTIOC_WAITONCYCLE_EX, &waitinfo); if (err) { fprintf(stderr, "failed to issue RTMAC_RTIOC_WAITONCYCLE_EX, " "error code %d\n", err); rt_dev_close(fd); exit(1); } } while (waitinfo.cycle_no%100 != 0); printf("cycle #%ld, start %.9f s, offset %lld ns\n", waitinfo.cycle_no, (waitinfo.cycle_start+waitinfo.clock_offset)/1000000000.0, (unsigned long long)waitinfo.clock_offset); } rt_make_soft_real_time(); rt_dev_close(fd); return(0); } |