Merge pull request #786 from wolfman2000/wolf-posix-fadvise
Re-implement the check for HAVE_POSIX_FADVISE.
This commit is contained in:
@@ -113,6 +113,7 @@ check_symbol_exists(M_PI math.h HAVE_M_PI)
|
|||||||
check_symbol_exists(size_t stddef.h HAVE_SIZE_T_STDDEF)
|
check_symbol_exists(size_t stddef.h HAVE_SIZE_T_STDDEF)
|
||||||
check_symbol_exists(size_t stdlib.h HAVE_SIZE_T_STDLIB)
|
check_symbol_exists(size_t stdlib.h HAVE_SIZE_T_STDLIB)
|
||||||
check_symbol_exists(size_t stdio.h HAVE_SIZE_T_STDIO)
|
check_symbol_exists(size_t stdio.h HAVE_SIZE_T_STDIO)
|
||||||
|
check_symbol_exists(posix_fadvise fcntl.h HAVE_POSIX_FADVISE)
|
||||||
|
|
||||||
# Checks to make it easier to work with 32-bit/64-bit builds if required.
|
# Checks to make it easier to work with 32-bit/64-bit builds if required.
|
||||||
include(CheckTypeSize)
|
include(CheckTypeSize)
|
||||||
|
|||||||
@@ -79,14 +79,13 @@ private:
|
|||||||
|
|
||||||
void WorkerMain()
|
void WorkerMain()
|
||||||
{
|
{
|
||||||
RString sBuffer;
|
|
||||||
int iFDCopy = dup( m_iFD );
|
int iFDCopy = dup( m_iFD );
|
||||||
if( iFDCopy != -1 )
|
if( iFDCopy != -1 )
|
||||||
{
|
{
|
||||||
char *pBuf = sBuffer.GetBuffer( m_iBytes );
|
char [] buf = new char[m_iBytes];
|
||||||
lseek( iFDCopy, m_iFrom, SEEK_SET );
|
lseek( iFDCopy, m_iFrom, SEEK_SET );
|
||||||
read( iFDCopy, pBuf, m_iBytes );
|
read( iFDCopy, buf, m_iBytes );
|
||||||
sBuffer.ReleaseBuffer( m_iBytes );
|
delete [] buf;
|
||||||
|
|
||||||
close( iFDCopy );
|
close( iFDCopy );
|
||||||
LOG->Trace("read");
|
LOG->Trace("read");
|
||||||
@@ -154,9 +153,9 @@ void RageFileManagerReadAhead::DiscardCache( RageFileBasic *pFile, int iRelative
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_POSIX_FADVISE)
|
|
||||||
void RageFileManagerReadAhead::CacheHintStreaming( RageFileBasic *pFile )
|
void RageFileManagerReadAhead::CacheHintStreaming( RageFileBasic *pFile )
|
||||||
{
|
{
|
||||||
|
#if defined(HAVE_POSIX_FADVISE)
|
||||||
/* This guesses at the actual size of the file on disk, which may be smaller if this file is compressed.
|
/* This guesses at the actual size of the file on disk, which may be smaller if this file is compressed.
|
||||||
* Since this is usually used on music and video files, it generally shouldn't be. */
|
* Since this is usually used on music and video files, it generally shouldn't be. */
|
||||||
int iFD = pFile->GetFD();
|
int iFD = pFile->GetFD();
|
||||||
@@ -166,10 +165,8 @@ void RageFileManagerReadAhead::CacheHintStreaming( RageFileBasic *pFile )
|
|||||||
int iFrom = lseek( iFD, 0, SEEK_CUR );
|
int iFrom = lseek( iFD, 0, SEEK_CUR );
|
||||||
int iBytes = pFile->GetFileSize() - iPos;
|
int iBytes = pFile->GetFileSize() - iPos;
|
||||||
posix_fadvise( iFD, iFrom, iBytes, POSIX_FADV_SEQUENTIAL );
|
posix_fadvise( iFD, iFrom, iBytes, POSIX_FADV_SEQUENTIAL );
|
||||||
}
|
|
||||||
#else
|
|
||||||
void RageFileManagerReadAhead::CacheHintStreaming( RageFileBasic *pFile ) { }
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -81,6 +81,9 @@
|
|||||||
/* Defined to 1 if the underlying system provides the M_PI constant. */
|
/* Defined to 1 if the underlying system provides the M_PI constant. */
|
||||||
#cmakedefine HAVE_M_PI 1
|
#cmakedefine HAVE_M_PI 1
|
||||||
|
|
||||||
|
/* Defined to 1 if the underlying system provides the posix_fadvise function. */
|
||||||
|
#cmakedefine HAVE_POSIX_FADVISE 1
|
||||||
|
|
||||||
/* Provide a fallback if intptr_t is not defined. */
|
/* Provide a fallback if intptr_t is not defined. */
|
||||||
#cmakedefine HAVE_SIZEOF_INTPTR_T 1
|
#cmakedefine HAVE_SIZEOF_INTPTR_T 1
|
||||||
#if !defined(HAVE_SIZEOF_INTPTR_T)
|
#if !defined(HAVE_SIZEOF_INTPTR_T)
|
||||||
|
|||||||
Reference in New Issue
Block a user