]> git.proxmox.com Git - ceph.git/blame - ceph/src/seastar/dpdk/lib/librte_eal/common/eal_common_cpuflags.c
import 15.2.0 Octopus source
[ceph.git] / ceph / src / seastar / dpdk / lib / librte_eal / common / eal_common_cpuflags.c
CommitLineData
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 */
14void
15rte_cpu_check_supported(void)
11fdf7f2
TL
16{
17 if (!rte_cpu_is_supported())
18 exit(1);
19}
20
21int
22rte_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}