- Define true and false in sys/types.h for _KERNEL consumers, and
typedef bool. Due to macro expansion it seemed better to use a typedef for kernel consumers (specifically ofed won't compile without more changes if a define is used). - <stdbool.h> should also not re-define bool/true/false if they are defined by <sys/types.h>. It would probably be a programming error to define _KERNEL for user-space code, but downstream consumers like Isilon have already been including <stdbool.h> in kernel sources, and this protects that usage. - sizeof(_Bool) is not necessarily the same as sizeof(int), so kernel modules should be rebuild with this change. Bump __FreeBSD_version. MFC after: 2 weeks Sponsored by: Isilon Systems, LLC
This commit is contained in:
parent
20fbb4d013
commit
21f7c1b29f
@ -29,6 +29,7 @@
|
||||
#ifndef _STDBOOL_H_
|
||||
#define _STDBOOL_H_
|
||||
|
||||
#ifndef __bool_true_false_are_defined
|
||||
#define __bool_true_false_are_defined 1
|
||||
|
||||
#ifndef __cplusplus
|
||||
@ -42,5 +43,6 @@ typedef int _Bool;
|
||||
#endif
|
||||
|
||||
#endif /* !__cplusplus */
|
||||
#endif /* __bool_true_false_are_defined */
|
||||
|
||||
#endif /* !_STDBOOL_H_ */
|
||||
|
@ -58,7 +58,7 @@
|
||||
* in the range 5 to 9.
|
||||
*/
|
||||
#undef __FreeBSD_version
|
||||
#define __FreeBSD_version 1000001 /* Master, propagated to newvers */
|
||||
#define __FreeBSD_version 1000002 /* Master, propagated to newvers */
|
||||
|
||||
/*
|
||||
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
|
||||
|
@ -261,6 +261,16 @@ typedef __uint64_t uoff_t;
|
||||
typedef char vm_memattr_t; /* memory attribute codes */
|
||||
typedef struct vm_page *vm_page_t;
|
||||
|
||||
#if !defined(__bool_true_false_are_defined) && !defined(__cplusplus)
|
||||
#define __bool_true_false_are_defined 1
|
||||
#define false 0
|
||||
#define true 1
|
||||
#if __STDC_VERSION__ < 199901L && __GNUC__ < 3 && !defined(__INTEL_COMPILER)
|
||||
typedef int _Bool;
|
||||
#endif
|
||||
typedef _Bool bool;
|
||||
#endif /* !__bool_true_false_are_defined && !__cplusplus */
|
||||
|
||||
#define offsetof(type, field) __offsetof(type, field)
|
||||
|
||||
#endif /* !_KERNEL */
|
||||
|
Loading…
Reference in New Issue
Block a user