Skip to content

Commit a775d0e

Browse files
committed
Merge remote-tracking branch 'opcm-github/master' into rdementi/githubsync-2022-06-26
Change-Id: I97adfddf7cdf70c1def7d1d81486ef10c3168d03
2 parents 6701b86 + 58c8e4e commit a775d0e

File tree

4 files changed

+66
-27
lines changed

4 files changed

+66
-27
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ project(PCM)
88
set(CMAKE_CXX_STANDARD 11)
99
set(CMAKE_CXX_STANDARD_REQUIRED True)
1010

11+
include(GNUInstallDirs)
12+
1113
set(THREADS_PREFER_PTHREAD_FLAG ON)
1214
find_package(Threads REQUIRED)
1315

pcm.spec

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,21 @@ rm -rf $RPM_BUILD_ROOT
4242
%files
4343
%defattr(-,root,root,0755)
4444
%doc LICENSE doc/LINUX_HOWTO.txt
45-
/usr/share/doc/pcm
45+
/usr/share/doc/PCM
4646
/usr/share/licenses/pcm
47-
/usr/share/doc/pcm/CUSTOM-COMPILE-OPTIONS.md
48-
/usr/share/doc/pcm/DOCKER_README.md
49-
/usr/share/doc/pcm/ENVVAR_README.md
50-
/usr/share/doc/pcm/FAQ.md
51-
/usr/share/doc/pcm/FREEBSD_HOWTO.txt
52-
/usr/share/doc/pcm/LINUX_HOWTO.txt
53-
/usr/share/doc/pcm/MAC_HOWTO.txt
54-
/usr/share/doc/pcm/PCM-EXPORTER.md
55-
/usr/share/doc/pcm/PCM-SENSOR-SERVER-README.md
56-
/usr/share/doc/pcm/PCM_RAW_README.md
57-
/usr/share/doc/pcm/README.md
58-
/usr/share/doc/pcm/WINDOWS_HOWTO.md
59-
/usr/share/doc/pcm/license.txt
47+
/usr/share/doc/PCM/CUSTOM-COMPILE-OPTIONS.md
48+
/usr/share/doc/PCM/DOCKER_README.md
49+
/usr/share/doc/PCM/ENVVAR_README.md
50+
/usr/share/doc/PCM/FAQ.md
51+
/usr/share/doc/PCM/FREEBSD_HOWTO.txt
52+
/usr/share/doc/PCM/LINUX_HOWTO.txt
53+
/usr/share/doc/PCM/MAC_HOWTO.txt
54+
/usr/share/doc/PCM/PCM-EXPORTER.md
55+
/usr/share/doc/PCM/PCM-SENSOR-SERVER-README.md
56+
/usr/share/doc/PCM/PCM_RAW_README.md
57+
/usr/share/doc/PCM/README.md
58+
/usr/share/doc/PCM/WINDOWS_HOWTO.md
59+
/usr/share/doc/PCM/license.txt
6060
/usr/share/licenses/pcm/LICENSE
6161
%{_sbindir}/pcm-core
6262
%{_sbindir}/pcm-iio

src/CMakeLists.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ foreach(PROJECT_NAME ${PROJECT_NAMES})
135135

136136
if(LINUX OR FREE_BSD)
137137
set(LIBS ${LIBS} Threads::Threads)
138-
install(TARGETS ${PROJECT_NAME} DESTINATION "sbin")
138+
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_SBINDIR})
139139
endif(LINUX OR FREE_BSD)
140140

141141
if(APPLE)
142142
set(LIBS ${LIBS} Threads::Threads PcmMsr)
143-
install(TARGETS ${PROJECT_NAME} DESTINATION "sbin")
143+
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_SBINDIR})
144144
endif(APPLE)
145145

146146
if(MSVC)
@@ -161,39 +161,39 @@ if(UNIX) # APPLE, LINUX, FREE_BSD
161161
add_executable(daemon ${DAEMON_SOURCES})
162162
target_link_libraries(daemon PRIVATE PCM_STATIC Threads::Threads)
163163
set_target_properties(daemon PROPERTIES OUTPUT_NAME "pcm-daemon")
164-
install(TARGETS daemon DESTINATION "sbin")
164+
install(TARGETS daemon DESTINATION ${CMAKE_INSTALL_SBINDIR})
165165

166166
file(GLOB CLIENT_SOURCES "client/*.cpp")
167167
add_executable(client ${CLIENT_SOURCES})
168168
target_link_libraries(client PRIVATE Threads::Threads)
169169
set_target_properties(client PROPERTIES OUTPUT_NAME "pcm-client")
170-
install(TARGETS client DESTINATION "bin")
170+
install(TARGETS client DESTINATION ${CMAKE_INSTALL_BINDIR})
171171
endif(LINUX)
172172

173173
# Install extra files
174174
install(FILES pcm-bw-histogram.sh
175-
DESTINATION "sbin"
175+
DESTINATION ${CMAKE_INSTALL_SBINDIR}
176176
RENAME pcm-bw-histogram
177177
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
178178
file(GLOB OPCODE_FILES "opCode*.txt")
179179
foreach(opcode_file ${OPCODE_FILES})
180180
get_filename_component(opcode_file_name ${opcode_file} NAME)
181181
configure_file(${opcode_file} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${opcode_file_name} COPYONLY)
182-
install(FILES ${opcode_file} DESTINATION "share/pcm")
182+
install(FILES ${opcode_file} DESTINATION ${CMAKE_INSTALL_DATADIR}/pcm)
183183
endforeach(opcode_file ${OPCODE_FILES})
184184

185185
file(COPY "PMURegisterDeclarations" DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
186-
install(DIRECTORY "PMURegisterDeclarations" DESTINATION "share/pcm")
186+
install(DIRECTORY "PMURegisterDeclarations" DESTINATION ${CMAKE_INSTALL_DATADIR}/pcm)
187187

188188
# Install docs
189-
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION "share/licenses/pcm/")
190-
install(FILES ${CMAKE_SOURCE_DIR}/README.md DESTINATION "share/doc/pcm/")
189+
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/pcm)
190+
install(FILES ${CMAKE_SOURCE_DIR}/README.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
191191

192192
file(GLOB DOC_FILES ${CMAKE_SOURCE_DIR}/doc/*.txt ${CMAKE_SOURCE_DIR}/doc/*.md)
193193
foreach(doc_file ${DOC_FILES})
194194
get_filename_component(doc_file_name ${doc_file} NAME)
195195
configure_file(${doc_file} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${doc_file_name} COPYONLY)
196-
install(FILES ${doc_file} DESTINATION "share/doc/pcm/")
196+
install(FILES ${doc_file} DESTINATION ${CMAKE_INSTALL_DOCDIR})
197197
endforeach(doc_file ${DOC_FILES})
198198

199199
endif(UNIX)

src/pcm-iio.cpp

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -346,12 +346,37 @@ std::string build_csv_row(const std::vector<std::string>& chunks, const std::str
346346
});
347347
}
348348

349+
std::string get_root_port_dev(const bool show_root_port, int part_id, const pcm::iio_stack *stack)
350+
{
351+
char tmp[9] = " ";
352+
std::string rp_pci;
353+
354+
if (!show_root_port)
355+
return rp_pci;
356+
357+
for (auto part = stack->parts.begin(); part != stack->parts.end(); part = std::next(part))
358+
{
359+
if (part->part_id == part_id)
360+
{
361+
std::snprintf(tmp, sizeof(tmp), "%02x:%02x.%x", part->root_pci_dev.bdf.busno,
362+
part->root_pci_dev.bdf.devno, part->root_pci_dev.bdf.funcno);
363+
break;
364+
}
365+
}
366+
367+
rp_pci.append(tmp);
368+
return rp_pci;
369+
370+
}
371+
349372
vector<string> build_csv(vector<struct iio_stacks_on_socket>& iios, vector<struct counter>& ctrs,
350-
const bool human_readable, const std::string& csv_delimiter)
373+
const bool human_readable, const bool show_root_port, const std::string& csv_delimiter)
351374
{
352375
vector<string> result;
353376
vector<string> current_row;
354377
auto header = combine_stack_name_and_counter_names("Name");
378+
if (show_root_port)
379+
header.insert(header.begin(), "Root Port");
355380
header.insert(header.begin(), "Socket");
356381
result.push_back(build_csv_row(header, csv_delimiter));
357382
std::map<uint32_t,map<uint32_t,struct counter*>> v_sort;
@@ -373,7 +398,10 @@ vector<string> build_csv(vector<struct iio_stacks_on_socket>& iios, vector<struc
373398

374399
const uint32_t stack_id = stack->iio_unit_id;
375400
//Print data
376-
for (std::map<uint32_t,map<uint32_t,struct counter*>>::const_iterator vunit = v_sort.cbegin(); vunit != v_sort.cend(); ++vunit) {
401+
int part_id;
402+
std::map<uint32_t,map<uint32_t,struct counter*>>::const_iterator vunit;
403+
for (vunit = v_sort.cbegin(), part_id = 0;
404+
vunit != v_sort.cend(); ++vunit, ++part_id) {
377405
map<uint32_t, struct counter*> h_array = vunit->second;
378406
uint32_t vv_id = vunit->first;
379407
vector<uint64_t> h_data;
@@ -384,6 +412,10 @@ vector<string> build_csv(vector<struct iio_stacks_on_socket>& iios, vector<struc
384412

385413
current_row.clear();
386414
current_row.push_back(socket_name);
415+
if (show_root_port) {
416+
auto pci_dev = get_root_port_dev(show_root_port, part_id, &(*stack));
417+
current_row.push_back(pci_dev);
418+
}
387419
current_row.push_back(stack_name);
388420
current_row.push_back(v_name);
389421
for (map<uint32_t,struct counter*>::const_iterator hunit = h_array.cbegin(); hunit != h_array.cend(); ++hunit) {
@@ -1138,6 +1170,7 @@ void print_usage(const string& progname)
11381170
<< " to a file, in case filename is provided\n";
11391171
cerr << " -csv-delimiter=<value> | /csv-delimiter=<value> => set custom csv delimiter\n";
11401172
cerr << " -human-readable | /human-readable => use human readable format for output (for csv only)\n";
1173+
cerr << " -root-port | /root-port => add root port devices to output (for csv only)\n";
11411174
cerr << " -i[=number] | /i[=number] => allow to determine number of iterations\n";
11421175
cerr << " Examples:\n";
11431176
cerr << " " << progname << " 1.0 -i=10 => print counters every second 10 times and exit\n";
@@ -1159,6 +1192,7 @@ int main(int argc, char * argv[])
11591192
load_PCIDB(pciDB);
11601193
bool csv = false;
11611194
bool human_readable = false;
1195+
bool show_root_port = false;
11621196
std::string csv_delimiter = ",";
11631197
std::string output_file;
11641198
double delay = PCM_DELAY_DEFAULT;
@@ -1186,6 +1220,9 @@ int main(int argc, char * argv[])
11861220
else if (check_argument_equals(*argv, {"-human-readable", "/human-readable"})) {
11871221
human_readable = true;
11881222
}
1223+
else if (check_argument_equals(*argv, {"-root-port", "/root-port"})) {
1224+
show_root_port = true;
1225+
}
11891226
else if (mainLoop.parseArg(*argv)) {
11901227
continue;
11911228
}
@@ -1277,7 +1314,7 @@ int main(int argc, char * argv[])
12771314
{
12781315
collect_data(m, delay, iios, counters);
12791316
vector<string> display_buffer = csv ?
1280-
build_csv(iios, counters, human_readable, csv_delimiter) :
1317+
build_csv(iios, counters, human_readable, show_root_port, csv_delimiter) :
12811318
build_display(iios, counters, pciDB);
12821319
display(display_buffer, *output);
12831320
return true;

0 commit comments

Comments
 (0)