embox

Форк
0
/
timer.c 
70 строк · 1.2 Кб
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

26
EMBOX_UNIT(init, fini);
27

28
#define PNET_PRIORITY_COUNT \
29
	OPTION_MODULE_GET(embox__pnet__rx_thread, NUMBER, pnet_priority_count)
30

31
#define ITERATION_CNT 100
32

33
static FILE *results;
34

35
static int pnet_timer_hnd(struct pnet_pack *pack) {
36
	struct timespec ts;
37
	unsigned int elapsed_time;
38

39
	static int k;
40

41
	ktime_get_timespec(&ts);
42

43
	//elapsed_time = ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
44
	elapsed_time = clock() - pack->stat.start_time;
45

46
	/* total time */
47
	if (pack->priority == 2) {
48
		if (++k <= ITERATION_CNT) {
49
			fprintf(results, "pnet_total: %d\n", elapsed_time);
50
		} else {
51
			printf("K:%d\n", k);
52
		}
53
	}
54

55
	return NET_HND_FORWARD_DEFAULT;
56
}
57

58
PNET_NODE_DEF("timer", {
59
	.rx_hnd = pnet_timer_hnd,
60
	.tx_hnd = pnet_timer_hnd
61
});
62

63
static int init(void) {
64
	results = fopen("/tmp/pnet_total", "w+");
65
	return (NULL == results);
66
}
67

68
static int fini(void) {
69
	return fclose(results);
70
}
71

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.