Fix build issues for musl libc (#267)

Change-Id: Ia31330b0f96669966712b58986abeca754c2cbb9
Esse commit está contido em:
Sv. Lockal
2025-01-28 16:52:44 +00:00
commit de David Yat Sin
commit 5d04bd42f3
6 arquivos alterados com 46 adições e 14 exclusões
+3 -2
Ver Arquivo
@@ -64,14 +64,15 @@ extern HsaVersionInfo hsakmt_kfd_version_info;
do { if ((minor) > hsakmt_kfd_version_info.KernelInterfaceMinorVersion)\
return HSAKMT_STATUS_NOT_SUPPORTED; } while (0)
extern int hsakmt_page_size;
extern int hsakmt_page_shift;
/* Might be defined in limits.h on platforms where it is constant (used by musl) */
/* See also: https://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html */
#ifndef PAGE_SIZE
extern int hsakmt_page_size;
#define PAGE_SIZE hsakmt_page_size
#endif
#ifndef PAGE_SHIFT
extern int hsakmt_page_shift;
#define PAGE_SHIFT hsakmt_page_shift
#endif
@@ -57,13 +57,13 @@ class AsyncMPSQ {
void PlacePacketOnNode(PacketList &packetList, int node, TSPattern tsp);
/* Run the packets placed on nodes and return immediately.*/
void Submit(void) { ASSERT_NE((HSAuint64)m_queue, NULL); m_queue->SubmitPacket(); }
void Submit(void) { ASSERT_NE(m_queue, nullptr); m_queue->SubmitPacket(); }
/* Return only when all packets are consumed.
* If there is any packet issues some IO operations, wait these IO to complete too.
*/
void Wait(void) {
ASSERT_NE((HSAuint64)m_queue, NULL);
ASSERT_NE(m_queue, nullptr);
m_queue->Wait4PacketConsumption(m_event, std::max((unsigned int)6000, g_TestTimeOut));
}
@@ -244,7 +244,7 @@ HSAuint64 AsyncMPSQ::Report(int indexOfPacket, HSAuint64 &begin, HSAuint64 &end)
if (m_ts_pattern == HEAD_TAIL)
indexOfPacket = 0;
EXPECT_NE((HSAuint64)m_ts, NULL)
EXPECT_NE(m_ts, nullptr)
<< " Error " << ++error << ": No timestamp buf!" << std::endl;
/* m_ts_count is equal to packets count + 1, see PlacePacketOnNode().
* So the max index of a packet is m_ts_count - 2.
+2 -2
Ver Arquivo
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
#include <sys/user.h>
#include <string>
#include "KFDTestFlags.hpp"
@@ -33,10 +35,8 @@
#ifndef PAGE_SIZE
#define PAGE_SIZE (1<<12)
#define PAGE_SHIFT (12)
#endif
#ifndef PAGE_SHIFT
#define PAGE_SIZE (1<<12)
#define PAGE_SHIFT (12)
#endif
+12
Ver Arquivo
@@ -101,6 +101,18 @@ if( NOT DEFINED OPEN_SOURCE_DIR )
set ( OPEN_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.." )
endif()
## Check for _GNU_SOURCE pthread extensions
set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
CHECK_SYMBOL_EXISTS ( "pthread_attr_setaffinity_np" "pthread.h" HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
CHECK_SYMBOL_EXISTS ( "pthread_rwlockattr_setkind_np" "pthread.h" HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
unset(CMAKE_REQUIRED_DEFINITIONS)
if ( HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
endif()
if ( HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
endif()
## ------------------------- Linux Compiler and Linker options -------------------------
set ( CMAKE_CXX_FLAGS "-std=c++11 " )
+12
Ver Arquivo
@@ -109,6 +109,18 @@ if ( HAVE_MEMFD_CREATE )
target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_MEMFD_CREATE )
endif()
## Check for _GNU_SOURCE pthread extensions
set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
CHECK_SYMBOL_EXISTS ( "pthread_attr_setaffinity_np" "pthread.h" HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
CHECK_SYMBOL_EXISTS ( "pthread_rwlockattr_setkind_np" "pthread.h" HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
unset(CMAKE_REQUIRED_DEFINITIONS)
if ( HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
endif()
if ( HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
endif()
## Set include directories for ROCr runtime
target_include_directories( ${CORE_RUNTIME_TARGET}
PUBLIC
+14 -7
Ver Arquivo
@@ -138,12 +138,14 @@ class os_thread {
for (int i = 0; i < cores; i++) {
CPU_SET_S(i, CPU_ALLOC_SIZE(cores), cpuset);
}
#ifdef HAVE_PTHREAD_ATTR_SETAFFINITY_NP
err = pthread_attr_setaffinity_np(&attrib, CPU_ALLOC_SIZE(cores), cpuset);
CPU_FREE(cpuset);
if (err != 0) {
fprintf(stderr, "pthread_setaffinity_np failed: %s\n", strerror(err));
return;
}
#endif
}
do {
@@ -166,6 +168,17 @@ class os_thread {
}
} while (stackSize < 20 * 1024 * 1024);
#ifndef HAVE_PTHREAD_ATTR_SETAFFINITY_NP
if (cores && cpuset) {
err = pthread_setaffinity_np(thread, CPU_ALLOC_SIZE(cores), cpuset);
CPU_FREE(cpuset);
if (err != 0) {
fprintf(stderr, "pthread_setaffinity_np failed: %s\n", strerror(err));
thread = 0;
return;
}
}
#endif
struct sched_param param = {};
if (priority != OS_THREAD_PRIORITY_DEFAULT) {
int set_priority;
@@ -696,18 +709,12 @@ SharedMutex CreateSharedMutex() {
return nullptr;
}
#ifdef __GLIBC__
#ifdef HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP
err = pthread_rwlockattr_setkind_np(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
if (err != 0) {
fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err));
return nullptr;
}
#else
err = pthread_rwlockattr_setkind(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
if (err != 0) {
fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err));
return nullptr;
}
#endif
pthread_rwlock_t* lock = new pthread_rwlock_t;