2002-11-18 14:01:16 +00:00
/*
2004-03-30 19:35:44 +00:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2007-08-20 20:55:30 +00:00
* Copyright ( C ) 2004 - 2007 Red Hat , Inc . All rights reserved .
2002-11-18 14:01:16 +00:00
*
2004-03-30 19:35:44 +00:00
* 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-20 20:55:30 +00:00
* of the GNU Lesser General Public License v .2 .1 .
2004-03-30 19:35:44 +00:00
*
2007-08-20 20:55:30 +00:00
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 19:35:44 +00:00
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 11:49:46 +01:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2002-11-18 14:01:16 +00:00
*/
/*
2002-12-19 23:25:55 +00:00
* This file must be included first by every library source file .
2002-11-18 14:01:16 +00:00
*/
# ifndef _LVM_LIB_H
# define _LVM_LIB_H
2007-04-27 17:46:16 +00:00
# include "configure.h"
2006-05-09 21:23:51 +00:00
2002-11-18 14:01:16 +00:00
# define _REENTRANT
2003-07-04 22:34:56 +00:00
# define _GNU_SOURCE
2002-11-18 14:01:16 +00:00
2015-08-21 21:15:10 +01:00
/*
* Symbol export control macros
*
* DM_EXPORT_SYMBOL ( func , ver )
* DM_EXPORT_SYMBOL_BASE ( func , ver )
*
* For functions that have multiple implementations these macros control
* symbol export and versioning .
*
* Function definitions that exist in only one version never need to use
* these macros .
*
* Backwards compatible implementations must include a version tag of
* the form " _v1_02_104 " as a suffix to the function name and use the
* macro DM_EXPORT_SYMBOL to export the function and bind it to the
* specified version string .
*
* Since versioning is only available when compiling with GCC the entire
* compatibility version should be enclosed in ' # if defined ( __GNUC__ ) ' ,
* for example :
*
* int dm_foo ( int bar )
* {
* return bar ;
* }
*
* # if defined ( __GNUC__ )
* // Backward compatible dm_foo() version 1.02.104
* int dm_foo_v1_02_104 ( void ) ;
* int dm_foo_v1_02_104 ( void )
* {
* return 0 ;
* }
* DM_EXPORT_SYMBOL ( dm_foo , 1 _02_104 )
* # endif
*
* A prototype for the compatibility version is required as these
* functions must not be declared static .
*
* The DM_EXPORT_SYMBOL_BASE macro is only used to export the base
* versions of library symbols prior to the introduction of symbol
* versioning : it must never be used for new symbols .
*/
2015-05-15 15:29:46 +02:00
# if defined(__GNUC__)
2015-08-21 21:15:10 +01:00
# define DM_EXPORT_SYMBOL(func, ver) \
__asm__ ( " .symver " # func " _v " # ver " , " # func " @DM_ " # ver )
# define DM_EXPORT_SYMBOL_BASE(func) \
2015-05-15 15:29:46 +02:00
__asm__ ( " .symver " # func " _base, " # func " @Base " )
# else
2015-08-21 21:15:10 +01:00
# define DM_EXPORT_SYMBOL(func, ver)
# define DM_EXPORT_SYMBOL_BASE(func)
2015-05-15 15:29:46 +02:00
# endif
2018-05-14 10:30:20 +01:00
# include "lib/misc/intl.h"
2018-06-08 12:31:45 +01:00
# include "device_mapper/all.h"
2018-05-14 10:30:20 +01:00
# include "lib/misc/util.h"
2018-06-08 13:40:53 +01:00
# include "base/memory/zalloc.h"
2005-10-16 23:03:59 +00:00
2008-11-03 18:59:59 +00:00
# ifdef DM
2018-05-14 10:30:20 +01:00
# include "libdm / misc / dm-logging.h"
2008-11-03 18:59:59 +00:00
# else
2018-05-14 10:30:20 +01:00
# include "lib / log / lvm-logging.h"
# include "lib / misc / lvm-globals.h"
# include "lib / misc / lvm-wrappers.h"
# include "lib / misc / lvm-maths.h"
2008-11-03 18:59:59 +00:00
# endif
2008-11-01 02:19:19 +00:00
# include <unistd.h>
2002-11-18 14:01:16 +00:00
# endif