O que '/usr/lib/pm-utils/sleep.d/94cpufreq' tenta fazer?

3

No meu Ubuntu 16.04, estou tentando entender um arquivo padrão do sistema /usr/lib/pm-utils/sleep.d/94cpufreq (veja o final deste post para o seu conteúdo.)

O "${PM_FUNCTIONS}" é um script, dado que é originado por . ?

Quando eu echo "${PM_FUNCTIONS}" no bash, não sai nada. PM_FUNCTIONS está definido em outro script que chama o script?

As funções savestate , state_exists e restorestate estão definidas em "${PM_FUNCTIONS}" ?

TEMPORARY_CPUFREQ_GOVERNOR" é uma variável definida em "${PM_FUNCTIONS}" ?

O que o script tenta fazer com suspend|hibernate e thaw|resume ?

Obrigado.

#!/bin/sh                                                                                                                                                                          
# Ensure cpu governor is set to something sane.                                                                                                                                    
# TODO: Which of the cpu governors is still insane?  File bugs against                                                                                                             
#       those that are.                                                                                                                                                            

. "${PM_FUNCTIONS}"

[ -d /sys/devices/system/cpu/ ] || exit $NA

hibernate_cpufreq()
{
  ( cd /sys/devices/system/cpu/
  for x in cpu[0-9]*; do
    # if cpufreq is a symlink, it is handled by another cpu. Skip.                                                                                                                 
    [ -L "$x/cpufreq" ] && continue
    gov="$x/cpufreq/scaling_governor"
    # if we do not have a scaling_governor file, skip.                                                                                                                             
    [ -f "$gov" ] || continue
    # if our temporary governor is not available, skip.                                                                                                                            
    grep -q "$TEMPORARY_CPUFREQ_GOVERNOR" \
            "$x/cpufreq/scaling_available_governors" || continue
    savestate "${x}_governor" < "$gov"
    echo "$TEMPORARY_CPUFREQ_GOVERNOR" > "$gov"
  done )
}

thaw_cpufreq()
{
  ( cd /sys/devices/system/cpu/
  for x in cpu[0-9]*/cpufreq/scaling_governor ; do
    [ -f "$x" ] || continue
    state_exists "${x%%/*}_governor" || continue
    restorestate "${x%%/*}_governor" > "$x"
  done )
}

case "$1" in
  suspend|hibernate)
    hibernate_cpufreq
    ;;
  resume|thaw)
    thaw_cpufreq
    ;;
  *) exit $NA
    ;;
esac
    
por Tim 03.04.2018 / 01:03

1 resposta

2

As funções state_exists , etc são definidas em / usr / lib / pm-utils / funções e PM_FUNCTIONS referem-se ao script / usr / lib / pm- utils / pm-functions . E sim, TEMPORARY_CPUFREQ_GOVERNOR é definido em PM_FUNCTIONS .

    
por 03.04.2018 / 01:24