Fix musl build (#96)
a) Fix build if limits.h provides definition for PAGE_SIZE, as musl does w/musl per XSI[1] although it's apparently optional [2]. This value is only provided when it's known to be a constant, to avoid the need to discover the value dynamically. b) If not using system-provided (kernel headers, or libc headers, or something) use the POSIX approach of querying the value dynamically using sysconf(_SC_PAGE_SIZE) instead of hardcoded value that hopefully is correct. [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html [2] http://www.openwall.com/lists/musl/2015/09/11/8 This patch originate from: https://raw.githubusercontent.com/voidlinux/void-packages/a0ece13ad7ab2aae760e09e41e0459bd999a3695/srcpkgs/thin-provisioning-tools/patches/musl.patch and was also applied in NixOS: https://github.com/NixOS/nixpkgs/pull/40559/ cc @dtzWill
This commit is contained in:
parent
5d3197b8ab
commit
6a7351da0d
@ -10,13 +10,17 @@
|
|||||||
#include <libaio.h>
|
#include <libaio.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
#ifndef PAGE_SIZE
|
||||||
|
#define PAGE_SIZE sysconf(_SC_PAGE_SIZE)
|
||||||
|
#endif
|
||||||
|
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
|
|
||||||
namespace bcache {
|
namespace bcache {
|
||||||
using sector_t = uint64_t;
|
using sector_t = uint64_t;
|
||||||
|
|
||||||
unsigned const SECTOR_SHIFT = 9;
|
unsigned const SECTOR_SHIFT = 9;
|
||||||
unsigned const PAGE_SIZE = 4096;
|
|
||||||
|
|
||||||
// Virtual base class to aid unit testing
|
// Virtual base class to aid unit testing
|
||||||
class io_engine {
|
class io_engine {
|
||||||
|
@ -23,6 +23,10 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#ifndef PAGE_SIZE
|
||||||
|
#define PAGE_SIZE sysconf(_SC_PAGE_SIZE)
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace boost;
|
using namespace boost;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -33,7 +37,6 @@ using namespace testing;
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
unsigned const MAX_IO = 64;
|
unsigned const MAX_IO = 64;
|
||||||
unsigned const PAGE_SIZE = 4096;
|
|
||||||
|
|
||||||
class IOEngineTests : public Test {
|
class IOEngineTests : public Test {
|
||||||
public:
|
public:
|
||||||
|
Loading…
Reference in New Issue
Block a user