120 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #! /usr/bin/bash
 | |
| 
 | |
| # Set up help text
 | |
| command_name=$(basename $0)
 | |
| help_text="${command_name}: GDP Win 3 TDP management script
 | |
| 
 | |
| This script checks and sets the TDP using intel_rapl
 | |
| 
 | |
| Usage:
 | |
|   ${command_name} COMMAND [ARGUMENTS]
 | |
| 
 | |
| Command:
 | |
|   check [ARG]      Checks current TDP and prints it in watts
 | |
|   set WATT         Setts TDP to the requested number in watts
 | |
|   help             Prints this help text
 | |
|   COMMAND help     Prints help for specified command"
 | |
| 
 | |
| check_help_text="${command_name} check [ARG]
 | |
| 
 | |
| Example:
 | |
|   ${command_name} check --detail
 | |
| 
 | |
| Arguments:
 | |
|   --detail, -d     Prints PL2 as well as PL1
 | |
|   --help           Prints this help text"
 | |
| 
 | |
| set_help_text="${command_name} set WATT
 | |
| 
 | |
| Example:
 | |
|   ${command_name} set 15
 | |
| 
 | |
| Arguments:
 | |
|   --help           Prints this help text"
 | |
| 
 | |
| print_help () {
 | |
|   case $1 in
 | |
|     "check")
 | |
|       echo "$check_help_text"
 | |
|       ;;
 | |
|     "set")
 | |
|       echo "$set_help_text"
 | |
|       ;;
 | |
|     *)
 | |
|       echo "$help_text"
 | |
|       ;;
 | |
|   esac
 | |
| }
 | |
| 
 | |
| print_unknown () {
 | |
|   echo "Unknown command or incorrect arguments.
 | |
|   Try \"${command_name} help\" or \"${command_name} COMMAND --help\""
 | |
| }
 | |
| # End of help text
 | |
| 
 | |
| # Retrieves current TDP and prints it
 | |
| check_tdp () {
 | |
|   if [ "$1" == "--detail" ] || [ "$1" == "-d" ]; then
 | |
|       echo "Placeholder"
 | |
|       echo "Extra placeholder"
 | |
| 
 | |
|   elif [ -z "$1" ]; then
 | |
|       echo "Placeholder"
 | |
| 
 | |
|   elif [ "$1" == "--help" ]; then
 | |
|     print_help "check"
 | |
| 
 | |
|   else
 | |
|     print_unknown
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # Sets TDP to number provided as first argument
 | |
| set_tdp () {
 | |
|   if [ -z "$1" ]; then
 | |
|     print_unknown
 | |
|     exit
 | |
|   elif [ "$1" == "--help" ]; then
 | |
|     print_help "set"
 | |
|     exit
 | |
|   fi
 | |
| 
 | |
|   if ! [[ $1 =~ ^-?[0-9]+$ ]]; then
 | |
|     echo "TDP must be a plain number!)"
 | |
|   elif [[ ! "$@" == *"--force"* ]] || [ $1 -lt 8 ] || [ $1 -gt 28 ]; then
 | |
|     echo "TDP too high or low, should be between 8W and 28W"
 | |
|   else
 | |
|     #PL1
 | |
|     local watts=$1
 | |
|     local uwatts=$(expr $watts '*' 1000000)
 | |
| 
 | |
|     #PL2
 | |
|     local watts2=$(expr $watts + 2)
 | |
|     local uwatts2=$(expr $watts2 '*' 1000000)
 | |
| 
 | |
|     echo $uwatts
 | |
|     echo "PL1 is now ${watts}W (Long-term)"
 | |
|     echo "PL2 is now ${watts2}W (Short-term)"
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # Command handler
 | |
| case $1 in
 | |
| 
 | |
|   "check")
 | |
|     check_tdp "${@:2}"
 | |
|     ;;
 | |
| 
 | |
|   "set")
 | |
|     set_tdp "${@:2}"
 | |
|     ;;
 | |
| 
 | |
|   "help")
 | |
|     print_help
 | |
|     ;;
 | |
| 
 | |
|   *)
 | |
|     print_unknown
 | |
|     ;;
 | |
| esac
 |