Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1{# SPDX-License-Identifier: GPL-2.0 #}
2
3{% if annotate %}
4/* enum {{ name }} (big-endian) */
5{% endif %}
6{% if name in public_apis %}
7bool
8{% else %}
9static bool __maybe_unused
10{% endif %}
11xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ name }} *ptr)
12{
13{% if validate and enumerators %}
14 __be32 raw;
15 u32 val;
16
17 if (xdr_stream_decode_be32(xdr, &raw) < 0)
18 return false;
19 val = be32_to_cpu(raw);
20 /* Compiler may optimize to a range check for dense enums */
21 switch (val) {
22{% for e in enumerators %}
23 case {{ e.name }}:
24{% endfor %}
25 break;
26 default:
27 return false;
28 }
29 *ptr = raw;
30 return true;
31{% else %}
32 return xdr_stream_decode_be32(xdr, ptr) == 0;
33{% endif %}
34}