]>
Commit | Line | Data |
---|---|---|
9f95a23c TL |
1 | /* SPDX-License-Identifier: BSD-3-Clause |
2 | * Copyright(c) 2010-2014 Intel Corporation | |
7c673cae FG |
3 | */ |
4 | ||
5 | #include <stdio.h> | |
6 | ||
7 | #include <rte_common.h> | |
8 | #include <rte_cpuflags.h> | |
9 | ||
10 | /** | |
11 | * Checks if the machine is adequate for running the binary. If it is not, the | |
12 | * program exits with status 1. | |
13 | */ | |
14 | void | |
15 | rte_cpu_check_supported(void) | |
11fdf7f2 TL |
16 | { |
17 | if (!rte_cpu_is_supported()) | |
18 | exit(1); | |
19 | } | |
20 | ||
21 | int | |
22 | rte_cpu_is_supported(void) | |
7c673cae FG |
23 | { |
24 | /* This is generated at compile-time by the build system */ | |
25 | static const enum rte_cpu_flag_t compile_time_flags[] = { | |
26 | RTE_COMPILE_TIME_CPUFLAGS | |
27 | }; | |
28 | unsigned count = RTE_DIM(compile_time_flags), i; | |
29 | int ret; | |
30 | ||
31 | for (i = 0; i < count; i++) { | |
32 | ret = rte_cpu_get_flag_enabled(compile_time_flags[i]); | |
33 | ||
34 | if (ret < 0) { | |
35 | fprintf(stderr, | |
36 | "ERROR: CPU feature flag lookup failed with error %d\n", | |
37 | ret); | |
11fdf7f2 | 38 | return 0; |
7c673cae FG |
39 | } |
40 | if (!ret) { | |
41 | fprintf(stderr, | |
42 | "ERROR: This system does not support \"%s\".\n" | |
43 | "Please check that RTE_MACHINE is set correctly.\n", | |
44 | rte_cpu_get_flag_name(compile_time_flags[i])); | |
11fdf7f2 | 45 | return 0; |
7c673cae FG |
46 | } |
47 | } | |
11fdf7f2 TL |
48 | |
49 | return 1; | |
7c673cae | 50 | } |