2002-11-18 17:01:16 +03:00
/*
2004-03-30 23:35:44 +04:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2007-08-21 00:55:30 +04:00
* Copyright ( C ) 2004 - 2007 Red Hat , Inc . All rights reserved .
2002-11-18 17:01:16 +03:00
*
2004-03-30 23:35:44 +04: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-21 00:55:30 +04:00
* of the GNU Lesser General Public License v .2 .1 .
2004-03-30 23:35:44 +04:00
*
2007-08-21 00:55:30 +04:00
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 23:35:44 +04:00
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 13:49:46 +03:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2002-11-18 17:01:16 +03:00
*/
/*
2002-12-20 02:25:55 +03:00
* This file must be included first by every library source file .
2002-11-18 17:01:16 +03:00
*/
# ifndef _LVM_LIB_H
# define _LVM_LIB_H
2015-08-21 23:15:10 +03: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
2021-03-29 22:46:12 +03:00
* compatibility version should be enclosed in ' # if defined ( GNU_SYMVER ) ' ,
2015-08-21 23:15:10 +03:00
* 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 .
*/
2021-03-29 22:46:12 +03:00
# if defined(GNU_SYMVER)
2015-08-21 23:15:10 +03:00
# define DM_EXPORT_SYMBOL(func, ver) \
__asm__ ( " .symver " # func " _v " # ver " , " # func " @DM_ " # ver )
# define DM_EXPORT_SYMBOL_BASE(func) \
2015-05-15 16:29:46 +03:00
__asm__ ( " .symver " # func " _base, " # func " @Base " )
# else
2015-08-21 23:15:10 +03:00
# define DM_EXPORT_SYMBOL(func, ver)
# define DM_EXPORT_SYMBOL_BASE(func)
2015-05-15 16:29:46 +03:00
# endif
2018-06-08 14:31:45 +03:00
# include "device_mapper/all.h"
2018-06-08 15:40:53 +03:00
# include "base/memory/zalloc.h"
2018-12-03 20:14:26 +03:00
# include "lib/misc/intl.h"
# include "lib/misc/util.h"
2005-10-17 03:03:59 +04:00
2008-11-03 21:59:59 +03:00
# ifdef DM
2018-05-14 12:30:20 +03:00
# include "libdm / misc / dm-logging.h"
2008-11-03 21:59:59 +03:00
# else
2018-05-14 12:30:20 +03: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 21:59:59 +03:00
# endif
2008-11-01 05:19:19 +03:00
# include <unistd.h>
2002-11-18 17:01:16 +03:00
# endif