]> granicus.if.org Git - strace/blob - negated_errno.h
tests: add support of multi-line diagnostics to check_h
[strace] / negated_errno.h
1 /*
2  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
3  * Copyright (c) 2017-2018 The strace developers.
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: LGPL-2.1-or-later
7  */
8
9 #ifndef STRACE_NEGATED_ERRNO_H
10 # define STRACE_NEGATED_ERRNO_H
11
12 /*
13  * Check the syscall return value register value for whether it is
14  * a negated errno code indicating an error, or a success return value.
15  */
16 static inline bool
17 is_negated_errno(kernel_ulong_t val)
18 {
19         kernel_ulong_t max = -(kernel_long_t) MAX_ERRNO_VALUE;
20
21 # ifndef current_klongsize
22         if (current_klongsize < sizeof(val)) {
23                 val = (uint32_t) val;
24                 max = (uint32_t) max;
25         }
26 # endif /* !current_klongsize */
27
28         return val >= max;
29 }
30
31 #endif /* !STRACE_NEGATED_ERRNO_H */