2007-07-20 19:48:39 +04:00
/*
* Copyright ( C ) 2007 Red Hat , Inc . All rights reserved .
*
* This file is part of LVM2 .
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
2007-08-21 00:55:30 +04:00
* of the GNU Lesser General Public License v .2 .1 .
2007-07-20 19:48:39 +04:00
*
2007-08-21 00:55:30 +04:00
* You should have received a copy of the GNU Lesser General Public License
2007-07-20 19:48:39 +04:00
* along with this program ; if not , write to the Free Software Foundation ,
* Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
# ifndef _LVM_UTIL_H
# define _LVM_UTIL_H
2015-07-06 17:09:17 +03:00
# include <inttypes.h>
2007-09-21 01:39:08 +04:00
# define min(a, b) ({ typeof(a) _a = (a); \
typeof ( b ) _b = ( b ) ; \
( void ) ( & _a = = & _b ) ; \
_a < _b ? _a : _b ; } )
# define max(a, b) ({ typeof(a) _a = (a); \
typeof ( b ) _b = ( b ) ; \
( void ) ( & _a = = & _b ) ; \
_a > _b ? _a : _b ; } )
2011-04-08 18:11:40 +04:00
# if defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 6)
2010-10-26 14:04:34 +04:00
# define uninitialized_var(x) x
# else
2008-06-23 23:04:34 +04:00
# define uninitialized_var(x) x = x
2010-10-26 14:04:34 +04:00
# endif
2008-06-23 23:04:34 +04:00
2010-05-25 03:11:34 +04:00
# define KERNEL_VERSION(major, minor, release) (((major) << 16) + ((minor) << 8) + (release))
2015-07-06 17:09:17 +03:00
/* Define some portable printing types */
# define PRIsize_t "zu"
2015-08-18 13:59:13 +03:00
# define PRIssize_t "zd"
2015-07-06 17:09:17 +03:00
# define PRIptrdiff_t "td"
# define PRIpid_t PRId32
/* For convenience */
# define FMTsize_t "%" PRIsize_t
2015-08-18 13:59:13 +03:00
# define FMTssize_t "%" PRIssize_t
2015-07-06 17:09:17 +03:00
# define FMTptrdiff_t "%" PRIptrdiff_t
# define FMTpid_t "%" PRIpid_t
# define FMTd8 "%" PRId8
# define FMTd16 "%" PRId16
# define FMTd32 "%" PRId32
# define FMTd64 "%" PRId64
# define FMTi8 "%" PRIi8
# define FMTi16 "%" PRIi16
# define FMTi32 "%" PRIi32
# define FMTi64 "%" PRIi64
# define FMTo8 "%" PRIo8
# define FMTo16 "%" PRIo16
# define FMTo32 "%" PRIo32
# define FMTo64 "%" PRIo64
# define FMTu8 "%" PRIu8
# define FMTu16 "%" PRIu16
# define FMTu32 "%" PRIu32
# define FMTu64 "%" PRIu64
# define FMTx8 "%" PRIx8
# define FMTx16 "%" PRIx16
# define FMTx32 "%" PRIx32
# define FMTx64 "%" PRIx64
2007-07-20 19:48:39 +04:00
# endif