embox
1/**
2* @file
3*
4* @brief
5*
6* @date 12.04.2013
7* @author Alexander Kalmuk
8*/
9
10#include <fcntl.h>11#include <stdio.h>12
13#include <util/math.h>14
15#include <kernel/thread.h>16
17#include <pnet/core/core.h>18#include <pnet/core/repo.h>19#include <pnet/pack/pnet_pack.h>20#include <pnet/core/prior_path.h>21
22#include <framework/mod/options.h>23#include <module/embox/pnet/rx_thread.h>24#include <embox/unit.h>25
26EMBOX_UNIT(init, fini);27
28#define PNET_PRIORITY_COUNT \29OPTION_MODULE_GET(embox__pnet__rx_thread, NUMBER, pnet_priority_count)30
31#define ITERATION_CNT 10032
33static FILE *results;34
35static int pnet_timer_hnd(struct pnet_pack *pack) {36struct timespec ts;37unsigned int elapsed_time;38
39static int k;40
41ktime_get_timespec(&ts);42
43//elapsed_time = ts.tv_sec * 1000000 + ts.tv_nsec / 1000;44elapsed_time = clock() - pack->stat.start_time;45
46/* total time */47if (pack->priority == 2) {48if (++k <= ITERATION_CNT) {49fprintf(results, "pnet_total: %d\n", elapsed_time);50} else {51printf("K:%d\n", k);52}53}54
55return NET_HND_FORWARD_DEFAULT;56}
57
58PNET_NODE_DEF("timer", {59.rx_hnd = pnet_timer_hnd,60.tx_hnd = pnet_timer_hnd61});62
63static int init(void) {64results = fopen("/tmp/pnet_total", "w+");65return (NULL == results);66}
67
68static int fini(void) {69return fclose(results);70}
71