(BraceGroup children: [ (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-CPU_set>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$G_HW_MODEL')} right: {<Id.Lit_Digits 20>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'nNotice: CPU Governors are not available for VM.'> <Id.Lit_BadBackslash '\\'> <n> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] spids: [88 102] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_GOVERNOR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/DietPi/dietpi.txt'>}) (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_GOVERNOR='>)}) (C {<sed>} {(SQ <'s/.*=//'>)}) ] negated: F ) ) } spids: [126] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_MAX_FREQ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/DietPi/dietpi.txt'>}) (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_MAX_FREQ='>)}) (C {<sed>} {(SQ <'s/.*=//'>)}) ] negated: F ) ) } spids: [152] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_MIN_FREQ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/DietPi/dietpi.txt'>}) (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_MIN_FREQ='>)}) (C {<sed>} {(SQ <'s/.*=//'>)}) ] negated: F ) ) } spids: [178] ) ] ) (command.ShFunction name: Check_GPU_Gov_Available body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} { < '/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors' > } ) (C {<grep>} {<-ci>} {<-m1>} {(DQ ($ Id.VSub_DollarName '$CPU_GOVERNOR'))} ) ] negated: F ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} { (DQ <'CPU gov: '> ($ Id.VSub_DollarName '$CPU_GOVERNOR') <', not supported by kernel'> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} { < '/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors' > } ) (C {<grep>} {<-ci>} {<-m1>} {(SQ <ondemand>)}) ] negated: F ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_GOVERNOR) op: assign_op.Equal rhs: {(SQ <ondemand>)} spids: [290] ) ] ) ] spids: [260 286] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} { < '/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors' > } ) (C {<grep>} {<-ci>} {<-m1>} {(SQ <interactive>)}) ] negated: F ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_GOVERNOR) op: assign_op.Equal rhs: {(SQ <interactive>)} spids: [327] ) ] ) ] spids: [297 323] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_GOVERNOR) op: assign_op.Equal rhs: {(SQ <performance>)} spids: [338] ) ] ) ] ) (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Switching to CPU gov: '> ($ Id.VSub_DollarName '$CPU_GOVERNOR'))} ) (C {<sed>} {<-i>} { (DQ <'/^CONFIG_CPU_GOVERNOR=/c'> <Id.Lit_BadBackslash '\\'> <'CONFIG_CPU_GOVERNOR='> ($ Id.VSub_DollarName '$CPU_GOVERNOR') ) } {<'/DietPi/dietpi.txt'>} ) ] spids: [216 244] ) ] ) ] ) ) (command.ShFunction name: Apply_CPU_Gov body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'input_gov_name='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'input_core_start='> ($ Id.VSub_Number '$2')}) (C {<local>} {<Id.Lit_VarLike 'input_core_end='> ($ Id.VSub_Number '$3')}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_start')} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_end')} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$input_gov_name'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpu'> (DQ ($ Id.VSub_DollarName '$i')) <'/cpufreq/scaling_governor'> } ) ] do_fork: T ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$CPU_MAX_FREQ')} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName '$CPU_MAX_FREQ')} right: {<Id.Lit_Digits 0>} ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'converted_hz_value='> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$CPU_MAX_FREQ')} right: {<Id.Lit_Digits 1000>} ) ) } ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_start')} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_end')} ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$converted_hz_value'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpu'> (DQ ($ Id.VSub_DollarName '$i')) <'/cpufreq/scaling_max_freq'> } ) ] do_fork: T ) ] ) ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Setting CPU max freq: '> ($ Id.VSub_DollarName '$CPU_MAX_FREQ') <' MHz'>) } ) ] spids: [462 496] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$CPU_MIN_FREQ')} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName '$CPU_MIN_FREQ')} right: {<Id.Lit_Digits 0>} ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'converted_hz_value='> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$CPU_MIN_FREQ')} right: {<Id.Lit_Digits 1000>} ) ) } ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_start')} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_end')} ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$converted_hz_value'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpu'> (DQ ($ Id.VSub_DollarName '$i')) <'/cpufreq/scaling_min_freq'> } ) ] do_fork: T ) ] ) ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Setting CPU min freq: '> ($ Id.VSub_DollarName '$CPU_MIN_FREQ') <' MHz'>) } ) ] spids: [579 613] ) ] ) (C {<local>} {<Id.Lit_VarLike 'cpu_throttle_up_percent='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/DietPi/dietpi.txt'>}) (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_USAGE_THROTTLE_UP='>)}) (C {<sed>} {(SQ <'s/.*=//'>)}) ] negated: F ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$input_gov_name'))} {<Id.Lit_Equals '='>} {<interactive>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} { < '/sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load' > } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Setting go_hispeed_load: '> ($ Id.VSub_DollarName '$cpu_throttle_up_percent') <' %'> ) } ) (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_throttle_up_percent'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load'>} ) ] do_fork: T ) ] spids: [748 759] ) ] ) ] spids: [725 740] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$input_gov_name'))} {<Id.Lit_Equals '='>} {<ondemand>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'cpu_ondemand_sampling_rate='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/DietPi/dietpi.txt'>}) (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_ONDEMAND_SAMPLE_RATE='>)}) (C {<sed>} {(SQ <'s/.*=//'>)}) ] negated: F ) ) } ) (C {<local>} {<Id.Lit_VarLike 'cpu_ondemand_sampling_down_factor='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/DietPi/dietpi.txt'>}) (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_ONDEMAND_SAMPLE_DOWNFACTOR='>)}) (C {<sed>} {(SQ <'s/.*=//'>)}) ] negated: F ) ) } ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Setting up_threshold: '> ($ Id.VSub_DollarName '$cpu_throttle_up_percent') <' %'> ) } ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Setting sampling_rate: '> ($ Id.VSub_DollarName '$cpu_ondemand_sampling_rate') <' microseconds'> ) } ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Setting sampling_down_factor: '> ($ Id.VSub_DollarName '$cpu_ondemand_sampling_down_factor') ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/sys/devices/system/cpu/cpufreq/ondemand/up_threshold'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_throttle_up_percent'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpufreq/ondemand/up_threshold'>} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_ondemand_sampling_rate'))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpufreq/ondemand/sampling_rate'>} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_ondemand_sampling_down_factor'))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: { < '/sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor' > } ) ] do_fork: T ) ] spids: [911 922] ) ] else_action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_start')} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_end')} ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.Simple words: [ {<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_throttle_up_percent'))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpu'> (DQ ($ Id.VSub_DollarName '$i')) <'/cpufreq/ondemand/up_threshold'> } ) ] do_fork: T ) (command.Simple words: [ {<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_ondemand_sampling_rate'))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpu'> (DQ ($ Id.VSub_DollarName '$i')) <'/cpufreq/ondemand/sampling_rate'> } ) ] do_fork: T ) (command.Simple words: [ {<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_ondemand_sampling_down_factor'))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpu'> (DQ ($ Id.VSub_DollarName '$i')) <'/cpufreq/ondemand/sampling_down_factor'> } ) ] do_fork: T ) ] ) ) ] ) ] spids: [794 809] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$input_gov_name'))} {<Id.Lit_Equals '='>} {(SQ <conservative>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpu_throttle_up_percent) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/DietPi/dietpi.txt'>}) (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_USAGE_THROTTLE_UP='>)}) (C {<sed>} {(SQ <'s/.*=//'>)}) ] negated: F ) ) } spids: [1071] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$G_HW_MODEL')} right: {<Id.Lit_Digits 11>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_start')} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$input_core_end')} ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.Simple words: [ {<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_throttle_up_percent'))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpu'> (DQ ($ Id.VSub_DollarName '$i')) <'/cpufreq/conservative/up_threshold'> } ) ] do_fork: T ) ] ) ) ] spids: [1102 1116] ) ] else_action: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$cpu_throttle_up_percent'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/sys/devices/system/cpu/cpufreq/conservative/up_threshold'>} ) ] do_fork: T ) ] ) ] spids: [1050 1067] ) ] ) ] ) ) (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Cpu_Set>} {(DQ <'Applying CPU gov'>)}) (C {<Check_GPU_Gov_Available>}) (C {<Apply_CPU_Gov>} {(DQ ($ Id.VSub_DollarName '$CPU_GOVERNOR'))} {<0>} {($ Id.VSub_DollarName '$G_HW_CPU_CORES')} ) (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ <'CPU gov applied: '> ($ Id.VSub_DollarName '$CPU_GOVERNOR') <Id.Lit_BadBackslash '\\'> <n>) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] )