int init_module(void) { unsigned int local_ip; unsigned int server_ip = rt_inet_aton(server_ip_s); struct rtnet_callback callback = {echo_rcv, NULL}; if (strlen(local_ip_s) != 0) local_ip = rt_inet_aton(local_ip_s); else local_ip = INADDR_ANY; if (interval < 1) interval = 1; if (interval > 1000) interval = 1000; if (packetsize < 1) packetsize = 1; if (packetsize > 1400) packetsize = 1400; printk("***** start of rt_client ***** %s %s *****\n", __DATE__, __TIME__); printk("local ip address %s=%08x\n", local_ip_s, local_ip); printk("server ip address %s=%08x\n", server_ip_s, server_ip); printk("interval = %d\n", interval); printk("packetsize = %d\n", packetsize); printk("start timer %d\n", start_timer); rtf_create(PRINT, 8000); /* create rt-socket */ sock = socket_rt(AF_INET,SOCK_DGRAM,0); /* bind the rt-socket to local_addr */ 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; bind_rt(sock, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in)); /* set server-addr */ memset(&server_addr, 0, sizeof(struct sockaddr_in)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SRV_PORT); server_addr.sin_addr.s_addr = server_ip; /* set up callback handler */ ioctl_rt(sock, RTNET_RTIOC_CALLBACK, &callback); if (start_timer) { rt_set_oneshot_mode(); start_rt_timer(0); } rt_task_init(&rt_task,(void *)process,0,4096,10,0,NULL); rt_task_make_periodic_relative_ns(&rt_task, 1000000, (RTIME)interval * 1000000); return 0; }
int init_module(void) { int i, k; k = 1; for (i = 0; i < NTASKS; i++) { rt_task_init_cpuid(&thread[i], fun, k = ~k, STACK_SIZE, 0, 0, 0, i%2); } start_rt_apic_timers(apic_setup_data, 0); for (i = 0; i < NTASKS; i++) { rt_task_make_periodic_relative_ns(&thread[i], (i+1)*TICK_PERIOD, NTASKS*TICK_PERIOD); } return 0; }
int init_module(void) { int ret; RTIME tick_period; unsigned int local_ip = rt_inet_aton(local_ip_s); unsigned int server_ip = rt_inet_aton(server_ip_s); if (interval < 1) interval = 1; if (interval > 1000) interval = 1000; if (packetsize < 1) packetsize = 1; if (packetsize > 1400) packetsize = 1400; printk ("***** start of rt_client ***** %s %s *****\n", __DATE__, __TIME__); printk ("local ip address %s=%08x\n", local_ip_s, local_ip); printk ("server ip address %s=%08x\n", server_ip_s, server_ip); printk ("interval = %d\n", interval); printk ("packetsize = %d\n", packetsize); rtf_create(PRINT, 8000); /* create rt-socket */ sock=rt_socket(AF_INET,SOCK_DGRAM,0); /* bind the rt-socket to local_addr */ 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; ret=rt_socket_bind(sock, (struct sockaddr *) &local_addr, sizeof(struct sockaddr_in)); /* set server-addr */ memset(&server_addr, 0, sizeof(struct sockaddr_in)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SRV_PORT); server_addr.sin_addr.s_addr = server_ip; /* set up receiving */ rt_socket_callback(sock, echo_rcv, NULL); tick_period = start_rt_timer(nano2count(TICK_PERIOD)); ret=rt_task_init(&rt_task,(void *)process,0,4096,0,0,NULL); ret=rt_task_make_periodic_relative_ns( &rt_task, 1000000, (RTIME) interval * 1000000); return 0; }
int init_module(void) { int ret; unsigned long local_ip = rt_inet_aton(local_ip_s); unsigned long broadcast_ip = rt_inet_aton(broadcast_ip_s); rtf_create(PRINT, 40000); rt_sem_init(&tx_sem, 0); rt_printk ("local ip address %s=%8x\n", local_ip_s, local_ip); rt_printk ("broadcast ip address %s=%8x\n", broadcast_ip_s, broadcast_ip); /* create rt-socket */ sock=rt_socket(AF_INET,SOCK_DGRAM,0); /* bind the rt-socket to local_addr */ 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; ret=rt_socket_bind(sock, (struct sockaddr *) &local_addr, sizeof(struct sockaddr_in)); /* set server-addr */ memset(&broadcast_addr, 0, sizeof(struct sockaddr_in)); broadcast_addr.sin_family = AF_INET; broadcast_addr.sin_port = htons(SRV_PORT); broadcast_addr.sin_addr.s_addr = broadcast_ip; // set up receiving rt_socket_callback(sock, echo_rcv, NULL); /* Timer already started by RTmac in oneshot mode. */ //rt_set_oneshot_mode(); //start_rt_timer(TIMERTICKS); ret=rt_task_init(&rt_task,(void *)process,0,4096,10,0,NULL); ret=rt_task_make_periodic_relative_ns( &rt_task, 10 * 1000*1000, cycle * 1000); return ret; }
INTERNAL_QUAL void rtos_task_make_periodic(RTOS_TASK* mytask, NANO_TIME nanosecs ) { if (mytask->rtaitask == 0) return; if (rt_buddy() == mytask->rtaitask) { // do not suspend/resume my own thread // do best effort to change period. rtos_task_set_period(mytask,nanosecs); return; } // other thread is instructing us: if (nanosecs == 0) { // in RTAI, to drop from periodic to non periodic, do a // suspend/resume cycle. rt_task_suspend( mytask->rtaitask ); rt_task_resume( mytask->rtaitask ); } else { // same for the inverse rt_task_suspend( mytask->rtaitask ); rt_task_make_periodic_relative_ns(mytask->rtaitask, 0, nanosecs); } }
int init_module(void) { int ret; RTIME tick_period; struct rtsocket *socket; unsigned long local_ip = rt_inet_aton(local_ip_s); unsigned long client_ip = rt_inet_aton(client_ip_s); rt_printk ("local ip address %s=%8x\n", local_ip_s, local_ip); rt_printk ("client ip address %s=%8x\n", client_ip_s, client_ip); /* create rt-socket */ rt_printk("create rtsocket\n"); if ( !(sock=rt_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) ) { rt_printk("socket not created\n"); return -ENOMEM; } /* bind the rt-socket to local_addr */ rt_printk("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=rt_socket_bind(sock, (struct sockaddr *) &local_addr, sizeof(struct sockaddr_in)))<0 ) { rt_printk("can't bind rtsocket\n"); return ret; } /* set client-addr */ rt_printk("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(SRV_PORT); client_addr.sin_addr.s_addr = client_ip; if ( (ret=rt_socket_connect(sock, (struct sockaddr *) &client_addr, sizeof(struct sockaddr_in)))<0 ) { rt_printk("can't connect rtsocket\n"); return ret; } /* get socket-structure for printing */ if ( (socket=rt_socket_lookup(sock)) ) { rt_printk("src addr: %x:%x\n", socket->saddr, socket->sport); rt_printk("dest addr: %x:%x\n", socket->daddr, socket->dport); } /* set up receiving */ rt_socket_callback(sock, echo_rcv, NULL); /* initialize semaphore */ rt_sem_init(&tx_sem, 0); /* create print-fifo */ rtf_create (PRINT, 3000); tick_period = start_rt_timer(nano2count(TICK_PERIOD)); ret=rt_task_init(&rt_task,(void *)process,0,4096,0,0,NULL); ret=rt_task_make_periodic_relative_ns( &rt_task, 1000000, 1000000000); return ret; }
void PeriodicThreadImplLxrt38::makePeriodic() { rt_task_make_periodic_relative_ns(rt_buddy(), 0, m_period.toNSec()); }
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; rt_printk("destination ip address %s=%08x\n", dest_ip_s, (unsigned int)dest_ip); rt_printk("size %d\n", size); rt_printk("start timer %d\n", start_timer); /* fill output buffer with test pattern */ for (i = 0; i < sizeof(buffer_out); i++) buffer_out[i] = i & 0xFF; /* create rt-socket */ sock = rt_socket(AF_INET,SOCK_DGRAM,0); if (sock < 0) { rt_printk(" rt_socket() = %d!\n", sock); return sock; } /* extend the socket pool */ ret = rt_setsockopt(sock, SOL_SOCKET, RT_SO_EXTPOOL, &add_rtskbs, sizeof(add_rtskbs)); if (ret != (int)add_rtskbs) { rt_printk("rt_setsockopt(RT_SO_EXTPOOL) = %d\n", ret); rt_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_bind(sock, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in)); if (ret < 0) { rt_printk(" rt_socket_bind() = %d!\n", ret); rt_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; /* install callback handler */ rt_socket_callback(sock, recv_msg, NULL); if (start_timer) { rt_set_oneshot_mode(); start_rt_timer(0); } ret = rt_task_init(&rt_task,(void *)send_msg, 0, 4096, 10, 0, NULL); if (ret != 0) { rt_printk(" rt_task_init() = %d!\n", ret); rt_close(sock); return ret; } ret = rt_task_make_periodic_relative_ns(&rt_task, 0, CYCLE); if (ret != 0) { rt_printk(" rt_task_make_periodic_relative_ns() = %d!\n", ret); rt_close(sock); return ret; } return 0; }
void *statistics_run(void *no){ int small = 0; int medium = 0; int large = 0; RTIME period = PERIOD; struct sched_param p; RT_TASK *task_ptr; rt_init(nam2num("h6sta"), 8, task_ptr); p.sched_priority = sched_get_priority_max(SCHED_FIFO); sched_setscheduler(0, SCHED_FIFO, &p); rt_task_make_periodic_relative_ns(task_ptr, period, period); FILE *f = fopen("stats.txt", "w"); if (f == NULL) { printf("Error opening file!\n"); exit(1); } /* puts("Stats started"); */ while(done == 0){ enum stick_size s; if(stats == -1) { stats = 0; small = 0; medium = 0; large = 0; fclose(f); FILE *f = fopen("stats.txt", "w"); /* purge old file */ } if(stats == 1) { stats = 0; printf("Sorted so far:\tSmall: %d\tMedium: %d\tLarge: %d\n",small,medium,large); } if(!retrieve_stat(&s)){ rt_task_wait_period(); continue; } char stat[10]; switch(s){ case SMALL: strncpy(stat,"Small",5); stat[5] = '\0'; small++; break; case MEDIUM: strncpy(stat,"Medium",6); stat[6] = '\0'; medium++; break; case LARGE: strncpy(stat,"Large",5); stat[5] = '\0'; large++; break; } fprintf(f, "%s\n", stat); } fprintf(f,"In total sorted: \n\tSmall:\t%d\n\tMedium:\t%d\n\tLarge:\t%d\n",small,medium,large); fclose(f); rt_task_wait_period(); rt_delete(task_ptr); /* puts("Stats closed"); */ return NULL; }