#!/bin/bash if [ "$#" -ne 2 ]; then echo "Usage: $0 " exit 1 fi # Validate if the first argument is a positive integer if ! [[ "$1" =~ ^[1-9][0-9]*$ ]]; then echo "Error: Number of samples must be a positive integer." exit 1 fi #NT=(5 10 15) # Number of Tasks #NDT=(3 4 8) # Number of different periods #NR=(2 3 4) # Number of resources RSF=33 # Resource sharing factor CSR=0 # Critical section ratio GCU=(20 30 40 50 60 70 80 90) # Global CPU usages N=$1 # Number of samples for each set category SCRIPT_DIR="$(cd "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"; export SCRIPT_DIR OUTPUT_DIR=$2; mkdir -p "$OUTPUT_DIR" # 1 - Generate Tasks (PCP) # Define the function to generate PCP tasks generate_pcp() { # The arrays below are put inside the function since parallel has no access to the outer environment NT=(5 10 15) # Number of Tasks NDT=(3 4 8) # Number of different periods NR=(2 3 4) # Number of resources local nt="${NT[$1]}" ndt="${NDT[$1]}" nr="${NR[$1]}" rsf=$2 csr=$3 gcu=$4 i=$5 outdir=$6 "${SCRIPT_DIR}/../../trunk/src/generate_ppcp_architecture_d" ${nt} ${ndt} ${nr} ${rsf} ${csr} ${gcu} "${outdir}/${nt}_${ndt}_${nr}_${rsf}_${csr}_${gcu}_PCP_${i}.xmlv3" } # Export the function so that it can be used by parallel export -f generate_pcp # Generate random task sets parallel -j "$(nproc)" generate_pcp ::: 0 1 2 ::: "${RSF}" ::: "${CSR}" ::: "${GCU[@]}" ::: $(seq -w 1 "${N}") ::: ${OUTPUT_DIR} # 2 - Create PPCP equivalents using parallel parallel -j "$(nproc)" 'cat {} | sed -e "s/PRIORITY_CEILING_PROTOCOL/POOL_BASED_PRIORITY_CEILING_PROTOCOL/g" > "$(echo {} | sed -e s/PCP/PPCP/g)"' ::: "${OUTPUT_DIR}"/*_PCP_*.xmlv3