Esempio n. 1
0
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;
}
Esempio n. 2
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;
}
Esempio n. 3
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;
}
Esempio n. 4
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;
}
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
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());
}
Esempio n. 8
0
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;
}
Esempio n. 9
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;
}