xref: /kvm-unit-tests/lib/errata.h (revision 4b6da8266e20882f41cdbbe254b08b900a5b9fbe)
1*4b6da826SThomas Huth /*
2*4b6da826SThomas Huth  * errata functions
3*4b6da826SThomas Huth  *
4*4b6da826SThomas Huth  * This code is free software; you can redistribute it and/or modify it
5*4b6da826SThomas Huth  * under the terms of the GNU Library General Public License version 2.
6*4b6da826SThomas Huth  */
7218bb0d4SAndrew Jones #ifndef _ERRATA_H_
8218bb0d4SAndrew Jones #define _ERRATA_H_
9218bb0d4SAndrew Jones 
10218bb0d4SAndrew Jones #define _ERRATA(erratum) errata("ERRATA_" # erratum)
11218bb0d4SAndrew Jones #define ERRATA(erratum) _ERRATA(erratum)
12218bb0d4SAndrew Jones 
13218bb0d4SAndrew Jones #define _ERRATA_RELAXED(erratum) errata_relaxed("ERRATA_" # erratum)
14218bb0d4SAndrew Jones #define ERRATA_RELAXED(erratum) _ERRATA_RELAXED(erratum)
15218bb0d4SAndrew Jones 
16218bb0d4SAndrew Jones static inline bool errata(const char *erratum)
17218bb0d4SAndrew Jones {
18218bb0d4SAndrew Jones 	char *s = getenv(erratum);
19218bb0d4SAndrew Jones 
20218bb0d4SAndrew Jones 	return s && (*s == '1' || *s == 'y' || *s == 'Y');
21218bb0d4SAndrew Jones }
22218bb0d4SAndrew Jones 
23218bb0d4SAndrew Jones static inline bool errata_relaxed(const char *erratum)
24218bb0d4SAndrew Jones {
25218bb0d4SAndrew Jones 	char *s = getenv(erratum);
26218bb0d4SAndrew Jones 
27218bb0d4SAndrew Jones 	return !(s && (*s == '0' || *s == 'n' || *s == 'N'));
28218bb0d4SAndrew Jones }
29218bb0d4SAndrew Jones 
30218bb0d4SAndrew Jones #endif
31