Skip to content

Commit 4817268

Browse files
committed
Remove warnings in macOS build
- Remove resctrl.cpp build, as it is Linux-only and ended up getting removed by the optimizer anyway (causing warnings about having no symbols when ranlib was run to create the static archive) - Do not pass -s to linker on macOS, which is not supported - Use kIOMainPortDefault instead of kIOMasterPortDefault for service connection - Do not compile C files with -fapple-kext, which is only supported for C++ and Objective-C - Add override keyword to C++ methods that override superclasses, which I did not notice when adding PcmMsrClient.cpp to CMake build
1 parent 3665744 commit 4817268

File tree

6 files changed

+66
-52
lines changed

6 files changed

+66
-52
lines changed

src/CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,17 @@
66
set(PROJECT_NAMES pcm pcm-numa pcm-latency pcm-power pcm-msr pcm-memory pcm-tsx pcm-pcie pcm-core pcm-iio pcm-lspci pcm-pcicfg pcm-mmio pcm-raw)
77

88
file(GLOB COMMON_SOURCES msr.cpp cpucounters.cpp pci.cpp mmio.cpp bw.cpp utils.cpp topology.cpp debug.cpp threadpool.cpp)
9-
file(GLOB UNUX_SOURCES dashboard.cpp resctrl.cpp)
9+
10+
if (APPLE)
11+
file(GLOB UNUX_SOURCES dashboard.cpp)
12+
else()
13+
file(GLOB UNUX_SOURCES dashboard.cpp resctrl.cpp)
14+
endif()
1015

1116
if(UNIX) # LINUX, FREE_BSD, APPLE
12-
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS} -s") # --strip-unneeded for packaging
17+
if (NOT APPLE)
18+
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS} -s") # --strip-unneeded for packaging
19+
endif()
1320

1421
list(APPEND PROJECT_NAMES pcm-sensor)
1522
if(LINUX)

src/MacMSRDriver/MSRAccessor.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
// SPDX-License-Identifier: BSD-3-Clause
22
// Copyright (c) 2012, Intel Corporation
33
// written by Austen Ott
4-
//
4+
//
55
#include "MSRAccessor.h"
66
#include <exception>
77
MSRAccessor::MSRAccessor(){
8-
service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching(kPcmMsrDriverClassName));
8+
service = IOServiceGetMatchingService(kIOMainPortDefault,
9+
IOServiceMatching(kPcmMsrDriverClassName));
910
openConnection();
1011
}
1112

src/MacMSRDriver/PCIDriverInterface.cpp

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,40 @@ extern "C"
1818
#endif
1919
int PCIDriver_setupDriver()
2020
{
21-
kern_return_t kern_result;
22-
io_iterator_t iterator;
23-
bool driverFound = false;
24-
io_service_t local_driver_service;
25-
26-
// get services
27-
kern_result = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching(kPcmMsrDriverClassName), &iterator);
28-
if (kern_result != KERN_SUCCESS) {
29-
fprintf(stderr, "[error] IOServiceGetMatchingServices returned 0x%08x\n", kern_result);
30-
return kern_result;
31-
}
32-
33-
// find service
34-
while ((local_driver_service = IOIteratorNext(iterator)) != IO_OBJECT_NULL) {
35-
driverFound = true;
36-
break;
37-
}
38-
if (driverFound == false) {
39-
fprintf(stderr, "[error] No matching drivers found \"%s\".\n", kPcmMsrDriverClassName);
40-
return KERN_FAILURE;
41-
}
42-
IOObjectRelease(iterator);
43-
44-
// connect to service
45-
kern_result = IOServiceOpen(local_driver_service, mach_task_self(), 0, &PCIDriver_connect);
46-
if (kern_result != KERN_SUCCESS) {
47-
fprintf(stderr, "[error] IOServiceOpen returned 0x%08x\n", kern_result);
48-
return kern_result;
49-
}
50-
51-
return KERN_SUCCESS;
21+
kern_return_t kern_result;
22+
io_iterator_t iterator;
23+
bool driverFound = false;
24+
io_service_t local_driver_service;
25+
26+
// get services
27+
kern_result = IOServiceGetMatchingServices(kIOMainPortDefault,
28+
IOServiceMatching(kPcmMsrDriverClassName),
29+
&iterator);
30+
if (kern_result != KERN_SUCCESS) {
31+
fprintf(stderr, "[error] IOServiceGetMatchingServices returned 0x%08x\n", kern_result);
32+
return kern_result;
33+
}
34+
35+
// find service
36+
while ((local_driver_service = IOIteratorNext(iterator)) != IO_OBJECT_NULL) {
37+
driverFound = true;
38+
break;
39+
}
40+
41+
if (driverFound == false) {
42+
fprintf(stderr, "[error] No matching drivers found \"%s\".\n", kPcmMsrDriverClassName);
43+
return KERN_FAILURE;
44+
}
45+
IOObjectRelease(iterator);
46+
47+
// connect to service
48+
kern_result = IOServiceOpen(local_driver_service, mach_task_self(), 0, &PCIDriver_connect);
49+
if (kern_result != KERN_SUCCESS) {
50+
fprintf(stderr, "[error] IOServiceOpen returned 0x%08x\n", kern_result);
51+
return kern_result;
52+
}
53+
54+
return KERN_SUCCESS;
5255
}
5356

5457

src/MacMSRDriver/PcmMsr/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,14 @@ target_compile_definitions(PcmMsrDriver PRIVATE
2626

2727
target_compile_options(PcmMsrDriver PRIVATE
2828
"-ffreestanding"
29-
"-fapple-kext"
29+
"$<$<COMPILE_LANGUAGE:CXX>:-fapple-kext>"
3030
)
3131

32-
target_link_libraries(PcmMsrDriver PRIVATE ${IOKIT_LIBRARY}
32+
target_link_libraries(PcmMsrDriver PRIVATE
3333
"-lkmodc++"
3434
"-lkmod"
3535
"-lcc_kext"
3636
"-nostdlib"
37-
"-Xlinker -object_path_lto"
3837
"-Xlinker -export_dynamic"
3938
"-Xlinker -kext"
4039
)

src/MacMSRDriver/PcmMsr/PcmMsrClient.h

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: BSD-3-Clause
22
// Copyright (c) 2012, Intel Corporation
33
// written by Austen Ott
4-
//
4+
//
55
#include <IOKit/IOService.h>
66
#include <IOKit/IOUserClient.h>
77
#include "PcmMsr.h"
@@ -11,24 +11,26 @@
1111
class PcmMsrClientClassName : public IOUserClient
1212
{
1313
OSDeclareDefaultStructors(com_intel_driver_PcmMsrClient)
14-
14+
1515
protected:
1616
PcmMsrDriverClassName* fProvider;
1717
static const IOExternalMethodDispatch sMethods[kNumberOfMethods];
18-
18+
1919
public:
20-
virtual bool start(IOService *provider);
21-
22-
virtual IOReturn clientClose(void);
23-
24-
virtual bool didTerminate(IOService* provider, IOOptionBits opts, bool* defer);
25-
20+
virtual bool start(IOService *provider) override;
21+
22+
virtual IOReturn clientClose(void) override;
23+
24+
virtual bool didTerminate(IOService* provider, IOOptionBits opts, bool* defer) override;
25+
2626
protected:
2727
IOReturn checkActiveAndOpened (const char* memberFunction);
28-
29-
virtual IOReturn externalMethod(uint32_t selector, IOExternalMethodArguments* arguments,
30-
IOExternalMethodDispatch* dispatch, OSObject* target, void* reference);
31-
28+
29+
virtual IOReturn externalMethod(uint32_t selector,
30+
IOExternalMethodArguments* arguments,
31+
IOExternalMethodDispatch* dispatch,
32+
OSObject* target, void* reference) override;
33+
3234
static IOReturn sOpenDriver(PcmMsrClientClassName* target, void* reference, IOExternalMethodArguments* args);
3335
virtual IOReturn openUserClient(void);
3436

@@ -68,4 +70,4 @@ class PcmMsrClientClassName : public IOUserClient
6870

6971
static IOReturn sReadMemory(PcmMsrClientClassName* target, void* reference, IOExternalMethodArguments* arguments);
7072
virtual IOReturn readMemory(const uint64_t* input, uint32_t inputSize, uint64_t* output, uint32_t outputSize);
71-
};
73+
};

src/cpucounters.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@
6161
#endif
6262
#endif
6363

64+
#ifdef __linux__
6465
#include "resctrl.h"
66+
#endif
6567

6668
namespace pcm {
6769

0 commit comments

Comments
 (0)