/* dvdisaster: Additional error correction for optical media. * Copyright (C) 2004-2017 Carsten Gnoerlich. * * Email: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org * Project homepage: http://www.dvdisaster.org * * This file is part of dvdisaster. * * dvdisaster is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * dvdisaster is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ #include "dvdisaster.h" #if defined(SYS_LINUX) int ProbeCacheLineSize() { int cl_size = 0; cl_size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE); if(!cl_size) cl_size = sysconf(_SC_LEVEL2_CACHE_LINESIZE); if(cl_size < 16) cl_size = 64; return cl_size; } #elif defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) #include int ProbeCacheLineSize() { int cl_size = CACHE_LINE_SIZE; /* Doing this at compile time may backfire, but let's just hope for the best. */ if(cl_size < 16) cl_size = 64; return cl_size; } #elif defined(SYS_NETBSD) #include int ProbeCacheLineSize() { int cl_size = CACHE_LINE_SIZE; /* Doing this at compile time may backfire, but let's just hope for the best. */ if(cl_size < 16) cl_size = 64; return cl_size; } #else /* SYS_UNKNOWN and others. */ int ProbeCacheLineSize() { return 64; } #endif /* TODO MINGW: https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-cache_descriptor */