#!/bin/bash # # Extract the number of CPUs expected from the specified Kconfig-file # fragment by checking CONFIG_SMP and CONFIG_NR_CPUS. If the specified # file gives no clue, base the number on the number of idle CPUs on # the system. # # Usage: configNR_CPUS.sh config-frag # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, you can access it online at # http://www.gnu.org/licenses/gpl-2.0.html. # # Copyright (C) IBM Corporation, 2013 # # Authors: Paul E. McKenney global cf := $1 if test ! -r $cf { echo Unreadable config fragment $cf !1 > !2 exit -1 } if grep -q '^CONFIG_SMP=n$' $cf { echo 1 exit 0 } if grep -q '^CONFIG_NR_CPUS=' $cf { grep '^CONFIG_NR_CPUS=' $cf | sed -e 's/^CONFIG_NR_CPUS=\([0-9]*\).*$/\1/' exit 0 } cpus2use.sh (CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:cf) op:Equal rhs:{($ VSub_Number "$1")} spids:[79])] spids: [79] ) (If arms: [ (if_arm cond: [(C {(test)} {(KW_Bang "!")} {(-r)} {($ VSub_Name "$cf")})] action: [ (SimpleCommand words: [{(echo)} {(Unreadable)} {(config)} {(fragment)} {($ VSub_Name "$cf")}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[105])] ) (C {(exit)} {(-1)}) ] spids: [-1 92] ) ] spids: [-1 113] ) (If arms: [ (if_arm cond: [(C {(grep)} {(-q)} {(SQ <"^CONFIG_SMP=n$">)} {($ VSub_Name "$cf")})] action: [(C {(echo)} {(1)}) (C {(exit)} {(0)})] spids: [-1 127] ) ] spids: [-1 139] ) (If arms: [ (if_arm cond: [(C {(grep)} {(-q)} {(SQ <"^CONFIG_NR_CPUS=">)} {($ VSub_Name "$cf")})] action: [ (Pipeline children: [ (C {(grep)} {(SQ <"^CONFIG_NR_CPUS=">)} {($ VSub_Name "$cf")}) (C {(sed)} {(-e)} {(SQ <"s/^CONFIG_NR_CPUS=\\([0-9]*\\).*$/\\1/">)}) ] negated: False ) (C {(exit)} {(0)}) ] spids: [-1 153] ) ] spids: [-1 181] ) (C {(cpus2use.sh)}) ] )