xref: /f-stack/start.sh (revision 1ab1bbef)
1#!/bin/bash
2
3function usage() {
4    echo "F-Stack app start tool"
5    echo "Options:"
6    echo " -c [conf]                Path of config file"
7    echo " -b [N]                   Path of binary"
8    echo " -h                       show this help"
9    exit
10}
11
12conf=config.ini
13bin=./example/helloworld
14
15while getopts "c:b:h" args
16do
17    case $args in
18         c)
19            conf=$OPTARG
20            ;;
21         b)
22            bin=$OPTARG
23            ;;
24         h)
25            usage
26            exit 0
27            ;;
28    esac
29done
30
31allcmask0x=`cat ${conf}|grep lcore_mask|awk -F '=' '{print $2}'`
32((allcmask=16#$allcmask0x))
33
34num_procs=0
35PROCESSOR=$(grep 'processor' /proc/cpuinfo |sort |uniq |wc -l)
36for((i=0;i<${PROCESSOR};++i))
37do
38    mask=`echo "2^$i"|bc`
39    ((result=${allcmask} & ${mask}))
40    if [ ${result} != 0 ]
41    then
42        ((num_procs++));
43        cpuinfo[$i]=1
44    else
45        cpuinfo[$i]=0
46    fi
47done
48
49proc_id=0
50for((i=0;i<${PROCESSOR};++i))
51do
52    if ((cpuinfo[$i] == 1))
53    then
54        cmask=`echo "2^$i"|bc`
55        cmask=`echo "obase=16;${cmask}"|bc`
56        if ((proc_id == 0))
57        then
58            echo "${bin} ${conf} -c $cmask --proc-type=primary --num-procs=${num_procs} --proc-id=${proc_id}"
59            ${bin} ${conf} -c ${cmask} --proc-type=primary --num-procs=${num_procs} --proc-id=${proc_id} &
60            sleep 5
61        else
62            echo "${bin} ${conf} -c $cmask --proc-type=secondary --num-procs=${num_procs} --proc-id=${proc_id}"
63			${bin} ${conf} -c $cmask --proc-type=secondary --num-procs=${num_procs} --proc-id=${proc_id} &
64        fi
65        ((proc_id++))
66    fi
67done
68