1db262ea4SRamkumar RamachandraThe cpupower package consists of the following elements: 27fe2f639SDominik Brodowski 37fe2f639SDominik Brodowskirequirements 47fe2f639SDominik Brodowski------------ 57fe2f639SDominik Brodowski 67fe2f639SDominik BrodowskiOn x86 pciutils is needed at runtime (-lpci). 77fe2f639SDominik BrodowskiFor compilation pciutils-devel (pci/pci.h) and a gcc version 87fe2f639SDominik Brodowskiproviding cpuid.h is needed. 97fe2f639SDominik BrodowskiFor both it's not explicitly checked for (yet). 107fe2f639SDominik Brodowski 117fe2f639SDominik Brodowski 12a504c028SRamkumar Ramachandralibcpupower 137fe2f639SDominik Brodowski---------- 147fe2f639SDominik Brodowski 15a504c028SRamkumar Ramachandra"libcpupower" is a library which offers a unified access method for userspace 167fe2f639SDominik Brodowskitools and programs to the cpufreq core and drivers in the Linux kernel. This 177fe2f639SDominik Brodowskiallows for code reduction in userspace tools, a clean implementation of 187fe2f639SDominik Brodowskithe interaction to the cpufreq core, and support for both the sysfs and proc 197fe2f639SDominik Brodowskiinterfaces [depending on configuration, see below]. 207fe2f639SDominik Brodowski 217fe2f639SDominik Brodowski 227fe2f639SDominik Brodowskicompilation and installation 237fe2f639SDominik Brodowski---------------------------- 247fe2f639SDominik Brodowski 25*3dbc9214SRoman StorozhenkoThere are 2 output directories - one for the build output and another for 26*3dbc9214SRoman Storozhenkothe installation of the build results, that is the utility, library, 27*3dbc9214SRoman Storozhenkoman pages, etc... 287fe2f639SDominik Brodowski 29*3dbc9214SRoman Storozhenkodefault directory 30*3dbc9214SRoman Storozhenko----------------- 31*3dbc9214SRoman Storozhenko 32*3dbc9214SRoman StorozhenkoIn the case of default directory, build and install process requires no 33*3dbc9214SRoman Storozhenkoadditional parameters: 34*3dbc9214SRoman Storozhenko 35*3dbc9214SRoman Storozhenkobuild 36*3dbc9214SRoman Storozhenko----- 37*3dbc9214SRoman Storozhenko 38*3dbc9214SRoman Storozhenko$ make 39*3dbc9214SRoman Storozhenko 40*3dbc9214SRoman StorozhenkoThe output directory for the 'make' command is the current directory and 41*3dbc9214SRoman Storozhenkoits subdirs in the kernel tree: 42*3dbc9214SRoman Storozhenkotools/power/cpupower 43*3dbc9214SRoman Storozhenko 44*3dbc9214SRoman Storozhenkoinstall 45*3dbc9214SRoman Storozhenko------- 46*3dbc9214SRoman Storozhenko 47*3dbc9214SRoman Storozhenko$ sudo make install 48*3dbc9214SRoman Storozhenko 49*3dbc9214SRoman Storozhenko'make install' command puts targets to default system dirs: 50*3dbc9214SRoman Storozhenko 51*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 52*3dbc9214SRoman Storozhenko| Installing file | System dir | 53*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 54*3dbc9214SRoman Storozhenko| libcpupower | /usr/lib | 55*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 56*3dbc9214SRoman Storozhenko| cpupower | /usr/bin | 57*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 58*3dbc9214SRoman Storozhenko| cpufreq-bench_plot.sh | /usr/bin | 59*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 60*3dbc9214SRoman Storozhenko| man pages | /usr/man | 61*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 62*3dbc9214SRoman Storozhenko 63*3dbc9214SRoman StorozhenkoTo put it in other words it makes build results available system-wide, 64*3dbc9214SRoman Storozhenkoenabling any user to simply start using it without any additional steps 65*3dbc9214SRoman Storozhenko 66*3dbc9214SRoman Storozhenkocustom directory 67*3dbc9214SRoman Storozhenko---------------- 68*3dbc9214SRoman Storozhenko 69*3dbc9214SRoman StorozhenkoThere are 2 make's command-line variables 'O' and 'DESTDIR' that setup 70*3dbc9214SRoman Storozhenkoappropriate dirs: 71*3dbc9214SRoman Storozhenko'O' - build directory 72*3dbc9214SRoman Storozhenko'DESTDIR' - installation directory. This variable could also be setup in 73*3dbc9214SRoman Storozhenkothe 'CONFIGURATION' block of the "Makefile" 74*3dbc9214SRoman Storozhenko 75*3dbc9214SRoman Storozhenkobuild 76*3dbc9214SRoman Storozhenko----- 77*3dbc9214SRoman Storozhenko 78*3dbc9214SRoman Storozhenko$ make O=<your_custom_build_catalog> 79*3dbc9214SRoman Storozhenko 80*3dbc9214SRoman StorozhenkoExample: 81*3dbc9214SRoman Storozhenko$ make O=/home/hedin/prj/cpupower/build 82*3dbc9214SRoman Storozhenko 83*3dbc9214SRoman Storozhenkoinstall 84*3dbc9214SRoman Storozhenko------- 85*3dbc9214SRoman Storozhenko 86*3dbc9214SRoman Storozhenko$ make O=<your_custom_build_catalog> DESTDIR=<your_custom_install_catalog> 87*3dbc9214SRoman Storozhenko 88*3dbc9214SRoman StorozhenkoExample: 89*3dbc9214SRoman Storozhenko$ make O=/home/hedin/prj/cpupower/build DESTDIR=/home/hedin/prj/cpupower \ 90*3dbc9214SRoman Storozhenko> install 91*3dbc9214SRoman Storozhenko 92*3dbc9214SRoman StorozhenkoNotice that both variables 'O' and 'DESTDIR' have been provided. The reason 93*3dbc9214SRoman Storozhenkois that the build results are saved in the custom output dir defined by 'O' 94*3dbc9214SRoman Storozhenkovariable. So, this dir is the source for the installation step. If only 95*3dbc9214SRoman Storozhenko'DESTDIR' were provided then the 'install' target would assume that the 96*3dbc9214SRoman Storozhenkobuild directory is the current one, build everything there and install 97*3dbc9214SRoman Storozhenkofrom the current dir. 98*3dbc9214SRoman Storozhenko 99*3dbc9214SRoman StorozhenkoThe files will be installed to the following dirs: 100*3dbc9214SRoman Storozhenko 101*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 102*3dbc9214SRoman Storozhenko| Installing file | System dir | 103*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 104*3dbc9214SRoman Storozhenko| libcpupower | ${DESTDIR}/usr/lib | 105*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 106*3dbc9214SRoman Storozhenko| cpupower | ${DESTDIR}/usr/bin | 107*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 108*3dbc9214SRoman Storozhenko| cpufreq-bench_plot.sh | ${DESTDIR}/usr/bin | 109*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 110*3dbc9214SRoman Storozhenko| man pages | ${DESTDIR}/usr/man | 111*3dbc9214SRoman Storozhenko----------------------------------------------------------------------- 112*3dbc9214SRoman Storozhenko 113*3dbc9214SRoman StorozhenkoIf you look at the table for the default 'make' output dirs you will 114*3dbc9214SRoman Storozhenkonotice that the only difference with the non-default case is the 115*3dbc9214SRoman Storozhenko${DESTDIR} prefix. So, the structure of the output dirs remains the same 116*3dbc9214SRoman Storozhenkoregardles of the root output directory. 117*3dbc9214SRoman Storozhenko 118*3dbc9214SRoman Storozhenko 119*3dbc9214SRoman Storozhenkoclean and uninstall 120*3dbc9214SRoman Storozhenko------------------- 121*3dbc9214SRoman Storozhenko 122*3dbc9214SRoman Storozhenko'clean' target is intended for cleanup the build catalog from build results 123*3dbc9214SRoman Storozhenko'uninstall' target is intended for removing installed files from the 124*3dbc9214SRoman Storozhenkoinstallation directory 125*3dbc9214SRoman Storozhenko 126*3dbc9214SRoman Storozhenkodefault directory 127*3dbc9214SRoman Storozhenko----------------- 128*3dbc9214SRoman Storozhenko 129*3dbc9214SRoman StorozhenkoThis case is a straightforward one: 130*3dbc9214SRoman Storozhenko$ make clean 131*3dbc9214SRoman Storozhenko$ make uninstall 132*3dbc9214SRoman Storozhenko 133*3dbc9214SRoman Storozhenkocustom directory 134*3dbc9214SRoman Storozhenko---------------- 135*3dbc9214SRoman Storozhenko 136*3dbc9214SRoman StorozhenkoUse 'O' command line variable to remove previously built files from the 137*3dbc9214SRoman Storozhenkobuild dir: 138*3dbc9214SRoman Storozhenko$ make O=<your_custom_build_catalog> clean 139*3dbc9214SRoman Storozhenko 140*3dbc9214SRoman StorozhenkoExample: 141*3dbc9214SRoman Storozhenko$ make O=/home/hedin/prj/cpupower/build clean 142*3dbc9214SRoman Storozhenko 143*3dbc9214SRoman StorozhenkoUse 'DESTDIR' command line variable to uninstall previously installed files 144*3dbc9214SRoman Storozhenkofrom the given dir: 145*3dbc9214SRoman Storozhenko$ make DESTDIR=<your_custom_install_catalog> 146*3dbc9214SRoman Storozhenko 147*3dbc9214SRoman StorozhenkoExample: 148*3dbc9214SRoman Storozhenkomake DESTDIR=/home/hedin/prj/cpupower uninstall 149*3dbc9214SRoman Storozhenko 150*3dbc9214SRoman Storozhenko 151*3dbc9214SRoman Storozhenkorunning the tool 152*3dbc9214SRoman Storozhenko---------------- 153*3dbc9214SRoman Storozhenko 154*3dbc9214SRoman Storozhenkodefault directory 155*3dbc9214SRoman Storozhenko----------------- 156*3dbc9214SRoman Storozhenko 157*3dbc9214SRoman Storozhenko$ sudo cpupower 158*3dbc9214SRoman Storozhenko 159*3dbc9214SRoman Storozhenkocustom directory 160*3dbc9214SRoman Storozhenko---------------- 161*3dbc9214SRoman Storozhenko 162*3dbc9214SRoman StorozhenkoWhen it comes to run the utility from the custom build catalog things 163*3dbc9214SRoman Storozhenkobecome a little bit complicated as 'just run' approach doesn't work. 164*3dbc9214SRoman StorozhenkoAssuming that the current dir is '<your_custom_install_catalog>/usr', 165*3dbc9214SRoman Storozhenkoissuing the following command: 166*3dbc9214SRoman Storozhenko 167*3dbc9214SRoman Storozhenko$ sudo ./bin/cpupower 168*3dbc9214SRoman Storozhenkowill produce the following error output: 169*3dbc9214SRoman Storozhenko./bin/cpupower: error while loading shared libraries: libcpupower.so.1: 170*3dbc9214SRoman Storozhenkocannot open shared object file: No such file or directory 171*3dbc9214SRoman Storozhenko 172*3dbc9214SRoman StorozhenkoThe issue is that binary cannot find the 'libcpupower' library. So, we 173*3dbc9214SRoman Storozhenkoshall point to the lib dir: 174*3dbc9214SRoman Storozhenkosudo LD_LIBRARY_PATH=lib64/ ./bin/cpupower 1757fe2f639SDominik Brodowski 1767fe2f639SDominik Brodowski 1777fe2f639SDominik BrodowskiTHANKS 1787fe2f639SDominik Brodowski------ 1797fe2f639SDominik BrodowskiMany thanks to Mattia Dongili who wrote the autotoolization and 180a504c028SRamkumar Ramachandralibtoolization, the manpages and the italian language file for cpupower; 1817fe2f639SDominik Brodowskito Dave Jones for his feedback and his dump_psb tool; to Bruno Ducrot for his 1827fe2f639SDominik Brodowskipowernow-k8-decode and intel_gsic tools as well as the french language file; 1837fe2f639SDominik Brodowskiand to various others commenting on the previous (pre-)releases of 184a504c028SRamkumar Ramachandracpupower. 1857fe2f639SDominik Brodowski 1867fe2f639SDominik Brodowski 1877fe2f639SDominik Brodowski Dominik Brodowski 188