mirror of https://github.com/F-Stack/f-stack.git
68 lines
1.6 KiB
Bash
68 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
function usage() {
|
|
echo "F-Stack app start tool"
|
|
echo "Options:"
|
|
echo " -c [conf] Path of config file"
|
|
echo " -b [N] Path of binary"
|
|
echo " -h show this help"
|
|
exit
|
|
}
|
|
|
|
conf=config.ini
|
|
bin=./example/helloworld
|
|
|
|
while getopts "c:b:h" args
|
|
do
|
|
case $args in
|
|
c)
|
|
conf=$OPTARG
|
|
;;
|
|
b)
|
|
bin=$OPTARG
|
|
;;
|
|
h)
|
|
usage
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
allcmask0x=`cat ${conf}|grep lcore_mask|awk -F '=' '{print $2}'`
|
|
((allcmask=16#$allcmask0x))
|
|
|
|
num_procs=0
|
|
PROCESSOR=$(grep 'processor' /proc/cpuinfo |sort |uniq |wc -l)
|
|
for((i=0;i<${PROCESSOR};++i))
|
|
do
|
|
mask=`echo "2^$i"|bc`
|
|
((result=${allcmask} & ${mask}))
|
|
if [ ${result} != 0 ]
|
|
then
|
|
((num_procs++));
|
|
cpuinfo[$i]=1
|
|
else
|
|
cpuinfo[$i]=0
|
|
fi
|
|
done
|
|
|
|
proc_id=0
|
|
for((i=0;i<${PROCESSOR};++i))
|
|
do
|
|
if ((cpuinfo[$i] == 1))
|
|
then
|
|
cmask=`echo "2^$i"|bc`
|
|
cmask=`echo "obase=16;${cmask}"|bc`
|
|
if ((proc_id == 0))
|
|
then
|
|
echo "${bin} ${conf} -c $cmask --proc-type=primary --num-procs=${num_procs} --proc-id=${proc_id}"
|
|
${bin} ${conf} -c ${cmask} --proc-type=primary --num-procs=${num_procs} --proc-id=${proc_id} &
|
|
sleep 5
|
|
else
|
|
echo "${bin} ${conf} -c $cmask --proc-type=secondary --num-procs=${num_procs} --proc-id=${proc_id}"
|
|
${bin} ${conf} -c $cmask --proc-type=secondary --num-procs=${num_procs} --proc-id=${proc_id} &
|
|
fi
|
|
((proc_id++))
|
|
fi
|
|
done
|