Ignore:
Timestamp:
Mar 18, 2009, 11:36:26 PM (15 years ago)
Author:
rosiere
Message:

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Script/execute.sh

    r85 r112  
    55#-----------------------------------------------------------
    66
    7 declare -a COMMAND;
    8 declare -i CPT_OLD;
    9 declare -i CPT;
    10 declare    FILE_CMD=;
    11 declare    FILE_CPT=;
    12 declare    FILE_CPU=;
    13 declare    LOCK_CPT="${HOME}/.lock-cpt";
    14 declare    LOCK_CPU="${HOME}/.lock-cpu";
     7#-----[ global variable ]-----------------------------------
    158
    169#-----[ lock ]----------------------------------------------
    1710function lock ()
    1811{
    19     lockfile -1 $1;
     12    lockfile -1 ${1};
    2013}
    2114
     
    2316function unlock ()
    2417{
    25     rm -f $1;
     18    rm -f ${1};
    2619}
    2720
    28 #-----[ main ]----------------------------------------------
    29 function main ()
     21#-----[ my_date ]-------------------------------------------
     22function my_date ()
    3023{
    31     # no test, because the script execute_n have make all test
    32     FILE_CMD=$1;
    33     FILE_CPT=$2;
    34     FILE_CPU=$3;
     24    date +"%F %T";
     25}
    3526
    36     lock   $LOCK_CPT;
    37     if test ! -s $FILE_CPT; then
    38         echo "0" > $FILE_CPT;
     27#-----[ execute_usage ]-------------------------------------
     28function execute_usage ()
     29{
     30    echo "Usage     : ${0} work_dir file_cmd file_cpt file_cpu";
     31    echo "Arguments : ";
     32    echo " * work_dir   : directory to execute command";
     33    echo " * file_cmd   : list of command";
     34    echo " * file_cpt   : file with the index of next command to execute";
     35    echo " * file_cpu   : tmp file to stock the current index";
     36    exit;
     37}
     38
     39#-----[ execute_test_usage ]--------------------------------
     40function execute_test_usage ()
     41{
     42    if test ${#} -ne 4; then
     43        execute_usage;
    3944    fi;
    40     unlock $LOCK_CPT;
    4145
    42     # lit les fichiers ligne par ligne et le place dans un tableau
     46    if test ! -d ${1}; then
     47        echo "Directory ${1} is invalid";
     48    fi;
     49}
     50
     51#-----[ execute ]-------------------------------------------
     52function execute ()
     53{
     54    # test_usage
     55    execute_test_usage ${*};
     56
     57    local -a COMMAND;
     58    local -i CPT_OLD;
     59    local -i CPT;
     60    local    WORK_DIR=${1};
     61    local    FILE_CMD=${2};
     62    local    FILE_CPT=${3};
     63    local    FILE_CPU=${4};
     64    local    LOCK_CPT="${WORK_DIR}/.lock-cpt";
     65    local    LOCK_CPU="${WORK_DIR}/.lock-cpu";
     66    local    FILE_CMD="distexe.command";
     67    local    FILE_OUT="distexe.output";
     68
     69
     70    # Init CPT if this thread is the first
     71    lock   ${LOCK_CPT};
     72    if test ! -s ${FILE_CPT}; then
     73        echo "0" > ${FILE_CPT};
     74    fi;
     75    unlock ${LOCK_CPT};
     76
     77    # read, line by line, the command file and write in array
    4378    CPT=0;
    4479
    4580    while read line; do
    46         COMMAND[$CPT]="$line";
    47         CPT=$(($CPT+1));
    48     done < $1;
     81        COMMAND[${CPT}]="${line}";
     82        CPT=$((${CPT}+1));
     83    done < ${FILE_CMD};
    4984
    50     echo "  * <$$> {"`date +"%F %T"`"} is ready";
     85    echo "  * <${HOSTNAME}-$$> {"$(my_date)"} is ready";
    5186
    5287    # infinite loop
     
    5691    while test 1; do
    5792        # Take a number
    58         CPT_OLD=$CPT;
     93        CPT_OLD=${CPT};
    5994
    60         lock   $LOCK_CPT;
    61         CPT=`cat $FILE_CPT`;            # read  the      index
    62         echo "$(($CPT+1))" > $FILE_CPT; # write the next index
    63         unlock $LOCK_CPT;
     95        # Read the index, and increase
     96        lock   ${LOCK_CPT};
     97        CPT=$(cat ${FILE_CPT});
     98        echo "$((${CPT}+1))" > ${FILE_CPT};
     99        unlock ${LOCK_CPT};
    64100
    65101        # test if this number is valid
    66         if test $CPT -ge ${#COMMAND[*]}; then
     102        if test ${CPT} -ge ${#COMMAND[*]}; then
    67103            CPT=${#COMMAND[*]};
    68104        fi;
     
    70106        # test if between the cpt_old and cpt, there are a synchronisation command
    71107
    72 #       local -i CPT_SYNC=$CPT_OLD;
     108#       local -i CPT_SYNC=${CPT}_OLD;
    73109#
    74 #       while test $CPT_SYNC -lt $CPT; do
    75 #           if test -z "${COMMAND[$CPT_SYNC]}"; then
    76 #               echo "  * <$$> {"`date +"%F %T"`"} synchronisation [$CPT_SYNC]";
     110#       while test ${CPT}_SYNC -lt ${CPT}; do
     111#           if test -z "${COMMAND[${CPT}_SYNC]}"; then
     112#               echo "  * <${HOSTNAME}-$$> {"$(my_date)"} synchronisation [${CPT}_SYNC]";
    77113#           fi;
    78 #           CPT_SYNC=$(($CPT_SYNC+1));
     114#           CPT_SYNC=$((${CPT}_SYNC+1));
    79115#       done;
    80116
    81117        # test if this number is valid
    82         if test $CPT -eq ${#COMMAND[*]}; then
     118        if test ${CPT} -eq ${#COMMAND[*]}; then
    83119            break;
    84120        fi;
    85121
    86122        # Test if command is empty !
    87         if test ! -z "${COMMAND[$CPT]}"; then
    88             local CUR_DIR=$PWD;
    89 
    90             mkdir "Task_$CPT"       &> /dev/null;
    91             cd    "Task_$CPT"       &> /dev/null;
    92             echo "  * <$$> {"`date +"%F %T"`"} execute command [$CPT] : ${COMMAND[$CPT]}";
    93             echo "${COMMAND[$CPT]}"  >  "command";
    94             chmod +x                    "command";
    95             eval "${COMMAND[$CPT]}" &>  "output";
    96             cd    $CUR_DIR          &> /dev/null;
     123        if test ! -z "${COMMAND[${CPT}]}"; then
     124            local CURREN_DIR=${PWD};
     125            cd    ${WORK_DIR}         &> /dev/null;
     126            mkdir "Task_${CPT}"       &> /dev/null;
     127            cd    "Task_${CPT}"       &> /dev/null;
     128            echo "  * <${HOSTNAME}-$$> {"$(my_date)"} execute command [${CPT}] : ${COMMAND[${CPT}]}";
     129            echo "${COMMAND[${CPT}]}"  >  ${FILE_CMD};
     130#           chmod +x                      ${FILE_CMD};
     131            eval "${COMMAND[${CPT}]}" &>  ${FILE_OUT};
     132            cd    ${CURREN_DIR}       &> /dev/null;
    97133        fi;
    98134    done;
    99135
    100     echo "  * <$$> {"`date +"%F %T"`"} is done";
     136    echo "  * <${HOSTNAME}-$$> {"$(my_date)"} is done";
    101137
    102     lock   $LOCK_CPU;
    103     CPT=`cat $FILE_CPU`;     # read  the      index
    104     CPT=$(($CPT-1));
    105     echo "$CPT" > $FILE_CPU; # write the next index
    106     unlock $LOCK_CPU;
     138    lock   ${LOCK_CPU};
     139    CPT=$(cat ${FILE_CPU});    # read  the      index
     140    CPT=$((${CPT}-1));
     141    echo "${CPT}" > ${FILE_CPU}; # write the next index
     142    unlock ${LOCK_CPU};
    107143   
    108     if test $CPT -eq 0; then
    109         echo "  * <$$> {"`date +"%F %T"`"} All task is executed";
    110         rm $FILE_CPU;
     144    if test ${CPT} -eq 0; then
     145        echo "  * <${HOSTNAME}-$$> {"$(my_date)"} All task is executed";
     146        rm ${FILE_CPU};
    111147    fi;
    112148}
    113149
    114150#-----[ Corps ]---------------------------------------------
    115 main $*;
     151execute ${*};
Note: See TracChangeset for help on using the changeset viewer.