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
2007-04-27 21:46:16 +04:00
# include "configure.h"
2006-05-10 01:23:51 +04:00
2002-11-18 17:01:16 +03:00
# define _REENTRANT
2003-07-05 02:34:56 +04:00
# define _GNU_SOURCE
2004-04-16 22:43:29 +04:00
# define _FILE_OFFSET_BITS 64
2002-11-18 17:01:16 +03:00
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
* 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 16:29:46 +03:00
# if defined(__GNUC__)
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
2004-02-14 01:56:45 +03:00
# include "intl.h"
2008-11-01 05:19:19 +03:00
# include "libdevmapper.h"
2007-07-20 19:48:39 +04:00
# include "util.h"
2005-10-17 03:03:59 +04:00
2008-11-03 21:59:59 +03:00
# ifdef DM
# include "dm-logging.h"
# else
# include "lvm-logging.h"
2014-04-04 23:13:29 +04:00
# include "lvm-globals.h"
# include "lvm-wrappers.h"
2016-08-18 16:06:13 +03:00
# include "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