From abb473ce7b3593aad51d3162941b5d977d8ad31f Mon Sep 17 00:00:00 2001 From: wang_zyuan <12333533+love-in-the-holy-land@user.noreply.gitee.com> Date: Fri, 18 Jul 2025 07:05:54 +0800 Subject: [PATCH 1/7] Added instance oe_test_oeAware_61.sh --- suite2cases/oeaware_temp.json | 8 +++ .../oeaware/oe_test_oeAware_61.sh | 59 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 suite2cases/oeaware_temp.json create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_61.sh diff --git a/suite2cases/oeaware_temp.json b/suite2cases/oeaware_temp.json new file mode 100644 index 000000000..478280a00 --- /dev/null +++ b/suite2cases/oeaware_temp.json @@ -0,0 +1,8 @@ +{ + "path": "$OET_PATH/testcases/feature-test/oeaware", + "cases": [ + { + "name": "oe_test_oeAware_61" + } + ] +} diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_61.sh b/testcases/feature-test/oeaware/oe_test_oeAware_61.sh new file mode 100644 index 000000000..f092b6573 --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_61.sh @@ -0,0 +1,59 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/libs/locallibs/common_lib.sh + +function pre_test(){ + script_name=$(basename "$0") + LOG_INFO "Start to prepare test environment for ${script_name}" + if /etc/oeAware/analysis_config.yaml["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment" +} +function run_test(){ + LOG_INFO "Start to run the test." + yaml_dir=/etc/oeAware/analysis_config.yaml + # default threshold + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + # change host threshold + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/100/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/-1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:host_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/101/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:host_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/45/' $yaml_dir + # change docker threshold + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/100/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/-1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:docker_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/101/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:docker_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + LOG_INFO "End to run the test." +} +function post_test(){ + LOG_INFO "Start to restore the test environment" + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment" +} + +main "$@" -- Gitee From 85d0c9a8aded64323e30149a7017b1a275fe043f Mon Sep 17 00:00:00 2001 From: 13906515865 Date: Thu, 24 Jul 2025 10:47:43 +0800 Subject: [PATCH 2/7] Added oeaware_test 61,72~76,83~83,87 --- suite2cases/oeaware_temp.json | 2 +- temp_txt/suggestion.txt | 18 +++++++ temp_txt/suggestion_new.txt | 18 +++++++ testcases/feature-test/oeaware/numafast | 0 .../oeaware/oe_test_oeAware_67.sh | 24 +++++++++ .../oeaware/oe_test_oeAware_72.sh | 31 +++++++++++ .../oeaware/oe_test_oeAware_73.sh | 32 ++++++++++++ .../oeaware/oe_test_oeAware_74.sh | 35 +++++++++++++ .../oeaware/oe_test_oeAware_75.sh | 34 +++++++++++++ .../oeaware/oe_test_oeAware_76.sh | 45 ++++++++++++++++ .../oeaware/oe_test_oeAware_81.sh | 34 +++++++++++++ .../oeaware/oe_test_oeAware_82.sh | 38 ++++++++++++++ .../oeaware/oe_test_oeAware_83.sh | 35 +++++++++++++ .../oeaware/oe_test_oeAware_87.sh | 51 +++++++++++++++++++ 14 files changed, 396 insertions(+), 1 deletion(-) create mode 100644 temp_txt/suggestion.txt create mode 100644 temp_txt/suggestion_new.txt create mode 100644 testcases/feature-test/oeaware/numafast create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_67.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_72.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_73.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_74.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_75.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_76.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_81.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_82.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_83.sh create mode 100644 testcases/feature-test/oeaware/oe_test_oeAware_87.sh diff --git a/suite2cases/oeaware_temp.json b/suite2cases/oeaware_temp.json index 478280a00..8315f6d16 100644 --- a/suite2cases/oeaware_temp.json +++ b/suite2cases/oeaware_temp.json @@ -2,7 +2,7 @@ "path": "$OET_PATH/testcases/feature-test/oeaware", "cases": [ { - "name": "oe_test_oeAware_61" + "name": "oe_test_oeAware_73" } ] } diff --git a/temp_txt/suggestion.txt b/temp_txt/suggestion.txt new file mode 100644 index 000000000..e84345fc3 --- /dev/null +++ b/temp_txt/suggestion.txt @@ -0,0 +1,18 @@ +==================================================Analysis Suggestion=================================================== ++---------------------+---------------------+---------------------+ +|suggestion |operation |result | ++---------------------+---------------------+---------------------+ +|Use numafast |step 1: if `oeaware |Optimizes memory acc | +| |ctl -q | grep tune_n |ess locality with lo | +| |uma_mem_access` not |w scheduling overhea | +| |exist, install numaf |d | +| |ast | | +| |install : `oeawarect | | +| |l -i numafast` | | +| |load : `oeawarect | | +| |l -l libtune_numa.so | | +| |` | | +| |step 2: enable insta | | +| |nce `oeaware -e tune | | +| |_numa_mem_access` | | ++---------------------+---------------------+---------------------+ diff --git a/temp_txt/suggestion_new.txt b/temp_txt/suggestion_new.txt new file mode 100644 index 000000000..e84345fc3 --- /dev/null +++ b/temp_txt/suggestion_new.txt @@ -0,0 +1,18 @@ +==================================================Analysis Suggestion=================================================== ++---------------------+---------------------+---------------------+ +|suggestion |operation |result | ++---------------------+---------------------+---------------------+ +|Use numafast |step 1: if `oeaware |Optimizes memory acc | +| |ctl -q | grep tune_n |ess locality with lo | +| |uma_mem_access` not |w scheduling overhea | +| |exist, install numaf |d | +| |ast | | +| |install : `oeawarect | | +| |l -i numafast` | | +| |load : `oeawarect | | +| |l -l libtune_numa.so | | +| |` | | +| |step 2: enable insta | | +| |nce `oeaware -e tune | | +| |_numa_mem_access` | | ++---------------------+---------------------+---------------------+ diff --git a/testcases/feature-test/oeaware/numafast b/testcases/feature-test/oeaware/numafast new file mode 100644 index 000000000..e69de29bb diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_67.sh b/testcases/feature-test/oeaware/oe_test_oeAware_67.sh new file mode 100644 index 000000000..85c60696f --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_67.sh @@ -0,0 +1,24 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + cp + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_72.sh b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh new file mode 100644 index 000000000..26650026d --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh @@ -0,0 +1,31 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + # cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 0 "Check SMT suggestion failed." + local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') + local thresh=$(awk '/dynamic_smt:/ {getline; print $2}' /etc/oeAware/analysis_config.yaml) + stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & + # stress-ng --cpu $cpu_count -t 30 & + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 1 "Check SMT suggestion failed." + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_73.sh b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh new file mode 100644 index 000000000..574493762 --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh @@ -0,0 +1,32 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') + local thresh=70 + sed -i "/dynamic_smt:/ { n; s/\( *threshold:\)[[:space:]]*.*/ threshold: ${thresh}/; }" /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 0 "Check SMT suggestion failed." + stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & + # stress-ng --cpu $cpu_count -t 30 & + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 1 "Check SMT suggestion failed." + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_74.sh b/testcases/feature-test/oeaware/oe_test_oeAware_74.sh new file mode 100644 index 000000000..5c02a4f2e --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_74.sh @@ -0,0 +1,35 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/0/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:" + CHECK_RESULT $? 0 1 "Check SMT threshold failed." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/100/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:" + CHECK_RESULT $? 0 1 "Check SMT threshold failed." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/-1/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/101/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_75.sh b/testcases/feature-test/oeaware/oe_test_oeAware_75.sh new file mode 100644 index 000000000..dfc605931 --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_75.sh @@ -0,0 +1,34 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:" + CHECK_RESULT $? 0 1 "Check SMT threshold failed." + sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\1IllegalInput / }' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\11i45lA\& / }' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\1$#\{\]?\> / }' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_76.sh b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh new file mode 100644 index 000000000..daccb08de --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh @@ -0,0 +1,45 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + temp_dir=$(mktemp -d) + mkdir "$temp_dir/low/" + mkdir "$temp_dir/high/" + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + local test_rounds=5 + local flag=0 + + oeawarectl analysis -t 3 | grep -A 100 'Analysis Suggestion' | awk '/^$/ {exit} 1' > "$temp_dir/low/suggestion_1.txt" + for ((i=2;i "$temp_dir/low/suggestion_$i.txt" + diff "$temp_dir/low/suggestion_${i-1}.txt" "$temp_dir/low/suggestion_$i.txt" + CHECK_RESULT $? 0 0 "Check repeated analysis suggestion failed" + done + + stress-ng --cpu 6 -t 60 & + SLEEP 5 + oeawarectl analysis -t 3 | grep -A 100 'Analysis Suggestion' | awk '/^$/ {exit} 1' > "$temp_dir/high/suggestion_1.txt" + for ((i=2;i "$temp_dir/high/suggestion_$i.txt" + diff "$temp_dir/high/suggestion_${i-1}.txt" "$temp_dir/high/suggestion_$i.txt" + CHECK_RESULT $? 0 0 "Check repeated analysis suggestion failed" + done + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + rm -rf ${temp_dir} + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_81.sh b/testcases/feature-test/oeaware/oe_test_oeAware_81.sh new file mode 100644 index 000000000..d2a8c400a --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_81.sh @@ -0,0 +1,34 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + oeawarectl -e dynamic_smt_tune -threshold 0 + grep -q "^0" /proc/sys/kernel/sched_util_ratio + CHECK_RESULT $? 0 0 "Check SMT by threshold failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + CHECK_RESULT $? 0 0 "Check SMT by threshold failed" + oeawarectl -e dynamic_smt_tune -threshold -1 2>&1 | grep "Instance enabled failed, because the threshold range is \[0, 100\], but is -1" + CHECK_RESULT $? 0 0 "Check SMT beyond threshold failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + oeawarectl -e dynamic_smt_tune -threshold 101 2>&1 | grep "Instance enabled failed, because the threshold range is \[0, 100\], but is 101" + CHECK_RESULT $? 0 0 "Check SMT beyond threshold failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_82.sh b/testcases/feature-test/oeaware/oe_test_oeAware_82.sh new file mode 100644 index 000000000..8e9cec32a --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_82.sh @@ -0,0 +1,38 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + oeawarectl -e dynamic_smt_tune | grep "Instance enabled successfully" + CHECK_RESULT $? 0 0 "Check SMT failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + oeawarectl -e dynamic_smt_tune -threshold "IllegalInputs" | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + oeawarectl -e dynamic_smt_tune -threshold "%1!4@5\(IA?" | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + oeawarectl -e dynamic_smt_tune -threshold "@\>1\&:\}!?" | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + oeawarectl -e dynamic_smt_tune -threshold 191.801 | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_83.sh b/testcases/feature-test/oeaware/oe_test_oeAware_83.sh new file mode 100644 index 000000000..711d4f745 --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_83.sh @@ -0,0 +1,35 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + oeawarectl -e dynamic_smt_tune | grep "Instance enabled successfully" + CHECK_RESULT $? 0 0 "Check SMT failed" + oeawarectl -d dynamic_smt_tune + CHECK_RESULT $? 0 0 "Check SMT failed" + oeawarectl -e dynamic_smt_tune -d 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + oeawarectl -e dynamic_smt_tune -i 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + oeawarectl -e dynamic_smt_tune -e 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + oeawarectl -e dynamic_smt_tune -threshold_test 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + + LOG_INFO "End to restore the test environment." +} + +main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh new file mode 100644 index 000000000..256a96540 --- /dev/null +++ b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh @@ -0,0 +1,51 @@ +#!/usr/bin/bash + +source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh + +function pre_test() { + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + LOG_INFO "End to prepare the test environment." +} + +function run_test() { + LOG_INFO "Start to run test." + oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "NO_PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + + echo PARAL > /sys/kernel/debug/sched_features + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + tail -n 10 /var/log/oeAware/server.log | grep "\[NUMA_SCHED\] numa sched is already enabled on system" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + + echo NO_PARAL > /sys/kernel/debug/sched_features + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "NO_PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + LOG_INFO "End to run test." +} + +function post_test() { + LOG_INFO "Start to restore the test environment." + LOG_INFO "End to restore the test environment." +} + +main "$@" -- Gitee From b87077c31098a9f739d3390775214713acbcdd9e Mon Sep 17 00:00:00 2001 From: 13906515865 Date: Thu, 24 Jul 2025 17:31:00 +0800 Subject: [PATCH 3/7] edited --- suite2cases/oeaware.json | 31 ++++++ suite2cases/oeaware_temp.json | 27 +++++ .../oeaware/.oe_test_oeAware_87.sh.swp | Bin 0 -> 12288 bytes .../oeaware/oe_test_oeAware_61.sh | 92 +++++++++--------- .../oeaware/oe_test_oeAware_72.sh | 37 +++---- .../oeaware/oe_test_oeAware_73.sh | 41 ++++---- .../oeaware/oe_test_oeAware_74.sh | 50 ++++++---- .../oeaware/oe_test_oeAware_75.sh | 46 +++++---- .../oeaware/oe_test_oeAware_76.sh | 64 ++++++------ .../oeaware/oe_test_oeAware_81.sh | 48 +++++---- .../oeaware/oe_test_oeAware_82.sh | 57 ++++++----- .../oeaware/oe_test_oeAware_83.sh | 50 ++++++---- .../oeaware/oe_test_oeAware_87.sh | 80 ++++++++------- testcases/feature-test/oeaware/test | 0 14 files changed, 371 insertions(+), 252 deletions(-) create mode 100644 testcases/feature-test/oeaware/.oe_test_oeAware_87.sh.swp create mode 100644 testcases/feature-test/oeaware/test diff --git a/suite2cases/oeaware.json b/suite2cases/oeaware.json index 655d39778..9139c6492 100644 --- a/suite2cases/oeaware.json +++ b/suite2cases/oeaware.json @@ -132,6 +132,37 @@ }, { "name": "oe_test_oeAware_49" + }, + { + "name": "oe_test_oeAware_61" + }, + { + "name": "oe_test_oeAware_72" + }, + { + "name": "oe_test_oeAware_73" + }, + { + "name": "oe_test_oeAware_74" + }, + { + "name": "oe_test_oeAware_75" + }, + { + "name": "oe_test_oeAware_76" + }, + { + "name": "oe_test_oeAware_81" + }, + { + "name": "oe_test_oeAware_82" + }, + { + "name": "oe_test_oeAware_83" + }, + { + "name": "oe_test_oeAware_87" } + ] } diff --git a/suite2cases/oeaware_temp.json b/suite2cases/oeaware_temp.json index 8315f6d16..f5a88866a 100644 --- a/suite2cases/oeaware_temp.json +++ b/suite2cases/oeaware_temp.json @@ -1,8 +1,35 @@ { "path": "$OET_PATH/testcases/feature-test/oeaware", "cases": [ + { + "name": "oe_test_oeAware_61" + }, + { + "name": "oe_test_oeAware_72" + }, { "name": "oe_test_oeAware_73" + }, + { + "name": "oe_test_oeAware_74" + }, + { + "name": "oe_test_oeAware_75" + }, + { + "name": "oe_test_oeAware_76" + }, + { + "name": "oe_test_oeAware_81" + }, + { + "name": "oe_test_oeAware_82" + }, + { + "name": "oe_test_oeAware_83" + }, + { + "name": "oe_test_oeAware_87" } ] } diff --git a/testcases/feature-test/oeaware/.oe_test_oeAware_87.sh.swp b/testcases/feature-test/oeaware/.oe_test_oeAware_87.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..875db05b310e8d9f2e01fa05ad32af0160e8cbe1 GIT binary patch literal 12288 zcmeI2&u<$=6vwAX{3>lha7KFBL@FTJn>0La92()+D0V8OHd>8$$M&l08M8AR z8rleP0&(EN6~wt*kT?VVCuo&_pb|nzRN_JpNPPE4;bL?4ZJL%F_((ImXW1eZP0(^c{Bn1IA*dOnQ4%i75EP-zyro6A7^a#2^f$6 z|L^|&f9F}oega>B>);cx0p`H3#~Aw&+ydOsssxly>C`Q$miUpY-z-JP2GmMq&3u($u_RLa!*;}iwHZD~2q3$22X?Se@z(}1$ z`X*G82B<#Eip5@fnXW$Eu0&?`6gDiLuP(j;E1K)I7EQfI)A(@~d&0j=L8y5<3T2mM z(&yCSVI+dwa-SP=^_F%oi&%=t4MaQXy4vrFz$?nwG+m=^EC%G%8{V6hwMs32^wB0P z%HezyQ7Opm@$%VBBE{ZJD^eRSeNmV$0@8`^3#~gz6m9);D<11|#pvY<2}g}{wZiWy z+VvZq9qDVlcc49*YyVU%jaAtL2_%DUL?uZx)8uaQ*o{;dMV?u4r>jN0DPmNRcK1U1 z(#87vYQ<|p+oekz`A*CtpF&MMiUkk0aJ1z9$02}CX+(cqTkXJNFZ1)iDe!hT!?=_^ zkk~u8t@hUfX_#DxNpYCQ_7Y&6$kF+4fSiOv>fg)D`5sDhO`62hEL^0Y?37Eh_Da3k zs?=)a6g#)n=aP3toJU6|%)Xc&iQ-CV=)~OI@J4#FI_XQnJ?{e)D4|IzgM2j@s5I?k zVr1TYys$$Pc`hxzU8UpM-nh0KkjF|26RcE~AwaRLB+gWg~ z%%Ad3opd&a^X}un5pLM?DZY1)Pqj*7q<75OsJ8G{(K^5FjH;mbRll#Kn|E39{N#k2 O=-6$C(rt58)Bgr()^7a( literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_61.sh b/testcases/feature-test/oeaware/oe_test_oeAware_61.sh index f092b6573..fcbf536b5 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_61.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_61.sh @@ -3,57 +3,55 @@ source "${OET_PATH}"/libs/locallibs/common_lib.sh function pre_test(){ - script_name=$(basename "$0") - LOG_INFO "Start to prepare test environment for ${script_name}" - if /etc/oeAware/analysis_config.yaml["${NODE1_FRAME}"="x86_64"];then - echo "the environment does not support testing" - exit 255 - fi - DNF_INSTALL "oeAware-manager" - systemctl restart oeaware - cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak - LOG_INFO "End to prepare the test environment" + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment" } function run_test(){ - LOG_INFO "Start to run the test." - yaml_dir=/etc/oeAware/analysis_config.yaml - # default threshold - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" - CHECK_RESULT $? 0 1 "Check docker threshold failed." - # change host threshold - sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/1/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" - CHECK_RESULT $? 0 1 "Check docker threshold failed." - sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/100/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" - CHECK_RESULT $? 0 1 "Check docker threshold failed." - sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/-1/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:host_cpu_usage_threshold" - CHECK_RESULT $? 0 0 "Check docker threshold failed." - sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/101/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:host_cpu_usage_threshold" - CHECK_RESULT $? 0 0 "Check docker threshold failed." - sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/45/' $yaml_dir - # change docker threshold - sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/1/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" - CHECK_RESULT $? 0 1 "Check docker threshold failed." - sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/100/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" - CHECK_RESULT $? 0 1 "Check docker threshold failed." - sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/-1/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:docker_cpu_usage_threshold" - CHECK_RESULT $? 0 0 "Check docker threshold failed." - sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/101/' $yaml_dir - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:docker_cpu_usage_threshold" - CHECK_RESULT $? 0 0 "Check docker threshold failed." - LOG_INFO "End to run the test." + LOG_INFO "Start to run the test." + yaml_dir=/etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/100/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/-1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:host_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/101/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:host_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + sed -i '/^ host_cpu_usage_threshold:/ s/[-?0-9]\+/45/' $yaml_dir + + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/100/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:(host|docker)_cpu_usage_threshold" + CHECK_RESULT $? 0 1 "Check docker threshold failed." + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/-1/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:docker_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + sed -i '/^ docker_cpu_usage_threshold:/ s/[-?0-9]\+/101/' $yaml_dir + oeawarectl analysis -t 3 2>&1 | grep -E "Warn:.*docker_coordination_burst:docker_cpu_usage_threshold" + CHECK_RESULT $? 0 0 "Check docker threshold failed." + LOG_INFO "End to run the test." } function post_test(){ - LOG_INFO "Start to restore the test environment" - mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml - DNF_REMOVE "$@" - LOG_INFO "End to restore the test environment" + LOG_INFO "Start to restore the test environment" + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment" } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_72.sh b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh index 26650026d..6b705d71f 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_72.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh @@ -3,29 +3,32 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - # cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - oeawarectl analysis -t 3 | grep "use dynamic smt" - CHECK_RESULT $? 0 0 "Check SMT suggestion failed." - local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') - local thresh=$(awk '/dynamic_smt:/ {getline; print $2}' /etc/oeAware/analysis_config.yaml) - stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & - # stress-ng --cpu $cpu_count -t 30 & - oeawarectl analysis -t 3 | grep "use dynamic smt" - CHECK_RESULT $? 0 1 "Check SMT suggestion failed." - LOG_INFO "End to run test." + LOG_INFO "Start to run test." + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 0 "Check SMT suggestion failed." + local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') + local thresh=$(awk '/dynamic_smt:/ {getline; print $2}' /etc/oeAware/analysis_config.yaml) + stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 1 "Check SMT suggestion failed." + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_73.sh b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh index 574493762..936dc1cde 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_73.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh @@ -3,30 +3,35 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') - local thresh=70 - sed -i "/dynamic_smt:/ { n; s/\( *threshold:\)[[:space:]]*.*/ threshold: ${thresh}/; }" /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 | grep "use dynamic smt" - CHECK_RESULT $? 0 0 "Check SMT suggestion failed." - stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & - # stress-ng --cpu $cpu_count -t 30 & - oeawarectl analysis -t 3 | grep "use dynamic smt" - CHECK_RESULT $? 0 1 "Check SMT suggestion failed." - LOG_INFO "End to run test." + LOG_INFO "Start to run test." + local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') + local thresh=70 + sed -i "/dynamic_smt:/ { n; s/\( *threshold:\)[[:space:]]*.*/ threshold: ${thresh}/; }" /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 0 "Check SMT suggestion failed." + stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & + oeawarectl analysis -t 3 | grep "use dynamic smt" + CHECK_RESULT $? 0 1 "Check SMT suggestion failed." + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_74.sh b/testcases/feature-test/oeaware/oe_test_oeAware_74.sh index 5c02a4f2e..b8e9fd424 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_74.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_74.sh @@ -3,33 +3,41 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - sed -i '/^ threshold:/ s/\([0-9.-]\+\)/0/' /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:" - CHECK_RESULT $? 0 1 "Check SMT threshold failed." - sed -i '/^ threshold:/ s/\([0-9.-]\+\)/100/' /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:" - CHECK_RESULT $? 0 1 "Check SMT threshold failed." - sed -i '/^ threshold:/ s/\([0-9.-]\+\)/-1/' /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" - CHECK_RESULT $? 0 0 "Check SMT threshold failed." - sed -i '/^ threshold:/ s/\([0-9.-]\+\)/101/' /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" - CHECK_RESULT $? 0 0 "Check SMT threshold failed." - LOG_INFO "End to run test." + LOG_INFO "Start to run test." + oeawarectl analysis -t 3 2>&1 | grep "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" + CHECK_RESULT $? 0 1 "Check SMT threshold failed." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/0/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" + CHECK_RESULT $? 0 1 "Check SMT threshold failed." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/100/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" + CHECK_RESULT $? 0 1 "Check SMT threshold failed." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/-1/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + sed -i '/^ threshold:/ s/\([0-9.-]\+\)/101/' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\(-?[0-9]+\)' value must be \[0, 100\]" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_75.sh b/testcases/feature-test/oeaware/oe_test_oeAware_75.sh index dfc605931..73c7ebde3 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_75.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_75.sh @@ -3,32 +3,38 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + cp /etc/oeAware/analysis_config.yaml /etc/oeAware/analysis_config.yaml_bak + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - oeawarectl analysis -t 3 2>&1 | grep -E "Warn:" - CHECK_RESULT $? 0 1 "Check SMT threshold failed." - sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\1IllegalInput / }' /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" - CHECK_RESULT $? 0 0 "Check SMT threshold failed." - sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\11i45lA\& / }' /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" - CHECK_RESULT $? 0 0 "Check SMT threshold failed." - sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\1$#\{\]?\> / }' /etc/oeAware/analysis_config.yaml - oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" - CHECK_RESULT $? 0 0 "Check SMT threshold failed." - LOG_INFO "End to run test." + LOG_INFO "Start to run test." + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" + CHECK_RESULT $? 0 1 "Check SMT threshold failed." + sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\1IllegalInput / }' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\11i45lA\& / }' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + sed -i '/^dynamic_smt:/,/^ /{ /threshold:/ s/\(threshold:\s*\)[^#]*\s*/\1$#\{\]?\> / }' /etc/oeAware/analysis_config.yaml + oeawarectl analysis -t 3 2>&1 | grep -E "Warn: analysis config 'dynamic_smt:threshold\([^)]+\)' value must be a number" + CHECK_RESULT $? 0 0 "Check SMT threshold failed." + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + mv /etc/oeAware/analysis_config.yaml_bak /etc/oeAware/analysis_config.yaml + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_76.sh b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh index daccb08de..6dafa643b 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_76.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh @@ -3,43 +3,49 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - temp_dir=$(mktemp -d) - mkdir "$temp_dir/low/" - mkdir "$temp_dir/high/" - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + temp_dir=$(mktemp -d) + mkdir "$temp_dir/low/" + mkdir "$temp_dir/high/" + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - local test_rounds=5 - local flag=0 + LOG_INFO "Start to run test." + local test_rounds=5 + local flag=0 - oeawarectl analysis -t 3 | grep -A 100 'Analysis Suggestion' | awk '/^$/ {exit} 1' > "$temp_dir/low/suggestion_1.txt" - for ((i=2;i "$temp_dir/low/suggestion_$i.txt" - diff "$temp_dir/low/suggestion_${i-1}.txt" "$temp_dir/low/suggestion_$i.txt" - CHECK_RESULT $? 0 0 "Check repeated analysis suggestion failed" - done + oeawarectl analysis -t 3 | grep -A 100 'Analysis Suggestion' | awk '/^$/ {exit} 1' > "$temp_dir/low/suggestion_1.txt" + for ((i=2;i "$temp_dir/low/suggestion_$i.txt" + diff "$temp_dir/low/suggestion_${i-1}.txt" "$temp_dir/low/suggestion_$i.txt" + CHECK_RESULT $? 0 0 "Check repeated analysis suggestion failed" + done - stress-ng --cpu 6 -t 60 & - SLEEP 5 - oeawarectl analysis -t 3 | grep -A 100 'Analysis Suggestion' | awk '/^$/ {exit} 1' > "$temp_dir/high/suggestion_1.txt" - for ((i=2;i "$temp_dir/high/suggestion_$i.txt" - diff "$temp_dir/high/suggestion_${i-1}.txt" "$temp_dir/high/suggestion_$i.txt" - CHECK_RESULT $? 0 0 "Check repeated analysis suggestion failed" - done - LOG_INFO "End to run test." + stress-ng --cpu 6 -t 60 & + SLEEP 5 + oeawarectl analysis -t 3 | grep -A 100 'Analysis Suggestion' | awk '/^$/ {exit} 1' > "$temp_dir/high/suggestion_1.txt" + for ((i=2;i "$temp_dir/high/suggestion_$i.txt" + diff "$temp_dir/high/suggestion_${i-1}.txt" "$temp_dir/high/suggestion_$i.txt" + CHECK_RESULT $? 0 0 "Check repeated analysis suggestion failed" + done + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - rm -rf ${temp_dir} - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + rm -rf ${temp_dir} + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_81.sh b/testcases/feature-test/oeaware/oe_test_oeAware_81.sh index d2a8c400a..5650a8cc5 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_81.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_81.sh @@ -3,32 +3,40 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + if ["$(cat /sys/devices/system/cpu/smt/active)"="1"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - oeawarectl -e dynamic_smt_tune -threshold 0 - grep -q "^0" /proc/sys/kernel/sched_util_ratio - CHECK_RESULT $? 0 0 "Check SMT by threshold failed" - oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" - CHECK_RESULT $? 0 0 "Check SMT by threshold failed" - oeawarectl -e dynamic_smt_tune -threshold -1 2>&1 | grep "Instance enabled failed, because the threshold range is \[0, 100\], but is -1" - CHECK_RESULT $? 0 0 "Check SMT beyond threshold failed" - oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" - oeawarectl -e dynamic_smt_tune -threshold 101 2>&1 | grep "Instance enabled failed, because the threshold range is \[0, 100\], but is 101" - CHECK_RESULT $? 0 0 "Check SMT beyond threshold failed" - oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" - LOG_INFO "End to run test." + LOG_INFO "Start to run test." + oeawarectl -e dynamic_smt_tune -threshold 0 | grep "Instance enabled successfully" + grep -q "^0" /proc/sys/kernel/sched_util_ratio + CHECK_RESULT $? 0 0 "Check SMT by threshold failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + CHECK_RESULT $? 0 0 "Check SMT by threshold failed" + oeawarectl -e dynamic_smt_tune -threshold -1 2>&1 | grep "Instance enabled failed, because the threshold range is \[0, 100\], but is -1" + CHECK_RESULT $? 0 0 "Check SMT beyond threshold failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + oeawarectl -e dynamic_smt_tune -threshold 101 2>&1 | grep "Instance enabled failed, because the threshold range is \[0, 100\], but is 101" + CHECK_RESULT $? 0 0 "Check SMT beyond threshold failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_82.sh b/testcases/feature-test/oeaware/oe_test_oeAware_82.sh index 8e9cec32a..0d5cc3b54 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_82.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_82.sh @@ -3,36 +3,45 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + systemctl restart oeaware + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + if ["$(cat /sys/devices/system/cpu/smt/active)"="1"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - oeawarectl -e dynamic_smt_tune | grep "Instance enabled successfully" - CHECK_RESULT $? 0 0 "Check SMT failed" - oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" - oeawarectl -e dynamic_smt_tune -threshold "IllegalInputs" | grep "Instance enabled failed, because threshold value is not a integer" - CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" - oeawarectl -d dynamic_smt_tune - oeawarectl -e dynamic_smt_tune -threshold "%1!4@5\(IA?" | grep "Instance enabled failed, because threshold value is not a integer" - CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" - oeawarectl -d dynamic_smt_tune - oeawarectl -e dynamic_smt_tune -threshold "@\>1\&:\}!?" | grep "Instance enabled failed, because threshold value is not a integer" - CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" - oeawarectl -d dynamic_smt_tune - oeawarectl -e dynamic_smt_tune -threshold 191.801 | grep "Instance enabled failed, because threshold value is not a integer" - CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" - oeawarectl -d dynamic_smt_tune - LOG_INFO "End to run test." + LOG_INFO "Start to run test." + oeawarectl -e dynamic_smt_tune | grep "Instance enabled successfully" + CHECK_RESULT $? 0 0 "Check SMT failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + CHECK_RESULT $? 0 0 "Check SMT failed" + oeawarectl -e dynamic_smt_tune -threshold "IllegalInputs" | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + oeawarectl -e dynamic_smt_tune -threshold "%1!4@5\(IA?" | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + oeawarectl -e dynamic_smt_tune -threshold "@\>1\&:\}!?" | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + oeawarectl -e dynamic_smt_tune -threshold 191.801 | grep "Instance enabled failed, because threshold value is not a integer" + CHECK_RESULT $? 0 0 "Check SMT invalid threshold failed" + oeawarectl -d dynamic_smt_tune + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_83.sh b/testcases/feature-test/oeaware/oe_test_oeAware_83.sh index 711d4f745..b252434f7 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_83.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_83.sh @@ -3,33 +3,41 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + if ["$(cat /sys/devices/system/cpu/smt/active)"="1"];then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - oeawarectl -e dynamic_smt_tune | grep "Instance enabled successfully" - CHECK_RESULT $? 0 0 "Check SMT failed" - oeawarectl -d dynamic_smt_tune - CHECK_RESULT $? 0 0 "Check SMT failed" - oeawarectl -e dynamic_smt_tune -d 1 | grep -E 'Instance enabled failed, because params .*? invalid.' - CHECK_RESULT $? 0 0 "Check SMT invalid params failed" - oeawarectl -e dynamic_smt_tune -i 1 | grep -E 'Instance enabled failed, because params .*? invalid.' - CHECK_RESULT $? 0 0 "Check SMT invalid params failed" - oeawarectl -e dynamic_smt_tune -e 1 | grep -E 'Instance enabled failed, because params .*? invalid.' - CHECK_RESULT $? 0 0 "Check SMT invalid params failed" - oeawarectl -e dynamic_smt_tune -threshold_test 1 | grep -E 'Instance enabled failed, because params .*? invalid.' - CHECK_RESULT $? 0 0 "Check SMT invalid params failed" - LOG_INFO "End to run test." + LOG_INFO "Start to run test." + oeawarectl -e dynamic_smt_tune | grep "Instance enabled successfully" + CHECK_RESULT $? 0 0 "Check SMT failed" + oeawarectl -d dynamic_smt_tune | grep "Instance disabled successfully" + CHECK_RESULT $? 0 0 "Check SMT failed" + oeawarectl -e dynamic_smt_tune -d 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + oeawarectl -e dynamic_smt_tune -i 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + oeawarectl -e dynamic_smt_tune -e 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + oeawarectl -e dynamic_smt_tune -threshold_test 1 | grep -E 'Instance enabled failed, because params .*? invalid.' + CHECK_RESULT $? 0 0 "Check SMT invalid params failed" + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh index 256a96540..e0d08b9d7 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh @@ -3,49 +3,59 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { - LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - LOG_INFO "End to prepare the test environment." + LOG_INFO "Start to prepare the test environment." + if ["${NODE1_FRAME}"="x86_64"];then + echo "the environment does not support testing" + exit 255 + fi + if ! grep -qE 'PARAL|NO_PARAL' /sys/kernel/debug/sched_features;then + echo "the environment does not support testing" + exit 255 + fi + DNF_INSTALL "oeAware-manager" + systemctl restart oeaware + LOG_INFO "End to prepare the test environment." } function run_test() { - LOG_INFO "Start to run test." - oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." - CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "PARAL" - CHECK_RESULT $? 0 0 "Check disabling numa failed" - oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." - CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "NO_PARAL" - CHECK_RESULT $? 0 0 "Check disabling numa failed" + LOG_INFO "Start to run test." + oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "NO_PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" - echo PARAL > /sys/kernel/debug/sched_features - CHECK_RESULT $? 0 0 "Check disabling numa failed" - oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." - CHECK_RESULT $? 0 0 "Check disabling numa failed" - tail -n 10 /var/log/oeAware/server.log | grep "\[NUMA_SCHED\] numa sched is already enabled on system" - CHECK_RESULT $? 0 0 "Check disabling numa failed" - oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." - CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "PARAL" - CHECK_RESULT $? 0 0 "Check disabling numa failed" + echo PARAL > /sys/kernel/debug/sched_features + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + tail -n 10 /var/log/oeAware/server.log | grep "\[NUMA_SCHED\] numa sched is already enabled on system" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" - echo NO_PARAL > /sys/kernel/debug/sched_features - CHECK_RESULT $? 0 0 "Check disabling numa failed" - oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." - CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "PARAL" - CHECK_RESULT $? 0 0 "Check disabling numa failed" - oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." - CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "NO_PARAL" - CHECK_RESULT $? 0 0 "Check disabling numa failed" - LOG_INFO "End to run test." + echo NO_PARAL > /sys/kernel/debug/sched_features + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." + CHECK_RESULT $? 0 0 "Check disabling numa failed" + cat /sys/kernel/debug/sched_features | grep "NO_PARAL" + CHECK_RESULT $? 0 0 "Check disabling numa failed" + LOG_INFO "End to run test." } function post_test() { - LOG_INFO "Start to restore the test environment." - LOG_INFO "End to restore the test environment." + LOG_INFO "Start to restore the test environment." + DNF_REMOVE "$@" + LOG_INFO "End to restore the test environment." } main "$@" diff --git a/testcases/feature-test/oeaware/test b/testcases/feature-test/oeaware/test new file mode 100644 index 000000000..e69de29bb -- Gitee From edd4e8a2d335494a009ffe46e19915f45b15b571 Mon Sep 17 00:00:00 2001 From: 13906515865 Date: Thu, 24 Jul 2025 19:36:32 +0800 Subject: [PATCH 4/7] updated --- suite2cases/oeaware_temp.json | 27 - suite2cases/oeaware_temp.json_bak | 35 + temp_txt/suggestion.txt | 18 - temp_txt/suggestion_new.txt | 18 - ...e_87.sh.swp => .oe_test_oeAware_73.sh.swp} | Bin 12288 -> 12288 bytes .../feature-test/oeaware/UnixBench/.cproject | 245 + .../feature-test/oeaware/UnixBench/.project | 82 + .../feature-test/oeaware/UnixBench/Makefile | 253 + .../feature-test/oeaware/UnixBench/README | 418 + testcases/feature-test/oeaware/UnixBench/Run | 1836 +++ .../feature-test/oeaware/UnixBench/USAGE | 394 + .../oeaware/UnixBench/WRITING_TESTS | 133 + .../oeaware/UnixBench/pgms/arithoh | Bin 0 -> 72872 bytes .../oeaware/UnixBench/pgms/context1 | Bin 0 -> 73200 bytes .../feature-test/oeaware/UnixBench/pgms/dhry2 | Bin 0 -> 73808 bytes .../oeaware/UnixBench/pgms/dhry2reg | Bin 0 -> 73816 bytes .../oeaware/UnixBench/pgms/double | Bin 0 -> 72872 bytes .../feature-test/oeaware/UnixBench/pgms/execl | Bin 0 -> 74784 bytes .../feature-test/oeaware/UnixBench/pgms/float | Bin 0 -> 72872 bytes .../oeaware/UnixBench/pgms/fstime | Bin 0 -> 74064 bytes .../oeaware/UnixBench/pgms/gfx-x11 | 476 + .../feature-test/oeaware/UnixBench/pgms/hanoi | Bin 0 -> 72888 bytes .../oeaware/UnixBench/pgms/index.base | 46 + .../feature-test/oeaware/UnixBench/pgms/int | Bin 0 -> 72872 bytes .../feature-test/oeaware/UnixBench/pgms/long | Bin 0 -> 72872 bytes .../oeaware/UnixBench/pgms/looper | Bin 0 -> 73120 bytes .../oeaware/UnixBench/pgms/multi.sh | 23 + .../feature-test/oeaware/UnixBench/pgms/pipe | Bin 0 -> 73008 bytes .../oeaware/UnixBench/pgms/register | Bin 0 -> 72872 bytes .../feature-test/oeaware/UnixBench/pgms/short | Bin 0 -> 72872 bytes .../feature-test/oeaware/UnixBench/pgms/spawn | Bin 0 -> 72952 bytes .../oeaware/UnixBench/pgms/syscall | Bin 0 -> 73256 bytes .../oeaware/UnixBench/pgms/tst.sh | 20 + .../oeaware/UnixBench/pgms/unixbench.logo | 14 + .../oeaware/UnixBench/pgms/whetstone-double | Bin 0 -> 73368 bytes .../localhost.localdomain-2025-07-24-01 | 8 + .../localhost.localdomain-2025-07-24-01.html | 51 + .../oeaware/UnixBench/src/arith.c | 110 + .../feature-test/oeaware/UnixBench/src/big.c | 597 + .../oeaware/UnixBench/src/context1.c | 111 + .../feature-test/oeaware/UnixBench/src/dhry.h | 435 + .../oeaware/UnixBench/src/dhry_1.c | 431 + .../oeaware/UnixBench/src/dhry_2.c | 209 + .../oeaware/UnixBench/src/dummy.c | 319 + .../oeaware/UnixBench/src/execl.c | 97 + .../oeaware/UnixBench/src/fstime.c | 469 + .../oeaware/UnixBench/src/hanoi.c | 77 + .../oeaware/UnixBench/src/looper.c | 105 + .../feature-test/oeaware/UnixBench/src/pipe.c | 68 + .../oeaware/UnixBench/src/spawn.c | 80 + .../oeaware/UnixBench/src/syscall.c | 109 + .../oeaware/UnixBench/src/time-polling.c | 573 + .../oeaware/UnixBench/src/timeit.c | 41 + .../oeaware/UnixBench/src/ubgears.c | 650 + .../oeaware/UnixBench/src/whets.c | 1289 ++ .../oeaware/UnixBench/testdir/cctest.c | 156 + .../oeaware/UnixBench/testdir/dc.dat | 8 + .../oeaware/UnixBench/testdir/large.txt | 10000 ++++++++++++++++ .../oeaware/UnixBench/testdir/sort.src | 362 + .../oeaware/UnixBench/tmp/kill_run | 1 + testcases/feature-test/oeaware/numafast | 0 .../oeaware/oe_test_oeAware_61.sh | 2 +- .../oeaware/oe_test_oeAware_72.sh | 2 +- .../oeaware/oe_test_oeAware_73.sh | 3 +- .../oeaware/oe_test_oeAware_74.sh | 2 +- .../oeaware/oe_test_oeAware_75.sh | 2 +- .../oeaware/oe_test_oeAware_76.sh | 2 +- .../oeaware/oe_test_oeAware_81.sh | 6 +- .../oeaware/oe_test_oeAware_82.sh | 4 +- .../oeaware/oe_test_oeAware_83.sh | 4 +- .../oeaware/oe_test_oeAware_87.sh | 2 +- testcases/feature-test/oeaware/server.crt | 19 + testcases/feature-test/oeaware/server.csr | 16 + testcases/feature-test/oeaware/server.key | 27 + .../oeaware/smc-tools-main/.gitignore | 5 + .../oeaware/smc-tools-main/CONTRIBUTING.md | 62 + .../oeaware/smc-tools-main/LICENSE | 222 + .../oeaware/smc-tools-main/Makefile | 212 + .../oeaware/smc-tools-main/README.md | 217 + .../oeaware/smc-tools-main/af_smc.7 | 147 + .../feature-test/oeaware/smc-tools-main/dev.c | 545 + .../feature-test/oeaware/smc-tools-main/dev.h | 25 + .../oeaware/smc-tools-main/info.c | 199 + .../oeaware/smc-tools-main/info.h | 21 + .../oeaware/smc-tools-main/libnetlink.c | 311 + .../oeaware/smc-tools-main/libnetlink.h | 69 + .../oeaware/smc-tools-main/linkgroup.c | 636 + .../oeaware/smc-tools-main/linkgroup.h | 22 + .../oeaware/smc-tools-main/seid.c | 227 + .../oeaware/smc-tools-main/seid.h | 21 + .../oeaware/smc-tools-main/smc-device.8 | 162 + .../oeaware/smc-tools-main/smc-linkgroup.8 | 216 + .../oeaware/smc-tools-main/smc-preload.c | 153 + .../smc-tools-main/smc-tools.autocomplete | 140 + .../feature-test/oeaware/smc-tools-main/smc.8 | 110 + .../feature-test/oeaware/smc-tools-main/smc.c | 157 + .../oeaware/smc-tools-main/smc_chk | 572 + .../oeaware/smc-tools-main/smc_chk.8 | 115 + .../oeaware/smc-tools-main/smc_dbg | 113 + .../oeaware/smc-tools-main/smc_pnet.8 | 177 + .../oeaware/smc-tools-main/smc_pnet.c | 369 + .../oeaware/smc-tools-main/smc_rnics | 301 + .../oeaware/smc-tools-main/smc_rnics.8 | 123 + .../oeaware/smc-tools-main/smc_run | 85 + .../oeaware/smc-tools-main/smc_run.8 | 112 + .../feature-test/oeaware/smc-tools-main/smcd | Bin 0 -> 221344 bytes .../oeaware/smc-tools-main/smcd-device.8 | 166 + .../oeaware/smc-tools-main/smcd-info.8 | 71 + .../oeaware/smc-tools-main/smcd-linkgroup.8 | 222 + .../oeaware/smc-tools-main/smcd-seid.8 | 59 + .../oeaware/smc-tools-main/smcd-stats.8 | 201 + .../oeaware/smc-tools-main/smcd-ueid.8 | 90 + .../oeaware/smc-tools-main/smcd.8 | 123 + .../feature-test/oeaware/smc-tools-main/smcr | Bin 0 -> 222608 bytes .../oeaware/smc-tools-main/smcr.8 | 124 + .../oeaware/smc-tools-main/smcss.8 | 407 + .../oeaware/smc-tools-main/smcss.c | 423 + .../oeaware/smc-tools-main/smctools_common.h | 545 + .../oeaware/smc-tools-main/stats.c | 1071 ++ .../oeaware/smc-tools-main/stats.h | 128 + .../oeaware/smc-tools-main/ueid.c | 266 + .../oeaware/smc-tools-main/ueid.h | 21 + .../oeaware/smc-tools-main/util.c | 145 + .../oeaware/smc-tools-main/util.h | 44 + 124 files changed, 30360 insertions(+), 77 deletions(-) create mode 100644 suite2cases/oeaware_temp.json_bak delete mode 100644 temp_txt/suggestion.txt delete mode 100644 temp_txt/suggestion_new.txt rename testcases/feature-test/oeaware/{.oe_test_oeAware_87.sh.swp => .oe_test_oeAware_73.sh.swp} (75%) create mode 100644 testcases/feature-test/oeaware/UnixBench/.cproject create mode 100644 testcases/feature-test/oeaware/UnixBench/.project create mode 100644 testcases/feature-test/oeaware/UnixBench/Makefile create mode 100644 testcases/feature-test/oeaware/UnixBench/README create mode 100755 testcases/feature-test/oeaware/UnixBench/Run create mode 100644 testcases/feature-test/oeaware/UnixBench/USAGE create mode 100644 testcases/feature-test/oeaware/UnixBench/WRITING_TESTS create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/arithoh create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/context1 create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/dhry2 create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/dhry2reg create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/double create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/execl create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/float create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/fstime create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/hanoi create mode 100644 testcases/feature-test/oeaware/UnixBench/pgms/index.base create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/int create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/long create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/looper create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/multi.sh create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/pipe create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/register create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/short create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/spawn create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/syscall create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/tst.sh create mode 100644 testcases/feature-test/oeaware/UnixBench/pgms/unixbench.logo create mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/whetstone-double create mode 100644 testcases/feature-test/oeaware/UnixBench/results/localhost.localdomain-2025-07-24-01 create mode 100644 testcases/feature-test/oeaware/UnixBench/results/localhost.localdomain-2025-07-24-01.html create mode 100644 testcases/feature-test/oeaware/UnixBench/src/arith.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/big.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/context1.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/dhry.h create mode 100644 testcases/feature-test/oeaware/UnixBench/src/dhry_1.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/dhry_2.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/dummy.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/execl.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/fstime.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/hanoi.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/looper.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/pipe.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/spawn.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/syscall.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/time-polling.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/timeit.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/ubgears.c create mode 100644 testcases/feature-test/oeaware/UnixBench/src/whets.c create mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/cctest.c create mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/dc.dat create mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/large.txt create mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/sort.src create mode 100755 testcases/feature-test/oeaware/UnixBench/tmp/kill_run delete mode 100644 testcases/feature-test/oeaware/numafast create mode 100644 testcases/feature-test/oeaware/server.crt create mode 100644 testcases/feature-test/oeaware/server.csr create mode 100644 testcases/feature-test/oeaware/server.key create mode 100644 testcases/feature-test/oeaware/smc-tools-main/.gitignore create mode 100644 testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md create mode 100644 testcases/feature-test/oeaware/smc-tools-main/LICENSE create mode 100644 testcases/feature-test/oeaware/smc-tools-main/Makefile create mode 100644 testcases/feature-test/oeaware/smc-tools-main/README.md create mode 100644 testcases/feature-test/oeaware/smc-tools-main/af_smc.7 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/dev.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/dev.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/info.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/info.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/libnetlink.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/libnetlink.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/linkgroup.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/linkgroup.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/seid.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/seid.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-device.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-preload.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc.c create mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_chk create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 create mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_dbg create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c create mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_rnics create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 create mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_run create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_run.8 create mode 100755 testcases/feature-test/oeaware/smc-tools-main/smcd create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-device.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd.8 create mode 100755 testcases/feature-test/oeaware/smc-tools-main/smcr create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcr.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcss.8 create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcss.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/smctools_common.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/stats.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/stats.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/ueid.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/ueid.h create mode 100644 testcases/feature-test/oeaware/smc-tools-main/util.c create mode 100644 testcases/feature-test/oeaware/smc-tools-main/util.h diff --git a/suite2cases/oeaware_temp.json b/suite2cases/oeaware_temp.json index f5a88866a..625f6c08d 100644 --- a/suite2cases/oeaware_temp.json +++ b/suite2cases/oeaware_temp.json @@ -1,35 +1,8 @@ { "path": "$OET_PATH/testcases/feature-test/oeaware", "cases": [ - { - "name": "oe_test_oeAware_61" - }, - { - "name": "oe_test_oeAware_72" - }, - { - "name": "oe_test_oeAware_73" - }, - { - "name": "oe_test_oeAware_74" - }, - { - "name": "oe_test_oeAware_75" - }, - { - "name": "oe_test_oeAware_76" - }, { "name": "oe_test_oeAware_81" - }, - { - "name": "oe_test_oeAware_82" - }, - { - "name": "oe_test_oeAware_83" - }, - { - "name": "oe_test_oeAware_87" } ] } diff --git a/suite2cases/oeaware_temp.json_bak b/suite2cases/oeaware_temp.json_bak new file mode 100644 index 000000000..f5a88866a --- /dev/null +++ b/suite2cases/oeaware_temp.json_bak @@ -0,0 +1,35 @@ +{ + "path": "$OET_PATH/testcases/feature-test/oeaware", + "cases": [ + { + "name": "oe_test_oeAware_61" + }, + { + "name": "oe_test_oeAware_72" + }, + { + "name": "oe_test_oeAware_73" + }, + { + "name": "oe_test_oeAware_74" + }, + { + "name": "oe_test_oeAware_75" + }, + { + "name": "oe_test_oeAware_76" + }, + { + "name": "oe_test_oeAware_81" + }, + { + "name": "oe_test_oeAware_82" + }, + { + "name": "oe_test_oeAware_83" + }, + { + "name": "oe_test_oeAware_87" + } + ] +} diff --git a/temp_txt/suggestion.txt b/temp_txt/suggestion.txt deleted file mode 100644 index e84345fc3..000000000 --- a/temp_txt/suggestion.txt +++ /dev/null @@ -1,18 +0,0 @@ -==================================================Analysis Suggestion=================================================== -+---------------------+---------------------+---------------------+ -|suggestion |operation |result | -+---------------------+---------------------+---------------------+ -|Use numafast |step 1: if `oeaware |Optimizes memory acc | -| |ctl -q | grep tune_n |ess locality with lo | -| |uma_mem_access` not |w scheduling overhea | -| |exist, install numaf |d | -| |ast | | -| |install : `oeawarect | | -| |l -i numafast` | | -| |load : `oeawarect | | -| |l -l libtune_numa.so | | -| |` | | -| |step 2: enable insta | | -| |nce `oeaware -e tune | | -| |_numa_mem_access` | | -+---------------------+---------------------+---------------------+ diff --git a/temp_txt/suggestion_new.txt b/temp_txt/suggestion_new.txt deleted file mode 100644 index e84345fc3..000000000 --- a/temp_txt/suggestion_new.txt +++ /dev/null @@ -1,18 +0,0 @@ -==================================================Analysis Suggestion=================================================== -+---------------------+---------------------+---------------------+ -|suggestion |operation |result | -+---------------------+---------------------+---------------------+ -|Use numafast |step 1: if `oeaware |Optimizes memory acc | -| |ctl -q | grep tune_n |ess locality with lo | -| |uma_mem_access` not |w scheduling overhea | -| |exist, install numaf |d | -| |ast | | -| |install : `oeawarect | | -| |l -i numafast` | | -| |load : `oeawarect | | -| |l -l libtune_numa.so | | -| |` | | -| |step 2: enable insta | | -| |nce `oeaware -e tune | | -| |_numa_mem_access` | | -+---------------------+---------------------+---------------------+ diff --git a/testcases/feature-test/oeaware/.oe_test_oeAware_87.sh.swp b/testcases/feature-test/oeaware/.oe_test_oeAware_73.sh.swp similarity index 75% rename from testcases/feature-test/oeaware/.oe_test_oeAware_87.sh.swp rename to testcases/feature-test/oeaware/.oe_test_oeAware_73.sh.swp index 875db05b310e8d9f2e01fa05ad32af0160e8cbe1..a3e30fe14bcd47d490f3ece4d55c4f511077f79a 100644 GIT binary patch delta 885 zcmb`_OKTHR6bJBIq9SQ)TQ{PDJzj@oCS@KqwXG>ZO6{U*rO<~;S|+!X+su&3Ovs%W zLmE>224OZXT)5DUyO3|-N^z|#7mDJhAWF9`JW1+fmyH*GFn8|b{5dlR*@G^jkbYv*jnHWDB8>LY~ z-lOixSU3Tb&6zPmex4!Z5PdTIekLFoJXBp!?etkcTtQfMZ;w5!R_Kh(0O3#K3}Y|GS`{M+?sHNY5Crs zlh=Ks$pcn(wtsD7N>#N;U*>fkMa(6?ns z^aJ^BF16iMGMSVpF^i{mb`n}b2l%@RQoTQE=nK%GgZtlWhwEF+J-#J9XZ-W-Pfya4 z?22xy_OJ9ityUqvw6>XwW9wP90P%XM?05l4R~vB!KWcExDh)0_ct`g)3Wv2P7c)R5 Zxq@GogIZK5q=7z~pEYM^D1=-3%U`HP1lha7KFBL@FTJn>0La92()+D0V8OHd>8$$M&l08M8AR z8rleP0&(EN6~wt*kT?VVCuo&_pb|nzRN_JpNPPE4;bL?4ZJL%F_((ImXW1eZP0(^c{Bn1IA*dOnQ4%i75EP-zyro6A7^a#2^f$6 z|L^|&f9F}oega>B>);cx0p`H3#~Aw&+ydOsssxly>C`Q$miUpY-z-JP2GmMq&3u($u_RLa!*;}iwHZD~2q3$22X?Se@z(}1$ z`X*G82B<#Eip5@fnXW$Eu0&?`6gDiLuP(j;E1K)I7EQfI)A(@~d&0j=L8y5<3T2mM z(&yCSVI+dwa-SP=^_F%oi&%=t4MaQXy4vrFz$?nwG+m=^EC%G%8{V6hwMs32^wB0P z%HezyQ7Opm@$%VBBE{ZJD^eRSeNmV$0@8`^3#~gz6m9);D<11|#pvY<2}g}{wZiWy z+VvZq9qDVlcc49*YyVU%jaAtL2_%DUL?uZx)8uaQ*o{;dMV?u4r>jN0DPmNRcK1U1 z(#87vYQ<|p+oekz`A*CtpF&MMiUkk0aJ1z9$02}CX+(cqTkXJNFZ1)iDe!hT!?=_^ zkk~u8t@hUfX_#DxNpYCQ_7Y&6$kF+4fSiOv>fg)D`5sDhO`62hEL^0Y?37Eh_Da3k zs?=)a6g#)n=aP3toJU6|%)Xc&iQ-CV=)~OI@J4#FI_XQnJ?{e)D4|IzgM2j@s5I?k zVr1TYys$$Pc`hxzU8UpM-nh0KkjF|26RcE~AwaRLB+gWg~ z%%Ad3opd&a^X}un5pLM?DZY1)Pqj*7q<75OsJ8G{(K^5FjH;mbRll#Kn|E39{N#k2 O=-6$C(rt58)Bgr()^7a( diff --git a/testcases/feature-test/oeaware/UnixBench/.cproject b/testcases/feature-test/oeaware/UnixBench/.cproject new file mode 100644 index 000000000..90ad35054 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/.cproject @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testcases/feature-test/oeaware/UnixBench/.project b/testcases/feature-test/oeaware/UnixBench/.project new file mode 100644 index 000000000..7945d2b1d --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/.project @@ -0,0 +1,82 @@ + + + UnixBench + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/UnixBench/Debug} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/testcases/feature-test/oeaware/UnixBench/Makefile b/testcases/feature-test/oeaware/UnixBench/Makefile new file mode 100644 index 000000000..62f36e10b --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/Makefile @@ -0,0 +1,253 @@ +############################################################################## +# UnixBench v5.1.3 +# Based on The BYTE UNIX Benchmarks - Release 3 +# Module: Makefile SID: 3.9 5/15/91 19:30:15 +# +############################################################################## +# Bug reports, patches, comments, suggestions should be sent to: +# David C Niemi +# +# Original Contacts at Byte Magazine: +# Ben Smith or Tom Yager at BYTE Magazine +# bensmith@bytepb.byte.com tyager@bytepb.byte.com +# +############################################################################## +# Modification Log: 7/28/89 cleaned out workload files +# 4/17/90 added routines for installing from shar mess +# 7/23/90 added compile for dhrystone version 2.1 +# (this is not part of Run file. still use old) +# removed HZ from everything but dhry. +# HZ is read from the environment, if not +# there, you must define it in this file +# 10/30/90 moved new dhrystone into standard set +# new pgms (dhry included) run for a specified +# time rather than specified number of loops +# 4/5/91 cleaned out files not needed for +# release 3 -- added release 3 files -ben +# 10/22/97 added compiler options for strict ANSI C +# checking for gcc and DEC's cc on +# Digital Unix 4.x (kahn@zk3.dec.com) +# 09/26/07 changes for UnixBench 5.0 +# 09/30/07 adding ubgears, GRAPHIC_TESTS switch +# 10/14/07 adding large.txt +# 01/13/11 added support for parallel compilation +############################################################################## + +############################################################################## +# CONFIGURATION +############################################################################## + +SHELL = /bin/sh + +# GRAPHICS TESTS: Uncomment the definition of "GRAPHIC_TESTS" to enable +# the building of the graphics benchmarks. This will require the +# X11 libraries on your system. +# +# Comment the line out to disable these tests. +# GRAPHIC_TESTS = defined + +# Set "GL_LIBS" to the libraries needed to link a GL program. +GL_LIBS = -lGL -lXext -lX11 + + +# COMPILER CONFIGURATION: Set "CC" to the name of the compiler to use +# to build the binary benchmarks. You should also set "$cCompiler" in the +# Run script to the name of the compiler you want to test. +CC=gcc + +# OPTIMISATION SETTINGS: + +## Very generic +#OPTON = -O + +## For Linux 486/Pentium, GCC 2.7.x and 2.8.x +#OPTON = -O2 -fomit-frame-pointer -fforce-addr -fforce-mem -ffast-math \ +# -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 + +## For Linux, GCC previous to 2.7.0 +#OPTON = -O2 -fomit-frame-pointer -fforce-addr -fforce-mem -ffast-math -m486 + +#OPTON = -O2 -fomit-frame-pointer -fforce-addr -fforce-mem -ffast-math \ +# -m386 -malign-loops=1 -malign-jumps=1 -malign-functions=1 + +## For Solaris 2, or general-purpose GCC 2.7.x +OPTON = -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall + +## For Digital Unix v4.x, with DEC cc v5.x +#OPTON = -O4 +#CFLAGS = -DTIME -std1 -verbose -w0 + +## generic gcc CFLAGS. -DTIME must be included. +CFLAGS = -DTIME -Wall -pedantic -ansi + + +############################################################################## +# END CONFIGURATION +############################################################################## + + +# local directories +PROGDIR = ./pgms +SRCDIR = ./src +TESTDIR = ./testdir +RESULTDIR = ./results +TMPDIR = ./tmp +# other directories +INCLDIR = /usr/include +LIBDIR = /lib +SCRIPTS = unixbench.logo multi.sh tst.sh index.base +SOURCES = arith.c big.c context1.c \ + dummy.c execl.c \ + fstime.c hanoi.c \ + pipe.c spawn.c \ + syscall.c looper.c timeit.c time-polling.c \ + dhry_1.c dhry_2.c dhry.h whets.c ubgears.c +TESTS = sort.src cctest.c dc.dat large.txt + +ifdef GRAPHIC_TESTS +GRAPHIC_BINS = $(PROGDIR)/ubgears +else +GRAPHIC_BINS = +endif + +# Program binaries. +BINS = $(PROGDIR)/arithoh $(PROGDIR)/register $(PROGDIR)/short \ + $(PROGDIR)/int $(PROGDIR)/long $(PROGDIR)/float $(PROGDIR)/double \ + $(PROGDIR)/hanoi $(PROGDIR)/syscall $(PROGDIR)/context1 \ + $(PROGDIR)/pipe $(PROGDIR)/spawn $(PROGDIR)/execl \ + $(PROGDIR)/dhry2 $(PROGDIR)/dhry2reg $(PROGDIR)/looper \ + $(PROGDIR)/fstime $(PROGDIR)/whetstone-double $(GRAPHIC_BINS) +## These compile only on some platforms... +# $(PROGDIR)/poll $(PROGDIR)/poll2 $(PROGDIR)/select + +# Required non-binary files. +REQD = $(BINS) $(PROGDIR)/unixbench.logo \ + $(PROGDIR)/multi.sh $(PROGDIR)/tst.sh $(PROGDIR)/index.base \ + $(PROGDIR)/gfx-x11 \ + $(TESTDIR)/sort.src $(TESTDIR)/cctest.c $(TESTDIR)/dc.dat \ + $(TESTDIR)/large.txt + +# ######################### the big ALL ############################ +all: distr programs +## Ick!!! What is this about??? How about let's not chmod everything bogusly. +# @chmod 744 * $(SRCDIR)/* $(PROGDIR)/* $(TESTDIR)/* $(DOCDIR)/* + +# ####################### a check for Run ###################### +check: $(REQD) + make all +# ############################################################## +# distribute the files out to subdirectories if they are in this one +distr: + @echo "Checking distribution of files" +# scripts + @if test ! -d $(PROGDIR) \ + ; then \ + mkdir $(PROGDIR) \ + ; mv $(SCRIPTS) $(PROGDIR) \ + ; else \ + echo "$(PROGDIR) exists" \ + ; fi +# C sources + @if test ! -d $(SRCDIR) \ + ; then \ + mkdir $(SRCDIR) \ + ; mv $(SOURCES) $(SRCDIR) \ + ; else \ + echo "$(SRCDIR) exists" \ + ; fi +# test data + @if test ! -d $(TESTDIR) \ + ; then \ + mkdir $(TESTDIR) \ + ; mv $(TESTS) $(TESTDIR) \ + ; else \ + echo "$(TESTDIR) exists" \ + ; fi +# temporary work directory + @if test ! -d $(TMPDIR) \ + ; then \ + mkdir $(TMPDIR) \ + ; else \ + echo "$(TMPDIR) exists" \ + ; fi +# directory for results + @if test ! -d $(RESULTDIR) \ + ; then \ + mkdir $(RESULTDIR) \ + ; else \ + echo "$(RESULTDIR) exists" \ + ; fi + +programs: $(BINS) + +# Individual programs +$(PROGDIR)/arithoh: $(SRCDIR)/arith.c + $(CC) -o $(PROGDIR)/arithoh ${CFLAGS} ${OPTON} -Darithoh $(SRCDIR)/arith.c +$(PROGDIR)/register: $(SRCDIR)/arith.c + $(CC) -o $(PROGDIR)/register ${CFLAGS} ${OPTON} -Ddatum='register int' $(SRCDIR)/arith.c +$(PROGDIR)/short: $(SRCDIR)/arith.c + $(CC) -o $(PROGDIR)/short ${CFLAGS} ${OPTON} -Ddatum=short $(SRCDIR)/arith.c +$(PROGDIR)/int: $(SRCDIR)/arith.c + $(CC) -o $(PROGDIR)/int ${CFLAGS} ${OPTON} -Ddatum=int $(SRCDIR)/arith.c +$(PROGDIR)/long: $(SRCDIR)/arith.c + $(CC) -o $(PROGDIR)/long ${CFLAGS} ${OPTON} -Ddatum=long $(SRCDIR)/arith.c +$(PROGDIR)/float: $(SRCDIR)/arith.c + $(CC) -o $(PROGDIR)/float ${CFLAGS} ${OPTON} -Ddatum=float $(SRCDIR)/arith.c +$(PROGDIR)/double: $(SRCDIR)/arith.c + $(CC) -o $(PROGDIR)/double ${CFLAGS} ${OPTON} -Ddatum=double $(SRCDIR)/arith.c +$(PROGDIR)/whetstone-double: $(SRCDIR)/whets.c + $(CC) -o $(PROGDIR)/whetstone-double ${CFLAGS} ${OPTON} -DDP -DUNIX -DUNIXBENCH $(SRCDIR)/whets.c -lm +$(PROGDIR)/hanoi: $(SRCDIR)/hanoi.c + $(CC) -o $(PROGDIR)/hanoi ${CFLAGS} ${OPTON} $(SRCDIR)/hanoi.c + +$(PROGDIR)/poll: $(SRCDIR)/time-polling.c + $(CC) -DHAS_POLL -DUNIXBENCH -o $(PROGDIR)/poll ${CFLAGS} ${OPTON} $(SRCDIR)/time-polling.c + +$(PROGDIR)/poll2: $(SRCDIR)/time-polling.c + $(CC) -DHAS_POLL2 -DUNIXBENCH -o $(PROGDIR)/poll2 ${CFLAGS} ${OPTON} $(SRCDIR)/time-polling.c + +$(PROGDIR)/select: $(SRCDIR)/time-polling.c + $(CC) -DHAS_SELECT -DUNIXBENCH -o $(PROGDIR)/select ${CFLAGS} ${OPTON} $(SRCDIR)/time-polling.c + +$(PROGDIR)/fstime: $(SRCDIR)/fstime.c + $(CC) -o $(PROGDIR)/fstime ${CFLAGS} ${OPTON} $(SRCDIR)/fstime.c + +$(PROGDIR)/syscall: $(SRCDIR)/syscall.c + $(CC) -o $(PROGDIR)/syscall ${CFLAGS} ${OPTON} $(SRCDIR)/syscall.c +$(PROGDIR)/context1: $(SRCDIR)/context1.c + $(CC) -o $(PROGDIR)/context1 ${CFLAGS} ${OPTON} $(SRCDIR)/context1.c +$(PROGDIR)/pipe: $(SRCDIR)/pipe.c + $(CC) -o $(PROGDIR)/pipe ${CFLAGS} ${OPTON} $(SRCDIR)/pipe.c +$(PROGDIR)/spawn: $(SRCDIR)/spawn.c + $(CC) -o $(PROGDIR)/spawn ${CFLAGS} ${OPTON} $(SRCDIR)/spawn.c +$(PROGDIR)/execl: $(SRCDIR)/execl.c $(SRCDIR)/big.c + $(CC) -o $(PROGDIR)/execl ${CFLAGS} ${OPTON} $(SRCDIR)/execl.c + +$(PROGDIR)/dhry2: $(SRCDIR)/dhry_1.c $(SRCDIR)/dhry_2.c $(SRCDIR)/dhry.h + cd $(SRCDIR); $(CC) -c ${CFLAGS} -DHZ=${HZ} ${OPTON} dhry_1.c + cd $(SRCDIR); $(CC) -c ${CFLAGS} -DHZ=${HZ} ${OPTON} dhry_2.c + $(CC) -o $(PROGDIR)/dhry2 ${CFLAGS} ${OPTON} $(SRCDIR)/dhry_1.o $(SRCDIR)/dhry_2.o + cd $(SRCDIR); rm -f dhry_1.o dhry_2.o +$(PROGDIR)/dhry2reg: $(SRCDIR)/dhry_1.c $(SRCDIR)/dhry_2.c $(SRCDIR)/dhry.h + cd $(SRCDIR); $(CC) -c ${CFLAGS} -DREG=register -DHZ=${HZ} ${OPTON} dhry_1.c -o dhry_1_reg.o + cd $(SRCDIR); $(CC) -c ${CFLAGS} -DREG=register -DHZ=${HZ} ${OPTON} dhry_2.c -o dhry_2_reg.o + $(CC) -o $(PROGDIR)/dhry2reg ${CFLAGS} ${OPTON} $(SRCDIR)/dhry_1_reg.o $(SRCDIR)/dhry_2_reg.o + cd $(SRCDIR); rm -f dhry_1_reg.o dhry_2_reg.o + +$(PROGDIR)/looper: $(SRCDIR)/looper.c + $(CC) -o $(PROGDIR)/looper ${CFLAGS} ${OPTON} $(SRCDIR)/looper.c + +$(PROGDIR)/ubgears: $(SRCDIR)/ubgears.c + $(CC) -o $(PROGDIR)/ubgears ${CFLAGS} ${OPTON} $(SRCDIR)/ubgears.c $(GL_LIBS) + +# Run the benchmarks and create the reports +run: + sh ./Run + +clean: + rm -f $(BINS) core *~ */*~ + +spotless: clean + rm -f $(RESULTDIR)/* $(TMPDIR)/* + +## END ## diff --git a/testcases/feature-test/oeaware/UnixBench/README b/testcases/feature-test/oeaware/UnixBench/README new file mode 100644 index 000000000..67cad92f5 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/README @@ -0,0 +1,418 @@ +Version 5.1.3 -- 2011-01-13 + +================================================================ +To use Unixbench: + +1. UnixBench from version 5.1 on has both system and graphics tests. + If you want to use the graphic tests, edit the Makefile and make sure + that the line "GRAPHIC_TESTS = defined" is not commented out; then check + that the "GL_LIBS" definition is OK for your system. Also make sure + that the "x11perf" command is on your search path. + + If you don't want the graphics tests, then comment out the + "GRAPHIC_TESTS = defined" line. Note: comment it out, don't + set it to anything. + +2. Do "make". + +3. Do "Run" to run the system test; "Run graphics" to run the graphics + tests; "Run gindex" to run both. + +You will need perl, as Run is written in perl. + +For more information on using the tests, read "USAGE". + +For information on adding tests into the benchmark, see "WRITING_TESTS". + + +===================== RELEASE NOTES ===================================== + +======================== Jan 13 ========================== + +v5.1.3 + +Fixed issue that would cause a race condition if you attempted to compile in +parallel with more than 3 parallel jobs. + + +Kelly Lucas, Jan 13, 2011 +kdlucas at gmail period com + + +======================== Dec 07 ========================== + +v5.1.2 + +One big fix: if unixbench is installed in a directory whose pathname contains +a space, it should now run (previously it failed). + +To avoid possible clashes, the environment variables unixbench uses are now +prefixed with "UB_". These are all optional, and for most people will be +completely unnecessary, but if you want you can set these: + + UB_BINDIR Directory where the test programs live. + UB_TMPDIR Temp directory, for temp files. + UB_RESULTDIR Directory to put results in. + UB_TESTDIR Directory where the tests are executed. + +And a couple of tiny fixes: +* In pgms/tst.sh, changed "sort -n +1" to "sort -n -k 1" +* In Makefile, made it clearer that GRAPHIC_TESTS should be commented + out (not set to 0) to disable graphics +Thanks to nordi for pointing these out. + + +Ian Smith, December 26, 2007 +johantheghost at yahoo period com + + +======================== Oct 07 ========================== + +v5.1.1 + +It turns out that the setting of LANG is crucial to the results. This +explains why people in different regions were seeing odd results, and also +why runlevel 1 produced odd results -- runlevel 1 doesn't set LANG, and +hence reverts to ASCII, whereas most people use a UTF-8 encoding, which is +much slower in some tests (eg. shell tests). + +So now we manually set LANG to "en_US.utf8", which is configured with the +variable "$language". Don't change this if you want to share your results. +We also report the language settings in use. + +See "The Language Setting" in USAGE for more info. Thanks to nordi for +pointing out the LANG issue. + +I also added the "grep" and "sysexec" tests. These are non-index tests, +and "grep" uses the system's grep, so it's not much use for comparing +different systems. But some folks on the OpenSuSE list have been finding +these useful. They aren't in any of the main test groups; do "Run grep +sysexec" to run them. + +Index Changes +------------- + +The setting of LANG will affect consistency with systems where this is +not the default value. However, it should produce more consistent results +in future. + + +Ian Smith, October 15, 2007 +johantheghost at yahoo period com + + +======================== Oct 07 ========================== + +v5.1 + +The major new feature in this version is the addition of graphical +benchmarks. Since these may not compile on all systems, you can enable/ +disable them with the GRAPHIC_TESTS variable in the Makefile. + +As before, each test is run for 3 or 10 iterations. However, we now discard +the worst 1/3 of the scores before averaging the remainder. The logic is +that a glitch in the system (background process waking up, for example) may +make one or two runs go slow, so let's discard those. Hopefully this will +produce more consistent and repeatable results. Check the log file +for a test run to see the discarded scores. + +Made the tests compile and run on x86-64/Linux (fixed an execl bug passing +int instead of pointer). + +Also fixed some general bugs. + +Thanks to Stefan Esser for help and testing / bug reporting. + +Index Changes +------------- + +The tests are now divided into categories, and each category generates +its own index. This keeps the graphics test results separate from +the system tests. + +The "graphics" test and corresponding index are new. + +The "discard the worst scores" strategy should produce slightly higher +test scores, but at least they should (hopefully!) be more consistent. +The scores should not be higher than the best scores you would have got +with 5.0, so this should not be a huge consistency issue. + +Ian Smith, October 11, 2007 +johantheghost at yahoo period com + + +======================== Sep 07 ========================== + +v5.0 + +All the work I've done on this release is Linux-based, because that's +the only Unix I have access to. I've tried to make it more OS-agnostic +if anything; for example, it no longer has to figure out the format reported +by /usr/bin/time. However, it's possible that portability has been damaged. +If anyone wants to fix this, please feel free to mail me patches. + +In particular, the analysis of the system's CPUs is done via /proc/cpuinfo. +For systems which don't have this, please make appropriate changes in +getCpuInfo() and getSystemInfo(). + +The big change has been to make the tests multi-CPU aware. See the +"Multiple CPUs" section in "USAGE" for details. Other changes: + +* Completely rewrote Run in Perl; drastically simplified the way data is + processed. The confusing system of interlocking shell and awk scripts is + now just one script. Various intermediate files used to store and process + results are now replaced by Perl data structures internal to the script. + +* Removed from the index runs file system read and write tests which were + ignored for the index and wasted about 10 minutes per run (see fstime.c). + The read and write tests can now be selected individually. Made fstime.c + take parameters, so we no longer need to build 3 versions of it. + +* Made the output file names unique; they are built from + hostname-date-sequence. + +* Worked on result reporting, error handling, and logging. See TESTS. + We now generate both text and HTML reports. + +* Removed some obsolete files. + +Index Changes +------------- + +The index is still based on David Niemi's SPARCstation 20-61 (rated at 10.0), +and the intention in the changes I've made has been to keep the tests +unchanged, in order to maintain consistency with old result sets. + +However, the following changes have been made to the index: + +* The Pipe-based Context Switching test (context1) was being dropped + from the index report in v4.1.0 due to a bug; I've put it back in. + +* I've added shell1 to the index, to get a measure of how the shell tests + scale with multiple CPUs (shell8 already exercises all the CPUs, even + in single-copy mode). I made up the baseline score for this by + extrapolation. + +Both of these test can be dropped, if you wish, by editing the "TEST +SPECIFICATIONS" section of Run. + +Ian Smith, September 20, 2007 +johantheghost at yahoo period com + +======================== Aug 97 ========================== + +v4.1.0 + +Double precision Whetstone put in place instead of the old "double" benchmark. + +Removal of some obsolete files. + +"system" suite adds shell8. + +perlbench and poll added as "exhibition" (non-index) benchmarks. + +Incorporates several suggestions by Andre Derrick Balsa + +Code cleanups to reduce compiler warnings by David C Niemi +and Andy Kahn ; Digital Unix options by Andy Kahn. + +======================== Jun 97 ========================== + +v4.0.1 + +Minor change to fstime.c to fix overflow problems on fast machines. Counting +is now done in units of 256 (smallest BUFSIZE) and unsigned longs are used, +giving another 23 dB or so of headroom ;^) Results should be virtually +identical aside from very small rounding errors. + +======================== Dec 95 ========================== + +v4.0 + +Byte no longer seems to have anything to do with this benchmark, and I was +unable to reach any of the original authors; so I have taken it upon myself +to clean it up. + +This is version 4. Major assumptions made in these benchmarks have changed +since they were written, but they are nonetheless popular (particularly for +measuring hardware for Linux). Some changes made: + +- The biggest change is to put a lot more operating system-oriented + tests into the index. I experimented for a while with a decibel-like + logarithmic scale, but finally settled on using a geometric mean for + the final index (the individual scores are a normalized, and their + logs are averaged; the resulting value is exponentiated). + + "George", certain SPARCstation 20-61 with 128 MB RAM, a SPARC Storage + Array, and Solaris 2.3 is my new baseline; it is rated at 10.0 in each + of the index scores for a final score of 10.0. + + Overall I find the geometric averaging is a big improvement for + avoiding the skew that was once possible (e.g. a Pentium-75 which got + 40 on the buggy version of fstime, such that fstime accounted for over + half of its total score and hence wildly skewed its average). + + I also expect that the new numbers look different enough from the old + ones that no one is too likely to casually mistake them for each other. + + I am finding new SPARCs running Solaris 2.4 getting about 15-20, and + my 486 DX2-66 Compaq running Linux 1.3.45 got a 9.1. It got + understandably poor scores on CPU and FPU benchmarks (a horrible + 1.8 on "double" and 1.3 on "fsdisk"); but made up for it by averaging + over 20 on the OS-oriented benchmarks. The Pentium-75 running + Linux gets about 20 (and it *still* runs Windows 3.1 slowly. Oh well). + +- It is difficult to get a modern compiler to even consider making + dhry2 without registers, short of turning off *all* optimizations. + This is also not a terribly meaningful test, even if it were possible, + as noone compiles without registers nowadays. Replaced this benchmark + with dhry2reg in the index, and dropped it out of usage in general as + it is so hard to make a legitimate one. + +- fstime: this had some bugs when compiled on modern systems which return + the number of bytes read/written for read(2)/write(2) calls. The code + assumed that a negative return code was given for EOF, but most modern + systems return 0 (certainly on SunOS 4, Solaris2, and Linux, which is + what counts for me). The old code yielded wildly inflated read scores, + would eat up tens of MB of disk space on fast systems, and yielded + roughly 50% lower than normal copy scores than it should have. + + Also, it counted partial blocks *fully*; made it count the proportional + part of the block which was actually finished. + + Made bigger and smaller variants of fstime which are designed to beat + up the disk I/O and the buffer cache, respectively. Adjusted the + sleeps so that they are short for short benchmarks. + +- Instead of 1,2,4, and 8-shell benchmarks, went to 1, 8, and 16 to + give a broader range of information (and to run 1 fewer test). + The only real problem with this is that not many iterations get + done with 16 at a time on slow systems, so there are some significant + rounding errors; 8 therefore still used for the benchmark. There is + also the problem that the last (uncompleted) loop is counted as a full + loop, so it is impossible to score below 1.0 lpm (which gave my laptop + a break). Probably redesigning Shell to do each loop a bit more + quickly (but with less intensity) would be a good idea. + + This benchmark appears to be very heavily influenced by the speed + of the loader, by which shell is being used as /bin/sh, and by how + well-compiled some of the common shell utilities like grep, sed, and + sort are. With a consistent tool set it is also a good indicator of + the bandwidth between main memory and the CPU (e.g. Pentia score about + twice as high as 486es due to their 64-bit bus). Small, sometimes + broken shells like "ash-linux" do particularly well here, while big, + robust shells like bash do not. + +- "dc" is a somewhat iffy benchmark, because there are two versions of + it floating around, one being small, very fast, and buggy, and one + being more correct but slow. It was never in the index anyway. + +- Execl is a somewhat troubling benchmark in that it yields much higher + scores if compiled statically. I frown on this practice because it + distorts the scores away from reflecting how programs are really used + (i.e. dynamically linked). + +- Arithoh is really more an indicator of the compiler quality than of + the computer itself. For example, GCC 2.7.x with -O2 and a few extra + options optimizes much of it away, resulting in about a 1200% boost + to the score. Clearly not a good one for the index. + +I am still a bit unhappy with the variance in some of the benchmarks, most +notably the fstime suite; and with how long it takes to run. But I think +it gets significantly more reliable results than the older version in less +time. + +If anyone has ideas on how to make these benchmarks faster, lower-variance, +or more meaningful; or has nice, new, portable benchmarks to add, don't +hesitate to e-mail me. + +David C Niemi 7 Dec 1995 + +======================== May 91 ========================== +This is version 3. This set of programs should be able to determine if +your system is BSD or SysV. (It uses the output format of time (1) +to see. If you have any problems, contact me (by email, +preferably): ben@bytepb.byte.com + +--- + +The document doc/bench.doc describes the basic flow of the +benchmark system. The document doc/bench3.doc describes the major +changes in design of this version. As a user of the benchmarks, +you should understand some of the methods that have been +implemented to generate loop counts: + +Tests that are compiled C code: + The function wake_me(second, func) is included (from the file +timeit.c). This function uses signal and alarm to set a countdown +for the time request by the benchmark administration script +(Run). As soon as the clock is started, the test is run with a +counter keeping track of the number of loops that the test makes. +When alarm sends its signal, the loop counter value is sent to stderr +and the program terminates. Since the time resolution, signal +trapping and other factors don't insure that the test is for the +precise time that was requested, the test program is also run +from the time (1) command. The real time value returned from time +(1) is what is used in calculating the number of loops per second +(or minute, depending on the test). As is obvious, there is some +overhead time that is not taken into account, therefore the +number of loops per second is not absolute. The overhead of the +test starting and stopping and the signal and alarm calls is +common to the overhead of real applications. If a program loads +quickly, the number of loops per second increases; a phenomenon +that favors systems that can load programs quickly. (Setting the +sticky bit of the test programs is not considered fair play.) + +Test that use existing UNIX programs or shell scripts: + The concept is the same as that of compiled tests, except the +alarm and signal are contained in separate compiled program, +looper (source is looper.c). Looper uses an execvp to invoke the +test with its arguments. Here, the overhead includes the +invocation and execution of looper. + +-- + +The index numbers are generated from a baseline file that is in +pgms/index.base. You can put tests that you wish in this file. +All you need to do is take the results/log file from your +baseline machine, edit out the comment and blank lines, and sort +the result (vi/ex command: 1,$!sort). The sort in necessary +because the process of generating the index report uses join (1). +You can regenerate the reports by running "make report." + +-- + +========================= Jan 90 ============================= +Tom Yager has joined the effort here at BYTE; he is responsible +for many refinements in the UNIX benchmarks. + +The memory access tests have been deleted from the benchmarks. +The file access tests have been reversed so that the test is run +for a fixed time. The amount of data transfered (written, read, +and copied) is the variable. !WARNING! This test can eat up a +large hunk of disk space. + +The initial line of all shell scripts has been changed from the +SCO and XENIX form (:) to the more standard form "#! /bin/sh". +But different systems handle shell switching differently. Check +the documentation on your system and find out how you are +supposed to do it. Or, simpler yet, just run the benchmarks from +the Bourne shell. (You may need to set SHELL=/bin/sh as well.) + +The options to Run have not been checked in a while. They may no +longer function. Next time, I'll get back on them. There needs to +be another option added (next time) that halts testing between +each test. !WARNING! Some systems have caches that are not getting flushed +before the next test or iteration is run. This can cause +erroneous values. + +========================= Sept 89 ============================= +The database (db) programs now have a tuneable message queue space. +queue space. The default set in the Run script is 1024 bytes. +Other major changes are in the format of the times. We now show +Arithmetic and Geometric mean and standard deviation for User +Time, System Time, and Real Time. Generally, in reporting, we +plan on using the Real Time values with the benchs run with one +active user (the bench user). Comments and arguments are requested. + +contact: BIX bensmith or rick_g diff --git a/testcases/feature-test/oeaware/UnixBench/Run b/testcases/feature-test/oeaware/UnixBench/Run new file mode 100755 index 000000000..d6159355e --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/Run @@ -0,0 +1,1836 @@ +#!/usr/bin/perl -w + +use strict; + +use POSIX qw(strftime); +use Time::HiRes; +use IO::Handle; + + +############################################################################ +# UnixBench - Release 5.1.3, based on: +# The BYTE UNIX Benchmarks - Release 3 +# Module: Run SID: 3.11 5/15/91 19:30:14 +# Original Byte benchmarks written by: +# Ben Smith, Tom Yager at BYTE Magazine +# ben@bytepb.byte.com tyager@bytepb.byte.com +# BIX: bensmith tyager +# +####################################################################### +# General Purpose Benchmark +# based on the work by Ken McDonell, Computer Science, Monash University +# +# You will need ... +# perl Time::HiRes IO::Handlecat cc chmod comm cp date dc df echo +# kill ls make mkdir rm sed test time touch tty umask who +############################################################################### +# Modification Log: +# $Header: run,v 5.2 88/01/12 06:23:43 kenj Exp $ +# Ken McDonell, Computer Science, Monash University +# August 1, 1983 +# 3/89 - Ben Smith - BYTE: globalized many variables, modernized syntax +# 5/89 - commented and modernized. Removed workload items till they +# have been modernized. Added database server test. +# 11/14/89 - Made modifications to reflect new version of fstime +# and elimination of mem tests. +# 10/22/90 - Many tests have been flipped so that they run for +# a specified length of time and loops are counted. +# 4/3/91 - Cleaned up and debugged several test parameters - Ben +# 4/9/91 - Added structure for creating index and determing flavor of UNIX +# 4/26/91 - Made changes and corrections suggested by Tin Le of Sony +# 5/15/91 - Removed db from distribution +# 4/4/92 Jon Tombs fixed for GNU time to look like +# BSD (don't know the format of sysV!) +# 12/95 - Massive changes for portability, speed, and more meaningful index +# DCN David C Niemi +# 1997.06.20 DCN Fixed overflow condition in fstime.c on fast machines +# 1997.08.24 DCN Modified "system", replaced double with +# whetstone-double in "index" +# 1997.09.10 DCN Added perlbench as an Exhibition benchmark +# 1997.09.23 DCN Added rgooch's select as an Exhibition benchmark +# 1999.07.28 DCN "select" not compiled or run by default, because it +# does not compile on many platforms. PerlBench also +# not run by default. +# 2007.09.26 IS Huge rewrite -- see release notes in README. +# 2007.10.12 IS Added graphics tests, categories feature. +# 2007.10.14 IS Set and report LANG. Added "grep" and "sysexec". +# 2007.12.22 IS Tiny fixes; see README. +# 2011.01.13 KDL Fix for parallel compilation. + + +############################################################################ +# CONFIGURATION +############################################################################ + +# Version number of the script. +my $version = "5.1.3"; + +# The setting of LANG makes a huge difference to some of the scores, +# particularly depending on whether UTF-8 is used. So we always set +# it to the same value, which is configured here. +# +# If you want your results to be meaningful when compared to other peoples' +# results, you should not change this. Change it if you want to measure the +# effect of different languages. +my $language = "en_US.utf8"; + +# The number of iterations per test. +my $longIterCount = 10; +my $shortIterCount = 3; + +# C compiler to use in compilation tests. +my $cCompiler = 'gcc'; + +# Establish full paths to directories. These need to be full pathnames +# (or do they, any more?). They can be set in env. +# variables whose names are the first parameter to getDir() below. +my $BASEDIR = `pwd`; +chomp($BASEDIR); + +# Directory where the test programs live. +my $BINDIR = getDir('UB_BINDIR', $BASEDIR . "/pgms"); + +# Temp directory, for temp files. +my $TMPDIR = getDir('UB_TMPDIR', $BASEDIR . "/tmp"); + +# Directory to put results in. +my $RESULTDIR = getDir('UB_RESULTDIR', $BASEDIR . "/results"); + +# Directory where the tests are executed. +my $TESTDIR = getDir('UB_TESTDIR', $BASEDIR . "/testdir"); + + +############################################################################ +# TEST SPECIFICATIONS +############################################################################ + +# Configure the categories to which tests can belong. +my $testCats = { + 'system' => { 'name' => "System Benchmarks", 'maxCopies' => 16 }, + '2d' => { 'name' => "2D Graphics Benchmarks", 'maxCopies' => 1 }, + '3d' => { 'name' => "3D Graphics Benchmarks", 'maxCopies' => 1 }, + 'misc' => { 'name' => "Non-Index Benchmarks", 'maxCopies' => 16 }, +}; + + +my $arithmetic = [ + "arithoh", "short", "int", "long", "float", "double", "whetstone-double" +]; + +my $fs = [ + "fstime-w", "fstime-r", "fstime", + "fsbuffer-w", "fsbuffer-r", "fsbuffer", + "fsdisk-w", "fsdisk-r", "fsdisk" +]; + +my $oldsystem = [ + "execl", "fstime", "fsbuffer", "fsdisk", "pipe", "context1", "spawn", + "syscall" +]; + +my $system = [ + @$oldsystem, "shell1", "shell8", "shell16" +]; + +my $index = [ + "dhry2reg", "whetstone-double", @$oldsystem, "shell1", "shell8" +]; + +my $graphics = [ + "2d-rects", "2d-ellipse", "2d-aashapes", "2d-text", "2d-blit", + "2d-window", "ubgears" +]; + + +# List of all supported test names. +my $testList = { + # Individual tests. + "dhry2reg" => undef, + "whetstone-double" => undef, + "syscall" => undef, + "pipe" => undef, + "context1" => undef, + "spawn" => undef, + "execl" => undef, + "fstime-w" => undef, + "fstime-r" => undef, + "fstime" => undef, + "fsbuffer-w" => undef, + "fsbuffer-r" => undef, + "fsbuffer" => undef, + "fsdisk-w" => undef, + "fsdisk-r" => undef, + "fsdisk" => undef, + "shell1" => undef, + "shell8" => undef, + "shell16" => undef, + "short" => undef, + "int" => undef, + "long" => undef, + "float" => undef, + "double" => undef, + "arithoh" => undef, + "C" => undef, + "dc" => undef, + "hanoi" => undef, + "grep" => undef, + "sysexec" => undef, + + "2d-rects" => undef, + "2d-lines" => undef, + "2d-circle" => undef, + "2d-ellipse" => undef, + "2d-shapes" => undef, + "2d-aashapes" => undef, + "2d-polys" => undef, + "2d-text" => undef, + "2d-blit" => undef, + "2d-window" => undef, + + "ubgears" => undef, + + # Named combos and shorthands. + "arithmetic" => $arithmetic, + "dhry" => [ "dhry2reg" ], + "dhrystone" => [ "dhry2reg" ], + "whets" => [ "whetstone-double" ], + "whetstone" => [ "whetstone-double" ], + "load" => [ "shell" ], + "misc" => [ "C", "dc", "hanoi" ], + "speed" => [ @$arithmetic, @$system ], + "oldsystem" => $oldsystem, + "system" => $system, + "fs" => $fs, + "shell" => [ "shell1", "shell8", "shell16" ], + "graphics" => $graphics, + + # The tests which constitute the official index. + "index" => $index, + + # The tests which constitute the official index plus the graphics + # index. + "gindex" => [ @$index, @$graphics ], +}; + + +# Default parameters for benchmarks. Note that if "prog" is used, +# it must contain just the program name, as it will be quoted (this +# is necessary if BINDIR contains spaces). Put any options in "options". +my $baseParams = { + "prog" => undef, + "options" => "", + "repeat" => 'short', + "stdout" => 1, # Non-0 to keep stdout. + "stdin" => "", + "logmsg" => "", +}; + + +# Individual parameters for all benchmarks. +my $testParams = { + + ########################## + ## System Benchmarks ## + ########################## + + "dhry2reg" => { + "logmsg" => "Dhrystone 2 using register variables", + "cat" => 'system', + "options" => "10", + "repeat" => 'long', + }, + "whetstone-double" => { + "logmsg" => "Double-Precision Whetstone", + "cat" => 'system', + "repeat" => 'long', + }, + "syscall" => { + "logmsg" => "System Call Overhead", + "cat" => 'system', + "repeat" => 'long', + "options" => "10", + }, + "context1" => { + "logmsg" => "Pipe-based Context Switching", + "cat" => 'system', + "repeat" => 'long', + "options" => "10", + }, + "pipe" => { + "logmsg" => "Pipe Throughput", + "cat" => 'system', + "repeat" => 'long', + "options" => "10", + }, + "spawn" => { + "logmsg" => "Process Creation", + "cat" => 'system', + "options" => "30", + }, + "execl" => { + "logmsg" => "Execl Throughput", + "cat" => 'system', + "options" => "30", + }, + "fstime-w" => { + "logmsg" => "File Write 1024 bufsize 2000 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-w -t 30 -d \"${TMPDIR}\" -b 1024 -m 2000", + }, + "fstime-r" => { + "logmsg" => "File Read 1024 bufsize 2000 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-r -t 30 -d \"${TMPDIR}\" -b 1024 -m 2000", + }, + "fstime" => { + "logmsg" => "File Copy 1024 bufsize 2000 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-c -t 30 -d \"${TMPDIR}\" -b 1024 -m 2000", + }, + "fsbuffer-w" => { + "logmsg" => "File Write 256 bufsize 500 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-w -t 30 -d \"${TMPDIR}\" -b 256 -m 500", + }, + "fsbuffer-r" => { + "logmsg" => "File Read 256 bufsize 500 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-r -t 30 -d \"${TMPDIR}\" -b 256 -m 500", + }, + "fsbuffer" => { + "logmsg" => "File Copy 256 bufsize 500 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-c -t 30 -d \"${TMPDIR}\" -b 256 -m 500", + }, + "fsdisk-w" => { + "logmsg" => "File Write 4096 bufsize 8000 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-w -t 30 -d \"${TMPDIR}\" -b 4096 -m 8000", + }, + "fsdisk-r" => { + "logmsg" => "File Read 4096 bufsize 8000 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-r -t 30 -d \"${TMPDIR}\" -b 4096 -m 8000", + }, + "fsdisk" => { + "logmsg" => "File Copy 4096 bufsize 8000 maxblocks", + "cat" => 'system', + "prog" => "${BINDIR}/fstime", + "options" => "-c -t 30 -d \"${TMPDIR}\" -b 4096 -m 8000", + }, + "shell1" => { + "logmsg" => "Shell Scripts (1 concurrent)", + "cat" => 'system', + "prog" => "${BINDIR}/looper", + "options" => "60 \"${BINDIR}/multi.sh\" 1", + }, + "shell8" => { + "logmsg" => "Shell Scripts (8 concurrent)", + "cat" => 'system', + "prog" => "${BINDIR}/looper", + "options" => "60 \"${BINDIR}/multi.sh\" 8", + }, + "shell16" => { + "logmsg" => "Shell Scripts (16 concurrent)", + "cat" => 'system', + "prog" => "${BINDIR}/looper", + "options" => "60 \"${BINDIR}/multi.sh\" 16", + }, + + ########################## + ## Graphics Benchmarks ## + ########################## + + "2d-rects" => { + "logmsg" => "2D graphics: rectangles", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "rects 3 2", + }, + + "2d-lines" => { + "logmsg" => "2D graphics: lines", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "lines 3 2", + }, + + "2d-circle" => { + "logmsg" => "2D graphics: circles", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "circle 3 2", + }, + + "2d-ellipse" => { + "logmsg" => "2D graphics: ellipses", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "ellipse 3 2", + }, + + "2d-shapes" => { + "logmsg" => "2D graphics: polygons", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "shapes 3 2", + }, + + "2d-aashapes" => { + "logmsg" => "2D graphics: aa polygons", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "aashapes 3 2", + }, + + "2d-polys" => { + "logmsg" => "2D graphics: complex polygons", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "polys 3 2", + }, + + "2d-text" => { + "logmsg" => "2D graphics: text", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "text 3 2", + }, + + "2d-blit" => { + "logmsg" => "2D graphics: images and blits", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "blit 3 2", + }, + + "2d-window" => { + "logmsg" => "2D graphics: windows", + "cat" => '2d', + "prog" => "${BINDIR}/gfx-x11", + "options" => "window 3 2", + }, + + "ubgears" => { + "logmsg" => "3D graphics: gears", + "cat" => '3d', + "options" => "-time 20 -v", + }, + + + ########################## + ## Non-Index Benchmarks ## + ########################## + + "C" => { + "logmsg" => "C Compiler Throughput ($cCompiler)", + "cat" => 'misc', + "prog" => "${BINDIR}/looper", + "options" => "60 $cCompiler cctest.c", + }, + "arithoh" => { + "logmsg" => "Arithoh", + "cat" => 'misc', + "options" => "10", + }, + "short" => { + "logmsg" => "Arithmetic Test (short)", + "cat" => 'misc', + "options" => "10", + }, + "int" => { + "logmsg" => "Arithmetic Test (int)", + "cat" => 'misc', + "options" => "10", + }, + "long" => { + "logmsg" => "Arithmetic Test (long)", + "cat" => 'misc', + "options" => "10", + }, + "float" => { + "logmsg" => "Arithmetic Test (float)", + "cat" => 'misc', + "options" => "10", + }, + "double" => { + "logmsg" => "Arithmetic Test (double)", + "cat" => 'misc', + "options" => "10", + }, + "dc" => { + "logmsg" => "Dc: sqrt(2) to 99 decimal places", + "cat" => 'misc', + "prog" => "${BINDIR}/looper", + "options" => "30 dc", + "stdin" => "dc.dat", + }, + "hanoi" => { + "logmsg" => "Recursion Test -- Tower of Hanoi", + "cat" => 'misc', + "options" => "20", + }, + "grep" => { + "logmsg" => "Grep a large file (system's grep)", + "cat" => 'misc', + "prog" => "${BINDIR}/looper", + "options" => "30 grep -c gimp large.txt", + }, + "sysexec" => { + "logmsg" => "Exec System Call Overhead", + "cat" => 'misc', + "repeat" => 'long', + "prog" => "${BINDIR}/syscall", + "options" => "10 exec", + }, +}; + + +# CPU flags of interest. +my $x86CpuFlags = { + 'pae' => "Physical Address Ext", + 'sep' => "SYSENTER/SYSEXIT", + 'syscall' => "SYSCALL/SYSRET", + 'mmx' => "MMX", + 'mmxext' => "AMD MMX", + 'cxmmx' => "Cyrix MMX", + 'xmm' => "Streaming SIMD", + 'xmm2' => "Streaming SIMD-2", + 'xmm3' => "Streaming SIMD-3", + 'ht' => "Hyper-Threading", + 'ia64' => "IA-64 processor", + 'lm' => "x86-64", + 'vmx' => "Intel virtualization", + 'svm' => "AMD virtualization", +}; + + +############################################################################ +# UTILITIES +############################################################################ + +# Exec the given command, and catch its standard output. +# We return an array containing the PID and the filehandle on the +# process' standard output. It's up to the caller to wait for the command +# to terminate. +sub command { + my ( $cmd ) = @_; + + my $pid = open(my $childFd, "-|"); + if (!defined($pid)) { + die("Run: fork() failed (undef)\n"); + } elsif ($pid == 0) { + exec($cmd); + die("Run: exec() failed (returned)\n"); + } + + return ( $pid, $childFd ); +} + + +# Get data from running a system command. Used for things like getting +# the host OS from `uname -o` etc. +# +# Ignores initial blank lines from the command and returns the first +# non-blank line, with white space trimmed off. Returns a blank string +# if there is no output; undef if the command fails. +sub getCmdOutput { + my ( $cmd ) = @_; + + my ( $pid, $fd ) = command($cmd . " 2>/dev/null"); + my $result = ""; + while (<$fd>) { + chomp; + next if /^[ \t]*$/; + + $result = $_; + $result =~ s/^[ \t]+//; + $result =~ s/[ \t]+$//; + last; + } + + # Close the command and wait for it to die. + waitpid($pid, 0); + my $status = $?; + + return $status == 0 ? $result : undef; +} + + +# Get a directory pathname from an environment variable, or the given +# default. Canonicalise and return the value. +sub getDir { + my ( $var, $def ) = @_; + + my $val = $ENV{$var} || $def; + + # Canonicalise the value. + my $wd; + chomp($wd = `pwd`); + chdir($val); + chomp($val = `pwd`); + chdir($wd); + $ENV{$var} = $val; + + $val; +} + + +# Get the name of the file we're going to log to. The name uses the hostname +# and date, plus a sequence number to make it unique. +sub logFile { + my ( $sysInfo ) = @_; + + my $count = 1; + + # Use the date in the base file name. + my $ymd = strftime "%Y-%m-%d", localtime; + + while (1) { + my $log = sprintf "%s/%s-%s-%02d", + ${RESULTDIR}, $sysInfo->{'name'}, $ymd, $count; + return $log if (! -e $log); + ++$count; + } +} + + +# Print a message to the named log file. We use this method rather than +# keeping the FD open because we use shell redirection to send command +# output to the same file. +sub printLog { + my ( $logFile, @args ) = @_; + + open(my $fd, ">>", $logFile) || abortRun("can't append to $logFile"); + printf $fd @args; + close($fd); +} + + +# Display a number of something, auto-selecting the plural form +# if appropriate. We are given the number, the singular, and the +# plural; if the plural is omitted, it defaults to singular + "s". +sub number { + my ( $n, $what, $plural ) = @_; + + $plural = $what . "s" if !defined($plural); + + if (!defined($n)) { + return sprintf "unknown %s", $plural; + } else { + return sprintf "%d %s", $n, $n == 1 ? $what : $plural; + } +} + + +# Merge two sets of test parameters -- defaults and actual parameters. +# Return the merged parameter hash. +sub mergeParams { + my ( $def, $vals ) = @_; + + my $params = { }; + foreach my $k (keys(%$def)) { + $params->{$k} = $def->{$k}; + } + foreach my $k (keys(%$vals)) { + $params->{$k} = $vals->{$k}; + } + + $params; +} + + +############################################################################ +# SYSTEM ANALYSIS +############################################################################ + +# Extract interesting flags from the given processor flags string and +# convert them to descriptive names. +sub processCpuFlags { + my ( $flagStr ) = @_; + + my @names; + foreach my $f (sort split(/\s+/, $flagStr)) { + my $name = $x86CpuFlags->{$f}; + push(@names, $name) if $name; + } + + join(", ", @names); +} + + +# Get information on the CPUs in the system. Returns a reference to an +# array of N entries, one per CPU, where each entry is a hash containing +# these fields: +# describing the model etc. Returns undef if the information can't be got. +sub getCpuInfo { + open(my $fd, "<", "/proc/cpuinfo") || return undef; + + my $cpus = [ ]; + my $cpu = 0; + while (<$fd>) { + chomp; + my ( $field, $val ) = split(/[ \t]*:[ \t]*/); + next if (!$field || !$val); + if ($field eq "processor") { + $cpu = $val; + } elsif ($field eq "model name") { + my $model = $val; + $model =~ s/ +/ /g; + $cpus->[$cpu]{'model'} = $model; + } elsif ($field eq "bogomips") { + $cpus->[$cpu]{'bogo'} = $val; + } elsif ($field eq "flags") { + $cpus->[$cpu]{'flags'} = processCpuFlags($val); + } + } + + close($fd); + + $cpus; +} + + +# Get information on the host system. Returns a reference to a hash +# with the following fields: +# name Host name +# os Host OS name +# osRel Host OS release +# osVer Host OS version +# mach Host machine name (eg. "SparcStation 20", but on +# PC/Linux usually "i686" etc.) +# platform Hardware platform; on Linux, the base CPU type? +# system System name (eg. hostname and Linux distro, like +# "hostname: openSUSE 10.2 (i586)"). +# cpus Value returned by getCpuInfo(), undef if not avail. +# numCpus Number of CPUs if known, else undef. +# load System load message as per "uptime". +# numUsers Number of users and/or open shell sessions. +sub getSystemInfo { + my $info = { }; + + # Get host system data. + $info->{'name'} = getCmdOutput("hostname"); + $info->{'os'} = getCmdOutput("uname -o") || getCmdOutput("uname -s"); + $info->{'osRel'} = getCmdOutput("uname -r"); + $info->{'osVer'} = getCmdOutput("uname -v"); + $info->{'mach'} = getCmdOutput("uname -m"); + $info->{'platform'} = getCmdOutput("uname -i"); + + # Get the system name (SUSE, Red Hat, etc.) if possible. + $info->{'system'} = $info->{'os'}; + if ( -r "/etc/SuSE-release" ) { + $info->{'system'} = getCmdOutput("cat /etc/SuSE-release"); + } elsif ( -r "/etc/release" ) { + $info->{'system'} = getCmdOutput("cat /etc/release"); + } + + # Get the language info. + my $lang = getCmdOutput("printenv LANG"); + my $map = getCmdOutput("locale -k LC_CTYPE | grep charmap"); + $map =~ s/.*=//; + my $coll = getCmdOutput("locale -k LC_COLLATE | grep collate-codeset"); + $coll =~ s/.*=//; + $info->{'language'} = sprintf "%s (charmap=%s, collate=%s)", + $lang, $map, $coll; + + # Get details on the CPUs, if possible. + my $cpus = getCpuInfo(); + if (defined($cpus)) { + $info->{'cpus'} = $cpus; + $info->{'numCpus'} = scalar(@$cpus); + } + + # Get graphics hardware info. + $info->{'graphics'} = getCmdOutput("3dinfo | cut -f1 -d\'(\'"); + + # Get system run state, load and usage info. + $info->{'runlevel'} = getCmdOutput("runlevel | cut -f2 -d\" \""); + $info->{'load'} = getCmdOutput("uptime"); + $info->{'numUsers'} = getCmdOutput("who | wc -l"); + + $info; +} + + +############################################################################ +# ERROR HANDLING +############################################################################ + +# Abort the benchmarking run with an error message. +sub abortRun { + my ( $err ) = @_; + + printf STDERR "\n**********************************************\n"; + printf STDERR "Run: %s; aborting\n", $err; + exit(1); +} + + +############################################################################ +# TEST SETUP +############################################################################ + +# Do checks that everything's ready for testing. +sub preChecks { + # Set the language. + $ENV{'LANG'} = $language; + + # Check that the required files are in the proper places. + system("make check"); + if ($? != 0) { + system("make all"); + if ($? != 0) { + abortRun("\"make all\" failed"); + } + } + + # Create a script to kill this run. + system("echo \"kill -9 $$\" > \"${TMPDIR}/kill_run\""); + chmod(0755, $TMPDIR . "/kill_run"); +} + + +# Parse the command arguments. +sub parseArgs { + my @words = @_; + + # The accumulator for the bench units to be run. + my $tests = [ ]; + my $params = { 'tests' => $tests }; + + # Generate the requested list of bench programs. + my $opt; + my $word; + while ($word = shift(@words)) { + if ($word !~ m/^-/) { # A test name. + if ($word eq "all") { + foreach my $t (keys(%$testList)) { + push(@$tests, $t) if (!defined($testList->{$t})); + } + } elsif (exists($testList->{$word})) { + my $val = $testList->{$word} || [ $word ]; + push(@$tests, @$val); + } else { + die("Run: unknown test \"$word\"\n"); + } + } elsif ($word eq "-q") { + $params->{'verbose'} = 0; + } elsif ($word eq "-v") { + $params->{'verbose'} = 2; + } elsif ($word eq "-i") { + $params->{'iterations'} = shift(@words); + } elsif ($word eq "-c") { + if (!defined($params->{'copies'})) { + $params->{'copies'} = [ ]; + } + push(@{$params->{'copies'}}, shift(@words)); + } else { + die("Run: unknown option $word\n"); + } + } + + $params; +} + + +############################################################################ +# RESULTS INPUT / OUTPUT +############################################################################ + +# Read a set of benchmarking results from the given file. +# Returns results in the form returned by runTests(), but without the +# individual pass results. +sub readResultsFromFile { + my ( $file ) = @_; + + # Attempt to get the baseline data file; if we can't, just return undef. + open(my $fd, "<", $file) || return undef; + + my $results = { }; + while (<$fd>) { + chomp; + + # Dump comments, ignore blank lines. + s/#.*//; + next if /^\s*$/; + + my ( $name, $time, $slab, $sum, $score, $iters ) = split(/\|/); + my $bresult = { }; + $bresult->{'score'} = $score; + $bresult->{'scorelabel'} = $slab; + $bresult->{'time'} = $time; + $bresult->{'iterations'} = $iters; + + $results->{$name} = $bresult; + } + + close($fd); + + $results; +} + + +############################################################################ +# RESULTS PROCESSING +############################################################################ + +# Process a set of results from a single test by averaging the individal +# pass results into a single final value. +# First, though, dump the worst 1/3 of the scores. The logic is that a +# glitch in the system (background process waking up, for example) may +# make one or two runs go slow, so let's discard those. +# +# $bresult is a hashed array representing the results of a single test; +# $bresult->{'passes'} is an array of the output from the individual +# passes. +sub combinePassResults { + my ( $bench, $tdata, $bresult, $logFile ) = @_; + + $bresult->{'cat'} = $tdata->{'cat'}; + + # Computed results. + my $iterations = 0; + my $totalTime = 0; + my $sum = 0; + my $product = 0; + my $label; + + my $pres = $bresult->{'passes'}; + + # We're going to throw away the worst 1/3 of the pass results. + # Figure out how many to keep. + my $npasses = scalar(@$pres); + my $ndump = int($npasses / 3); + + foreach my $presult (sort { $a->{'COUNT0'} <=> $b->{'COUNT0'} } @$pres) { + my $count = $presult->{'COUNT0'}; + my $timebase = $presult->{'COUNT1'}; + $label = $presult->{'COUNT2'}; + my $time = $presult->{'TIME'} || $presult->{'elapsed'}; + + # Skip this result if it's one of the worst ones. + if ($ndump > 0) { + printLog($logFile, "*Dump score: %12.1f\n", $count); + --$ndump; + next; + } + + # Count this result. + ++$iterations; + printLog($logFile, "Count score: %12.1f\n", $count); + + # If $timebase is 0 the figure is a rate; else compute + # counts per $timebase. $time is always seconds. + if ($timebase > 0) { + $sum += $count / ($time / $timebase); + $product += log($count) - log($time / $timebase); + } else { + $sum += $count; + $product += log($count); + } + $totalTime += $time; + } + + # Save the results for the benchmark. + if ($iterations > 0) { + $bresult->{'score'} = exp($product / $iterations); + $bresult->{'scorelabel'} = $label; + $bresult->{'time'} = $totalTime / $iterations; + $bresult->{'iterations'} = $iterations; + } else { + $bresult->{'error'} = "No measured results"; + } +} + + +# Index the given full benchmark results against the baseline results. +# $results is a hashed array of test names to test results. +# +# Adds the following fields to each benchmark result: +# iscore The baseline score for this test +# index The index of this test against the baseline +# Adds the following fields to $results: +# indexed The number of tests for which index values were +# generated +# fullindex Non-0 if all the index tests were indexed +# index The computed overall index for the run +# Note that the index values are computed as +# result / baseline * 10 +# so an index of 523 indicates that a test ran 52.3 times faster than +# the baseline. +sub indexResults { + my ( $results ) = @_; + + # Read in the baseline result data. If we can't get it, just return + # without making indexed results. + my $index = readResultsFromFile($BINDIR . "/index.base"); + if (!defined($index)) { + return; + } + + # Count the number of results we have (indexed or not) in + # each category. + my $numCat = { }; + foreach my $bench (@{$results->{'list'}}) { + my $bresult = $results->{$bench}; + ++$numCat->{$bresult->{'cat'}}; + } + $results->{'numCat'} = $numCat; + + my $numIndex = { }; + my $indexed = { }; + my $sum = { }; + foreach my $bench (sort(keys(%$index))) { + # Get the test data for this benchmark. + my $tdata = $testParams->{$bench}; + if (!defined($tdata)) { + abortRun("unknown benchmark \"$bench\" in $BINDIR/index.base"); + } + + # Get the test category. Count the total tests in this cat. + my $cat = $tdata->{'cat'}; + ++$numIndex->{$cat}; + + # If we don't have a result for this test, skip. + next if (!defined($results->{$bench})); + + # Get the index and actual results. Calcluate the score. + my $iresult = $index->{$bench}; + my $bresult = $results->{$bench}; + my $ratio = $bresult->{'score'} / $iresult->{'score'}; + + # Save the indexed score. + $bresult->{'iscore'} = $iresult->{'score'}; + $bresult->{'index'} = $ratio * 10; + + # Sun the scores, and count this test for this category. + $sum->{$cat} += log($ratio); + ++$indexed->{$cat}; + } + + # Calculate the index scores per category. + $results->{'indexed'} = $indexed; + $results->{'numIndex'} = $numIndex; + foreach my $c (keys(%$indexed)) { + if ($indexed->{$c} > 0) { + $results->{'index'}{$c} = exp($sum->{$c} / $indexed->{$c}) * 10; + } + } +} + + +############################################################################ +# TEST EXECUTION +############################################################################ + +# Exec the given command in a sub-process. +# +# In the child process, we run the command and store its standard output. +# We also time its execution, and catch its exit status. We then write +# the command's output, plus lines containing the execution time and status, +# to a pipe. +# +# In the parent process, we immediately return an array containing the +# child PID and the filehandle to the pipe. This allows the caller to +# kick off multiple commands in parallel, then gather their output. +sub commandBuffered { + my ( $cmd ) = @_; + + # Create a pipe for parent-child communication. + my $childReader; + my $parentWriter; + pipe($childReader, $parentWriter) || abortRun("pipe() failed"); + $parentWriter->autoflush(1); + + # Fork off the child process. + my $pid = fork(); + if (!defined($pid)) { + abortRun("fork() failed (undef)"); + } elsif ($pid == 0) { + # Close the other end of the pipe. + close $childReader; + + # Start the clock and spawn the command. + my $benchStart = Time::HiRes::time(); + my ( $cmdPid, $cmdFd ) = command($cmd); + + # Read and buffer all the command's output. + my $output = [ ]; + while (<$cmdFd>) { + push(@$output, $_); + } + + # Stop the clock and save the time. + my $elTime = Time::HiRes::time() - $benchStart; + push(@$output, sprintf "elapsed|%f\n", $elTime); + + # Wait for the child to die so we can get its status. + # close($cmdFd); Doesn't work??? + waitpid($cmdPid, 0); + my $status = $?; + push(@$output, sprintf "status|%d\n", $status); + + # Now that we've got the time, play back all the output to the pipe. + # The parent can read this at its leisure. + foreach my $line (@$output) { + print $parentWriter $line; + } + + # Terminate this child. + close $parentWriter; + exit(0); + } + + # Close the other end of the pipe. + close $parentWriter; + + return ( $pid, $childReader ); +} + + +# Read the results of a benchmark execution from a child process, given +# its process ID and its filehandle. Create a results hash structure +# containing the fields returned by the child, plus: +# pid The child's process ID +# status The child's exit status +# ERROR Any stderr output from the child that isn't result data +# Note that ay result fields with ultiple values are split; so eg. +# COUNT|x|y|x +# becomes +# COUNT0 = x +# COUNT1 = y +# COUNT2 = z +sub readResults { + my ( $pid, $fd ) = @_; + + my $presult = { 'pid' => $pid }; + + # Read all the result lines from the child. + while (<$fd>) { + chomp; + + my ( $field, @params ) = split(/\|/); + if (scalar(@params) == 0) { # Error message. + $presult->{'ERROR'} .= "\n" if ($presult->{'ERROR'}); + $presult->{'ERROR'} .= $field; + } elsif (scalar(@params) == 1) { # Simple data. + $presult->{$field} = $params[0]; + } else { # Compound data. + # Store the values in separate fields, named "FIELD$i". + for (my $x = 0; $x < scalar(@params); ++$x) { + $presult->{$field . $x} = $params[$x]; + } + } + } + + # If the command had an error, make an appropriate message if we + # don't have one. + if ($presult->{'status'} != 0 && !defined($presult->{'ERROR'})) { + $presult->{'ERROR'} = "command returned status " . $presult->{'status'}; + } + + # Wait for the child to die. + close($fd); + waitpid($pid, 0); + + $presult; +} + + +# Execute a benchmark command. We set off a given number of copies in +# parallel to exercise multiple CPUs. +# +# We return an array of results hashes, one per copy; each one is as +# returned by readResults(). +sub executeBenchmark { + my ( $command, $copies ) = @_; + + # Array of contexts for all the copies we're running. + my $ctxt = [ ]; + + # Kick off all the commands at once. + for (my $i = 0; $i < $copies; ++$i) { + my ( $cmdPid, $cmdFd ) = commandBuffered($command); + $ctxt->[$i] = { + 'pid' => $cmdPid, + 'fd' => $cmdFd, + }; + } + + # Now, we can simply read back the command results in order. Because + # the child processes read and buffer the results and time the commands, + # there's no need to use select() to read the results as they appear. + my $pres = [ ]; + for (my $i = 0; $i < $copies; ++$i) { + my $presult = readResults($ctxt->[$i]{'pid'}, $ctxt->[$i]{'fd'}); + push(@$pres, $presult); + } + + $pres; +} + + +# Run one iteration of a benchmark, as specified by the given +# benchmark parameters. We run multiple parallel copies as +# specified by $copies. +sub runOnePass { + my ( $params, $verbose, $logFile, $copies ) = @_; + + # Get the command to run. + my $command = $params->{'command'}; + if ($verbose > 1) { + printf "\n"; + printf "COMMAND: \"%s\"\n", $command; + printf "COPIES: \"%d\"\n", $copies; + } + + # Remember where we are, and move to the test directory. + my $pwd = `pwd`; + chdir($TESTDIR); + + # Execute N copies of the benchmark in parallel. + my $copyResults = executeBenchmark($command, $copies); + printLog($logFile, "\n"); + + # Move back home. + chdir($pwd); + + # Sum up the scores of the copies. + my $count = 0; + my $time = 0; + my $elap = 0; + foreach my $res (@$copyResults) { + # Log the result data for each copy. + foreach my $k (sort(keys(%$res))) { + printLog($logFile, "# %s: %s\n", $k, $res->{$k}); + } + printLog($logFile, "\n"); + + # If it failed, bomb out. + if (defined($res->{'ERROR'})) { + my $name = $params->{'logmsg'}; + abortRun("\"$name\": " . $res->{'ERROR'}); + } + + # Count up the score. + $count += $res->{'COUNT0'}; + $time += $res->{'TIME'} || $res->{'elapsed'}; + $elap += $res->{'elapsed'}; + } + + # Make up a combined result. + my $passResult = $copyResults->[0]; + $passResult->{'COUNT0'} = $count; + $passResult->{'TIME'} = $time / $copies; + $passResult->{'elapsed'} = $elap / $copies; + + $passResult; +} + + +sub runBenchmark { + my ( $bench, $tparams, $verbose, $logFile, $copies ) = @_; + + # Make up the actual benchmark parameters. + my $params = mergeParams($baseParams, $tparams); + + # Make up the command string based on the parameters. + my $prog = $params->{'prog'} || $BINDIR . "/" . $bench; + my $command = sprintf "\"%s\" %s", $prog, $params->{'options'}; + $command .= " < \"" . $params->{'stdin'} . "\"" if ($params->{'stdin'}); + $command .= " 2>&1"; + $command .= $params->{'stdout'} ? (" >> \"" . $logFile . "\"") : " > /dev/null"; + $params->{'command'} = $command; + + # Set up the benchmark results structure. + my $bresult = { 'name' => $bench, 'msg' => $params->{'logmsg'} }; + + if ($verbose > 0) { + printf "\n%d x %s ", $copies, $params->{'logmsg'}; + } + + printLog($logFile, + "\n########################################################\n"); + printLog($logFile, "%s -- %s\n", + $params->{'logmsg'}, number($copies, "copy", "copies")); + printLog($logFile, "==> %s\n\n", $command); + + # Run the test iterations, as given by the "repeat" parameter. + my $repeats = $shortIterCount; + $repeats = $longIterCount if $params->{'repeat'} eq 'long'; + $repeats = 1 if $params->{'repeat'} eq 'single'; + my $pres = [ ]; + for (my $i = 1; $i <= $repeats; ++$i) { + printLog($logFile, "#### Pass %d\n\n", $i); + + # make an attempt to flush buffers + system("sync; sleep 1; sync; sleep 2"); + # display heartbeat + if ($verbose > 0) { + printf " %d", $i; + } + + # Execute one pass of the benchmark. + my $presult = runOnePass($params, $verbose, $logFile, $copies); + push(@$pres, $presult); + } + $bresult->{'passes'} = $pres; + + # Calculate the averaged results for this benchmark. + combinePassResults($bench, $tparams, $bresult, $logFile); + + # Log the results. + if ($copies == 1) { + printLog($logFile, "\n>>>> Results of 1 copy\n"); + } else { + printLog($logFile, "\n>>>> Sum of %d copies\n", $copies); + } + foreach my $k ( 'score', 'time', 'iterations' ) { + printLog($logFile, ">>>> %s: %s\n", $k, $bresult->{$k}); + } + printLog($logFile, "\n"); + + # Some specific cleanup routines. + if ($bench eq "C") { + unlink(${TESTDIR} . "/cctest.o"); + unlink(${TESTDIR} . "/a.out"); + } + + if ($verbose > 0) { + printf "\n"; + } + + $bresult; +} + + +# Run the named benchmarks. +sub runTests { + my ( $tests, $verbose, $logFile, $copies ) = @_; + + # Run all the requested tests and gather the results. + my $results = { 'start' => time(), 'copies' => $copies }; + foreach my $bench (@$tests) { + # Get the parameters for this benchmark. + my $params = $testParams->{$bench}; + if (!defined($params)) { + abortRun("unknown benchmark \"$bench\""); + } + + # If the benchmark doesn't want to run with this many copies, skip it. + my $cat = $params->{'cat'}; + my $maxCopies = $testCats->{$cat}{'maxCopies'}; + next if ($copies > $maxCopies); + + # Run the benchmark. + my $bresult = runBenchmark($bench, $params, $verbose, $logFile, $copies); + $results->{$bench} = $bresult; + } + $results->{'end'} = time(); + + # Generate a sorted list of benchmarks for which we have results. + my @benches = grep { + ref($results->{$_}) eq "HASH" && defined($results->{$_}{'msg'}) + } keys(%$results); + @benches = sort { + $results->{$a}{'msg'} cmp $results->{$b}{'msg'} + } @benches; + $results->{'list'} = \@benches; + + # Generate index scores for the results relative to the baseline data. + indexResults($results); + + $results; +} + + +############################################################################ +# TEXT REPORTS +############################################################################ + +# Display a banner indicating the configuration of the system under test +# to the given file desc. +sub displaySystem { + my ( $info, $fd ) = @_; + + # Display basic system info. + printf $fd " System: %s: %s\n", $info->{'name'}, $info->{'system'}; + printf $fd " OS: %s -- %s -- %s\n", + $info->{'os'}, $info->{'osRel'}, $info->{'osVer'}; + printf $fd " Machine: %s (%s)\n", $info->{'mach'}, $info->{'platform'}; + printf $fd " Language: %s\n", $info->{'language'}; + + # Get and display details on the CPUs, if possible. + my $cpus = $info->{'cpus'}; + if (!defined($cpus)) { + printf $fd " CPU: no details available\n"; + } else { + for (my $i = 0; $i <= $#$cpus; ++$i) { + printf $fd " CPU %d: %s (%.1f bogomips)\n", + $i, $cpus->[$i]{'model'}, $cpus->[$i]{'bogo'}; + printf $fd " %s\n", $cpus->[$i]{'flags'}; + } + } + + if ($info->{'graphics'}) { + printf $fd " Graphics: %s\n", $info->{'graphics'}; + } + + # Display system load and usage info. + printf $fd " %s; runlevel %s\n\n", $info->{'load'}, $info->{'runlevel'}; +} + + +# Display the test scores from the given set of test results. +sub logResults { + my ( $results, $outFd ) = @_; + + # Display the individual test scores. + foreach my $bench (@{$results->{'list'}}) { + my $bresult = $results->{$bench}; + + printf $outFd "%-40s %12.1f %-5s (%.1f s, %d samples)\n", + $bresult->{'msg'}, + $bresult->{'score'}, + $bresult->{'scorelabel'}, + $bresult->{'time'}, + $bresult->{'iterations'}; + } + + printf $outFd "\n"; +} + + +# Display index scores, if any, for the given run results. +sub logIndexCat { + my ( $results, $cat, $outFd ) = @_; + + my $total = $results->{'numIndex'}{$cat}; + my $indexed = $results->{'indexed'}{$cat}; + my $iscore = $results->{'index'}{$cat}; + my $full = $total == $indexed; + + # If there are no indexed scores, just say so. + if (!defined($indexed) || $indexed == 0) { + printf $outFd "No index results available for %s\n\n", + $testCats->{$cat}{'name'}; + return; + } + + # Display the header, depending on whether we have a full set of index + # scores, or a partial set. + my $head = $testCats->{$cat}{'name'} . + ($full ? " Index Values" : " Partial Index"); + printf $outFd "%-40s %12s %12s %8s\n", + $head, "BASELINE", "RESULT", "INDEX"; + + # Display the individual test scores. + foreach my $bench (@{$results->{'list'}}) { + my $bresult = $results->{$bench}; + next if $bresult->{'cat'} ne $cat; + + if (defined($bresult->{'iscore'}) && defined($bresult->{'index'})) { + printf $outFd "%-40s %12.1f %12.1f %8.1f\n", + $bresult->{'msg'}, $bresult->{'iscore'}, + $bresult->{'score'}, $bresult->{'index'}; + } else { + printf $outFd "%-40s %12s %12.1f %8s\n", + $bresult->{'msg'}, "---", + $bresult->{'score'}, "---"; + } + } + + # Display the overall score. + my $title = $testCats->{$cat}{'name'} . " Index Score"; + if (!$full) { + $title .= " (Partial Only)"; + } + printf $outFd "%-40s %12s %12s %8s\n", "", "", "", "========"; + printf $outFd "%-66s %8.1f\n", $title, $iscore; + + printf $outFd "\n"; +} + + +# Display index scores, if any, for the given run results. +sub logIndex { + my ( $results, $outFd ) = @_; + + my $count = $results->{'indexed'}; + foreach my $cat (keys(%$count)) { + logIndexCat($results, $cat, $outFd); + } +} + + +# Dump the given run results into the given report file. +sub summarizeRun { + my ( $systemInfo, $results, $verbose, $reportFd ) = @_; + + # Display information about this test run. + printf $reportFd "------------------------------------------------------------------------\n"; + printf $reportFd "Benchmark Run: %s %s - %s\n", + strftime("%a %b %d %Y", localtime($results->{'start'})), + strftime("%H:%M:%S", localtime($results->{'start'})), + strftime("%H:%M:%S", localtime($results->{'end'})); + printf $reportFd "%s in system; running %s of tests\n", + number($systemInfo->{'numCpus'}, "CPU"), + number($results->{'copies'}, "parallel copy", "parallel copies"); + printf $reportFd "\n"; + + # Display the run scores. + logResults($results, $reportFd); + + # Display the indexed scores, if any. + logIndex($results, $reportFd); +} + + +############################################################################ +# HTML REPORTS +############################################################################ + +# Dump the given run results into the given report file. +sub runHeaderHtml { + my ( $systemInfo, $reportFd ) = @_; + + # Display information about this test run. + my $title = sprintf "Benchmark of %s / %s on %s", + $systemInfo->{'name'}, $systemInfo->{'system'}, + strftime("%a %b %d %Y", localtime()); + + print $reportFd < + + + + + $title + + + +EOF + + # Display information about this test run. + printf $reportFd "

%s

\n", $title; + printf $reportFd "

BYTE UNIX Benchmarks (Version %s)

\n\n", + $version; +} + + +# Display a banner indicating the configuration of the system under test +# to the given file desc. +sub displaySystemHtml { + my ( $info, $fd ) = @_; + + printf $fd "

Test System Information

\n"; + printf $fd "

\n"; + + # Display basic system info. + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n", + $info->{'name'}, $info->{'system'}; + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n", + $info->{'os'}, $info->{'osRel'}, $info->{'osVer'}; + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n", + $info->{'mach'}, $info->{'platform'}; + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n", $info->{'language'}; + printf $fd "\n"; + + # Get and display details on the CPUs, if possible. + my $cpus = $info->{'cpus'}; + if (!defined($cpus)) { + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n"; + printf $fd "\n"; + } else { + for (my $i = 0; $i <= $#$cpus; ++$i) { + printf $fd "\n"; + if ($i == 0) { + printf $fd " \n", $#$cpus + 1; + } + printf $fd " \n", $i; + printf $fd " \n", $cpus->[$i]{'flags'}; + printf $fd "\n"; + } + } + + # Display graphics hardware info. + if ($info->{'graphics'}) { + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n", $info->{'graphics'}; + printf $fd "\n"; + } + + # Display system runlevel, load and usage info. + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n", + $info->{'load'}, $info->{'runlevel'}; + printf $fd "\n"; + + printf $fd "
System:%s: %s
OS:%s -- %s -- %s
Machine:%s: %s
Language:%s
CPUs:no details available
CPUs:%d:%s (%.1f bogomips)
\n", + $cpus->[$i]{'model'}, $cpus->[$i]{'bogo'}; + printf $fd " %s
Graphics:%s
Uptime:%s; runlevel %s

\n\n"; +} + + +# Display the test scores from the given set of test results +# for a given category of tests. +sub logCatResultsHtml { + my ( $results, $cat, $fd ) = @_; + + my $numIndex = $results->{'numIndex'}{$cat}; + my $indexed = $results->{'indexed'}{$cat}; + my $iscore = $results->{'index'}{$cat}; + my $full = defined($indexed) && $indexed == $numIndex; + + # If there are no results in this category, just ignore it. + if (!defined($results->{'numCat'}{$cat}) || + $results->{'numCat'}{$cat} == 0) { + return; + } + + # Say the category. If there are no indexed scores, just say so. + my $warn = ""; + if (!defined($indexed) || $indexed == 0) { + $warn = " — no index results available"; + } elsif (!$full) { + $warn = " — not all index tests were run;" . + " only a partial index score is available"; + } + printf $fd "

%s%s

\n", $testCats->{$cat}{'name'}, $warn; + + printf $fd "

\n"; + + printf $fd "\n"; + printf $fd " \n"; + printf $fd " \n"; + printf $fd " \n"; + printf $fd " \n"; + printf $fd " \n"; + printf $fd " \n"; + printf $fd " \n"; + printf $fd "\n"; + + # Display the individual test scores. + foreach my $bench (@{$results->{'list'}}) { + my $bresult = $results->{$bench}; + next if $bresult->{'cat'} ne $cat; + + printf $fd "\n"; + printf $fd " \n", $bresult->{'msg'}; + printf $fd " \n", + $bresult->{'score'}; + printf $fd " \n", + $bresult->{'scorelabel'}; + printf $fd " \n", + $bresult->{'time'}; + printf $fd " \n", + $bresult->{'iterations'}; + + if (defined($bresult->{'index'})) { + printf $fd " \n", + $bresult->{'iscore'}; + printf $fd " \n", + $bresult->{'index'}; + } + printf $fd "\n"; + } + + # Display the overall score. + if (defined($indexed) && $indexed > 0) { + my $title = $testCats->{$cat}{'name'} . " Index Score"; + if (!$full) { + $title .= " (Partial Only)"; + } + printf $fd "\n"; + printf $fd " \n", $title; + printf $fd " \n", $iscore; + printf $fd "\n"; + } + + printf $fd "
TestScoreUnitTimeIters.BaselineIndex
%s%.1f%s%.1f s%d%.1f%.1f
%s:%.1f

\n\n"; +} + + +# Display index scores, if any, for the given run results. +sub logResultsHtml { + my ( $results, $fd ) = @_; + + foreach my $cat (keys(%$testCats)) { + logCatResultsHtml($results, $cat, $fd); + } +} + + +# Dump the given run results into the given report file. +sub summarizeRunHtml { + my ( $systemInfo, $results, $verbose, $reportFd ) = @_; + + # Display information about this test run. + my $time = $results->{'end'} - $results->{'start'}; + printf $reportFd "


\n"; + printf $reportFd "

Benchmark Run: %s; %s

\n", + number($systemInfo->{'numCpus'}, "CPU"), + number($results->{'copies'}, "parallel process", "parallel processes"); + printf $reportFd "

Time: %s - %s; %dm %02ds

\n", + strftime("%H:%M:%S", localtime($results->{'start'})), + strftime("%H:%M:%S", localtime($results->{'end'})), + int($time / 60), $time % 60; + printf $reportFd "\n"; + + # Display the run scores. + logResultsHtml($results, $reportFd); +} + + +sub runFooterHtml { + my ( $reportFd ) = @_; + + print $reportFd <

+
No Warranties: This information is provided free of charge and "as +is" without any warranty, condition, or representation of any kind, +either express or implied, including but not limited to, any warranty +respecting non-infringement, and the implied warranties of conditions +of merchantability and fitness for a particular purpose. All logos or +trademarks on this site are the property of their respective owner. In +no event shall the author be liable for any +direct, indirect, special, incidental, consequential or other damages +howsoever caused whether arising in contract, tort, or otherwise, +arising out of or in connection with the use or performance of the +information contained on this web site.
+ + +EOF +} + + +############################################################################ +# MAIN +############################################################################ + +sub main { + my @args = @_; + + my $params = parseArgs(@args); + my $verbose = $params->{'verbose'} || 1; + if ($params->{'iterations'}) { + $longIterCount = $params->{'iterations'}; + $shortIterCount = int(($params->{'iterations'} + 1) / 3); + $shortIterCount = 1 if ($shortIterCount < 1); + } + + # If no benchmark units have be specified, do "index". + my $tests = $params->{'tests'}; + if ($#$tests < 0) { + $tests = $index; + } + + preChecks(); + my $systemInfo = getSystemInfo(); + + # If the number of copies to run was not set, set it to 1 + # and the number of CPUs in the system (if > 1). + my $copies = $params->{'copies'}; + if (!$copies || scalar(@$copies) == 0) { + push(@$copies, 1); + if (defined($systemInfo->{'numCpus'}) && $systemInfo->{'numCpus'} > 1) { + push(@$copies, $systemInfo->{'numCpus'}); + } + } + + # Display the program banner. + system("cat \"${BINDIR}/unixbench.logo\""); + + if ($verbose > 1) { + printf "\n", join(", ", @$tests); + printf "Tests to run: %s\n", join(", ", @$tests); + } + + # Generate unique file names for the report and log file. + my $reportFile = logFile($systemInfo); + my $reportHtml = $reportFile . ".html"; + my $logFile = $reportFile . ".log"; + + # Open the log file for writing. + open(my $reportFd, ">", $reportFile) || + die("Run: can't write to $reportFile\n"); + open(my $reportFd2, ">", $reportHtml) || + die("Run: can't write to $reportHtml\n"); + printf $reportFd " BYTE UNIX Benchmarks (Version %s)\n\n", $version; + runHeaderHtml($systemInfo, $reportFd2); + + # Dump information about the system under test. + displaySystem($systemInfo, $reportFd); + displaySystemHtml($systemInfo, $reportFd2); + + # Run the tests! Do a test run once for each desired number of copies; + # for example, on a 2-CPU system, we may do a single-processing run + # followed by a dual-processing run. + foreach my $c (@$copies) { + if ($verbose > 1) { + printf "Run with %s\n", number($c, "copy", "copies"); + } + my $results = runTests($tests, $verbose, $logFile, $c); + + summarizeRun($systemInfo, $results, $verbose, $reportFd); + summarizeRunHtml($systemInfo, $results, $verbose, $reportFd2); + } + + runFooterHtml($reportFd2); + + # Finish the report. + close($reportFd); + close($reportFd2); + + # Display the report, if not in quiet mode. + if ($verbose > 0) { + printf "\n"; + printf "========================================================================\n"; + system("cat \"$reportFile\""); + } + + 0; +} + + +exit(main(@ARGV)); + diff --git a/testcases/feature-test/oeaware/UnixBench/USAGE b/testcases/feature-test/oeaware/UnixBench/USAGE new file mode 100644 index 000000000..903a83f7f --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/USAGE @@ -0,0 +1,394 @@ +Running the Tests +================= + +All the tests are executed using the "Run" script in the top-level directory. + +The simplest way to generate results is with the commmand: + ./Run + +This will run a standard "index" test (see "The BYTE Index" below), and +save the report in the "results" directory, with a filename like + hostname-2007-09-23-01 +An HTML version is also saved. + +If you want to generate both the basic system index and the graphics index, +then do: + ./Run gindex + +If your system has more than one CPU, the tests will be run twice -- once +with a single copy of each test running at once, and once with N copies, +where N is the number of CPUs. Some categories of tests, however (currently +the graphics tests) will only run with a single copy. + +Since the tests are based on constant time (variable work), a "system" +run usually takes about 29 minutes; the "graphics" part about 18 minutes. +A "gindex" run on a dual-core machine will do 2 "system" passes (single- +and dual-processing) and one "graphics" run, for a total around one and +a quarter hours. + +============================================================================ + +Detailed Usage +============== + +The Run script takes a number of options which you can use to customise a +test, and you can specify the names of the tests to run. The full usage +is: + + Run [ -q | -v ] [-i ] [-c [-c ...]] [test ...] + +The option flags are: + + -q Run in quiet mode. + -v Run in verbose mode. + -i Run iterations for each test -- slower tests + use / 3, but at least 1. Defaults to 10 (3 for + slow tests). + -c Run copies of each test in parallel. + +The -c option can be given multiple times; for example: + + ./Run -c 1 -c 4 + +will run a single-streamed pass, then a 4-streamed pass. Note that some +tests (currently the graphics tests) will only run in a single-streamed pass. + +The remaining non-flag arguments are taken to be the names of tests to run. +The default is to run "index". See "Tests" below. + +When running the tests, I do *not* recommend switching to single-user mode +("init 1"). This seems to change the results in ways I don't understand, +and it's not realistic (unless your system will actually be running in this +mode, of course). However, if using a windowing system, you may want to +switch to a minimal window setup (for example, log in to a "twm" session), +so that randomly-churning background processes don't randomise the results +too much. This is particularly true for the graphics tests. + + +============================================================================ + +Tests +===== + +The available tests are organised into categories; when generating index +scores (see "The BYTE Index" below) the results for each category are +produced separately. The categories are: + + system The original Unix system tests (not all are actually + in the index) + 2d 2D graphics tests (not all are actually in the index) + 3d 3D graphics tests + misc Various non-indexed tests + +The following individual tests are available: + + system: + dhry2reg Dhrystone 2 using register variables + whetstone-double Double-Precision Whetstone + syscall System Call Overhead + pipe Pipe Throughput + context1 Pipe-based Context Switching + spawn Process Creation + execl Execl Throughput + fstime-w File Write 1024 bufsize 2000 maxblocks + fstime-r File Read 1024 bufsize 2000 maxblocks + fstime File Copy 1024 bufsize 2000 maxblocks + fsbuffer-w File Write 256 bufsize 500 maxblocks + fsbuffer-r File Read 256 bufsize 500 maxblocks + fsbuffer File Copy 256 bufsize 500 maxblocks + fsdisk-w File Write 4096 bufsize 8000 maxblocks + fsdisk-r File Read 4096 bufsize 8000 maxblocks + fsdisk File Copy 4096 bufsize 8000 maxblocks + shell1 Shell Scripts (1 concurrent) (runs "looper 60 multi.sh 1") + shell8 Shell Scripts (8 concurrent) (runs "looper 60 multi.sh 8") + shell16 Shell Scripts (8 concurrent) (runs "looper 60 multi.sh 16") + + 2d: + 2d-rects 2D graphics: rectangles + 2d-lines 2D graphics: lines + 2d-circle 2D graphics: circles + 2d-ellipse 2D graphics: ellipses + 2d-shapes 2D graphics: polygons + 2d-aashapes 2D graphics: aa polygons + 2d-polys 2D graphics: complex polygons + 2d-text 2D graphics: text + 2d-blit 2D graphics: images and blits + 2d-window 2D graphics: windows + + 3d: + ubgears 3D graphics: gears + + misc: + C C Compiler Throughput ("looper 60 $cCompiler cctest.c") + arithoh Arithoh (huh?) + short Arithmetic Test (short) (this is arith.c configured for + "short" variables; ditto for the ones below) + int Arithmetic Test (int) + long Arithmetic Test (long) + float Arithmetic Test (float) + double Arithmetic Test (double) + dc Dc: sqrt(2) to 99 decimal places (runs + "looper 30 dc < dc.dat", using your system's copy of "dc") + hanoi Recursion Test -- Tower of Hanoi + grep Grep for a string in a large file, using your system's + copy of "grep" + sysexec Exercise fork() and exec(). + +The following pseudo-test names are aliases for combinations of other +tests: + + arithmetic Runs arithoh, short, int, long, float, double, + and whetstone-double + dhry Alias for dhry2reg + dhrystone Alias for dhry2reg + whets Alias for whetstone-double + whetstone Alias for whetstone-double + load Runs shell1, shell8, and shell16 + misc Runs C, dc, and hanoi + speed Runs the arithmetic and system groups + oldsystem Runs execl, fstime, fsbuffer, fsdisk, pipe, context1, + spawn, and syscall + system Runs oldsystem plus shell1, shell8, and shell16 + fs Runs fstime-w, fstime-r, fstime, fsbuffer-w, + fsbuffer-r, fsbuffer, fsdisk-w, fsdisk-r, and fsdisk + shell Runs shell1, shell8, and shell16 + + index Runs the tests which constitute the official index: + the oldsystem group, plus dhry2reg, whetstone-double, + shell1, and shell8 + See "The BYTE Index" below for more information. + graphics Runs the tests which constitute the graphics index: + 2d-rects, 2d-ellipse, 2d-aashapes, 2d-text, 2d-blit, + 2d-window, and ubgears + gindex Runs the index and graphics groups, to generate both + sets of index results + + all Runs all tests + + +============================================================================ + +The BYTE Index +============== + +The purpose of this test is to provide a basic indicator of the performance +of a Unix-like system; hence, multiple tests are used to test various +aspects of the system's performance. These test results are then compared +to the scores from a baseline system to produce an index value, which is +generally easier to handle than the raw sores. The entire set of index +values is then combined to make an overall index for the system. + +Since 1995, the baseline system has been "George", a SPARCstation 20-61 +with 128 MB RAM, a SPARC Storage Array, and Solaris 2.3, whose ratings +were set at 10.0. (So a system which scores 520 is 52 times faster than +this machine.) Since the numbers are really only useful in a relative +sense, there's no particular reason to update the base system, so for the +sake of consistency it's probably best to leave it alone. George's scores +are in the file "pgms/index.base"; this file is used to calculate the +index scores for any particular run. + +Over the years, various changes have been made to the set of tests in the +index. Although there is a desire for a consistent baseline, various tests +have been determined to be misleading, and have been removed; and a few +alternatives have been added. These changes are detailed in the README, +and should be born in mind when looking at old scores. + +A number of tests are included in the benchmark suite which are not part of +the index, for various reasons; these tests can of course be run manually. +See "Tests" above. + + +============================================================================ + +Graphics Tests +============== + +As of version 5.1, UnixBench now contains some graphics benchmarks. These +are intended to give a rough idea of the general graphics performance of +a system. + +The graphics tests are in categories "2d" and "3d", so the index scores +for these tests are separate from the basic system index. This seems +like a sensible division, since the graphics performance of a system +depends largely on the graphics adaptor. + +The tests currently consist of some 2D "x11perf" tests and "ubgears". + +* The 2D tests are a selection of the x11perf tests, using the host + system's x11perf command (which must be installed and in the search + path). Only a few of the x11perf tests are used, in the interests + of completing a test run in a reasonable time; if you want to do + detailed diagnosis of an X server or graphics chip, then use x11perf + directly. + +* The 3D test is "ubgears", a modified version of the familiar "glxgears". + This version runs for 5 seconds to "warm up", then performs a timed + run and displays the average frames-per-second. + +On multi-CPU systems, the graphics tests will only run in single-processing +mode. This is because the meaning of running two copies of a test at once +is dubious; and the test windows tend to overlay each other, meaning that +the window behind isn't actually doing any work. + + +============================================================================ + +Multiple CPUs +============= + +If your system has multiple CPUs, the default behaviour is to run the selected +tests twice -- once with one copy of each test program running at a time, +and once with N copies, where N is the number of CPUs. (You can override +this with the "-c" option; see "Detailed Usage" above.) This is designed to +allow you to assess: + + - the performance of your system when running a single task + - the performance of your system when running multiple tasks + - the gain from your system's implementation of parallel processing + +The results, however, need to be handled with care. Here are the results +of two runs on a dual-processor system, one in single-processing mode, one +dual-processing: + + Test Single Dual Gain + -------------------- ------ ------ ---- + Dhrystone 2 562.5 1110.3 97% + Double Whetstone 320.0 640.4 100% + Execl Throughput 450.4 880.3 95% + File Copy 1024 759.4 595.9 -22% + File Copy 256 535.8 438.8 -18% + File Copy 4096 1261.8 1043.4 -17% + Pipe Throughput 481.0 979.3 104% + Pipe-based Switching 326.8 1229.0 276% + Process Creation 917.2 1714.1 87% + Shell Scripts (1) 1064.9 1566.3 47% + Shell Scripts (8) 1567.7 1709.9 9% + System Call Overhead 944.2 1445.5 53% + -------------------- ------ ------ ---- + Index Score: 678.2 1026.2 51% + +As expected, the heavily CPU-dependent tasks -- dhrystone, whetstone, +execl, pipe throughput, process creation -- show close to 100% gain when +running 2 copies in parallel. + +The Pipe-based Context Switching test measures context switching overhead +by sending messages back and forth between 2 processes. I don't know why +it shows such a huge gain with 2 copies (ie. 4 processes total) running, +but it seems to be consistent on my system. I think this may be an issue +with the SMP implementation. + +The System Call Overhead shows a lesser gain, presumably because it uses a +lot of CPU time in single-threaded kernel code. The shell scripts test with +8 concurrent processes shows no gain -- because the test itself runs 8 +scripts in parallel, it's already using both CPUs, even when the benchmark +is run in single-stream mode. The same test with one process per copy +shows a real gain. + +The filesystem throughput tests show a loss, instead of a gain, when +multi-processing. That there's no gain is to be expected, since the tests +are presumably constrained by the throughput of the I/O subsystem and the +disk drive itself; the drop in performance is presumably down to the +increased contention for resources, and perhaps greater disk head movement. + +So what tests should you use, how many copies should you run, and how should +you interpret the results? Well, that's up to you, since it depends on +what it is you're trying to measure. + +Implementation +-------------- + +The multi-processing mode is implemented at the level of test iterations. +During each iteration of a test, N slave processes are started using fork(). +Each of these slaves executes the test program using fork() and exec(), +reads and stores the entire output, times the run, and prints all the +results to a pipe. The Run script reads the pipes for each of the slaves +in turn to get the results and times. The scores are added, and the times +averaged. + +The result is that each test program has N copies running at once. They +should all finish at around the same time, since they run for constant time. + +If a test program itself starts off K multiple processes (as with the shell8 +test), then the effect will be that there are N * K processes running at +once. This is probably not very useful for testing multi-CPU performance. + + +============================================================================ + +The Language Setting +==================== + +The $LANG environment variable determines how programs abnd library +routines interpret text. This can have a big impact on the test results. + +If $LANG is set to POSIX, or is left unset, text is treated as ASCII; if +it is set to en_US.UTF-8, foir example, then text is treated as being +encoded in UTF-8, which is more complex and therefore slower. Setting +it to other languages can have varying results. + +To ensure consistency between test runs, the Run script now (as of version +5.1.1) sets $LANG to "en_US.utf8". + +This setting which is configured with the variable "$language". You +should not change this if you want to share your results to allow +comparisons between systems; however, you may want to change it to see +how different language settings affect performance. + +Each test report now includes the language settings in use. The reported +language is what is set in $LANG, and is not necessarily supported by the +system; but we also report the character mapping and collation order which +are actually in use (as reported by "locale"). + + +============================================================================ + +Interpreting the Results +======================== + +Interpreting the results of these tests is tricky, and totally depends on +what you're trying to measure. + +For example, are you trying to measure how fast your CPU is? Or how good +your compiler is? Because these tests are all recompiled using your host +system's compiler, the performance of the compiler will inevitably impact +the performance of the tests. Is this a problem? If you're choosing a +system, you probably care about its overall speed, which may well depend +on how good its compiler is; so including that in the test results may be +the right answer. But you may want to ensure that the right compiler is +used to build the tests. + +On the other hand, with the vast majority of Unix systems being x86 / PC +compatibles, running Linux and the GNU C compiler, the results will tend +to be more dependent on the hardware; but the versions of the compiler and +OS can make a big difference. (I measured a 50% gain between SUSE 10.1 +and OpenSUSE 10.2 on the same machine.) So you may want to make sure that +all your test systems are running the same version of the OS; or at least +publish the OS and compuiler versions with your results. Then again, it may +be compiler performance that you're interested in. + +The C test is very dubious -- it tests the speed of compilation. If you're +running the exact same compiler on each system, OK; but otherwise, the +results should probably be discarded. A slower compilation doesn't say +anything about the speed of your system, since the compiler may simply be +spending more time to super-optimise the code, which would actually make it +faster. + +This will be particularly true on architectures like IA-64 (Itanium etc.) +where the compiler spends huge amounts of effort scheduling instructions +to run in parallel, with a resultant significant gain in execution speed. + +Some tests are even more dubious in terms of host-dependency -- for example, +the "dc" test uses the host's version of dc (a calculator program). The +version of this which is available can make a huge difference to the score, +which is why it's not in the index group. Read through the release notes +for more on these kinds of issues. + +Another age-old issue is that of the benchmarks being too trivial to be +meaningful. With compilers getting ever smarter, and performing more +wide-ranging flow path analyses, the danger of parts of the benchmarks +simply being optimised out of existance is always present. + +All in all, the "index" and "gindex" tests (see above) are designed to +give a reasonable measure of overall system performance; but the results +of any test run should always be used with care. + diff --git a/testcases/feature-test/oeaware/UnixBench/WRITING_TESTS b/testcases/feature-test/oeaware/UnixBench/WRITING_TESTS new file mode 100644 index 000000000..28cd968dd --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/WRITING_TESTS @@ -0,0 +1,133 @@ +Writing a Test +============== + +Writing a test program is pretty easy. Basically, a test is configured via +a monster array in the Run script, which specifics (among other things) the +program to execute and the parameters to pass it. + +The test itself is simply a program which is given the optional parameters +on the command line, and produces logging data on stdout and its results on +stderr. + + +============================================================================ + +Test Configuration +================== + +In Run, all tests are named in the "$testList" array. This names the +individual tests, and also sets up aliases for groups of tests, eg. "index". + +The test specifications are in the "$testParams" array. This contains the +details of each individual test as a hash. The fields in the hash are: + + * "logmsg": the full name to display for this test. + * "cat": the category this test belongs to; must be configured + in $testCats. + * "prog": the name of the program to execute; defaults to the name of + the benchmark. + * "repeat": number of passes to run; either 'short' (the default), + 'long', or 'single'. For 'short' and 'long', the actual numbers of + passes are given by $shortIterCount and $longIterCount, which are + configured at the top of the script or by the "-i" flag. 'single' + means just run one pass; this should be used for test which do their + own multi-pass handling internally. + * "stdout": non-0 to add the test's stdout to the log file; defaults to 1. + Set to 0 for tests that are too wordy. + * "stdin": name of a file to send to the program's stdin; default null. + * "options": options to be put on the program's command line; default null. + + +============================================================================ + +Output Format +============= + +The results on stderr take the form of a line header and fields, separated +by "|" characters. A result line can be one of: + + COUNT|score|timebase|label + TIME|seconds + ERROR|message + +Any other text on stderr is treated as if it were: + + ERROR|text + +Any output to stdout is placed in a log file, and can be used for debugging. + +COUNT +----- + +The COUNT line is the line used to report a test score. + + * "score" is the result, typically the number of loops performed during + the run + * "timebase" is the time base used for the final report to the user. A + value of 1 reports the score as is; a value of 60, for example, divides + the time taken by 60 to get loops per minute. Atimebase of zero indicates + that the score is already a rate, ie. a count of things per second. + * "label" is the label to use for the score; like "lps" (loops per + second), etc. + +TIME +---- + +The TIME line is optionally used to report the time taken. The Run script +normally measures this, but if your test has signifant overhead outside the +actual test loop, you should use TIME to report the time taken for the actual +test. The argument is the time in seconds in floating-point. + +ERROR +----- + +The argument is an error message; this will abort the benchmarking run and +display the message. + +Any output to stderr which is not a formatted line will be treated as an +error message, so use of ERROR is optional. + + +============================================================================ + +Test Examples +============= + +Iteration Count +--------------- + +The simplest thing is to count the number of loops executed in a given time; +see eg. arith.c. The utlilty functions in timeit.c can be used to implement +the fixed time interval, which is generally passed in on the command line. + +The result is reported simply as the number of iterations completed: + + fprintf(stderr,"COUNT|%lu|1|lps\n", iterations); + +The bnenchmark framework will measure the time taken itself. If the test +code has significant overhead (eg. a "pump-priming" pass), then you should +explicitly report the time taken for the test by adding a line like this: + + fprintf(stderr, "TIME|%.1f\n", seconds); + +If you want results reported as loops per minute, then set timebase to 60: + + fprintf(stderr,"COUNT|%lu|60|lpm\n", iterations); + +Note that this only affects the final report; all times passed to or +from the test are still in seconds. + +Rate +---- + +The other technique is to calculate the rate (things per second) in the test, +and report that directly. To do this, just set timebase to 0: + + fprintf(stderr, "COUNT|%ld|0|KBps\n", kbytes_per_sec); + +Again, you can use TIME to explicitly report the time taken: + + fprintf(stderr, "TIME|%.1f\n", end - start); + +but this isn't so important since you've already calculated the rate. + diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/arithoh b/testcases/feature-test/oeaware/UnixBench/pgms/arithoh new file mode 100755 index 0000000000000000000000000000000000000000..7bed0da8cfc3906be9617eee974fce094022c42c GIT binary patch literal 72872 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 P@sDixJ+q;JkP80=H-%tM literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/context1 b/testcases/feature-test/oeaware/UnixBench/pgms/context1 new file mode 100755 index 0000000000000000000000000000000000000000..9e2750baed4f099fa69cd9fdd2ebc6385f3f85d6 GIT binary patch literal 73200 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 dUO4tfDx>XpU_``4<@m~g{gpY^{{{=8a*}?z- literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/dhry2 b/testcases/feature-test/oeaware/UnixBench/pgms/dhry2 new file mode 100755 index 0000000000000000000000000000000000000000..ef9c8b42e513607b4bb1195b407be3b280e7094f GIT binary patch literal 73808 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 literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/dhry2reg b/testcases/feature-test/oeaware/UnixBench/pgms/dhry2reg new file mode 100755 index 0000000000000000000000000000000000000000..8c5b6868f99216e0423ad3b9215f8c273b7ee1a0 GIT binary patch literal 73816 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

23TCMD>4GH!S6|uKv~Efz*45 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 Lo|#ZUNQM6f`rBwk literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/execl b/testcases/feature-test/oeaware/UnixBench/pgms/execl new file mode 100755 index 0000000000000000000000000000000000000000..afda26410ba8663df7ffc4cbb31de161c16f89c7 GIT binary patch literal 74784 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 RXR&{l69ZRkhCzl%{};!zaS{Lk literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/float b/testcases/feature-test/oeaware/UnixBench/pgms/float new file mode 100755 index 0000000000000000000000000000000000000000..c0e0abf21ed54452f85731c1eb61eed458812322 GIT binary patch literal 72872 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 IKtzTA21qSo`2YX_ literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/fstime b/testcases/feature-test/oeaware/UnixBench/pgms/fstime new file mode 100755 index 0000000000000000000000000000000000000000..a2a30661f380a2fd45f636235df0c54bc72dc47e GIT binary patch literal 74064 zcmeHMeQ*@Vm4CY{34uU-gZMBS34CB;34y@|;tQh>Kq7!`Av?~c;?-(*ByF@GVs~XE zn>*HaF6RsR(8k1I$03AEQii%zId^t~?tB*+yK-FORJb_7*sk~lv0WG^7aW2?iG}X> zdb*|2Xcs4`x<9U}2WDTtU%&Ud``52~W?FkTZr$Ydct~Ad`W~^?Uu+7<{w2D-WYor_ zwKS1TT0)Dd09JXpm7OU|N?ws}N*2PFFCT99TkB>$yX?+85hW`EmEy?~3%hBK?#+DLba58Xu31?#gP41 zQq9APNVsK1BvcUz$GW;J0)a%Z{pQt`$#~^Td)%`SpDEqE{Z3l)i(^0d>dd>M$4>v< zFVn~S-uU86PbInE+y{=wHhi)D1W_X5X6NJPdND4$VbL4L*Zp>{oM|XouKmDfWWh^v z;Cpi5Cx9Ec-IpIgw)jms@I(&$<2mr{Iq)}t8@S!qVF20sW97g%=fIifY;m5*fqy** z&hwZp&Z->vMc@W*_w^wF+2VXA2R=CmZsx$3=fJtmZ0&XcpH3xYcxq50QtO?9?V)gj z5>_BYfk+?`r69^F^82w+g8pPGkVyHXfpCmkI}_npsueZKp5(p$WVkIBh)`DyE2)E$ zsYEIsp#jsNWfAv=m+8&4d22&Wt$$VJO{+(WD{moxL(?`t;#+Ou zWXei3ZL5vMV^&k3C1N3ZTQnY%WAWRjSq;I97pvKe)$1Mk=PcW(8(}^fdlFLZPfuqa z#q#&jKS^xA(7p6;Y>eyVaJ7&gY$$3kWZ<*|pCl~op8*Fx(}An`{=LkBt38neRXOmH+ylPWflm}I+CQcPck)p0 zz>6IAw>xlNOX|AYflpB&WU~V=cHr#}e5wQQbl_@^xw_kdPj}d-9k_EnKJ38xS);CA z2R>VYkOv(290z{LfzNf|PdadZW~l2a2QDAcqN>#J{e0;D?;jcRQ6}P{eM9#@_hi4% zf9e9T3q%*DU)?-7?d*n(;VnJIw(6edq2B3Ub8woMM4iwJpqD%JNziK?dNK4Chdu-P zgARQT^urE)KJ?=beG&At4!s<@*E8DwUqCN+=*ywkIP^;BEe?GZ^amaK&Cm}!^!3n> zJM@o0KkLwIpnJWe?Qeo!?$EbDuW{(xp|?2nM(7VZ^t+%RcIbZv{kW~Gc~tV^j%SZt z`h@4m<)HV-;QhWMrFpdT#}lb(4(8>OkCtEYd5)ec_hnX7y0K?+y76P4bffpR)Rl++ z=C2`4G2! zV*00Ll>RCD@KmtZ9Hjoz%y)-}_nT;AH{_n5O5fK#JDO8#L%hV2G?B}ezL z%?#V-5Zc%Po#Rv^c9p}w8Fg&W_;RPu1Zu)3QtyKpOPP_MA#jPkeHOKst;O>q!(;nL z%mtngy#}~0OK-?*fj`d?$J~Q?>_-gFi2=+Z9wfbIF^{l+s;qx;hL8h|u zFYt7EhV6XEA86$Ia?~}zrWx`gY`9L?QCY_4JtSA#BdeIBZweZ`=G2=7@8S z(xn-$HxO%pV=-nf&b%qH*A$jsoZ))5I|XS%rik{j{5|A=Z|?Hl*z3|nt6QP7-HWgb zqD(0NC(3No2K_SHX1|d1I}geENe22}x8UczSE@bnPnFkUJ{IAA(?>_o_{_nxiz)LK z_F;^xmri~-<3n8@?jz_A_mAUy(KbtNcL4h{{c7`|N%ZuySBK|1`@;NDIxoZXUk15> z=$(G7$usaNJGXf-0G|ukBMAFC`?>AQh<;T5{+^erCqJ;a?EUITo`d~a_|{z5JlG<9 zy(7NdpP~EzT|7fB7SZ5LwAp;PZe5ya&Fh#~=C}E9-nxrL=HSr%$HnvI4LJ_QnV4_b zd8#~p+@GscORtca^97k_F!rkxs%`zyg3Na?){8s(j$Fh(zVQEDrfuS&l%S86Lh+W^Ty*_bRl3eE%Y_0p#;zEFbb@c(1t!<^EOGedm^LiVjSs zHJ1_l6xQ=)>`$~y+ej9t`@4V^0*}(DsF)QiyX7(T! zk=a+Wc*ow-X|&UWbv{s#?t7+yGOv2Eu4(o=zs4Tij~HitvycPxj&6q!$HCZ+e$7ko zJU2Al)IZ7gDe=)>_GdqgNBDV}Gqkyk`|UOR(tj9UeSRqoP4Wc~4tCTYQRCwJfuc=O zaN1k=O5mOwaQhyv8^ZU?g__fWdkFXOVzciI_7S!rT9~On6fCW#mPLg(G%s5A_1e<1 z!uCZ}-MpxJUSLrs=<7jn6Hh|i#z^9uWq zOJVLfNBEg2a%2Gwo-d`Lb4&B0KJNy=ml!`Tp?g6W-uKygSe0wmDBvmG9Vl0CBE>yP1Ud4IVS{lX13H z~@A4Qq-fOFiKN^3YDlbi!HX^``Q zbAk7Z7Dq0$!iRN{2YAPL9&^TdK$v%D9vFB&`wC?q7>hDX;CFc@-pP;)yl$?}dib;Ztgvbx#k$E{|k65a;}|w#u?x2 zqiWCK`TrfpBIbHv(deGBtbNR$u?6#8gZXYLrolCco0fY<3%&_>zD;1fXDFQaj1M!$ z^S#*4ZTFbc$lvqtBi0POo57CP=v%CVv*t_K2QgkXrXL{>*pAoSCD;VO@dm6l=Jh!2 z{owdHl!IR~kMOe(U-}vLH+K8J5~RGnWr+U(c%#DSnXkRf*V7!6_hziEU!u(O%k#-| z%)XP5hu;QnuY*OIe?_}IKg{ud;P!LV{`OMeU3`wfSEwr*?WvM-B~fdV4^7q^_Gt*w z$M{sl2;q!ly>WdcWQ1eJ^_8nzZ#0s@c*0`H{%Wqh?au8@yP@u`+Wpa*&ZLdvMWA8Z z#@*Lfu56WniZ2d=(0(Hhg#L)|BmD}-J9`Y}41X0*;HuNWYuWCDyFKbJj;Dz3Oa|I8 zR6DHkiHhLvip1`UU7tj;#kjSlt2G(E&-w_fQRCKVpxfVqv!srsKvKr7Nh=tSg`leO ztNy{W)k+xbZA810DWk<=E)#)R8(0igTrYW4_6Tj*p|5E^(tn<{9F~Ucl<1O*Z=b%6 z@+Z#H9DH`gI%4r%F(YN6uS>5FE|mlN{I8!mbomEQeZ;fC_u&-m`K;sIyTil%NT>Eo z!^7twpM?AzAddR}T;o;Me zC4T^Jrz_5n?8|dsBjt53@+_EKDzFm3v(VnHTwOh3(JY7?aht%L=U(hzhr1p)(q3GQ z-Hkh>{82V=M{xHlyXs=&t9b`~HII1fU;o8R;wXpxdT~GDXoInD;64D1%Y1R)j^W-1 z%z&io;%NuHb+2;}=ILj+*?u99vAVePk>Y(*YQ8-A(W1KjlMYNgSdd?zm*3#~*y9r( zEBsXcmi(GmU$F|dZ2Z|vufKfy=cfwl3mS@*7dx@fV}*}TP=1?VeWmtVw#sfJLgVi% z=t2mbFT)4PWV=7jk4)ZIRQu&gk51gUzwiLZ-I8y2sb`W3yhV1S=)Uog;OH1)zJUk- zK6lL8gA?-W3-TNCKe@l~u9taKqhk^+bHn=!l~qmtmb`|SG5)#_vTT?H)0&s7i?(s0 zzNq%)ItKO^g1eV#3C6hGy|Fe z&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O` zngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55 zpc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;4 z1DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y= zGoTsJ3}^=24D?Sm1(YtfWv|pd((p+sCrepB(YBi+^%v&Y`aG!*3{{KL0;x}va=w%o zWc@;^7fN~Q>TsNk2fQW=$``*x_4%eK6-d3`Yl_k&@k=yCcC<+9B~s3oQVE|doEx_L z=au?0S(qjD2~y6L(wJb1lEV87Y+d!cS=16ulv1^Sb=V$Hue2YQy5jYM)bEn@(*6HT zT#>y0sSPyC`TqYV$Bi?O=p-gl@$Z&g$CtTm@eKz5v?f#Gs8tzUe^cceqoTrCvts3% z73)?SE7z^RscQYob+oy*cD=D|^Y%M$FjiJo-c-4gI44BDBlza(C7zoCE2&?utM{eM zW|Jq^T#1y~Y}C5DTh2!|8?_cs$~Ac{8)ci#Mzx{lJe!SbXR5XxkuMCO=%J4Nj<;D;*&@{=f>hir1qV$ z_+(Oh!&n?|1x2P45@jD1liF{bl|GtEYX2CEPot7~rV|onA5Ev;toRI4?;TDjAI&87 zzA+Y`McJN*KAKG@u=@`{GAyM{G2^pSjxOz((>*AyNR9}|OUcE)R z?bX|p8^3NWAT=K?%7K^Wz>RS@Z9KeUN&Xqxv1jV z?@d$acdm75$DdB$aLv1okIx?!pX9St#aD5Tx#BE=LAG(JIO^G~;(Q1NFHIqZ&yp3k z{rL4_t4T#=V>n9YvkC$rA`Xg}dDu3UVoII~>*UxAkg`?(wEVArVafo|>8xCC+tHDFIenvUIcliL+49bao?`~g>dQ^dDzoWG4Z@D_njp{iM?FyANp6V74(AaKr;bFy7E zFP~=|`KI;<)%Ih+4W&3_J{+^ zJYMy_p~hR9!=As|S60SpNr?P@eBt_2fi_yw4P{p%(1|bOaEwjDFbM`C5&teL(BW?t zSPYmt{c(N#kNvWSe=^n8+KN+wkd?67!pW4C@Ta2wU?d*1l4vUw_qRpjErEzXgfHf# zKhV`p!FaSYVx_E5WmR?ye``1v_6HJ)K#$*wr4l{Vng~QKf2b=O?SYF!^TRSV#?(V>-d-3E|jCA1h*B~I`>{c+P#_hcNYb)8#sp_#WEh-YV0`gTYqUdX zJ{YkAF@IMlMFZXb7EDc&+N=~G|$)pv+*yEl4 zV7x1qLNSqwN5(XQF;cKS6dp@XDB@38k$5n`K~sTLIOy*TTf`?SPHz#_j~QYfK$=Zh z!U}|BSCFYZM8~WkH9LD`ZL8?DGa$P<^`P=k_9XB1V>)AjG2ItafPQxHLO>#@l;jLi zi^Y{6$b(qiFUE!wpD~RwM`AP`B+|xNDOLe>#c(t>CSO`R6X95@)oBVYlHvO-ENd$; zW|F8f*%QSP6eK1>$aYmi5G&D1l`))rRpR8WQk*wcATeyHx~2iAS8XKf+Hq_}m7$&( z;@L8luxswM5=jhejN(TfW;4JJveX$#Q6;Zys!Unk_!U`SnTU%;QE9cy4WK;)U!~a| z_D*1Xs4@ZvqTwJ~jUyI*Dn$c!Ff2%_#D)~bK4bSw46QPdN+rTAT}TiN!D{JhL$pAw zZBz}%TH_;CEiDP_UZr6YEL8@9swmwZPo6)oxBzZ=1;96seXaGHqQLJXd~v<=Vq536 z7z!WtD}Qxv*Cc@@PGgkSb4I~8qu})K_L`!qTlyP98~t(n*P-e?{Ow1zf52-B;{&et z)!)C=`=2nv&vx8=wxay|y(TomxuFpBu$27wG9J6~FR`nMzn}5w9r0IxU#pi5s=ud6 za}h(8S>A)2|CXiNSLcs+af7&+AHG!om7S6usN=tlDP5gY_DcUM;Z5Z3zl7;N6qr-x z-(O&gs($I;EVR+~-Q)i>>e;_W+NpC-L;n3o{XLNTKL@wlpZ`|DyvpWA&PVIz9{?54 zFcBBG<-GnLiql`6qc%(bURT1Z_jwg#pUYppkBX!~-3y!?j>~kExoDp=jP_rh%f7&a z#ih=(Y;Ao0A3_CpQSqPX;g6TD1UVh zeMS18l=H9hOZlmOoq;c#D1UWceL|kh8mMz#%3sO1Q0eqn=i29_|4FAa%F0j4-?;qM z`S&pqm8d0$zk)Bxn5zHkJ7vE3a~#n!Ls{BVwX4wIqrm;IQh=1o-~BDawtOk+LqRTe zfvfM}8)f_N3v~3yoqzM-uVRf_q2Kt+A7Ac%xowx_@V{I7*Exft?Dk)s!~Y5Cf8z)E z*W~a&A^jsC;J;n^yT`ejiN*DVEk>d!RmqQ|pvoggD4fi*QNszM?6zgywZ#aJ3)24t wKGFFq$9*Sml|O1<=51Ex9*QH^u^DztRjvtlw?7>o+5FGVu`SzN4lb4c7ZJH{!~g&Q literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 b/testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 new file mode 100755 index 000000000..ef8a69122 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 @@ -0,0 +1,476 @@ +#!/usr/bin/perl -w + +use strict; + + +############################################################################ +# gfx-x11: a front-end for x11perf. Runs a selected x11perf test, and +# produces output in the format needed by UnixBench. +############################################################################ +# Modification Log: +# 2007.09.26 Ian Smith Created +############################################################################ + +# This program runs sets of x11perf tests, indexes the results against +# a common base reference system (see $testData below), and reports the +# final score. +# +# Usage: +# gfx-x11

Benchmark of localhost.localdomain / GNU/Linux on Thu Jul 24 2025

+

BYTE UNIX Benchmarks (Version 5.1.3)

+ +

Test System Information

+

+ + + + + + + + + + + + + + + + + +
System:localhost.localdomain: GNU/Linux
OS:GNU/Linux -- 5.10.0-273.0.0.176.oe2203sp4.aarch64 -- #1 SMP Wed Jul 16 15:24:56 CST 2025
Machine:aarch64: aarch64
Language:en_US.utf8 (charmap="UTF-8", collate="UTF-8")
Uptime:18:29:19 up 2 days, 2:08, 6 users, load average: 0.34, 0.17, 1.21; runlevel 3

+ diff --git a/testcases/feature-test/oeaware/UnixBench/src/arith.c b/testcases/feature-test/oeaware/UnixBench/src/arith.c new file mode 100644 index 000000000..bbacb0824 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/arith.c @@ -0,0 +1,110 @@ + +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: arith.c SID: 3.3 5/15/91 19:30:19 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * May 12, 1989 - modified empty loops to avoid nullifying by optimizing + * compilers + * August 28, 1990 - changed timing relationship--now returns total number + * of iterations (ty) + * November 9, 1990 - made changes suggested by Keith Cantrell + * (digi!kcantrel) to defeat optimization + * to non-existence + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ + +char SCCSid[] = "@(#) @(#)arith.c:3.3 -- 5/15/91 19:30:19"; +/* + * arithmetic test + * + */ + +#include +#include +#include "timeit.c" + +int dumb_stuff(int); + +unsigned long iter; + +/* this function is called when the alarm expires */ +void report() +{ + fprintf(stderr,"COUNT|%ld|1|lps\n", iter); + exit(0); +} + +int main(argc, argv) +int argc; +char *argv[]; +{ + int duration; + int result = 0; + + if (argc != 2) { + printf("Usage: %s duration\n", argv[0]); + exit(1); + } + + duration = atoi(argv[1]); + + /* set up alarm call */ + iter = 0; /* init iteration count */ + wake_me(duration, report); + + /* this loop will be interrupted by the alarm call */ + while (1) + { + /* in switching to time-based (instead of iteration-based), + the following statement was added. It should not skew + the timings too much--there was an increment and test + in the "while" expression above. The only difference is + that now we're incrementing a long instead of an int. (ty) */ + ++iter; + /* the loop calls a function to insure that something is done + the results of the function are fed back in (just so they + they won't be thrown away. A loop with + unused assignments may get optimized out of existence */ + result = dumb_stuff(result); + } +} + + +/************************** dumb_stuff *******************/ +int dumb_stuff(i) +int i; +{ +#ifndef arithoh + datum x, y, z; + z = 0; +#endif + /* + * 101 + * sum i*i/(i*i-1) + * i=2 + */ + /* notice that the i value is always reset by the loop */ + for (i=2; i<=101; i++) + { +#ifndef arithoh + x = i; + y = x*x; + z += y/(y-1); + } +return(x+y+z); +#else +} +return(0); +#endif +} + diff --git a/testcases/feature-test/oeaware/UnixBench/src/big.c b/testcases/feature-test/oeaware/UnixBench/src/big.c new file mode 100644 index 000000000..e7c233667 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/big.c @@ -0,0 +1,597 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: big.c SID: 3.3 5/15/91 19:30:18 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * 10/22/97 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +/* + * dummy code for execl test [ old version of makework.c ] + * + * makework [ -r rate ] [ -c copyfile ] nusers + * + * job streams are specified on standard input with lines of the form + * full_path_name_for_command [ options ] [ +#include +#include +#include +#include +#include +#include +#include +#include + + +#define DEF_RATE 5.0 +#define GRANULE 5 +#define CHUNK 60 +#define MAXCHILD 12 +#define MAXWORK 10 + +/* Can't seem to get this declared in the headers... */ +extern int kill(pid_t pid, int sig); + +void wrapup(char *); +void onalarm(int); +void pipeerr(); +void grunt(); +void getwork(void); +#if debug +void dumpwork(void); +#endif +void fatal(char *s); + +float thres; +float est_rate = DEF_RATE; +int nusers; /* number of concurrent users to be simulated by + * this process */ +int firstuser; /* ordinal identification of first user for this + * process */ +int nwork = 0; /* number of job streams */ +int exit_status = 0; /* returned to parent */ +int sigpipe; /* pipe write error flag */ + +struct st_work { + char *cmd; /* name of command to run */ + char **av; /* arguments to command */ + char *input; /* standard input buffer */ + int inpsize; /* size of standard input buffer */ + char *outf; /* standard output (filename) */ +} work[MAXWORK]; + +struct { + int xmit; /* # characters sent */ + char *bp; /* std input buffer pointer */ + int blen; /* std input buffer length */ + int fd; /* stdin to command */ + int pid; /* child PID */ + char *line; /* start of input line */ + int firstjob; /* inital piece of work */ + int thisjob; /* current piece of work */ +} child[MAXCHILD], *cp; + +int main(argc, argv) +int argc; +char *argv[]; +{ + int i; + int l; + int fcopy = 0; /* fd for copy output */ + int master = 1; /* the REAL master, == 0 for clones */ + int nchild; /* no. of children for a clone to run */ + int done; /* count of children finished */ + int output; /* aggregate output char count for all + children */ + int c; + int thiswork = 0; /* next job stream to allocate */ + int nch; /* # characters to write */ + int written; /* # characters actully written */ + char logname[15]; /* name of the log file(s) */ + int pvec[2]; /* for pipes */ + char *p; + char *prog; /* my name */ + +#if ! debug + freopen("masterlog.00", "a", stderr); +#endif + prog = argv[0]; + while (argc > 1 && argv[1][0] == '-') { + p = &argv[1][1]; + argc--; + argv++; + while (*p) { + switch (*p) { + case 'r': + est_rate = atoi(argv[1]); + sscanf(argv[1], "%f", &est_rate); + if (est_rate <= 0) { + fprintf(stderr, "%s: bad rate, reset to %.2f chars/sec\n", prog, DEF_RATE); + est_rate = DEF_RATE; + } + argc--; + argv++; + break; + + case 'c': + fcopy = open(argv[1], 1); + if (fcopy < 0) + fcopy = creat(argv[1], 0600); + if (fcopy < 0) { + fprintf(stderr, "%s: cannot open copy file '%s'\n", + prog, argv[1]); + exit(2); + } + lseek(fcopy, 0L, 2); /* append at end of file */ + argc--; + argv++; + break; + + default: + fprintf(stderr, "%s: bad flag '%c'\n", prog, *p); + exit(4); + } + p++; + } + } + + if (argc < 2) { + fprintf(stderr, "%s: missing nusers\n", prog); + exit(4); + } + + nusers = atoi(argv[1]); + if (nusers < 1) { + fprintf(stderr, "%s: impossible nusers (%d<-%s)\n", prog, nusers, argv[1]); + exit(4); + } + fprintf(stderr, "%d Users\n", nusers); + argc--; + argv++; + + /* build job streams */ + getwork(); +#if debug + dumpwork(); +#endif + + /* clone copies of myself to run up to MAXCHILD jobs each */ + firstuser = MAXCHILD; + fprintf(stderr, "master pid %d\n", getpid()); + fflush(stderr); + while (nusers > MAXCHILD) { + fflush(stderr); + if (nusers >= 2*MAXCHILD) + /* the next clone must run MAXCHILD jobs */ + nchild = MAXCHILD; + else + /* the next clone must run the leftover jobs */ + nchild = nusers - MAXCHILD; + if ((l = fork()) == -1) { + /* fork failed */ + fatal("** clone fork failed **\n"); + goto bepatient; + } else if (l > 0) { + fprintf(stderr, "master clone pid %d\n", l); + /* I am the master with nchild fewer jobs to run */ + nusers -= nchild; + firstuser += MAXCHILD; + continue; + } else { + /* I am a clone, run MAXCHILD jobs */ +#if ! debug + sprintf(logname, "masterlog.%02d", firstuser/MAXCHILD); + freopen(logname, "w", stderr); +#endif + master = 0; + nusers = nchild; + break; + } + } + if (master) + firstuser = 0; + + close(0); + for (i = 0; i < nusers; i++ ) { + fprintf(stderr, "user %d job %d ", firstuser+i, thiswork); + if (pipe(pvec) == -1) { + /* this is fatal */ + fatal("** pipe failed **\n"); + goto bepatient; + } + fflush(stderr); + if ((child[i].pid = fork()) == 0) { + int fd; + /* the command */ + if (pvec[0] != 0) { + close(0); + dup(pvec[0]); + } +#if ! debug + sprintf(logname, "userlog.%02d", firstuser+i); + freopen(logname, "w", stderr); +#endif + for (fd = 3; fd < 24; fd++) + close(fd); + if (work[thiswork].outf[0] != '\0') { + /* redirect std output */ + char *q; + for (q = work[thiswork].outf; *q != '\n'; q++) ; + *q = '\0'; + if (freopen(work[thiswork].outf, "w", stdout) == NULL) { + fprintf(stderr, "makework: cannot open %s for std output\n", + work[thiswork].outf); + fflush(stderr); + } + *q = '\n'; + } + execv(work[thiswork].cmd, work[thiswork].av); + /* don't expect to get here! */ + fatal("** exec failed **\n"); + goto bepatient; + } + else if (child[i].pid == -1) { + fatal("** fork failed **\n"); + goto bepatient; + } + else { + close(pvec[0]); + child[i].fd = pvec[1]; + child[i].line = child[i].bp = work[thiswork].input; + child[i].blen = work[thiswork].inpsize; + child[i].thisjob = thiswork; + child[i].firstjob = thiswork; + fprintf(stderr, "pid %d pipe fd %d", child[i].pid, child[i].fd); + if (work[thiswork].outf[0] != '\0') { + char *q; + fprintf(stderr, " > "); + for (q=work[thiswork].outf; *q != '\n'; q++) + fputc(*q, stderr); + } + fputc('\n', stderr); + thiswork++; + if (thiswork >= nwork) + thiswork = 0; + } + } + fflush(stderr); + + srand(time(0)); + thres = 0; + done = output = 0; + for (i = 0; i < nusers; i++) { + if (child[i].blen == 0) + done++; + else + thres += est_rate * GRANULE; + } + est_rate = thres; + + signal(SIGALRM, onalarm); + signal(SIGPIPE, pipeerr); + alarm(GRANULE); + while (done < nusers) { + for (i = 0; i < nusers; i++) { + cp = &child[i]; + if (cp->xmit >= cp->blen) continue; + l = rand() % CHUNK + 1; /* 1-CHUNK chars */ + if (l == 0) continue; + if (cp->xmit + l > cp->blen) + l = cp->blen - cp->xmit; + p = cp->bp; + cp->bp += l; + cp->xmit += l; +#if debug + fprintf(stderr, "child %d, %d processed, %d to go\n", i, cp->xmit, cp->blen - cp->xmit); +#endif + while (p < cp->bp) { + if (*p == '\n' || (p == &cp->bp[-1] && cp->xmit >= cp->blen)) { + /* write it out */ + nch = p - cp->line + 1; + if ((written = write(cp->fd, cp->line, nch)) != nch) { + /* argh! */ + cp->line[nch] = '\0'; + fprintf(stderr, "user %d job %d cmd %s ", + firstuser+i, cp->thisjob, cp->line); + fprintf(stderr, "write(,,%d) returns %d\n", nch, written); + if (sigpipe) + fatal("** SIGPIPE error **\n"); + else + fatal("** write error **\n"); + goto bepatient; + + } + if (fcopy) + write(fcopy, cp->line, p - cp->line + 1); +#if debug + fprintf(stderr, "child %d gets \"", i); + { + char *q = cp->line; + while (q <= p) { + if (*q >= ' ' && *q <= '~') + fputc(*q, stderr); + else + fprintf(stderr, "\\%03o", *q); + q++; + } + } + fputc('"', stderr); +#endif + cp->line = &p[1]; + } + p++; + } + if (cp->xmit >= cp->blen) { + done++; + close(cp->fd); +#if debug + fprintf(stderr, "child %d, close std input\n", i); +#endif + } + output += l; + } + while (output > thres) { + pause(); +#if debug + fprintf(stderr, "after pause: output, thres, done %d %.2f %d\n", output, thres, done); +#endif + } + } + +bepatient: + alarm(0); +/**** + * If everything is going OK, we should simply be able to keep + * looping unitil 'wait' fails, however some descendent process may + * be in a state from which it can never exit, and so a timeout + * is used. + * 5 minutes should be ample, since the time to run all jobs is of + * the order of 5-10 minutes, however some machines are painfully slow, + * so the timeout has been set at 20 minutes (1200 seconds). + ****/ + signal(SIGALRM, grunt); + alarm(1200); + while ((c = wait(&l)) != -1) { + for (i = 0; i < nusers; i++) { + if (c == child[i].pid) { + fprintf(stderr, "user %d job %d pid %d done", firstuser+i, child[i].thisjob, c); + if (l != 0) { + if (l & 0x7f) + fprintf(stderr, " status %d", l & 0x7f); + if (l & 0xff00) + fprintf(stderr, " exit code %d", (l>>8) & 0xff); + exit_status = 4; + } + fputc('\n', stderr); + c = child[i].pid = -1; + break; + } + } + if (c != -1) { + fprintf(stderr, "master clone done, pid %d ", c); + if (l != 0) { + if (l & 0x7f) + fprintf(stderr, " status %d", l & 0x7f); + if (l & 0xff00) + fprintf(stderr, " exit code %d", (l>>8) & 0xff); + exit_status = 4; + } + fputc('\n', stderr); + } + } + alarm(0); + wrapup("Finished waiting ..."); + + exit(0); +} + +void onalarm(int foo) +{ + thres += est_rate; + signal(SIGALRM, onalarm); + alarm(GRANULE); +} + +void grunt() +{ + /* timeout after label "bepatient" in main */ + exit_status = 4; + wrapup("Timed out waiting for jobs to finish ..."); +} + +void pipeerr() +{ + sigpipe++; +} + +void wrapup(char *reason) +{ + int i; + int killed = 0; + fflush(stderr); + for (i = 0; i < nusers; i++) { + if (child[i].pid > 0 && kill(child[i].pid, SIGKILL) != -1) { + if (!killed) { + killed++; + fprintf(stderr, "%s\n", reason); + fflush(stderr); + } + fprintf(stderr, "user %d job %d pid %d killed off\n", firstuser+i, child[i].thisjob, child[i].pid); + fflush(stderr); + } + } + exit(exit_status); +} + +#define MAXLINE 512 +void getwork(void) +{ + int i; + int f; + int ac=0; + char *lp = (void *)0; + char *q = (void *)0; + struct st_work *w = (void *)0; + char line[MAXLINE]; + char c; + + while (fgets(line, MAXLINE, stdin) != NULL) { + if (nwork >= MAXWORK) { + fprintf(stderr, "Too many jobs specified, .. increase MAXWORK\n"); + exit(4); + } + w = &work[nwork]; + lp = line; + i = 1; + while (*lp && *lp != ' ') { + i++; + lp++; + } + w->cmd = (char *)malloc(i); + strncpy(w->cmd, line, i-1); + w->cmd[i-1] = '\0'; + w->inpsize = 0; + w->input = ""; + /* start to build arg list */ + ac = 2; + w->av = (char **)malloc(2*sizeof(char *)); + q = w->cmd; + while (*q) q++; + q--; + while (q >= w->cmd) { + if (*q == '/') { + q++; + break; + } + q--; + } + w->av[0] = q; + while (*lp) { + if (*lp == ' ') { + /* space */ + lp++; + continue; + } + else if (*lp == '<') { + /* standard input for this job */ + q = ++lp; + while (*lp && *lp != ' ') lp++; + c = *lp; + *lp = '\0'; + if ((f = open(q, 0)) == -1) { + fprintf(stderr, "cannot open input file (%s) for job %d\n", + q, nwork); + exit(4); + } + /* gobble input */ + w->input = (char *)malloc(512); + while ((i = read(f, &w->input[w->inpsize], 512)) > 0) { + w->inpsize += i; + w->input = (char *)realloc(w->input, w->inpsize+512); + } + w->input = (char *)realloc(w->input, w->inpsize); + close(f); + /* extract stdout file name from line beginning "C=" */ + w->outf = ""; + for (q = w->input; q < &w->input[w->inpsize-10]; q++) { + if (*q == '\n' && strncmp(&q[1], "C=", 2) == 0) { + w->outf = &q[3]; + break; + } + } +#if debug + if (*w->outf) { + fprintf(stderr, "stdout->"); + for (q=w->outf; *q != '\n'; q++) + fputc(*q, stderr); + fputc('\n', stderr); + } +#endif + } + else { + /* a command option */ + ac++; + w->av = (char **)realloc(w->av, ac*sizeof(char *)); + q = lp; + i = 1; + while (*lp && *lp != ' ') { + lp++; + i++; + } + w->av[ac-2] = (char *)malloc(i); + strncpy(w->av[ac-2], q, i-1); + w->av[ac-2][i-1] = '\0'; + } + } + w->av[ac-1] = (char *)0; + nwork++; + } +} + +#if debug +void dumpwork(void) +{ + int i; + int j; + + for (i = 0; i < nwork; i++) { + fprintf(stderr, "job %d: cmd: %s\n", i, work[i].cmd); + j = 0; + while (work[i].av[j]) { + fprintf(stderr, "argv[%d]: %s\n", j, work[i].av[j]); + j++; + } + fprintf(stderr, "input: %d chars text: ", work[i].inpsize); + if (work[i].input == (char *)0) + fprintf(stderr, "\n"); + else { + register char *pend; + char *p; + char c; + p = work[i].input; + while (*p) { + pend = p; + while (*pend && *pend != '\n') + pend++; + c = *pend; + *pend = '\0'; + fprintf(stderr, "%s\n", p); + *pend = c; + p = &pend[1]; + } + } + } +} +#endif + +void fatal(char *s) +{ + int i; + fprintf(stderr, s); + fflush(stderr); + perror("Reason?"); + fflush(stderr); + for (i = 0; i < nusers; i++) { + if (child[i].pid > 0 && kill(child[i].pid, SIGKILL) != -1) { + fprintf(stderr, "pid %d killed off\n", child[i].pid); + fflush(stderr); + } + } + exit_status = 4; +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/context1.c b/testcases/feature-test/oeaware/UnixBench/src/context1.c new file mode 100644 index 000000000..d01abee04 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/context1.c @@ -0,0 +1,111 @@ + +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: context1.c SID: 3.3 5/15/91 19:30:18 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * $Header: context1.c,v 3.4 87/06/22 14:22:59 kjmcdonell Beta $ + * August 28, 1990 - changed timing routines--now returns total number of + * iterations in specified time period + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +char SCCSid[] = "@(#) @(#)context1.c:3.3 -- 5/15/91 19:30:18"; +/* + * Context switching via synchronized unbuffered pipe i/o + * + */ + +#include +#include +#include +#include "timeit.c" + +unsigned long iter; + +void report() +{ + fprintf(stderr, "COUNT|%lu|1|lps\n", iter); + exit(0); +} + +int main(argc, argv) +int argc; +char *argv[]; +{ + int duration; + unsigned long check; + int p1[2], p2[2]; + + if (argc != 2) { + fprintf(stderr, "Usage: context duration\n"); + exit(1); + } + + duration = atoi(argv[1]); + + /* set up alarm call */ + iter = 0; + wake_me(duration, report); + + if (pipe(p1) || pipe(p2)) { + perror("pipe create failed"); + exit(1); + } + + if (fork()) { /* parent process */ + /* master, write p1 & read p2 */ + close(p1[0]); close(p2[1]); + while (1) { + if (write(p1[1], (char *)&iter, sizeof(iter)) != sizeof(iter)) { + if ((errno != 0) && (errno != EINTR)) + perror("master write failed"); + exit(1); + } + if (read(p2[0], (char *)&check, sizeof(check)) != sizeof(check)) { + if ((errno != 0) && (errno != EINTR)) + perror("master read failed"); + exit(1); + } + if (check != iter) { + fprintf(stderr, "Master sync error: expect %lu, got %lu\n", + iter, check); + exit(2); + } + iter++; + } + } + else { /* child process */ + unsigned long iter1; + + iter1 = 0; + /* slave, read p1 & write p2 */ + close(p1[1]); close(p2[0]); + while (1) { + if (read(p1[0], (char *)&check, sizeof(check)) != sizeof(check)) { + if ((errno != 0) && (errno != EINTR)) + perror("slave read failed"); + exit(1); + } + if (check != iter1) { + fprintf(stderr, "Slave sync error: expect %lu, got %lu\n", + iter, check); + exit(2); + } + if (write(p2[1], (char *)&iter1, sizeof(iter1)) != sizeof(check)) { + if ((errno != 0) && (errno != EINTR)) + perror("slave write failed"); + exit(1); + } + iter1++; + } + } +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/dhry.h b/testcases/feature-test/oeaware/UnixBench/src/dhry.h new file mode 100644 index 000000000..34a4ada6a --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/dhry.h @@ -0,0 +1,435 @@ +/***************************************************************************** + * The BYTE UNIX Benchmarks - Release 3 + * Module: dhry.h SID: 3.4 5/15/91 19:30:21 + * + ***************************************************************************** + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ***************************************************************************** + * Modification Log: + * addapted from: + * + * + * "DHRYSTONE" Benchmark Program + * ----------------------------- + * + * Version: C, Version 2.1 + * + * File: dhry.h (part 1 of 3) + * + * Date: May 25, 1988 + * + * Author: Reinhold P. Weicker + * Siemens AG, AUT E 51 + * Postfach 3220 + * 8520 Erlangen + * Germany (West) + * Phone: [+49]-9131-7-20330 + * (8-17 Central European Time) + * Usenet: ..!mcvax!unido!estevax!weicker + * + * Original Version (in Ada) published in + * "Communications of the ACM" vol. 27., no. 10 (Oct. 1984), + * pp. 1013 - 1030, together with the statistics + * on which the distribution of statements etc. is based. + * + * In this C version, the following C library functions are used: + * - strcpy, strcmp (inside the measurement loop) + * - printf, scanf (outside the measurement loop) + * In addition, Berkeley UNIX system calls "times ()" or "time ()" + * are used for execution time measurement. For measurements + * on other systems, these calls have to be changed. + * + * Collection of Results: + * Reinhold Weicker (address see above) and + * + * Rick Richardson + * PC Research. Inc. + * 94 Apple Orchard Drive + * Tinton Falls, NJ 07724 + * Phone: (201) 834-1378 (9-17 EST) + * Usenet: ...!seismo!uunet!pcrat!rick + * + * Please send results to Rick Richardson and/or Reinhold Weicker. + * Complete information should be given on hardware and software used. + * Hardware information includes: Machine type, CPU, type and size + * of caches; for microprocessors: clock frequency, memory speed + * (number of wait states). + * Software information includes: Compiler (and runtime library) + * manufacturer and version, compilation switches, OS version. + * The Operating System version may give an indication about the + * compiler; Dhrystone itself performs no OS calls in the measurement loop. + * + * The complete output generated by the program should be mailed + * such that at least some checks for correctness can be made. + * + *************************************************************************** + * + * History: This version C/2.1 has been made for two reasons: + * + * 1) There is an obvious need for a common C version of + * Dhrystone, since C is at present the most popular system + * programming language for the class of processors + * (microcomputers, minicomputers) where Dhrystone is used most. + * There should be, as far as possible, only one C version of + * Dhrystone such that results can be compared without + * restrictions. In the past, the C versions distributed + * by Rick Richardson (Version 1.1) and by Reinhold Weicker + * had small (though not significant) differences. + * + * 2) As far as it is possible without changes to the Dhrystone + * statistics, optimizing compilers should be prevented from + * removing significant statements. + * + * This C version has been developed in cooperation with + * Rick Richardson (Tinton Falls, NJ), it incorporates many + * ideas from the "Version 1.1" distributed previously by + * him over the UNIX network Usenet. + * I also thank Chaim Benedelac (National Semiconductor), + * David Ditzel (SUN), Earl Killian and John Mashey (MIPS), + * Alan Smith and Rafael Saavedra-Barrera (UC at Berkeley) + * for their help with comments on earlier versions of the + * benchmark. + * + * Changes: In the initialization part, this version follows mostly + * Rick Richardson's version distributed via Usenet, not the + * version distributed earlier via floppy disk by Reinhold Weicker. + * As a concession to older compilers, names have been made + * unique within the first 8 characters. + * Inside the measurement loop, this version follows the + * version previously distributed by Reinhold Weicker. + * + * At several places in the benchmark, code has been added, + * but within the measurement loop only in branches that + * are not executed. The intention is that optimizing compilers + * should be prevented from moving code out of the measurement + * loop, or from removing code altogether. Since the statements + * that are executed within the measurement loop have NOT been + * changed, the numbers defining the "Dhrystone distribution" + * (distribution of statements, operand types and locality) + * still hold. Except for sophisticated optimizing compilers, + * execution times for this version should be the same as + * for previous versions. + * + * Since it has proven difficult to subtract the time for the + * measurement loop overhead in a correct way, the loop check + * has been made a part of the benchmark. This does have + * an impact - though a very minor one - on the distribution + * statistics which have been updated for this version. + * + * All changes within the measurement loop are described + * and discussed in the companion paper "Rationale for + * Dhrystone version 2". + * + * Because of the self-imposed limitation that the order and + * distribution of the executed statements should not be + * changed, there are still cases where optimizing compilers + * may not generate code for some statements. To a certain + * degree, this is unavoidable for small synthetic benchmarks. + * Users of the benchmark are advised to check code listings + * whether code is generated for all statements of Dhrystone. + * + * Version 2.1 is identical to version 2.0 distributed via + * the UNIX network Usenet in March 1988 except that it corrects + * some minor deficiencies that were found by users of version 2.0. + * The only change within the measurement loop is that a + * non-executed "else" part was added to the "if" statement in + * Func_3, and a non-executed "else" part removed from Proc_3. + * + *************************************************************************** + * + * Defines: The following "Defines" are possible: + * -DREG=register (default: Not defined) + * As an approximation to what an average C programmer + * might do, the "register" storage class is applied + * (if enabled by -DREG=register) + * - for local variables, if they are used (dynamically) + * five or more times + * - for parameters if they are used (dynamically) + * six or more times + * Note that an optimal "register" strategy is + * compiler-dependent, and that "register" declarations + * do not necessarily lead to faster execution. + * -DNOSTRUCTASSIGN (default: Not defined) + * Define if the C compiler does not support + * assignment of structures. + * -DNOENUMS (default: Not defined) + * Define if the C compiler does not support + * enumeration types. + * -DTIMES (default) + * -DTIME + * The "times" function of UNIX (returning process times) + * or the "time" function (returning wallclock time) + * is used for measurement. + * For single user machines, "time ()" is adequate. For + * multi-user machines where you cannot get single-user + * access, use the "times ()" function. If you have + * neither, use a stopwatch in the dead of night. + * "printf"s are provided marking the points "Start Timer" + * and "Stop Timer". DO NOT use the UNIX "time(1)" + * command, as this will measure the total time to + * run this program, which will (erroneously) include + * the time to allocate storage (malloc) and to perform + * the initialization. + * -DHZ=nnn + * In Berkeley UNIX, the function "times" returns process + * time in 1/HZ seconds, with HZ = 60 for most systems. + * CHECK YOUR SYSTEM DESCRIPTION BEFORE YOU JUST APPLY + * A VALUE. + * + *************************************************************************** + * + * Compilation model and measurement (IMPORTANT): + * + * This C version of Dhrystone consists of three files: + * - dhry.h (this file, containing global definitions and comments) + * - dhry_1.c (containing the code corresponding to Ada package Pack_1) + * - dhry_2.c (containing the code corresponding to Ada package Pack_2) + * + * The following "ground rules" apply for measurements: + * - Separate compilation + * - No procedure merging + * - Otherwise, compiler optimizations are allowed but should be indicated + * - Default results are those without register declarations + * See the companion paper "Rationale for Dhrystone Version 2" for a more + * detailed discussion of these ground rules. + * + * For 16-Bit processors (e.g. 80186, 80286), times for all compilation + * models ("small", "medium", "large" etc.) should be given if possible, + * together with a definition of these models for the compiler system used. + * + ************************************************************************** + * + * Dhrystone (C version) statistics: + * + * [Comment from the first distribution, updated for version 2. + * Note that because of language differences, the numbers are slightly + * different from the Ada version.] + * + * The following program contains statements of a high level programming + * language (here: C) in a distribution considered representative: + * + * assignments 52 (51.0 %) + * control statements 33 (32.4 %) + * procedure, function calls 17 (16.7 %) + * + * 103 statements are dynamically executed. The program is balanced with + * respect to the three aspects: + * + * - statement type + * - operand type + * - operand locality + * operand global, local, parameter, or constant. + * + * The combination of these three aspects is balanced only approximately. + * + * 1. Statement Type: + * ----------------- number + * + * V1 = V2 9 + * (incl. V1 = F(..) + * V = Constant 12 + * Assignment, 7 + * with array element + * Assignment, 6 + * with record component + * -- + * 34 34 + * + * X = Y +|-|"&&"|"|" Z 5 + * X = Y +|-|"==" Constant 6 + * X = X +|- 1 3 + * X = Y *|/ Z 2 + * X = Expression, 1 + * two operators + * X = Expression, 1 + * three operators + * -- + * 18 18 + * + * if .... 14 + * with "else" 7 + * without "else" 7 + * executed 3 + * not executed 4 + * for ... 7 | counted every time + * while ... 4 | the loop condition + * do ... while 1 | is evaluated + * switch ... 1 + * break 1 + * declaration with 1 + * initialization + * -- + * 34 34 + * + * P (...) procedure call 11 + * user procedure 10 + * library procedure 1 + * X = F (...) + * function call 6 + * user function 5 + * library function 1 + * -- + * 17 17 + * --- + * 103 + * + * The average number of parameters in procedure or function calls + * is 1.82 (not counting the function values as implicit parameters). + * + * + * 2. Operators + * ------------ + * number approximate + * percentage + * + * Arithmetic 32 50.8 + * + * + 21 33.3 + * - 7 11.1 + * * 3 4.8 + * / (int div) 1 1.6 + * + * Comparison 27 42.8 + * + * == 9 14.3 + * /= 4 6.3 + * > 1 1.6 + * < 3 4.8 + * >= 1 1.6 + * <= 9 14.3 + * + * Logic 4 6.3 + * + * && (AND-THEN) 1 1.6 + * | (OR) 1 1.6 + * ! (NOT) 2 3.2 + * + * -- ----- + * 63 100.1 + * + * + * 3. Operand Type (counted once per operand reference): + * --------------- + * number approximate + * percentage + * + * Integer 175 72.3 % + * Character 45 18.6 % + * Pointer 12 5.0 % + * String30 6 2.5 % + * Array 2 0.8 % + * Record 2 0.8 % + * --- ------- + * 242 100.0 % + * + * When there is an access path leading to the final operand (e.g. a record + * component), only the final data type on the access path is counted. + * + * + * 4. Operand Locality: + * ------------------- + * number approximate + * percentage + * + * local variable 114 47.1 % + * global variable 22 9.1 % + * parameter 45 18.6 % + * value 23 9.5 % + * reference 22 9.1 % + * function result 6 2.5 % + * constant 55 22.7 % + * --- ------- + * 242 100.0 % + * + * + * The program does not compute anything meaningful, but it is syntactically + * and semantically correct. All variables have a value assigned to them + * before they are used as a source operand. + * + * There has been no explicit effort to account for the effects of a + * cache, or to balance the use of long or short displacements for code or + * data. + * + *************************************************************************** + */ + + +/* Compiler and system dependent definitions: */ + +#ifndef TIME +#define TIMES +#endif + /* Use times(2) time function unless */ + /* explicitly defined otherwise */ + +#ifdef TIMES +#include +#include + /* for "times" */ +#endif + +#define Mic_secs_Per_Second 1000000.0 + /* Berkeley UNIX C returns process times in seconds/HZ */ + +#ifdef NOSTRUCTASSIGN +#define structassign(d, s) memcpy(&(d), &(s), sizeof(d)) +#else +#define structassign(d, s) d = s +#endif + +#ifdef NOENUM +#define Ident_1 0 +#define Ident_2 1 +#define Ident_3 2 +#define Ident_4 3 +#define Ident_5 4 + typedef int Enumeration; +#else + typedef enum {Ident_1, Ident_2, Ident_3, Ident_4, Ident_5} + Enumeration; +#endif + /* for boolean and enumeration types in Ada, Pascal */ + +/* General definitions: */ + +#include + /* for strcpy, strcmp */ + +#define Null 0 + /* Value of a Null pointer */ +#define true 1 +#define false 0 + +typedef int One_Thirty; +typedef int One_Fifty; +typedef char Capital_Letter; +typedef int Boolean; +typedef char Str_30 [31]; +typedef int Arr_1_Dim [50]; +typedef int Arr_2_Dim [50] [50]; + +typedef struct record + { + struct record *Ptr_Comp; + Enumeration Discr; + union { + struct { + Enumeration Enum_Comp; + int Int_Comp; + char Str_Comp [31]; + } var_1; + struct { + Enumeration E_Comp_2; + char Str_2_Comp [31]; + } var_2; + struct { + char Ch_1_Comp; + char Ch_2_Comp; + } var_3; + } variant; + } Rec_Type, *Rec_Pointer; + diff --git a/testcases/feature-test/oeaware/UnixBench/src/dhry_1.c b/testcases/feature-test/oeaware/UnixBench/src/dhry_1.c new file mode 100644 index 000000000..99c846920 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/dhry_1.c @@ -0,0 +1,431 @@ +/***************************************************************************** + * The BYTE UNIX Benchmarks - Release 3 + * Module: dhry_1.c SID: 3.4 5/15/91 19:30:21 + * + ***************************************************************************** + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ***************************************************************************** + * + * *** WARNING **** With BYTE's modifications applied, results obtained with + * ******* this version of the Dhrystone program may not be applicable + * to other versions. + * + * Modification Log: + * 10/22/97 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + * Adapted from: + * + * "DHRYSTONE" Benchmark Program + * ----------------------------- + * + * Version: C, Version 2.1 + * + * File: dhry_1.c (part 2 of 3) + * + * Date: May 25, 1988 + * + * Author: Reinhold P. Weicker + * + ***************************************************************************/ +char SCCSid[] = "@(#) @(#)dhry_1.c:3.4 -- 5/15/91 19:30:21"; + +#include +#include +#include +#include "dhry.h" +#include "timeit.c" + +unsigned long Run_Index; + +void report() +{ + fprintf(stderr,"COUNT|%ld|1|lps\n", Run_Index); + exit(0); +} + +/* Global Variables: */ + +Rec_Pointer Ptr_Glob, + Next_Ptr_Glob; +int Int_Glob; +Boolean Bool_Glob; +char Ch_1_Glob, + Ch_2_Glob; +int Arr_1_Glob [50]; +int Arr_2_Glob [50] [50]; + +Enumeration Func_1 (); + /* forward declaration necessary since Enumeration may not simply be int */ + +#ifndef REG + Boolean Reg = false; +#define REG + /* REG becomes defined as empty */ + /* i.e. no register variables */ +#else + Boolean Reg = true; +#endif + +/* variables for time measurement: */ + +#ifdef TIMES +struct tms time_info; +extern int times (); + /* see library function "times" */ +#define Too_Small_Time 120 + /* Measurements should last at least about 2 seconds */ +#endif +#ifdef TIME +extern long time(); + /* see library function "time" */ +#define Too_Small_Time 2 + /* Measurements should last at least 2 seconds */ +#endif + +long Begin_Time, + End_Time, + User_Time; +float Microseconds, + Dhrystones_Per_Second; + +/* end of variables for time measurement */ + +void Proc_1 (REG Rec_Pointer Ptr_Val_Par); +void Proc_2 (One_Fifty *Int_Par_Ref); +void Proc_3 (Rec_Pointer *Ptr_Ref_Par); +void Proc_4 (void); +void Proc_5 (void); + + +extern Boolean Func_2(Str_30, Str_30); +extern void Proc_6(Enumeration, Enumeration *); +extern void Proc_7(One_Fifty, One_Fifty, One_Fifty *); +extern void Proc_8(Arr_1_Dim, Arr_2_Dim, int, int); + +int main (argc, argv) +int argc; +char *argv[]; + /* main program, corresponds to procedures */ + /* Main and Proc_0 in the Ada version */ +{ + int duration; + One_Fifty Int_1_Loc; + REG One_Fifty Int_2_Loc; + One_Fifty Int_3_Loc; + REG char Ch_Index; + Enumeration Enum_Loc; + Str_30 Str_1_Loc; + Str_30 Str_2_Loc; + + /* Initializations */ + + Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type)); + Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type)); + + Ptr_Glob->Ptr_Comp = Next_Ptr_Glob; + Ptr_Glob->Discr = Ident_1; + Ptr_Glob->variant.var_1.Enum_Comp = Ident_3; + Ptr_Glob->variant.var_1.Int_Comp = 40; + strcpy (Ptr_Glob->variant.var_1.Str_Comp, + "DHRYSTONE PROGRAM, SOME STRING"); + strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING"); + + Arr_2_Glob [8][7] = 10; + /* Was missing in published program. Without this statement, */ + /* Arr_2_Glob [8][7] would have an undefined value. */ + /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */ + /* overflow may occur for this array element. */ + +#ifdef PRATTLE + printf ("\n"); + printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n"); + printf ("\n"); + if (Reg) + { + printf ("Program compiled with 'register' attribute\n"); + printf ("\n"); + } + else + { + printf ("Program compiled without 'register' attribute\n"); + printf ("\n"); + } + printf ("Please give the number of runs through the benchmark: "); + { + int n; + scanf ("%d", &n); + Number_Of_Runs = n; + } + printf ("\n"); + + printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs); +#endif /* PRATTLE */ + + if (argc != 2) { + fprintf(stderr, "Usage: %s duration\n", argv[0]); + exit(1); + } + + duration = atoi(argv[1]); + Run_Index = 0; + wake_me(duration, report); + + /***************/ + /* Start timer */ + /***************/ + +#ifdef SELF_TIMED +#ifdef TIMES + times (&time_info); + Begin_Time = (long) time_info.tms_utime; +#endif +#ifdef TIME + Begin_Time = time ( (long *) 0); +#endif +#endif /* SELF_TIMED */ + + for (Run_Index = 1; ; ++Run_Index) + { + + Proc_5(); + Proc_4(); + /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */ + Int_1_Loc = 2; + Int_2_Loc = 3; + strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING"); + Enum_Loc = Ident_2; + Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc); + /* Bool_Glob == 1 */ + while (Int_1_Loc < Int_2_Loc) /* loop body executed once */ + { + Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc; + /* Int_3_Loc == 7 */ + Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc); + /* Int_3_Loc == 7 */ + Int_1_Loc += 1; + } /* while */ + /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */ + Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc); + /* Int_Glob == 5 */ + Proc_1 (Ptr_Glob); + for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index) + /* loop body executed twice */ + { + if (Enum_Loc == Func_1 (Ch_Index, 'C')) + /* then, not executed */ + { + Proc_6 (Ident_1, &Enum_Loc); + strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING"); + Int_2_Loc = Run_Index; + Int_Glob = Run_Index; + } + } + /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */ + Int_2_Loc = Int_2_Loc * Int_1_Loc; + Int_1_Loc = Int_2_Loc / Int_3_Loc; + Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc; + /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */ + Proc_2 (&Int_1_Loc); + /* Int_1_Loc == 5 */ + + } /* loop "for Run_Index" */ + + /**************/ + /* Stop timer */ + /**************/ +#ifdef SELF_TIMED +#ifdef TIMES + times (&time_info); + End_Time = (long) time_info.tms_utime; +#endif +#ifdef TIME + End_Time = time ( (long *) 0); +#endif +#endif /* SELF_TIMED */ + + /* BYTE version never executes this stuff */ +#ifdef SELF_TIMED + printf ("Execution ends\n"); + printf ("\n"); + printf ("Final values of the variables used in the benchmark:\n"); + printf ("\n"); + printf ("Int_Glob: %d\n", Int_Glob); + printf (" should be: %d\n", 5); + printf ("Bool_Glob: %d\n", Bool_Glob); + printf (" should be: %d\n", 1); + printf ("Ch_1_Glob: %c\n", Ch_1_Glob); + printf (" should be: %c\n", 'A'); + printf ("Ch_2_Glob: %c\n", Ch_2_Glob); + printf (" should be: %c\n", 'B'); + printf ("Arr_1_Glob[8]: %d\n", Arr_1_Glob[8]); + printf (" should be: %d\n", 7); + printf ("Arr_2_Glob[8][7]: %d\n", Arr_2_Glob[8][7]); + printf (" should be: Number_Of_Runs + 10\n"); + printf ("Ptr_Glob->\n"); + printf (" Ptr_Comp: %d\n", (int) Ptr_Glob->Ptr_Comp); + printf (" should be: (implementation-dependent)\n"); + printf (" Discr: %d\n", Ptr_Glob->Discr); + printf (" should be: %d\n", 0); + printf (" Enum_Comp: %d\n", Ptr_Glob->variant.var_1.Enum_Comp); + printf (" should be: %d\n", 2); + printf (" Int_Comp: %d\n", Ptr_Glob->variant.var_1.Int_Comp); + printf (" should be: %d\n", 17); + printf (" Str_Comp: %s\n", Ptr_Glob->variant.var_1.Str_Comp); + printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n"); + printf ("Next_Ptr_Glob->\n"); + printf (" Ptr_Comp: %d\n", (int) Next_Ptr_Glob->Ptr_Comp); + printf (" should be: (implementation-dependent), same as above\n"); + printf (" Discr: %d\n", Next_Ptr_Glob->Discr); + printf (" should be: %d\n", 0); + printf (" Enum_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp); + printf (" should be: %d\n", 1); + printf (" Int_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp); + printf (" should be: %d\n", 18); + printf (" Str_Comp: %s\n", + Next_Ptr_Glob->variant.var_1.Str_Comp); + printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n"); + printf ("Int_1_Loc: %d\n", Int_1_Loc); + printf (" should be: %d\n", 5); + printf ("Int_2_Loc: %d\n", Int_2_Loc); + printf (" should be: %d\n", 13); + printf ("Int_3_Loc: %d\n", Int_3_Loc); + printf (" should be: %d\n", 7); + printf ("Enum_Loc: %d\n", Enum_Loc); + printf (" should be: %d\n", 1); + printf ("Str_1_Loc: %s\n", Str_1_Loc); + printf (" should be: DHRYSTONE PROGRAM, 1'ST STRING\n"); + printf ("Str_2_Loc: %s\n", Str_2_Loc); + printf (" should be: DHRYSTONE PROGRAM, 2'ND STRING\n"); + printf ("\n"); + + User_Time = End_Time - Begin_Time; + + if (User_Time < Too_Small_Time) + { + printf ("Measured time too small to obtain meaningful results\n"); + printf ("Please increase number of runs\n"); + printf ("\n"); + } + else + { +#ifdef TIME + Microseconds = (float) User_Time * Mic_secs_Per_Second + / (float) Number_Of_Runs; + Dhrystones_Per_Second = (float) Number_Of_Runs / (float) User_Time; +#else + Microseconds = (float) User_Time * Mic_secs_Per_Second + / ((float) HZ * ((float) Number_Of_Runs)); + Dhrystones_Per_Second = ((float) HZ * (float) Number_Of_Runs) + / (float) User_Time; +#endif + printf ("Microseconds for one run through Dhrystone: "); + printf ("%6.1f \n", Microseconds); + printf ("Dhrystones per Second: "); + printf ("%6.1f \n", Dhrystones_Per_Second); + printf ("\n"); + } +#endif /* SELF_TIMED */ +} + + +void Proc_1 (REG Rec_Pointer Ptr_Val_Par) + /* executed once */ +{ + REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; + /* == Ptr_Glob_Next */ + /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */ + /* corresponds to "rename" in Ada, "with" in Pascal */ + + structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); + Ptr_Val_Par->variant.var_1.Int_Comp = 5; + Next_Record->variant.var_1.Int_Comp + = Ptr_Val_Par->variant.var_1.Int_Comp; + Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp; + Proc_3 (&Next_Record->Ptr_Comp); + /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp + == Ptr_Glob->Ptr_Comp */ + if (Next_Record->Discr == Ident_1) + /* then, executed */ + { + Next_Record->variant.var_1.Int_Comp = 6; + Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, + &Next_Record->variant.var_1.Enum_Comp); + Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp; + Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, + &Next_Record->variant.var_1.Int_Comp); + } + else /* not executed */ + structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp); +} /* Proc_1 */ + + +void Proc_2 (One_Fifty *Int_Par_Ref) + /* executed once */ + /* *Int_Par_Ref == 1, becomes 4 */ +{ + One_Fifty Int_Loc; + Enumeration Enum_Loc; + + Enum_Loc = 0; + + Int_Loc = *Int_Par_Ref + 10; + do /* executed once */ + if (Ch_1_Glob == 'A') + /* then, executed */ + { + Int_Loc -= 1; + *Int_Par_Ref = Int_Loc - Int_Glob; + Enum_Loc = Ident_1; + } /* if */ + while (Enum_Loc != Ident_1); /* true */ +} /* Proc_2 */ + + +void Proc_3 (Rec_Pointer *Ptr_Ref_Par) + /* executed once */ + /* Ptr_Ref_Par becomes Ptr_Glob */ +{ + if (Ptr_Glob != Null) + /* then, executed */ + *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp; + Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp); +} /* Proc_3 */ + + +void Proc_4 (void) /* without parameters */ + /* executed once */ +{ + Boolean Bool_Loc; + + Bool_Loc = Ch_1_Glob == 'A'; + Bool_Glob = Bool_Loc | Bool_Glob; + Ch_2_Glob = 'B'; +} /* Proc_4 */ + +void Proc_5 (void) /* without parameters */ +/*******/ + /* executed once */ +{ + Ch_1_Glob = 'A'; + Bool_Glob = false; +} /* Proc_5 */ + + + /* Procedure for the assignment of structures, */ + /* if the C compiler doesn't support this feature */ +#ifdef NOSTRUCTASSIGN +memcpy (d, s, l) +register char *d; +register char *s; +register int l; +{ + while (l--) *d++ = *s++; +} +#endif + + diff --git a/testcases/feature-test/oeaware/UnixBench/src/dhry_2.c b/testcases/feature-test/oeaware/UnixBench/src/dhry_2.c new file mode 100644 index 000000000..140161f04 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/dhry_2.c @@ -0,0 +1,209 @@ +/***************************************************************************** + * The BYTE UNIX Benchmarks - Release 3 + * Module: dhry_2.c SID: 3.4 5/15/91 19:30:22 + * + ***************************************************************************** + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ***************************************************************************** + * Modification Log: + * 10/22/97 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + * Adapted from: + * + * "DHRYSTONE" Benchmark Program + * ----------------------------- + * + * **** WARNING **** See warning in n.dhry_1.c + * + * Version: C, Version 2.1 + * + * File: dhry_2.c (part 3 of 3) + * + * Date: May 25, 1988 + * + * Author: Reinhold P. Weicker + * + ****************************************************************************/ +/* SCCSid is defined in dhry_1.c */ + +#include +#include "dhry.h" + +#ifndef REG +#define REG + /* REG becomes defined as empty */ + /* i.e. no register variables */ +#endif + +extern int Int_Glob; +extern char Ch_1_Glob; + +void Proc_6(Enumeration, Enumeration *); +void Proc_7(One_Fifty, One_Fifty, One_Fifty *); +void Proc_8(Arr_1_Dim, Arr_2_Dim, int, int); +Enumeration Func_1(Capital_Letter, Capital_Letter); +Boolean Func_2(Str_30, Str_30); +Boolean Func_3(Enumeration); + +void Proc_6 (Enumeration Enum_Val_Par, Enumeration *Enum_Ref_Par) + /* executed once */ + /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */ +{ + *Enum_Ref_Par = Enum_Val_Par; + if (! Func_3 (Enum_Val_Par)) + /* then, not executed */ + *Enum_Ref_Par = Ident_4; + switch (Enum_Val_Par) + { + case Ident_1: + *Enum_Ref_Par = Ident_1; + break; + case Ident_2: + if (Int_Glob > 100) + /* then */ + *Enum_Ref_Par = Ident_1; + else *Enum_Ref_Par = Ident_4; + break; + case Ident_3: /* executed */ + *Enum_Ref_Par = Ident_2; + break; + case Ident_4: break; + case Ident_5: + *Enum_Ref_Par = Ident_3; + break; + } /* switch */ +} /* Proc_6 */ + +void Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref) +One_Fifty Int_1_Par_Val; +One_Fifty Int_2_Par_Val; +One_Fifty *Int_Par_Ref; +/**********************************************/ + /* executed three times */ + /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */ + /* Int_Par_Ref becomes 7 */ + /* second call: Int_1_Par_Val == 10, Int_2_Par_Val == 5, */ + /* Int_Par_Ref becomes 17 */ + /* third call: Int_1_Par_Val == 6, Int_2_Par_Val == 10, */ + /* Int_Par_Ref becomes 18 */ +{ + One_Fifty Int_Loc; + + Int_Loc = Int_1_Par_Val + 2; + *Int_Par_Ref = Int_2_Par_Val + Int_Loc; +} /* Proc_7 */ + + +void Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val) +/*********************************************************************/ + /* executed once */ + /* Int_Par_Val_1 == 3 */ + /* Int_Par_Val_2 == 7 */ +Arr_1_Dim Arr_1_Par_Ref; +Arr_2_Dim Arr_2_Par_Ref; +int Int_1_Par_Val; +int Int_2_Par_Val; +{ + REG One_Fifty Int_Index; + REG One_Fifty Int_Loc; + + Int_Loc = Int_1_Par_Val + 5; + Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val; + Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc]; + Arr_1_Par_Ref [Int_Loc+30] = Int_Loc; + for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index) + Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc; + Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1; + Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc]; + Int_Glob = 5; +} /* Proc_8 */ + + +Enumeration Func_1 (Capital_Letter Ch_1_Par_Val, Capital_Letter Ch_2_Par_Val) +/*************************************************/ + /* executed three times */ + /* first call: Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R' */ + /* second call: Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C' */ + /* third call: Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C' */ +{ + Capital_Letter Ch_1_Loc; + Capital_Letter Ch_2_Loc; + + Ch_1_Loc = Ch_1_Par_Val; + Ch_2_Loc = Ch_1_Loc; + if (Ch_2_Loc != Ch_2_Par_Val) + /* then, executed */ + return (Ident_1); + else /* not executed */ + { + Ch_1_Glob = Ch_1_Loc; + return (Ident_2); + } +} /* Func_1 */ + + + +Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref) +/*************************************************/ + /* executed once */ + /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */ + /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */ + +Str_30 Str_1_Par_Ref; +Str_30 Str_2_Par_Ref; +{ + REG One_Thirty Int_Loc; + Capital_Letter Ch_Loc; + + Ch_Loc = 'A'; + Int_Loc = 2; + while (Int_Loc <= 2) /* loop body executed once */ + if (Func_1 (Str_1_Par_Ref[Int_Loc], + Str_2_Par_Ref[Int_Loc+1]) == Ident_1) + /* then, executed */ + { + Ch_Loc = 'A'; + Int_Loc += 1; + } /* if, while */ + if (Ch_Loc >= 'W' && Ch_Loc < 'Z') + /* then, not executed */ + Int_Loc = 7; + if (Ch_Loc == 'R') + /* then, not executed */ + return (true); + else /* executed */ + { + if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0) + /* then, not executed */ + { + Int_Loc += 7; + Int_Glob = Int_Loc; + return (true); + } + else /* executed */ + return (false); + } /* if Ch_Loc */ +} /* Func_2 */ + + +Boolean Func_3 (Enum_Par_Val) +/***************************/ + /* executed once */ + /* Enum_Par_Val == Ident_3 */ +Enumeration Enum_Par_Val; +{ + Enumeration Enum_Loc; + + Enum_Loc = Enum_Par_Val; + if (Enum_Loc == Ident_3) + /* then, executed */ + return (true); + else /* not executed */ + return (false); +} /* Func_3 */ + diff --git a/testcases/feature-test/oeaware/UnixBench/src/dummy.c b/testcases/feature-test/oeaware/UnixBench/src/dummy.c new file mode 100644 index 000000000..1fbc936c8 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/dummy.c @@ -0,0 +1,319 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: dummy.c SID: 3.3 5/15/91 19:30:19 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * 10/22/97 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +/* + * Hacked up C program for use in the standard shell.? scripts of + * the multiuser test. This is based upon makework.c, and is typically + * edited using edscript.2 before compilation. + * + * $Header: dummy.c,v 3.4 87/06/23 15:54:53 kjmcdonell Beta $ + */ +char SCCSid[] = "@(#) @(#)dummy.c:3.3 -- 5/15/91 19:30:19"; + +#include +#include + +#define DEF_RATE 5.0 +#define GRANULE 5 +#define CHUNK 60 +#define MAXCHILD 12 +#define MAXWORK 10 + +float thres; +float est_rate = DEF_RATE; +int nusers; /* number of concurrent users to be simulated by + * this process */ +int firstuser; /* ordinal identification of first user for this + * process */ +int nwork = 0; /* number of job streams */ +int exit_status = 0; /* returned to parent */ +int sigpipe; /* pipe write error flag */ + +struct st_work { + char *cmd; /* name of command to run */ + char **av; /* arguments to command */ + char *input; /* standard input buffer */ + int inpsize; /* size of standard input buffer */ +} work[MAXWORK]; + +struct { + int xmit; /* # characters sent */ + char *bp; /* std input buffer pointer */ + int blen; /* std input buffer length */ + int fd; /* stdin to command */ + int pid; /* child PID */ + char *line; /* start of input line */ + int firstjob; /* inital piece of work */ + int thisjob; /* current piece of work */ +} child[MAXCHILD], *cp; + +main(argc, argv) +int argc; +char *argv[]; +{ + int i; + int l; + int fcopy = 0; /* fd for copy output */ + int master = 1; /* the REAL master, == 0 for clones */ + int nchild; /* no. of children for a clone to run */ + int done; /* count of children finished */ + int output; /* aggregate output char count for all + children */ + int c; + int thiswork = 0; /* next job stream to allocate */ + int nch; /* # characters to write */ + int written; /* # characters actully written */ + char logname[15]; /* name of the log file(s) */ + void onalarm(void); + void pipeerr(void); + void wrapup(void); + void grunt(void); + char *malloc(); + int pvec[2]; /* for pipes */ + char *p; + char *prog; /* my name */ + +#if ! debug + freopen("masterlog.00", "a", stderr); +#endif + fprintf(stderr, "*** New Run *** "); + prog = argv[0]; + while (argc > 1 && argv[1][0] == '-') { + p = &argv[1][1]; + argc--; + argv++; + while (*p) { + switch (*p) { + case 'r': + /* code DELETED here */ + argc--; + argv++; + break; + + case 'c': + /* code DELETED here */ + lseek(fcopy, 0L, 2); /* append at end of file */ + break; + + default: + fprintf(stderr, "%s: bad flag '%c'\n", prog, *p); + exit(4); + } + p++; + } + } + + if (argc < 2) { + fprintf(stderr, "%s: missing nusers\n", prog); + exit(4); + } + + nusers = atoi(argv[1]); + if (nusers < 1) { + fprintf(stderr, "%s: impossible nusers (%d<-%s)\n", prog, nusers, argv[1]); + exit(4); + } + fprintf(stderr, "%d Users\n", nusers); + argc--; + argv++; + + /* build job streams */ + getwork(); +#if debug + dumpwork(); +#endif + + /* clone copies of myself to run up to MAXCHILD jobs each */ + firstuser = MAXCHILD; + fprintf(stderr, "master pid %d\n", getpid()); + fflush(stderr); + while (nusers > MAXCHILD) { + fflush(stderr); + if (nusers >= 2*MAXCHILD) + /* the next clone must run MAXCHILD jobs */ + nchild = MAXCHILD; + else + /* the next clone must run the leftover jobs */ + nchild = nusers - MAXCHILD; + if ((l = fork()) == -1) { + /* fork failed */ + fatal("** clone fork failed **\n"); + goto bepatient; + } else if (l > 0) { + fprintf(stderr, "master clone pid %d\n", l); + /* I am the master with nchild fewer jobs to run */ + nusers -= nchild; + firstuser += MAXCHILD; + continue; + } else { + /* I am a clone, run MAXCHILD jobs */ +#if ! debug + sprintf(logname, "masterlog.%02d", firstuser/MAXCHILD); + freopen(logname, "w", stderr); +#endif + master = 0; + nusers = nchild; + break; + } + } + if (master) + firstuser = 0; + + close(0); + + /* code DELETED here */ + + fflush(stderr); + + srand(time(0)); + thres = 0; + done = output = 0; + for (i = 0; i < nusers; i++) { + if (child[i].blen == 0) + done++; + else + thres += est_rate * GRANULE; + } + est_rate = thres; + + signal(SIGALRM, onalarm); + signal(SIGPIPE, pipeerr); + alarm(GRANULE); + while (done < nusers) { + for (i = 0; i < nusers; i++) { + cp = &child[i]; + if (cp->xmit >= cp->blen) continue; + l = rand() % CHUNK + 1; /* 1-CHUNK chars */ + if (l == 0) continue; + if (cp->xmit + l > cp->blen) + l = cp->blen - cp->xmit; + p = cp->bp; + cp->bp += l; + cp->xmit += l; +#if debug + fprintf(stderr, "child %d, %d processed, %d to go\n", i, cp->xmit, cp->blen - cp->xmit); +#endif + while (p < cp->bp) { + if (*p == '\n' || (p == &cp->bp[-1] && cp->xmit >= cp->blen)) { + /* write it out */ + nch = p - cp->line + 1; + if ((written = write(cp->fd, cp->line, nch)) != nch) { + + /* code DELETED here */ + + } + if (fcopy) + write(fcopy, cp->line, p - cp->line + 1); +#if debug + fprintf(stderr, "child %d gets \"", i); + { + char *q = cp->line; + while (q <= p) { + if (*q >= ' ' && *q <= '~') + fputc(*q, stderr); + else + fprintf(stderr, "\\%03o", *q); + q++; + } + } + fputc('"', stderr); +#endif + cp->line = &p[1]; + } + p++; + } + if (cp->xmit >= cp->blen) { + done++; + close(cp->fd); +#if debug + fprintf(stderr, "child %d, close std input\n", i); +#endif + } + output += l; + } + while (output > thres) { + pause(); +#if debug + fprintf(stderr, "after pause: output, thres, done %d %.2f %d\n", output, thres, done); +#endif + } + } + +bepatient: + alarm(0); +/**** + * If everything is going OK, we should simply be able to keep + * looping unitil 'wait' fails, however some descendent process may + * be in a state from which it can never exit, and so a timeout + * is used. + * 5 minutes should be ample, since the time to run all jobs is of + * the order of 5-10 minutes, however some machines are painfully slow, + * so the timeout has been set at 20 minutes (1200 seconds). + ****/ + + /* code DELETED here */ + +} + +onalarm() +{ + thres += est_rate; + signal(SIGALRM, onalarm); + alarm(GRANULE); +} + +grunt() +{ + /* timeout after label "bepatient" in main */ + exit_status = 4; + wrapup(); +} + +pipeerr() +{ + sigpipe++; +} + +wrapup() +{ + /* DUMMY, real code dropped */ +} + +getwork() +{ + + /* DUMMY, real code dropped */ + gets(); + strncpy(); + malloc(); realloc(); + open(); close(); +} + +fatal(s) +char *s; +{ + int i; + fprintf(stderr, s); + fflush(stderr); + perror("Reason?"); + for (i = 0; i < nusers; i++) { + if (child[i].pid > 0 && kill(child[i].pid, SIGKILL) != -1) + fprintf(stderr, "pid %d killed off\n", child[i].pid); + } + fflush(stderr); + exit_status = 4; + return; +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/execl.c b/testcases/feature-test/oeaware/UnixBench/src/execl.c new file mode 100644 index 000000000..98f03dc2d --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/execl.c @@ -0,0 +1,97 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: execl.c SID: 3.3 5/15/91 19:30:19 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * $Header: execl.c,v 3.5 87/06/22 15:37:08 kjmcdonell Beta $ + * August 28, 1990 - Modified timing routines + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +/* + * Execing + * + */ +char SCCSid[] = "@(#) @(#)execl.c:3.3 -- 5/15/91 19:30:19"; + +#include +#include +#include +#include + +char bss[8*1024]; /* something worthwhile */ + +#define main dummy + +#include "big.c" /* some real code */ + +#undef main + +/* added by BYTE */ +char *getenv(); + + +int main(argc, argv) /* the real program */ +int argc; +char *argv[]; +{ + unsigned long iter = 0; + char *ptr; + char *fullpath; + int duration; + char count_str[12], start_str[24], path_str[256], *dur_str; + time_t start_time, this_time; + +#ifdef DEBUG + int count; + for(count = 0; count < argc; ++ count) + printf("%s ",argv[count]); + printf("\n"); +#endif + if (argc < 2) + { + fprintf(stderr, "Usage: %s duration\n", argv[0]); + exit(1); + } + + + duration = atoi(argv[1]); + if (duration > 0) + /* the first invocation */ + { + dur_str = argv[1]; + if((ptr = getenv("UB_BINDIR")) != NULL) + sprintf(path_str,"%s/execl",ptr); + fullpath=path_str; + time(&start_time); + } + else /* one of those execl'd invocations */ + { + /* real duration follow the phoney null duration */ + duration = atoi(argv[2]); + dur_str = argv[2]; + iter = (unsigned long)atoi(argv[3]); /* where are we now ? */ + sscanf(argv[4], "%lu", (unsigned long *) &start_time); + fullpath = argv[0]; + } + + sprintf(count_str, "%lu", ++iter); /* increment the execl counter */ + sprintf(start_str, "%lu", (unsigned long) start_time); + time(&this_time); + if (this_time - start_time >= duration) { /* time has run out */ + fprintf(stderr, "COUNT|%lu|1|lps\n", iter); + exit(0); + } + execl(fullpath, fullpath, "0", dur_str, count_str, start_str, (void *) 0); + fprintf(stderr, "Exec failed at iteration %lu\n", iter); + perror("Reason"); + exit(1); +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/fstime.c b/testcases/feature-test/oeaware/UnixBench/src/fstime.c new file mode 100644 index 000000000..37b369bc6 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/fstime.c @@ -0,0 +1,469 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: fstime.c SID: 3.5 5/15/91 19:30:19 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * $Header: fstime.c,v 3.4 87/06/22 14:23:05 kjmcdonell Beta $ + * 10/19/89 - rewrote timing calcs and added clock check (Ben Smith) + * 10/26/90 - simplify timing, change defaults (Tom Yager) + * 11/16/90 - added better error handling and changed output format (Ben Smith) + * 11/17/90 - changed the whole thing around (Ben Smith) + * 2/22/91 - change a few style elements and improved error handling (Ben Smith) + * 4/17/91 - incorporated suggestions from Seckin Unlu (seckin@sumac.intel.com) + * 4/17/91 - limited size of file, will rewind when reaches end of file + * 7/95 - fixed mishandling of read() and write() return codes + * Carl Emilio Prelz + * 12/95 - Massive changes. Made sleep time proportional increase with run + * time; added fsbuffer and fsdisk variants; added partial counting + * of partial reads/writes (was *full* credit); added dual syncs. + * David C Niemi + * 10/22/97 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * 9/24/07 - Separate out the read and write tests; + * output the actual time used in the results. + * Ian Smith + ******************************************************************************/ +char SCCSid[] = "@(#) @(#)fstime.c:3.5 -- 5/15/91 19:30:19"; + +#include +#include +#include +#include +#include +#include +#include + +#define SECONDS 10 + +#define MAX_BUFSIZE 8192 + +/* This must be set to the smallest BUFSIZE or 1024, whichever is smaller */ +#define COUNTSIZE 256 +#define HALFCOUNT (COUNTSIZE/2) /* Half of COUNTSIZE */ + +#define FNAME0 "dummy0" +#define FNAME1 "dummy1" + +extern void sync(void); + +int w_test(int timeSecs); +int r_test(int timeSecs); +int c_test(int timeSecs); + +long read_score = 1, write_score = 1, copy_score = 1; + +/****************** GLOBALS ***************************/ + +/* The buffer size for the tests. */ +int bufsize = 1024; + +/* + * The max number of 1024-byte blocks in the file. + * Don't limit it much, so that memory buffering + * can be overcome. + */ +int max_blocks = 2000; + +/* The max number of BUFSIZE blocks in the file. */ +int max_buffs = 2000; + +/* Countable units per 1024 bytes */ +int count_per_k; + +/* Countable units per bufsize */ +int count_per_buf; + +/* The actual buffer. */ +/* char *buf = 0; */ +/* Let's carry on using a static buffer for this, like older versions + * of the code did. It turns out that if you use a malloc buffer, + * it goes 50% slower on reads, when using a 4k buffer -- at least on + * my OpenSUSE 10.2 system. + * What up wit dat? + */ +char buf[MAX_BUFSIZE]; + +int f; +int g; +int i; +void stop_count(); +void clean_up(); +int sigalarm = 0; + +/******************** MAIN ****************************/ + +int main(argc, argv) +int argc; +char *argv[]; +{ + /* The number of seconds to run for. */ + int seconds = SECONDS; + + /* The type of test to run. */ + char test = 'c'; + + int status; + int i; + + for (i = 1; i < argc; ++i) { + if (argv[i][0] == '-') { + switch (argv[i][1]) { + case 'c': + case 'r': + case 'w': + test = argv[i][1]; + break; + case 'b': + bufsize = atoi(argv[++i]); + break; + case 'm': + max_blocks = atoi(argv[++i]); + break; + case 't': + seconds = atoi(argv[++i]); + break; + case 'd': + if (chdir(argv[++i]) < 0) { + perror("fstime: chdir"); + exit(1); + } + break; + default: + fprintf(stderr, "Usage: fstime [-c|-r|-w] [-b ] [-m ] [-t ]\n"); + exit(2); + } + } else { + fprintf(stderr, "Usage: fstime [-c|-r|-w] [-b ] [-m ] [-t ]\n"); + exit(2); + } + } + + if (bufsize < COUNTSIZE || bufsize > MAX_BUFSIZE) { + fprintf(stderr, "fstime: buffer size must be in range %d-%d\n", + COUNTSIZE, 1024*1024); + exit(3); + } + if (max_blocks < 1 || max_blocks > 1024*1024) { + fprintf(stderr, "fstime: max blocks must be in range %d-%d\n", + 1, 1024*1024); + exit(3); + } + if (seconds < 1 || seconds > 3600) { + fprintf(stderr, "fstime: time must be in range %d-%d seconds\n", + 1, 3600); + exit(3); + } + + max_buffs = max_blocks * 1024 / bufsize; + count_per_k = 1024 / COUNTSIZE; + count_per_buf = bufsize / COUNTSIZE; + + /* + if ((buf = malloc(bufsize)) == 0) { + fprintf(stderr, "fstime: failed to malloc %d bytes\n", bufsize); + exit(4); + } + */ + + if((f = creat(FNAME0, 0600)) == -1) { + perror("fstime: creat"); + exit(1); + } + close(f); + + if((g = creat(FNAME1, 0600)) == -1) { + perror("fstime: creat"); + exit(1); + } + close(g); + + if( (f = open(FNAME0, 2)) == -1) { + perror("fstime: open"); + exit(1); + } + if( ( g = open(FNAME1, 2)) == -1 ) { + perror("fstime: open"); + exit(1); + } + + /* fill buffer */ + for (i=0; i < bufsize; ++i) + buf[i] = i & 0xff; + + signal(SIGKILL,clean_up); + + /* + * Run the selected test. + * When I got here, this program ran full 30-second tests for + * write, read, and copy, outputting the results for each. BUT + * only the copy results are actually used in the benchmark index. + * With multiple iterations and three sets of FS tests, that amounted + * to about 10 minutes of wasted time per run. + * + * So, I've made the test selectable. Except that the read and write + * passes are used to create the test file and calibrate the rates used + * to tweak the results of the copy test. So, for copy tests, we do + * a few seconds of write and read to prime the pump. + * + * Note that this will also pull the file into the FS cache on any + * modern system prior to the copy test. Whether this is good or + * bad is a matter of perspective, but it's how it was when I got + * here. + * + * Ian Smith 21 Sep 2007 + */ + switch (test) { + case 'w': + status = w_test(seconds); + break; + case 'r': + w_test(2); + status = r_test(seconds); + break; + case 'c': + w_test(2); + r_test(2); + status = c_test(seconds); + break; + default: + fprintf(stderr, "fstime: unknown test \'%c\'\n", test); + exit(6); + } + if (status) { + clean_up(); + exit(1); + } + + clean_up(); + exit(0); +} + + +static double getFloatTime() +{ + struct timeval t; + + gettimeofday(&t, 0); + return (double) t.tv_sec + (double) t.tv_usec / 1000000.0; +} + + +/* + * Run the write test for the time given in seconds. + */ +int w_test(int timeSecs) +{ + unsigned long counted = 0L; + unsigned long tmp; + long f_blocks; + double start, end; + extern int sigalarm; + + /* Sync and let it settle */ + sync(); + sleep(2); + sync(); + sleep(2); + + /* Set an alarm. */ + sigalarm = 0; + signal(SIGALRM, stop_count); + alarm(timeSecs); + + start = getFloatTime(); + + while (!sigalarm) { + for(f_blocks=0; f_blocks < max_buffs; ++f_blocks) { + if ((tmp=write(f, buf, bufsize)) != bufsize) { + if (errno != EINTR) { + perror("fstime: write"); + return(-1); + } + stop_count(); + counted += ((tmp+HALFCOUNT)/COUNTSIZE); + } else + counted += count_per_buf; + } + lseek(f, 0L, 0); /* rewind */ + } + + /* stop clock */ + end = getFloatTime(); + write_score = (long) ((double) counted / ((end - start) * count_per_k)); + printf("Write done: %ld in %.4f, score %ld\n", + counted, end - start, write_score); + + /* + * Output the test results. Use the true time. + */ + fprintf(stderr, "COUNT|%ld|0|KBps\n", write_score); + fprintf(stderr, "TIME|%.1f\n", end - start); + + return(0); +} + +/* + * Run the read test for the time given in seconds. + */ +int r_test(int timeSecs) +{ + unsigned long counted = 0L; + unsigned long tmp; + double start, end; + extern int sigalarm; + extern int errno; + + /* Sync and let it settle */ + sync(); + sleep(2); + sync(); + sleep(2); + + /* rewind */ + errno = 0; + lseek(f, 0L, 0); + + /* Set an alarm. */ + sigalarm = 0; + signal(SIGALRM, stop_count); + alarm(timeSecs); + + start = getFloatTime(); + + while (!sigalarm) { + /* read while checking for an error */ + if ((tmp=read(f, buf, bufsize)) != bufsize) { + switch(errno) { + case 0: + case EINVAL: + lseek(f, 0L, 0); /* rewind at end of file */ + counted += (tmp+HALFCOUNT)/COUNTSIZE; + continue; + case EINTR: + stop_count(); + counted += (tmp+HALFCOUNT)/COUNTSIZE; + break; + default: + perror("fstime: read"); + return(-1); + break; + } + } else + counted += count_per_buf; + } + + /* stop clock */ + end = getFloatTime(); + read_score = (long) ((double) counted / ((end - start) * count_per_k)); + printf("Read done: %ld in %.4f, score %ld\n", + counted, end - start, read_score); + + /* + * Output the test results. Use the true time. + */ + fprintf(stderr, "COUNT|%ld|0|KBps\n", read_score); + fprintf(stderr, "TIME|%.1f\n", end - start); + + return(0); +} + + +/* + * Run the copy test for the time given in seconds. + */ +int c_test(int timeSecs) +{ + unsigned long counted = 0L; + unsigned long tmp; + double start, end; + extern int sigalarm; + + sync(); + sleep(2); + sync(); + sleep(1); + + /* rewind */ + errno = 0; + lseek(f, 0L, 0); + + /* Set an alarm. */ + sigalarm = 0; + signal(SIGALRM, stop_count); + alarm(timeSecs); + + start = getFloatTime(); + + while (!sigalarm) { + if ((tmp=read(f, buf, bufsize)) != bufsize) { + switch(errno) { + case 0: + case EINVAL: + lseek(f, 0L, 0); /* rewind at end of file */ + lseek(g, 0L, 0); /* rewind the output too */ + continue; + case EINTR: + /* part credit for leftover bytes read */ + counted += ( (tmp * write_score) / + (read_score + write_score) + + HALFCOUNT) / COUNTSIZE; + stop_count(); + break; + default: + perror("fstime: copy read"); + return(-1); + break; + } + } else { + if ((tmp=write(g, buf, bufsize)) != bufsize) { + if (errno != EINTR) { + perror("fstime: copy write"); + return(-1); + } + counted += ( + /* Full credit for part of buffer written */ + tmp + + + /* Plus part credit having read full buffer */ + ( ((bufsize - tmp) * write_score) / + (read_score + write_score) ) + + HALFCOUNT) / COUNTSIZE; + stop_count(); + } else + counted += count_per_buf; + } + } + + /* stop clock */ + end = getFloatTime(); + copy_score = (long) ((double) counted / ((end - start) * count_per_k)); + printf("Copy done: %ld in %.4f, score %ld\n", + counted, end - start, copy_score); + + /* + * Output the test results. Use the true time. + */ + fprintf(stderr, "COUNT|%ld|0|KBps\n", copy_score); + fprintf(stderr, "TIME|%.1f\n", end - start); + + return(0); +} + +void stop_count(void) +{ + extern int sigalarm; + sigalarm = 1; +} + +void clean_up(void) +{ + unlink(FNAME0); + unlink(FNAME1); +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/hanoi.c b/testcases/feature-test/oeaware/UnixBench/src/hanoi.c new file mode 100644 index 000000000..eaf523de4 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/hanoi.c @@ -0,0 +1,77 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: hanoi.c SID: 3.3 5/15/91 19:30:20 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * $Header: hanoi.c,v 3.5 87/08/06 08:11:14 kenj Exp $ + * August 28, 1990 - Modified timing routines (ty) + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +char SCCSid[] = "@(#) @(#)hanoi.c:3.3 -- 5/15/91 19:30:20"; + +#define other(i,j) (6-(i+j)) + +#include +#include +#include "timeit.c" + +void mov(int n, int f, int t); + +unsigned long iter = 0; +int num[4]; +long cnt; + +void report() +{ + fprintf(stderr,"COUNT|%ld|1|lps\n", iter); + exit(0); +} + + +int main(argc, argv) +int argc; +char *argv[]; +{ + int disk=10, /* default number of disks */ + duration; + + if (argc < 2) { + fprintf(stderr,"Usage: %s duration [disks]\n", argv[0]); + exit(1); + } + duration = atoi(argv[1]); + if(argc > 2) disk = atoi(argv[2]); + num[1] = disk; + + wake_me(duration, report); + + while(1) { + mov(disk,1,3); + iter++; + } + + exit(0); +} + +void mov(int n, int f, int t) +{ + int o; + if(n == 1) { + num[f]--; + num[t]++; + return; + } + o = other(f,t); + mov(n-1,f,o); + mov(1,f,t); + mov(n-1,o,t); +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/looper.c b/testcases/feature-test/oeaware/UnixBench/src/looper.c new file mode 100644 index 000000000..01e64cc77 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/looper.c @@ -0,0 +1,105 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 1 + * Module: looper.c SID: 1.4 5/15/91 19:30:22 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith or Tom Yager at BYTE Magazine + * ben@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * + * February 25, 1991 -- created (Ben S.) + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +char SCCSid[] = "@(#) @(#)looper.c:1.4 -- 5/15/91 19:30:22"; +/* + * Shell Process creation + * + */ + +#include +#include +#include +#include "timeit.c" + +unsigned long iter; +char *cmd_argv[28]; +int cmd_argc; + +void report(void) +{ + fprintf(stderr,"COUNT|%lu|60|lpm\n", iter); + exit(0); +} + +int main(argc, argv) +int argc; +char *argv[]; +{ +int slave, count, duration; +int status; + +if (argc < 2) + { + fprintf(stderr,"Usage: %s duration command [args..]\n", argv[0]); + fprintf(stderr," duration in seconds\n"); + exit(1); + } + +if((duration = atoi(argv[1])) < 1) + { + fprintf(stderr,"Usage: %s duration command [arg..]\n", argv[0]); + fprintf(stderr," duration in seconds\n"); + exit(1); + } + +/* get command */ +cmd_argc=argc-2; +for( count=2;count < argc; ++count) + cmd_argv[count-2]=argv[count]; +#ifdef DEBUG +printf("<<%s>>",cmd_argv[0]); +for(count=1;count < cmd_argc; ++count) + printf(" <%s>", cmd_argv[count]); +putchar('\n'); +exit(0); +#endif + +iter = 0; +wake_me(duration, report); + +while (1) + { + if ((slave = fork()) == 0) + { /* execute command */ + execvp(cmd_argv[0],cmd_argv); + exit(99); + } + else if (slave < 0) + { + /* woops ... */ + fprintf(stderr,"Fork failed at iteration %lu\n", iter); + perror("Reason"); + exit(2); + } + else + /* master */ + wait(&status); + if (status == 99 << 8) + { + fprintf(stderr, "Command \"%s\" didn't exec\n", cmd_argv[0]); + exit(2); + } + else if (status != 0) + { + fprintf(stderr,"Bad wait status: 0x%x\n", status); + exit(2); + } + iter++; + } +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/pipe.c b/testcases/feature-test/oeaware/UnixBench/src/pipe.c new file mode 100644 index 000000000..23a5cbf0e --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/pipe.c @@ -0,0 +1,68 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: pipe.c SID: 3.3 5/15/91 19:30:20 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * $Header: pipe.c,v 3.5 87/06/22 14:32:36 kjmcdonell Beta $ + * August 29, 1990 - modified timing routines (ty) + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +char SCCSid[] = "@(#) @(#)pipe.c:3.3 -- 5/15/91 19:30:20"; +/* + * pipe -- test single process pipe throughput (no context switching) + * + */ + +#include +#include +#include +#include "timeit.c" + +unsigned long iter; + +void report() +{ + fprintf(stderr,"COUNT|%ld|1|lps\n", iter); + exit(0); +} + +int main(argc, argv) +int argc; +char *argv[]; +{ + char buf[512]; + int pvec[2], duration; + + if (argc != 2) { + fprintf(stderr,"Usage: %s duration\n", argv[0]); + exit(1); + } + + duration = atoi(argv[1]); + + pipe(pvec); + + wake_me(duration, report); + iter = 0; + + while (1) { + if (write(pvec[1], buf, sizeof(buf)) != sizeof(buf)) { + if ((errno != EINTR) && (errno != 0)) + fprintf(stderr,"write failed, error %d\n", errno); + } + if (read(pvec[0], buf, sizeof(buf)) != sizeof(buf)) { + if ((errno != EINTR) && (errno != 0)) + fprintf(stderr,"read failed, error %d\n", errno); + } + iter++; + } +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/spawn.c b/testcases/feature-test/oeaware/UnixBench/src/spawn.c new file mode 100644 index 000000000..b053a234d --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/spawn.c @@ -0,0 +1,80 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: spawn.c SID: 3.3 5/15/91 19:30:20 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yagerat BYTE Magazine + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * $Header: spawn.c,v 3.4 87/06/22 14:32:48 kjmcdonell Beta $ + * August 29, 1990 - Modified timing routines (ty) + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +char SCCSid[] = "@(#) @(#)spawn.c:3.3 -- 5/15/91 19:30:20"; +/* + * Process creation + * + */ + +#include +#include +#include +#include "timeit.c" + +unsigned long iter; + +void report() +{ + fprintf(stderr,"COUNT|%lu|1|lps\n", iter); + exit(0); +} + +int main(argc, argv) +int argc; +char *argv[]; +{ + int slave, duration; + int status; + + if (argc != 2) { + fprintf(stderr,"Usage: %s duration \n", argv[0]); + exit(1); + } + + duration = atoi(argv[1]); + + iter = 0; + wake_me(duration, report); + + while (1) { + if ((slave = fork()) == 0) { + /* slave .. boring */ +#if debug + printf("fork OK\n"); +#endif + /* kill it right away */ + exit(0); + } else if (slave < 0) { + /* woops ... */ + fprintf(stderr,"Fork failed at iteration %lu\n", iter); + perror("Reason"); + exit(2); + } else + /* master */ + wait(&status); + if (status != 0) { + fprintf(stderr,"Bad wait status: 0x%x\n", status); + exit(2); + } + iter++; +#if debug + printf("Child %d done.\n", slave); +#endif + } +} diff --git a/testcases/feature-test/oeaware/UnixBench/src/syscall.c b/testcases/feature-test/oeaware/UnixBench/src/syscall.c new file mode 100644 index 000000000..4de437296 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/syscall.c @@ -0,0 +1,109 @@ +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 3 + * Module: syscall.c SID: 3.3 5/15/91 19:30:21 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager at BYTE Magazine + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * $Header: syscall.c,v 3.4 87/06/22 14:32:54 kjmcdonell Beta $ + * August 29, 1990 - Modified timing routines + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ +/* + * syscall -- sit in a loop calling the system + * + */ +char SCCSid[] = "@(#) @(#)syscall.c:3.3 -- 5/15/91 19:30:21"; + +#include +#include +#include +#include +#include +#include +#include "timeit.c" + +unsigned long iter; + +void report() +{ + fprintf(stderr,"COUNT|%ld|1|lps\n", iter); + exit(0); +} + +int main(argc, argv) +int argc; +char *argv[]; +{ + char *test; + int duration; + + if (argc < 2) { + fprintf(stderr,"Usage: %s duration [ test ]\n", argv[0]); + fprintf(stderr,"test is one of:\n"); + fprintf(stderr," \"mix\" (default), \"close\", \"getpid\", \"exec\"\n"); + exit(1); + } + if (argc > 2) + test = argv[2]; + else + test = "mix"; + + duration = atoi(argv[1]); + + iter = 0; + wake_me(duration, report); + + switch (test[0]) { + case 'm': + while (1) { + close(dup(0)); + getpid(); + getuid(); + umask(022); + iter++; + } + /* NOTREACHED */ + case 'c': + while (1) { + close(dup(0)); + iter++; + } + /* NOTREACHED */ + case 'g': + while (1) { + getpid(); + iter++; + } + /* NOTREACHED */ + case 'e': + while (1) { + pid_t pid = fork(); + if (pid < 0) { + fprintf(stderr,"%s: fork failed\n", argv[0]); + exit(1); + } else if (pid == 0) { + execl("/bin/true", (char *) 0); + fprintf(stderr,"%s: exec /bin/true failed\n", argv[0]); + exit(1); + } else { + if (waitpid(pid, NULL, 0) < 0) { + fprintf(stderr,"%s: waitpid failed\n", argv[0]); + exit(1); + } + } + iter++; + } + /* NOTREACHED */ + } + + exit(9); +} + diff --git a/testcases/feature-test/oeaware/UnixBench/src/time-polling.c b/testcases/feature-test/oeaware/UnixBench/src/time-polling.c new file mode 100644 index 000000000..21fa8b220 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/time-polling.c @@ -0,0 +1,573 @@ +/* Programme to test how long it takes to select(2), poll(2) and poll2(2) a + large number of file descriptors. + + Copyright 1997 Richard Gooch rgooch@atnf.csiro.au + Distributed under the GNU General Public License. + + To compile this programme, use gcc -O2 -o time-polling time-polling.c + + Extra compile flags: + + Add -DHAS_SELECT if your operating system has the select(2) system call + Add -DHAS_POLL if your operating system has the poll(2) system call + Add -DHAS_POLL2 if your operating system has the poll2(2) system call + + Usage: time-polling [num_iter] [num_to_test] [num_active] [-v] + + NOTE: on many systems the default limit on file descriptors is less than + 1024. You should try to increase this limit to 1024 before doing the test. + Something like "limit descriptors 1024" or "limit openfiles 1024" should do + the trick. On some systems (like IRIX), doing the test on a smaller number + gives a *much* smaller time per descriptor, which shows that time taken + does not scale linearly with number of descriptors, which is non-optimal. + In the tests I've done, I try to use 1024 descriptors. + The benchmark results are available at: + http://www.atnf.csiro.au/~rgooch/benchmarks.html + If you want to contribute results, please email them to me. Please specify + if you want to be acknowledged. + + + 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, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Richard Gooch may be reached by email at rgooch@atnf.csiro.au + The postal address is: + Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia. + +*/ + +#ifdef UNIXBENCH + #define OUT stdout +#else + #define OUT stderr +#endif +#include +#include +#include +#include +#ifdef HAS_POLL +# include +#endif +#ifdef HAS_POLL2 +# include +#endif +#include +#include +#include + +#define TRUE 1 +#define FALSE 0 +#ifdef UNIXBENCH + #define MAX_ITERATIONS 1000 +#else + #define MAX_ITERATIONS 30 +#endif +#define MAX_FDS 40960 +#define CONST const +#define ERRSTRING strerror (errno) + +typedef int flag; + + +/* +static inline int find_first_set_bit (CONST void *array, int size) +*/ +static int find_first_set_bit (CONST void *array, int size) +/* [SUMMARY] Find the first bit set in a bitfield. + A pointer to the bitfield. This must be aligned on a long boundary. + The number of bits in the bitfield. + [RETURNS] The index of the first set bit. If no bits are set, <> + 1 + is returned. +*/ +{ + int index; + unsigned long word; + unsigned int ul_size = 8 * sizeof (unsigned long); + CONST unsigned long *ul_array = array; + + /* Find first word with any bit set */ + for (index = 0; (*ul_array == 0) && (index < size); + index += ul_size, ++ul_array); + /* Find first bit set in word */ + for (word = *ul_array; !(word & 1) && (index < size); + ++index, word = word >> 1); + return (index); +} /* End Function find_first_set_bit */ + +/* +static inline int find_next_set_bit (CONST void *array, int size, int offset) +*/ +static int find_next_set_bit (CONST void *array, int size, int offset) +/* [SUMMARY] Find the next bit set in a bitfield. + A pointer to the bitfield. This must be aligned on a long boundary. + The number of bits in the bitfield. + The offset of the current bit in the bitfield. The current bit is + ignored. + [RETURNS] The index of the next set bit. If no more bits are set, + <> + 1 is returned. +*/ +{ + int index, tmp; + unsigned long word; + unsigned int ul_size = 8 * sizeof (unsigned long); + CONST unsigned long *ul_array = array; + + if (++offset >= size) return (offset); + index = offset; + /* Jump to the long word containing the next bit */ + tmp = offset / ul_size; + ul_array += tmp; + offset -= tmp * ul_size; + if ( (offset == 0) || (*ul_array == 0) ) + return (find_first_set_bit (ul_array, size - index) + index); + /* There is a bit set somewhere in this word */ + if ( ( (word = *ul_array) != 0 ) && ( (word = word >> offset) != 0 ) ) + { + /* There is a bit set somewhere in this word at or after the offset + position */ + for (; (word & 1) == 0; word = word >> 1, ++index); + return (index); + } + /* Have to go to subsequent word(s) */ + index += ul_size - offset; + return (find_first_set_bit (++ul_array, size - index) + index); +} /* End Function find_next_set_bit */ + + +struct callback_struct +{ + void (*input_func) (void *info); + void (*output_func) (void *info); + void (*exception_func) (void *info); + void *info; +}; + +static int total_bits = 0; +struct callback_struct callbacks[MAX_FDS]; + + +static void test_func (void *info) +{ + ++total_bits; +} + +#ifdef HAS_SELECT +static void time_select (fd_set *input_fds, fd_set *output_fds, + fd_set *exception_fds, int max_fd, int num_iter, + long *times) +/* [SUMMARY] Time how long it takes to select(2) file descriptors. + The input masks. + The output masks. + The exception masks. + The highest file descriptor in the fd_sets. + The number of iterations. + The time taken (in microseconds) for each iteration. + [RETURNS] Nothing. +*/ +{ + int fd, count, nready; + fd_set i_fds, o_fds, e_fds; + struct timeval time1, time2, tv; + + /* Warm the cache a bit */ + memcpy (&i_fds, input_fds, sizeof i_fds); + memcpy (&o_fds, output_fds, sizeof i_fds); + memcpy (&e_fds, exception_fds, sizeof i_fds); + tv.tv_sec = 0; + tv.tv_usec = 0; + select (max_fd + 1, &i_fds, &o_fds, &e_fds, &tv); + for (count = 0; count < num_iter; ++count) + { + total_bits = 0; + gettimeofday (&time1, NULL); + memcpy (&i_fds, input_fds, sizeof i_fds); + memcpy (&o_fds, output_fds, sizeof i_fds); + memcpy (&e_fds, exception_fds, sizeof i_fds); + tv.tv_sec = 0; + tv.tv_usec = 0; + nready = select (max_fd + 1, &i_fds, &o_fds, &e_fds, &tv); + if (nready == -1) + { + fprintf (stderr, "Error selecting\t%s\n", ERRSTRING); + exit (2); + } + if (nready < 1) + { + fprintf (stderr, "Error: nready: %d\n", nready); + exit (1); + } + /* Scan the output */ + for (fd = find_first_set_bit (&e_fds, sizeof e_fds * 8); fd <= max_fd; + fd = find_next_set_bit (&e_fds, sizeof e_fds * 8, fd) ) + { + (*callbacks[fd].exception_func) (callbacks[fd].info); + } + for (fd = find_first_set_bit (&i_fds, sizeof i_fds * 8); fd <= max_fd; + fd = find_next_set_bit (&i_fds, sizeof i_fds * 8, fd) ) + { + (*callbacks[fd].input_func) (callbacks[fd].info); + } + for (fd = find_first_set_bit (&o_fds, sizeof o_fds * 8); fd <= max_fd; + fd = find_next_set_bit (&o_fds, sizeof o_fds * 8, fd) ) + { + (*callbacks[fd].output_func) (callbacks[fd].info); + } + gettimeofday (&time2, NULL); + times[count] = (time2.tv_sec - time1.tv_sec) * 1000000; + times[count] += time2.tv_usec - time1.tv_usec; + } +} /* End Function time_select */ +#endif /* HAS_SELECT */ + +#ifdef HAS_POLL +static void time_poll (struct pollfd *pollfd_array, int start_index, + int num_to_test, int num_iter, long *times) +/* [SUMMARY] Time how long it takes to poll(2) file descriptors. + The array of pollfd structures. + The start index in the array of pollfd structures. + The number of file descriptors to test. + The number of iterations. + The time taken (in microseconds) for each iteration. + [RETURNS] Nothing. +*/ +{ + short revents; + int fd, count, nready; + struct timeval time1, time2; + struct pollfd *pollfd_ptr, *stop_pollfd; + + /* Warm the cache a bit */ + poll (pollfd_array + start_index, num_to_test, 0); + for (count = 0; count < num_iter; ++count) + { + total_bits = 0; + gettimeofday (&time1, NULL); + nready = poll (pollfd_array + start_index, num_to_test, 0); + if (nready == -1) + { + fprintf (stderr, "Error polling\t%s\n", ERRSTRING); + exit (2); + } + if (nready < 1) + { + fprintf (stderr, "Error: nready: %d\n", nready); + exit (1); + } + stop_pollfd = pollfd_array + start_index + num_to_test; + for (pollfd_ptr = pollfd_array + start_index; TRUE; ++pollfd_ptr) + { + if (pollfd_ptr->revents == 0) continue; + /* Have an active descriptor */ + revents = pollfd_ptr->revents; + fd = pollfd_ptr->fd; + if (revents & POLLPRI) + (*callbacks[fd].exception_func) (callbacks[fd].info); + if (revents & POLLIN) + (*callbacks[fd].input_func) (callbacks[fd].info); + if (revents & POLLOUT) + (*callbacks[fd].output_func) (callbacks[fd].info); + if (--nready == 0) break; + } + gettimeofday (&time2, NULL); + times[count] = (time2.tv_sec - time1.tv_sec) * 1000000; + times[count] += time2.tv_usec - time1.tv_usec; + } +} /* End Function time_poll */ +#endif /* HAS_POLL */ + +#ifdef HAS_POLL2 +static void time_poll2 (struct poll2ifd *poll2ifd_array, int start_index, + int num_to_test, int num_iter, long *times) +/* [SUMMARY] Time how long it takes to poll2(2) file descriptors. + The array of poll2ifd structures. + The start index in the array of pollfd structures. + The number of file descriptors to test. + The number of iterations. + The time taken (in microseconds) for each iteration. + [RETURNS] Nothing. +*/ +{ + short revents; + int fd, count, nready, i; + struct timeval time1, time2; + struct poll2ofd poll2ofd_array[MAX_FDS]; + + /* Warm the cache a bit */ + poll2 (poll2ifd_array + start_index, poll2ofd_array, num_to_test, 0); + for (count = 0; count < num_iter; ++count) + { + total_bits = 0; + gettimeofday (&time1, NULL); + nready = poll2 (poll2ifd_array + start_index, poll2ofd_array, + num_to_test, 0); + if (nready == -1) + { + times[count] = -1; + if (errno == ENOSYS) return; /* Must do this first */ + fprintf (stderr, "Error calling poll2(2)\t%s\n", ERRSTRING); + exit (2); + } + if (nready < 1) + { + fprintf (stderr, "Error: nready: %d\n", nready); + exit (1); + } + for (i = 0; i < nready; ++i) + { + revents = poll2ofd_array[i].revents; + fd = poll2ofd_array[i].fd; + if (revents & POLLPRI) + (*callbacks[fd].exception_func) (callbacks[fd].info); + if (revents & POLLIN) + (*callbacks[fd].input_func) (callbacks[fd].info); + if (revents & POLLOUT) + (*callbacks[fd].output_func) (callbacks[fd].info); + } + gettimeofday (&time2, NULL); + times[count] = (time2.tv_sec - time1.tv_sec) * 1000000; + times[count] += time2.tv_usec - time1.tv_usec; + } +} /* End Function time_poll2 */ +#endif /* HAS_POLL2 */ + + +int main (argc, argv) +int argc; +char *argv[]; +{ + flag failed = FALSE; + flag verbose = FALSE; + int first_fd = -1; + int fd, max_fd, count, total_fds; + int num_to_test, num_active; +#ifdef UNIXBENCH + int max_iter = 1000; +#else + int max_iter = 10; +#endif +#ifdef HAS_SELECT + long select_total = 0; + fd_set input_fds, output_fds, exception_fds; + long select_times[MAX_ITERATIONS]; +#endif +#ifdef HAS_POLL + int start_index; + long poll_total = 0; + struct pollfd pollfd_array[MAX_FDS]; + long poll_times[MAX_ITERATIONS]; +#endif +#ifdef HAS_POLL2 + long poll2_total = 0; + struct poll2ifd poll2ifd_array[MAX_FDS]; + struct poll2ofd poll2ofd_array[MAX_FDS]; + long poll2_times[MAX_ITERATIONS]; +#endif +#if 0 + extern char *sys_errlist[]; +#endif + +#ifdef HAS_SELECT + FD_ZERO (&input_fds); + FD_ZERO (&output_fds); + FD_ZERO (&exception_fds); +#endif +#ifdef HAS_POLL + memset (pollfd_array, 0, sizeof pollfd_array); +#endif + /* Allocate file descriptors */ + total_fds = 0; + max_fd = 0; + while (!failed) + { + if ( ( fd = dup (1) ) == -1 ) + { + if (errno != EMFILE) + { + fprintf (stderr, "Error dup()ing\t%s\n", ERRSTRING); + exit (1); + } + failed = TRUE; + continue; + } + if (fd >= MAX_FDS) + { + fprintf (stderr, "File descriptor: %d larger than max: %d\n", + fd, MAX_FDS - 1); + exit (1); + } + callbacks[fd].input_func = test_func; + callbacks[fd].output_func = test_func; + callbacks[fd].exception_func = test_func; + callbacks[fd].info = NULL; + if (fd > max_fd) max_fd = fd; + if (first_fd < 0) first_fd = fd; +#ifdef HAS_POLL + pollfd_array[fd].fd = fd; + pollfd_array[fd].events = 0; +#endif +#ifdef HAS_POLL2 + poll2ifd_array[fd].fd = fd; + poll2ifd_array[fd].events = 0; +#endif + } + total_fds = max_fd + 1; + /* Process the command-line arguments */ + if (argc > 5) + { + fputs ("Usage:\ttime-polling [num_iter] [num_to_test] [num_active] [-v]\n", + stderr); + exit (1); + } + if (argc > 1) max_iter = atoi (argv[1]); + if (max_iter > MAX_ITERATIONS) + { + fprintf (stderr, "num_iter too large\n"); + exit (1); + } + if (argc > 2) num_to_test = atoi (argv[2]); + else num_to_test = total_fds - first_fd; + if (argc > 3) num_active = atoi (argv[3]); + else num_active = 1; + if (argc > 4) + { + if (strcmp (argv[4], "-v") != 0) + { + fputs ("Usage:\ttime-polling [num_iter] [num_to_test] [num_active] [-v]\n", + stderr); + exit (1); + } + verbose = TRUE; + } + + /* Sanity tests */ + if (num_to_test > total_fds - first_fd) num_to_test = total_fds - first_fd; + if (num_active > total_fds - first_fd) num_active = total_fds - first_fd; + /* Set activity monitoring flags */ + for (fd = total_fds - num_to_test; fd < total_fds; ++fd) + { +#ifdef HAS_SELECT + FD_SET (fd, &exception_fds); + FD_SET (fd, &input_fds); +#endif +#ifdef HAS_POLL + pollfd_array[fd].events = POLLPRI | POLLIN; +#endif +#ifdef HAS_POLL2 + poll2ifd_array[fd].events = POLLPRI | POLLIN; +#endif + } + for (fd = total_fds - num_active; fd < total_fds; ++fd) + { +#ifdef HAS_SELECT + FD_SET (fd, &output_fds); +#endif +#ifdef HAS_POLL + pollfd_array[fd].events |= POLLOUT; +#endif +#ifdef HAS_POLL2 + poll2ifd_array[fd].events |= POLLOUT; +#endif + } + fprintf (OUT, "Num fds: %d, polling descriptors %d-%d\n", + total_fds, total_fds - num_to_test, max_fd); + /* First do all the tests, then print the results */ +#ifdef HAS_SELECT + time_select (&input_fds, &output_fds, &exception_fds, max_fd, max_iter, + select_times); +#endif +#ifdef HAS_POLL + start_index = total_fds - num_to_test; + time_poll (pollfd_array, start_index, num_to_test, max_iter, poll_times); +#endif +#ifdef HAS_POLL2 + start_index = total_fds - num_to_test; + time_poll2 (poll2ifd_array, start_index, num_to_test, max_iter, + poll2_times); +#endif + /* Now print out all the times */ + fputs ("All times in microseconds\n", OUT); + fputs ("ITERATION\t", OUT); +#ifdef HAS_SELECT + fprintf (OUT, "%-12s", "select(2)"); +#endif +#ifdef HAS_POLL + fprintf (OUT, "%-12s", "poll(2)"); +#endif +#ifdef HAS_POLL2 + if (poll2_times[0] >= 0) fprintf (OUT, "%-12s", "poll2(2)"); +#endif + for (count = 0; count < max_iter; ++count) + { + if (verbose) fprintf (OUT, "\n%d\t\t", count); +#ifdef HAS_SELECT + if (verbose) fprintf (OUT, "%-12ld", select_times[count]); + select_total += select_times[count]; +#endif +#ifdef HAS_POLL + if (verbose) fprintf (OUT, "%-12ld", poll_times[count]); + poll_total += poll_times[count]; +#endif +#ifdef HAS_POLL2 + if ( verbose && (poll2_times[0] >= 0) ) + fprintf (OUT, "%-12ld", poll2_times[count]); + poll2_total += poll2_times[count]; +#endif + } + fputs ("\n\naverage\t\t", OUT); +#ifdef HAS_SELECT + fprintf (OUT, "%-12ld", select_total / max_iter); +#endif +#ifdef HAS_POLL + fprintf (OUT, "%-12ld", poll_total / max_iter); +#endif +#ifdef HAS_POLL2 + if (poll2_times[0] >= 0) + fprintf (OUT, "%-12ld", poll2_total / max_iter); +#endif + putc ('\n', OUT); + fputs ("Per fd\t\t", OUT); +#ifdef HAS_SELECT + fprintf (OUT, "%-12.2f", + (float) select_total / (float) max_iter / (float) num_to_test); +#ifdef UNIXBENCH + fprintf (stderr, "lps\t%.2f\t%.1f\n", + 1000000 * (float) max_iter * (float) num_to_test + / (float) select_total, (float)select_total / 1000000); +#endif +#endif +#ifdef HAS_POLL + fprintf (OUT, "%-12.2f", + (float) poll_total / (float) max_iter / (float) num_to_test); +#ifdef UNIXBENCH + fprintf (stderr, "lps\t%.2f\t%.1f\n", + 1000000 * (float) max_iter * (float) num_to_test + / (float) poll_total, (float)poll_total / 1000000); +#endif +#endif +#ifdef HAS_POLL2 + if (poll2_times[0] >= 0) { + fprintf (OUT, "%-12.2f", + (float) poll2_total / (float) max_iter / (float) num_to_test); +#ifdef UNIXBENCH + fprintf (stderr, "lps\t%.2f\t%.1f\n", + 1000000 * (float) max_iter * (float) num_to_test + / (float) poll2_total, (float)poll2_total / 1000000); +#endif + } + +#endif + fputs ("<- the most important value\n", OUT); + + exit(0); +} /* End Function main */ diff --git a/testcases/feature-test/oeaware/UnixBench/src/timeit.c b/testcases/feature-test/oeaware/UnixBench/src/timeit.c new file mode 100644 index 000000000..00d1cfceb --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/timeit.c @@ -0,0 +1,41 @@ +/******************************************************************************* + * + * The BYTE UNIX Benchmarks - Release 3 + * Module: timeit.c SID: 3.3 5/15/91 19:30:21 + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith, Rick Grehan or Tom Yager + * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com + * + ******************************************************************************* + * Modification Log: + * May 12, 1989 - modified empty loops to avoid nullifying by optimizing + * compilers + * August 28, 1990 - changed timing relationship--now returns total number + * of iterations (ty) + * October 22, 1997 - code cleanup to remove ANSI C compiler warnings + * Andy Kahn + * + ******************************************************************************/ + +/* this module is #included in other modules--no separate SCCS ID */ + +/* + * Timing routine + * + */ + +#include +#include + +void wake_me(seconds, func) + int seconds; + void (*func)(); +{ + /* set up the signal handler */ + signal(SIGALRM, func); + /* get the clock running */ + alarm(seconds); +} + diff --git a/testcases/feature-test/oeaware/UnixBench/src/ubgears.c b/testcases/feature-test/oeaware/UnixBench/src/ubgears.c new file mode 100644 index 000000000..417ebbda3 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/ubgears.c @@ -0,0 +1,650 @@ +/* + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +/* $XFree86: xc/programs/glxgears/glxgears.c,v 1.3tsi Exp $ */ + +/* + * This is a port of the infamous "gears" demo to straight GLX (i.e. no GLUT) + * Port by Brian Paul 23 March 2001 + * + * Exact timing added by Behdad Esfahbod to achieve a fixed speed regardless + * of frame rate. November 2003 + * + * Printer support added by Roland Mainz . April 2004 + * + * This version modified by Ian Smith, 30 Sept 2007, to make ubgears. + * ubgears is cusoimised for use in the UnixBench benchmarking suite. + * Some redundant stuff is gone, and the -time option is added. + * Mainly it's forked so we don't use the host's version, which could change + * from platform to platform. + * + * Command line options: + * -display Set X11 display for output. + * -info Print additional GLX information. + * -time Run for seconds and produce a performance report. + * -h Print this help page. + * -v Verbose output. + * + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265 +#endif /* !M_PI */ + +/* Turn a NULL pointer string into an empty string */ +#define NULLSTR(x) (((x)!=NULL)?(x):("")) +#define Log(x) { if(verbose) printf x; } +#define Msg(x) { printf x; } + +/* Globla vars */ +/* program name (from argv[0]) */ +static const char *ProgramName; + +/* verbose output what the program is doing */ +static Bool verbose = False; + +/* time in microseconds to run for; -1 means forever. */ +static int runTime = -1; + +/* Time at which start_time(void) was called. */ +static struct timeval clockStart; + +/* XXX this probably isn't very portable */ + +/* return current time (in seconds) */ +static void +start_time(void) +{ + (void) gettimeofday(&clockStart, 0); +} + +/* + * return time (in microseconds) since start_time(void) was called. + * + * The older version of this function randomly returned negative results. + * This version won't, up to 2000 seconds and some. + */ +static long +current_time(void) +{ + struct timeval tv; + long secs, micros; + + (void) gettimeofday(&tv, 0); + + secs = tv.tv_sec - clockStart.tv_sec; + micros = tv.tv_usec - clockStart.tv_usec; + if (micros < 0) { + --secs; + micros += 1000000; + } + return secs * 1000000 + micros; +} + +static +void usage(void) +{ + fprintf (stderr, "usage: %s [options]\n", ProgramName); + fprintf (stderr, "-display\tSet X11 display for output.\n"); + fprintf (stderr, "-info\t\tPrint additional GLX information.\n"); + fprintf (stderr, "-time t\t\tRun for t seconds and report performance.\n"); + fprintf (stderr, "-h\t\tPrint this help page.\n"); + fprintf (stderr, "-v\t\tVerbose output.\n"); + fprintf (stderr, "\n"); + exit(EXIT_FAILURE); +} + + +static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; +static GLint gear1, gear2, gear3; +static GLfloat angle = 0.0; +static GLint speed = 60; +static GLboolean printInfo = GL_FALSE; + +/* + * + * Draw a gear wheel. You'll probably want to call this function when + * building a display list since we do a lot of trig here. + * + * Input: inner_radius - radius of hole at center + * outer_radius - radius at center of teeth + * width - width of gear + * teeth - number of teeth + * tooth_depth - depth of tooth + */ +static void +gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, + GLint teeth, GLfloat tooth_depth) +{ + GLint i; + GLfloat r0, r1, r2, maxr2, minr2; + GLfloat angle, da; + GLfloat u, v, len; + + r0 = inner_radius; + r1 = outer_radius - tooth_depth / 2.0; + maxr2 = r2 = outer_radius + tooth_depth / 2.0; + minr2 = r2; + + da = 2.0 * M_PI / teeth / 4.0; + + glShadeModel(GL_FLAT); + + glNormal3f(0.0, 0.0, 1.0); + + /* draw front face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + if (i < teeth) { + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), + width * 0.5); + } + } + glEnd(); + + /* draw front sides of teeth */ + glBegin(GL_QUADS); + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), + width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), + width * 0.5); + r2 = minr2; + } + r2 = maxr2; + glEnd(); + + glNormal3f(0.0, 0.0, -1.0); + + /* draw back face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + if (i < teeth) { + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), + -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + } + } + glEnd(); + + /* draw back sides of teeth */ + glBegin(GL_QUADS); + da = 2.0 * M_PI / teeth / 4.0; + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), + -width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), + -width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + r2 = minr2; + } + r2 = maxr2; + glEnd(); + + /* draw outward faces of teeth */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + u = r2 * cos(angle + da) - r1 * cos(angle); + v = r2 * sin(angle + da) - r1 * sin(angle); + len = sqrt(u * u + v * v); + u /= len; + v /= len; + glNormal3f(v, -u, 0.0); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glNormal3f(cos(angle + 1.5 * da), sin(angle + 1.5 * da), 0.0); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), + width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), + -width * 0.5); + u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); + v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); + glNormal3f(v, -u, 0.0); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), + width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), + -width * 0.5); + glNormal3f(cos(angle + 3.5 * da), sin(angle + 3.5 * da), 0.0); + r2 = minr2; + } + r2 = maxr2; + + glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); + glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); + + glEnd(); + + glShadeModel(GL_SMOOTH); + + /* draw inside radius cylinder */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * M_PI / teeth; + glNormal3f(-cos(angle), -sin(angle), 0.0); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + } + glEnd(); +} + + +static void +draw(void) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); + + glPushMatrix(); + glTranslatef(-3.0, -2.0, 0.0); + glRotatef(angle, 0.0, 0.0, 1.0); + glCallList(gear1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(3.1, -2.0, 0.0); + glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); + glCallList(gear2); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-3.1, 4.2, 0.0); + glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); + glCallList(gear3); + glPopMatrix(); + + glPopMatrix(); +} + + +/* new window size or exposure */ +static void +reshape(int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport(0, 0, (GLint) width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + /* fit width and height */ + if (h >= 1.0) + glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); + else + glFrustum(-1.0/h, 1.0/h, -1.0, 1.0, 5.0, 60.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); +} + + +static void +init(void) +{ + static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; + static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; + static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; + static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + /* make the gears */ + gear1 = glGenLists(1); + glNewList(gear1, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); + gear(1.0, 4.0, 1.0, 20, 0.7); + glEndList(); + + gear2 = glGenLists(1); + glNewList(gear2, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); + gear(0.5, 2.0, 2.0, 10, 0.7); + glEndList(); + + gear3 = glGenLists(1); + glNewList(gear3, GL_COMPILE); + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); + gear(1.3, 2.0, 0.5, 10, 0.7); + glEndList(); + + glEnable(GL_NORMALIZE); +} + + +/* + * Create an RGB, double-buffered window. + * Return the window and context handles. + */ +static void +make_window( Display *dpy, Screen *scr, + const char *name, + int x, int y, int width, int height, + Window *winRet, GLXContext *ctxRet) +{ + int attrib[] = { GLX_RGBA, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + GLX_DOUBLEBUFFER, + GLX_DEPTH_SIZE, 1, + None }; + int scrnum; + XSetWindowAttributes attr; + unsigned long mask; + Window root; + Window win; + GLXContext ctx; + XVisualInfo *visinfo; + GLint max[2] = { 0, 0 }; + + scrnum = XScreenNumberOfScreen(scr); + root = XRootWindow(dpy, scrnum); + + visinfo = glXChooseVisual( dpy, scrnum, attrib ); + if (!visinfo) { + fprintf(stderr, "%s: Error: couldn't get an RGB, Double-buffered visual.\n", ProgramName); + exit(EXIT_FAILURE); + } + + /* window attributes */ + attr.background_pixel = 0; + attr.border_pixel = 0; + attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); + attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; + mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; + + win = XCreateWindow( dpy, root, x, y, width, height, + 0, visinfo->depth, InputOutput, + visinfo->visual, mask, &attr ); + + /* set hints and properties */ + { + XSizeHints sizehints; + sizehints.x = x; + sizehints.y = y; + sizehints.width = width; + sizehints.height = height; + sizehints.flags = USSize | USPosition; + XSetNormalHints(dpy, win, &sizehints); + XSetStandardProperties(dpy, win, name, name, + None, (char **)NULL, 0, &sizehints); + } + + ctx = glXCreateContext( dpy, visinfo, NULL, True ); + if (!ctx) { + fprintf(stderr, "%s: Error: glXCreateContext failed.\n", ProgramName); + exit(EXIT_FAILURE); + } + + XFree(visinfo); + + XMapWindow(dpy, win); + glXMakeCurrent(dpy, win, ctx); + + /* Check for maximum size supported by the GL rasterizer */ + glGetIntegerv(GL_MAX_VIEWPORT_DIMS, max); + if (printInfo) + printf("GL_MAX_VIEWPORT_DIMS=%d/%d\n", (int)max[0], (int)max[1]); + if (width > max[0] || height > max[1]) { + fprintf(stderr, "%s: Error: Requested window size (%d/%d) larger than " + "maximum supported by GL engine (%d/%d).\n", + ProgramName, width, height, (int)max[0], (int)max[1]); + exit(EXIT_FAILURE); + } + + *winRet = win; + *ctxRet = ctx; +} + +static void +event_loop(Display *dpy, Window win) +{ + while (1) { + /* Process interactive events */ + while (XPending(dpy) > 0) { + XEvent event; + XNextEvent(dpy, &event); + switch (event.type) { + case Expose: + Log(("Event: Expose\n")); + /* we'll redraw below */ + break; + case ConfigureNotify: + Log(("Event: ConfigureNotify\n")); + reshape(event.xconfigure.width, event.xconfigure.height); + break; + } + } + + { + /* Time at which we started measuring. */ + static long startTime = 0; + + /* Time of the previous frame. */ + static long lastFrame = 0; + + /* Time of the previous FPS report. */ + static long lastFps = 0; + + /* Number of frames we've done. */ + static int frames = 0; + + /* Number of frames we've done in the measured run. */ + static long runFrames = 0; + + long t = current_time(); + long useconds; + + if (!lastFrame) + lastFrame = t; + if (!lastFps) + lastFps = t; + + /* How many microseconds since the previous frame? */ + useconds = t - lastFrame; + if (!useconds) /* assume 100FPS if we don't have timer */ + useconds = 10000; + + /* Calculate how far the gears need to move and redraw. */ + angle = angle + ((double)speed * useconds) / 1000000.0; + if (angle > 360.0) + angle = angle - 360.0; /* don't lose precision! */ + draw(); + glXSwapBuffers(dpy, win); + + /* Done this frame. */ + lastFrame = t; + frames++; + + /* Every 5 seconds, print the FPS. */ + if (t - lastFps >= 5000000L) { + GLfloat seconds = (t - lastFps) / 1000000.0; + GLfloat fps = frames / seconds; + + printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, + fps); + lastFps = t; + frames = 0; + + /* + * Set the start time now -- ie. after one report. This + * gives us pump-priming time before we start for real. + */ + if (runTime > 0 && startTime == 0) { + printf("Start timing!\n"); + startTime = t; + } + } + + if (startTime > 0) + ++runFrames; + + /* If our run time is done, finish. */ + if (runTime > 0 && startTime > 0 && t - startTime > runTime) { + double time = (double) (t - startTime) / 1000000.0; + fprintf(stderr, "COUNT|%ld|1|fps\n", runFrames); + fprintf(stderr, "TIME|%.1f\n", time); + exit(0); + } + + /* Need to give cpu away in order to get precise timing next cycle, + * otherwise, gettimeofday would return almost the same value. */ + sched_yield(); + } + } +} + + +int +main(int argc, char *argv[]) +{ + Bool use_threadsafe_api = False; + Display *dpy; + Window win; + Screen *screen; + GLXContext ctx; + char *dpyName = NULL; + int i; + XRectangle winrect; + + ProgramName = argv[0]; + + for (i = 1; i < argc; i++) { + const char *arg = argv[i]; + int len = strlen(arg); + + if (strcmp(argv[i], "-display") == 0) { + if (++i >= argc) + usage(); + dpyName = argv[i]; + } + else if (strcmp(argv[i], "-info") == 0) { + printInfo = GL_TRUE; + } + else if (strcmp(argv[i], "-time") == 0) { + if (++i >= argc) + usage(); + runTime = atoi(argv[i]) * 1000000; + } + else if (!strncmp("-v", arg, len)) { + verbose = True; + printInfo = GL_TRUE; + } + else if( !strncmp("-debug_use_threadsafe_api", arg, len) ) + { + use_threadsafe_api = True; + } + else if (!strcmp(argv[i], "-h")) { + usage(); + } + else + { + fprintf(stderr, "%s: Unsupported option '%s'.\n", ProgramName, argv[i]); + usage(); + } + } + + /* Init X threading API on demand (for debugging) */ + if( use_threadsafe_api ) + { + if( !XInitThreads() ) + { + fprintf(stderr, "%s: XInitThreads() failure.\n", ProgramName); + exit(EXIT_FAILURE); + } + } + + dpy = XOpenDisplay(dpyName); + if (!dpy) { + fprintf(stderr, "%s: Error: couldn't open display '%s'\n", ProgramName, dpyName); + return EXIT_FAILURE; + } + + screen = XDefaultScreenOfDisplay(dpy); + + winrect.x = 0; + winrect.y = 0; + winrect.width = 300; + winrect.height = 300; + + Log(("Window x=%d, y=%d, width=%d, height=%d\n", + (int)winrect.x, (int)winrect.y, (int)winrect.width, (int)winrect.height)); + + make_window(dpy, screen, "ubgears", winrect.x, winrect.y, winrect.width, winrect.height, &win, &ctx); + reshape(winrect.width, winrect.height); + + if (printInfo) { + printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); + printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); + printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); + printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); + } + + init(); + + start_time(); + event_loop(dpy, win); + + glXDestroyContext(dpy, ctx); + + XDestroyWindow(dpy, win); + XCloseDisplay(dpy); + + return EXIT_SUCCESS; +} + diff --git a/testcases/feature-test/oeaware/UnixBench/src/whets.c b/testcases/feature-test/oeaware/UnixBench/src/whets.c new file mode 100644 index 000000000..7829bb743 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/src/whets.c @@ -0,0 +1,1289 @@ +/**********************************************************/ +/* Date: Mon, 10 Mar 1997 07:38:18 -0500 */ +/* From: Roy Longbottom */ +/* Subject: WHET02.txt */ +/* To: "Alfred A. Aburto Jr." */ +/**********************************************************/ + +/* + * C/C++ Whetstone Benchmark Single or Double Precision + * + * Original concept Brian Wichmann NPL 1960's + * Original author Harold Curnow CCTA 1972 + * Self timing versions Roy Longbottom CCTA 1978/87 + * Optimisation control Bangor University 1987/90 + * C/C++ Version Roy Longbottom 1996 + * Compatibility & timers Al Aburto 1996 + * + ************************************************************ + * + * Official version approved by: + * + * Harold Curnow 100421.1615@compuserve.com + * + * Happy 25th birthday Whetstone, 21 November 1997 + * + ************************************************************ + * + * The program normally runs for about 100 seconds + * (adjustable in main - variable duration). This time + * is necessary because of poor PC clock resolution. + * The original concept included such things as a given + * number of subroutine calls and divides which may be + * changed by optimisation. For comparison purposes the + * compiler and level of optimisation should be identified. + * + ************************************************************ + * + * The original benchmark had a single variable I which + * controlled the running time. Constants with values up + * to 899 were multiplied by I to control the number + * passes for each loop. It was found that large values + * of I could overflow index registers so an extra outer + * loop with a second variable J was added. + * + * Self timing versions were produced during the early + * days. The 1978 changes supplied timings of individual + * loops and these were used later to produce MFLOPS and + * MOPS ratings. + * + * 1987 changes converted the benchmark to Fortran 77 + * standards and removed redundant IF statements and + * loops to leave the 8 active loops N1 to N8. Procedure + * P3 was changed to use global variables to avoid over- + * optimisation with the first two statements changed from + * X1=X and Y1=Y to X=Y and Y=Z. A self time calibrating + * version for PCs was also produced, the facility being + * incorporated in this version. + * + * This version has changes to avoid worse than expected + * speed ratings, due to underflow, and facilities to show + * that consistent numeric output is produced with varying + * optimisation levels or versions in different languages. + * + * Some of the procedures produce ever decreasing numbers. + * To avoid problems, variables T and T1 have been changed + * from 0.499975 and 0.50025 to 0.49999975 and 0.50000025. + * + * Each section now has its own double loop. Inner loops + * are run 100 times the loop constants. Calibration + * determines the number of outer loop passes. The + * numeric results produced in the main output are for + * one pass on the outer loop. As underflow problems were + * still likely on a processor 100 times faster than a 100 + * MHZ Pentium, three sections have T=1.0-T inserted in the + * outer loop to avoid the problem. The two loops avoid + * index register overflows. + * + * The first section is run ten times longer than required + * for accuracy in calculating MFLOPS. This time is divided + * by ten for inclusion in the MWIPS calculations. + * + * This version has facilities for typing in details of the + * particular run. This information is appended to file + * whets.res along with the results. The input section can + * be avoided using a command line parameter N (for example + * Whets.exe N). + * + * Roy Longbottom 101323.2241@compuserve.com + * + ************************************************************ + * + * Whetstone benchmark results are available in whets.tbl + * from ftp.nosc.mil/pub/aburto. The results include + * further details of the benchmarks. + * + ************************************************************ + * + * Source code is available in C/C++, Fortran, Basic and + * Visual Basic in the same format as this version. Pre- + * compiled versions for PCs are also available via C++. + * These comprise optimised and non-optimised versions + * for DOS, Windows and NT. + * + * This version compiles and runs correctly either as a + * C or CPP program with a WATCOM and Borland compiler. + * + ************************************************************ + * + * Example of initial calibration display (Pentium 100 MHz) + * + * Single Precision C/C++ Whetstone Benchmark + * + * Calibrate + * 0.17 Seconds 1 Passes (x 100) + * 0.77 Seconds 5 Passes (x 100) + * 3.70 Seconds 25 Passes (x 100) + * + * Use 676 passes (x 100) + * + * 676 passes are used for an approximate duration of 100 + * seconds, providing an initial estimate of a speed rating + * of 67.6 MWIPS. + * + * This is followed by the table of results as below. Input + * statements are then supplied to type in the run details. + * + ************************************************************ + * + * Examples of results from file whets.res + * + * Whetstone Single Precision Benchmark in C/C++ + * + * Month run 4/1996 + * PC model Escom + * CPU Pentium + * Clock MHz 100 + * Cache 256K + * H/W Options Neptune chipset + * OS/DOS Windows 95 + * Compiler Watcom C/C++ 10.5 Win386 + * Options No optimisation + * Run by Roy Longbottom + * From UK + * Mail 101323.2241@compuserve.com + * + * Loop content Result MFLOPS MOPS Seconds + * + * N1 floating point -1.12475025653839100 19.971 0.274 + * N2 floating point -1.12274754047393800 11.822 3.240 + * N3 if then else 1.00000000000000000 11.659 2.530 + * N4 fixed point 12.00000000000000000 13.962 6.430 + * N5 sin,cos etc. 0.49904659390449520 2.097 11.310 + * N6 floating point 0.99999988079071040 3.360 45.750 + * N7 assignments 3.00000000000000000 2.415 21.810 + * N8 exp,sqrt etc. 0.75110864639282230 1.206 8.790 + * + * MWIPS 28.462 100.134 + * + * Whetstone Single Precision Benchmark in C/C++ + * + * Compiler Watcom C/C++ 10.5 Win386 + * Options -otexan -zp4 -om -fp5 -5r + * + * Loop content Result MFLOPS MOPS Seconds + * + * N1 floating point -1.12475025653839100 26.751 0.478 + * N2 floating point -1.12274754047393800 17.148 5.220 + * N3 if then else 1.00000000000000000 19.922 3.460 + * N4 fixed point 12.00000000000000000 15.978 13.130 + * N5 sin,cos etc. 0.49904659390449520 2.663 20.810 + * N6 floating point 0.99999988079071040 10.077 35.650 + * N7 assignments 3.00000000000000000 22.877 5.380 + * N8 exp,sqrt etc. 0.75110864639282230 1.513 16.370 + * + * MWIPS 66.270 100.498 + * + * + * Whetstone Double Precision Benchmark in C/C++ + * + * Compiler Watcom C/C++ 10.5 Win32NT + * Options -otexan -zp4 -om -fp5 -5r + * + * Loop content Result MFLOPS MOPS Seconds + * + * N1 floating point -1.12398255667391900 26.548 0.486 + * N2 floating point -1.12187079889284400 16.542 5.460 + * N3 if then else 1.00000000000000000 19.647 3.540 + * N4 fixed point 12.00000000000000000 15.680 13.500 + * N5 sin,cos etc. 0.49902937281515140 3.019 18.520 + * N6 floating point 0.99999987890802820 9.977 36.330 + * N7 assignments 3.00000000000000000 22.620 5.490 + * N8 exp,sqrt etc. 0.75100163018457870 1.493 16.740 + * + * MWIPS 67.156 100.066 + * + * Note different numeric results to single precision. Slight variations + * are normal with different compilers and sometimes optimisation levels. + * + * + * Example Single Precision Optimised Results + * + * MWIPS MFLOPS MFLOPS MFLOPS COS EXP FIXPT IF EQUAL + * PC 1 2 3 MOPS MOPS MOPS MOPS MOPS + * + * P3 5.68 0.928 0.884 0.673 0.461 0.275 2.36 2.16 0.638 + * P4 16.4 5.09 4.03 2.66 0.526 0.342 6.36 6.00 5.28 + * P5 66.3 26.8 17.1 10.1 2.66 1.51 16.0 19.9 22.9 + * P6 161 50.3 45.2 31.5 4.46 2.77 102 20.6 119 + * + * Example Single Precision Non-optimised Results + * + * P3 3.07 0.860 0.815 0.328 0.355 0.160 1.70 1.32 0.264 + * P4 10.0 4.68 3.51 1.27 0.482 0.298 5.73 5.20 1.18 + * P5 28.5 20.0 11.8 3.36 2.10 1.21 14.0 11.7 2.42 + * P6 81.7 47.5 37.8 10.9 3.91 2.43 51.2 42.8 7.85 + * + * Summary results as in whets.tbl at ftp.nosc.mil/pub/aburto + * + * MFLOPS = Geometric Mean of three MFLOPS loops + * VAX MIPS = 5 * Geometric Mean of last three items above + * + * VAX + * PC System CPU/Options Cache MHz MWIPS MFLOPS MIPS + * + * P3 Clone AM80386DX with 387 128K 40 5.68 0.820 7.40 + * P4 Escom 80486DX2 CIS chipset 128K 66 16.4 3.79 29.3 + * P5 Escom Pentium Neptune chipset 256K 100 66.3 16.7 96.9 + * P6 Dell PentiumPro 440FX PCIset 256K 200 161 41.5 315 + * + * P3 Clone AM80386DX with 387 128K 40 3.07 0.613 4.20 + * P4 Escom 80486DX2 CIS chipset 128K 66 10.0 2.75 16.4 + * P5 Escom Pentium Neptune chipset 256K 100 28.5 9.26 36.6 + * P6 Dell PentiumPro 440FX PCIset 256K 200 81.7 26.9 129 + * + ************************************************************************** + * + * Running In fprintf(stderr,"TIMEBASE|60\n"); +structions + * + * 1. In order to compile successfully, include timer option as + * indicated below. + * 2. If pre-compiled codes are to be distributed, compile with the + * -DPRECOMP option or uncomment #define PRECOMP at PRECOMPILE + * below. Also insert compiler name and optimisation details + * at #define precompiler and #define preoptions. + * 3. Compile and run for single precision results. Include run + * time parameter N to bipass typing in hardware details etc. + * 4. Compile with -DDP option or uncomment #define DP at PRECISION + * below and run for double precision results. + * 5. Run with maximum and no optimisation (minimum debug) + * 6. Notify Roy Longbottom of other necessary changes + * 7. Send results file whets.res to Roy Longbottom - with one + * sample of each run and system details fully completed + * + * Roy Longbottom 101323.2241@compuserve.com 6 November 1996 + * + ************************************************************************** + */ + + #include /* for sin, exp etc. */ + #include /* standard I/O */ + #include /* for strcpy - 3 occurrences */ + #include /* for exit - 1 occurrence */ + +/***************************************************************/ +/* Timer options. You MUST uncomment one of the options below */ +/* or compile, for example, with the '-DUNIX' option. */ +/***************************************************************/ +/* #define Amiga */ +/* #define UNIX */ +/* #define UNIX_Old */ +/* #define VMS */ +/* #define BORLAND_C */ +/* #define MSC */ +/* #define MAC */ +/* #define IPSC */ +/* #define FORTRAN_SEC */ +/* #define GTODay */ +/* #define CTimer */ +/* #define UXPM */ +/* #define MAC_TMgr */ +/* #define PARIX */ +/* #define POSIX */ +/* #define WIN32 */ +/* #define POSIX1 */ +/***********************/ + +/*PRECISION PRECISION PRECISION PRECISION PRECISION PRECISION PRECISION*/ + + /* #define DP */ + + #ifdef DP + #define SPDP double + #define Precision "Double" + #else + #define SPDP float + #define Precision "Single" + #endif + + +/*PRECOMPILE PRECOMPILE PRECOMPILE PRECOMPILE PRECOMPILE PRECOMPILE*/ + + /* #define PRECOMP */ + + #ifdef PRECOMP + #define precompiler "INSERT COMPILER NAME HERE" + #define preoptions "INSERT OPTIMISATION OPTIONS HERE" + #endif + + + void whetstones(long xtra, long x100, int calibrate); + void pa(SPDP e[4], SPDP t, SPDP t2); + void po(SPDP e1[4], long j, long k, long l); + void p3(SPDP *x, SPDP *y, SPDP *z, SPDP t, SPDP t1, SPDP t2); + void pout(char title[22], float ops, int type, SPDP checknum, + SPDP time, int calibrate, int section); + + + static SPDP loop_time[9]; + static SPDP loop_mops[9]; + static SPDP loop_mflops[9]; + static SPDP TimeUsed; + static SPDP mwips; + static char headings[9][18]; + static SPDP Check; + static SPDP results[9]; + +int main(argc, argv) +int argc; +char *argv[]; +{ + int count = 10, calibrate = 1; + long xtra = 1; + long x100 = 100; +#ifdef UNIXBENCH + int duration = 10; +#else + int section; + int duration = 100; + FILE *outfile; + int getinput = 1; + char compiler[80] = " ", options[256] = " ", general[10][80] = {" "}; + char *endit = " "; + + printf("##########################################\n"); + printf("%s Precision C/C++ Whetstone Benchmark\n\n", Precision); +#endif + + +#ifndef UNIXBENCH + if (argc > 1) + { + switch (argv[1][0]) + { + case 'N': + case 'n': + getinput = 0; + break; + } + } + if (! getinput) + { + printf ("No run time input data\n\n"); + } + + outfile = fopen("whets.res","a+"); + if (outfile == NULL) + { + printf ("Cannot open results file \n\n"); + printf("Press RETURN to exit\n"); + gets(endit); + exit (0); + } +#endif + + printf("Calibrate\n"); + do + { + TimeUsed=0; + + whetstones(xtra,x100,calibrate); + + printf("%11.2f Seconds %10.0f Passes (x 100)\n", TimeUsed, (SPDP)(xtra)); + calibrate++; + count--; + +#ifndef UNIXBENCH + if (TimeUsed > 2.0) +#else + if (TimeUsed > 0.5) +#endif + { + count = 0; + } + else + { + xtra = xtra * 5; + } + } + + while (count > 0); + + if (TimeUsed > 0) xtra = (long)((SPDP)(duration * xtra) / TimeUsed); + if (xtra < 1) xtra = 1; + + calibrate = 0; + + printf("\nUse %ld passes (x 100)\n", xtra); + + printf("\n %s Precision C/C++ Whetstone Benchmark",Precision); + + #ifdef PRECOMP + printf("\n Compiler %s", precompiler); + printf("\n Options %s\n", preoptions); + #else + printf("\n"); + #endif + + printf("\nLoop content Result MFLOPS " + " MOPS Seconds\n\n"); + + TimeUsed=0; + whetstones(xtra,x100,calibrate); + + printf("\nMWIPS "); + if (TimeUsed>0) + { + mwips=(float)(xtra) * (float)(x100) / (10 * TimeUsed); + } + else + { + mwips = 0; + } + + printf("%39.3f%19.3f\n\n",mwips,TimeUsed); + + if (Check == 0) printf("Wrong answer "); + + + + /************************************************************************/ + /* Type details of hardware, software etc. */ + /************************************************************************/ + +#ifndef UNIXBENCH + if (getinput) + { + printf ("Enter the following which will be added with results to file WHETS.RES\n"); + printf ("When submitting a number of results you need only provide details once\n"); + printf ("but a cross reference such as an abbreviated CPU type would be useful.\n"); + printf ("You can kill (exit or close) the program now and no data will be added.\n\n"); + + printf ("Date: "); + gets(general[0]); + + printf ("Computer: "); + gets(general[1]); + + printf ("CPU chip: "); + gets(general[2]); + + printf ("Clock MHz: "); + gets(general[3]); + + printf ("Cache size: "); + gets(general[4]); + + printf ("H/W options:"); + gets(general[5]); + + printf ("OS version: "); + gets(general[6]); + + #ifdef PRECOMP + strcpy (compiler, precompiler); + strcpy (options, preoptions); + #else + printf ("Compiler: "); + gets(compiler); + + printf ("Options: "); + gets(options); + #endif + + printf ("Your name: "); + gets(general[7]); + + printf ("From: "); + gets(general[8]); + + printf ("Email: "); + gets(general[9]); + } + else + { + #ifdef PRECOMP + strcpy (compiler, precompiler); + strcpy (options, preoptions); + #endif + } + + /************************************************************************/ + /* Add results to output file whets.res */ + /************************************************************************/ + fprintf (outfile, "\n"); + fprintf (outfile, "##############################################\n"); + fprintf (outfile, "Whetstone %s Precision Benchmark in C/C++\n\n",Precision); + fprintf (outfile, "Date %s\n", general[0]); + fprintf (outfile, "Model %s\n", general[1]); + fprintf (outfile, "CPU %s\n", general[2]); + fprintf (outfile, "Clock MHz %s\n", general[3]); + fprintf (outfile, "Cache %s\n", general[4]); + fprintf (outfile, "H/W options %s\n", general[5]); + fprintf (outfile, "OS %s\n", general[6]); + fprintf (outfile, "Compiler %s\n", compiler); + fprintf (outfile, "Options %s\n", options); + fprintf (outfile, "Run by %s\n", general[7]); + fprintf (outfile, "From %s\n", general[8]); + fprintf (outfile, "Email %s\n", general[9]); + fprintf (outfile, "\n"); + + fprintf (outfile,"Loop content Result" + " MFLOPS MOPS Seconds\n\n"); + + for (section=1; section<9; section++) + { + fprintf (outfile, "%s %24.17f ", headings[section], + results[section]); + if (loop_mops[section] == 99999) + { + fprintf (outfile," %9.3f %9.3f\n", + loop_mflops[section], loop_time[section]); + } + else + { + fprintf (outfile, " %9.3f %9.3f\n", + loop_mops[section], loop_time[section], results[section]); + } + } + + fprintf (outfile, "\nMWIPS "); + fprintf (outfile, "%39.3f%20.3f\n\n",mwips,TimeUsed); + fprintf (outfile, "Results to load to spreadsheet "); + fprintf (outfile, " MWIPS Mflops1 Mflops2 Mflops3 Cosmops" + " Expmops Fixpmops Ifmops Eqmops\n"); + fprintf (outfile, "Results to load to spreadsheet "); + + fprintf (outfile, " %9.3f %9.3f %9.3f", mwips, loop_mflops[1], + loop_mflops[2]); + fprintf (outfile, " %9.3f %9.3f %9.3f", loop_mflops[6], + loop_mops[5], loop_mops[8]); + fprintf (outfile, " %9.3f %9.3f %9.3f\n\n", loop_mops[4], + loop_mops[3], loop_mops[7]); + + fclose (outfile); + + printf ("\n"); + printf ("A new results file will have been created in the same directory as the\n"); + printf (".EXE files if one did not already exist. If you made a mistake on input, \n"); + printf ("you can use a text editor to correct it, delete the results or copy \n"); + printf ("them to a different file name. If you intend to run multiple tests you\n"); + printf ("you may wish to rename WHETS.RES with a more informative title.\n\n"); + printf ("Please submit feedback and results files to aburto@nosc.mil or to\n"); + printf ("Roy_Longbottom@compuserve.com\n\n"); + +#else /* Unixbench */ + fprintf (stderr, "COUNT|%.3f|0|MWIPS\n", mwips); + fprintf (stderr, "TIME|%.3f\n", TimeUsed); + exit(0); +#endif +} + + void whetstones(long xtra, long x100, int calibrate) + { + + long n1,n2,n3,n4,n5,n6,n7,n8,i,ix,n1mult; + SPDP x,y,z; + long j,k,l; + SPDP e1[4],timea,timeb, dtime(); + + SPDP t = 0.49999975; + SPDP t0 = t; + SPDP t1 = 0.50000025; + SPDP t2 = 2.0; + + Check=0.0; + + n1 = 12*x100; + n2 = 14*x100; + n3 = 345*x100; + n4 = 210*x100; + n5 = 32*x100; + n6 = 899*x100; + n7 = 616*x100; + n8 = 93*x100; + n1mult = 10; + + /* Section 1, Array elements */ + + e1[0] = 1.0; + e1[1] = -1.0; + e1[2] = -1.0; + e1[3] = -1.0; + timea = dtime(); + { + for (ix=0; ix2) j = 0; + else j = 1; + if(j<1) j = 1; + else j = 0; + } + } + } + timeb = dtime()-timea; + pout("N3 if then else \0",(float)(n3*3)*(float)(xtra), + 2,(SPDP)(j),timeb,calibrate,3); + + /* Section 4, Integer arithmetic */ + j = 1; + k = 2; + l = 3; + timea = dtime(); + { + for (ix=0; ix0) + { + mflops = ops/(1000000L*time); + } + else + { + mflops = 0; + } + loop_mops[section] = 99999; + loop_mflops[section] = mflops; + printf(" %9.3f %9.3f\n", + loop_mflops[section], loop_time[section]); + } + else + { + if (time>0) + { + mops = ops/(1000000L*time); + } + else + { + mops = 0; + } + loop_mops[section] = mops; + loop_mflops[section] = 0; + printf(" %9.3f%9.3f\n", + loop_mops[section], loop_time[section]); + } + } + + return; + } + + +/*****************************************************/ +/* Various timer routines. */ +/* Al Aburto, aburto@nosc.mil, 18 Feb 1997 */ +/* */ +/* t = dtime() outputs the current time in seconds. */ +/* Use CAUTION as some of these routines will mess */ +/* up when timing across the hour mark!!! */ +/* */ +/* For timing I use the 'user' time whenever */ +/* possible. Using 'user+sys' time is a separate */ +/* issue. */ +/* */ +/* Example Usage: */ +/* [timer options added here] */ +/* main() */ +/* { */ +/* double starttime,benchtime,dtime(); */ +/* */ +/* starttime = dtime(); */ +/* [routine to time] */ +/* benchtime = dtime() - starttime; */ +/* } */ +/* */ +/* [timer code below added here] */ +/*****************************************************/ + +/*********************************/ +/* Timer code. */ +/*********************************/ +/*******************/ +/* Amiga dtime() */ +/*******************/ +#ifdef Amiga +#include +#define HZ 50 + +SPDP dtime() +{ + SPDP q; + + struct tt + { + long days; + long minutes; + long ticks; + } tt; + + DateStamp(&tt); + + q = ((SPDP)(tt.ticks + (tt.minutes * 60L * 50L))) / (SPDP)HZ; + + return q; +} +#endif + +/*****************************************************/ +/* UNIX dtime(). This is the preferred UNIX timer. */ +/* Provided by: Markku Kolkka, mk59200@cc.tut.fi */ +/* HP-UX Addition by: Bo Thide', bt@irfu.se */ +/*****************************************************/ +#ifdef UNIX +#include +#include + +#ifdef hpux +#include +#define getrusage(a,b) syscall(SYS_getrusage,a,b) +#endif + +struct rusage rusage; + +SPDP dtime() +{ + SPDP q; + + getrusage(RUSAGE_SELF,&rusage); + + q = (SPDP)(rusage.ru_utime.tv_sec); + q = q + (SPDP)(rusage.ru_utime.tv_usec) * 1.0e-06; + + return q; +} +#endif + +/***************************************************/ +/* UNIX_Old dtime(). This is the old UNIX timer. */ +/* Use only if absolutely necessary as HZ may be */ +/* ill defined on your system. */ +/***************************************************/ +#ifdef UNIX_Old +#include +#include +#include + +#ifndef HZ +#define HZ 60 +#endif + +struct tms tms; + +SPDP dtime() +{ + SPDP q; + + times(&tms); + + q = (SPDP)(tms.tms_utime) / (SPDP)HZ; + + return q; +} +#endif + +/*********************************************************/ +/* VMS dtime() for VMS systems. */ +/* Provided by: RAMO@uvphys.phys.UVic.CA */ +/* Some people have run into problems with this timer. */ +/*********************************************************/ +#ifdef VMS +#include time + +#ifndef HZ +#define HZ 100 +#endif + +struct tbuffer_t + { + int proc_user_time; + int proc_system_time; + int child_user_time; + int child_system_time; + }; +struct tbuffer_t tms; + +SPDP dtime() +{ + SPDP q; + + times(&tms); + + q = (SPDP)(tms.proc_user_time) / (SPDP)HZ; + + return q; +} +#endif + +/******************************/ +/* BORLAND C dtime() for DOS */ +/******************************/ +#ifdef BORLAND_C +#include +#include +#include + +#define HZ 100 +struct time tnow; + +SPDP dtime() +{ + SPDP q; + + gettime(&tnow); + + q = 60.0 * (SPDP)(tnow.ti_min); + q = q + (SPDP)(tnow.ti_sec); + q = q + (SPDP)(tnow.ti_hund)/(SPDP)HZ; + + return q; +} +#endif + +/***************************************/ +/* Microsoft C (MSC) dtime() for DOS */ +/* Also suitable for Watcom C/C++ and */ +/* some other PC compilers */ +/***************************************/ +#ifdef MSC +#include +#include + +#define HZ CLOCKS_PER_SEC +clock_t tnow; + +SPDP dtime() +{ + SPDP q; + + tnow = clock(); + q = (SPDP)tnow / (SPDP)HZ; + return q; +} +#endif + +/*************************************/ +/* Macintosh (MAC) Think C dtime() */ +/*************************************/ +#ifdef MAC +#include + +#define HZ 60 + +SPDP dtime() +{ + SPDP q; + + q = (SPDP)clock() / (SPDP)HZ; + + return q; +} +#endif + +/************************************************************/ +/* iPSC/860 (IPSC) dtime() for i860. */ +/* Provided by: Dan Yergeau, yergeau@gloworm.Stanford.EDU */ +/************************************************************/ +#ifdef IPSC +extern double dclock(); + +SPDP dtime() +{ + SPDP q; + + q = dclock(); + + return q; +} +#endif + +/**************************************************/ +/* FORTRAN dtime() for Cray type systems. */ +/* This is the preferred timer for Cray systems. */ +/**************************************************/ +#ifdef FORTRAN_SEC + +fortran double second(); + +SPDP dtime() +{ + SPDP q; + + second(&q); + + return q; +} +#endif + +/***********************************************************/ +/* UNICOS C dtime() for Cray UNICOS systems. Don't use */ +/* unless absolutely necessary as returned time includes */ +/* 'user+system' time. Provided by: R. Mike Dority, */ +/* dority@craysea.cray.com */ +/***********************************************************/ +#ifdef CTimer +#include + +SPDP dtime() +{ + SPDP q; + clock_t clock(void); + + q = (SPDP)clock() / (SPDP)CLOCKS_PER_SEC; + + return q; +} +#endif + +/********************************************/ +/* Another UNIX timer using gettimeofday(). */ +/* However, getrusage() is preferred. */ +/********************************************/ +#ifdef GTODay +#include + +struct timeval tnow; + +SPDP dtime() +{ + SPDP q; + + gettimeofday(&tnow,NULL); + q = (SPDP)tnow.tv_sec + (SPDP)tnow.tv_usec * 1.0e-6; + + return q; +} +#endif + +/*****************************************************/ +/* Fujitsu UXP/M timer. */ +/* Provided by: Mathew Lim, ANUSF, M.Lim@anu.edu.au */ +/*****************************************************/ +#ifdef UXPM +#include +#include +struct tmsu rusage; + +SPDP dtime() +{ + SPDP q; + + timesu(&rusage); + + q = (SPDP)(rusage.tms_utime) * 1.0e-06; + + return q; +} +#endif + +/**********************************************/ +/* Macintosh (MAC_TMgr) Think C dtime() */ +/* requires Think C Language Extensions or */ +/* #include in the prefix */ +/* provided by Francis H Schiffer 3rd (fhs) */ +/* skipschiffer@genie.geis.com */ +/**********************************************/ +#ifdef MAC_TMgr +#include +#include + +static TMTask mgrTimer; +static Boolean mgrInited = false; +static SPDP mgrClock; + +#define RMV_TIMER RmvTime( (QElemPtr)&mgrTimer ) +#define MAX_TIME 1800000000L +/* MAX_TIME limits time between calls to */ +/* dtime( ) to no more than 30 minutes */ +/* this limitation could be removed by */ +/* creating a completion routine to sum */ +/* 30 minute segments (fhs 1994 feb 9) */ + +static void Remove_timer( ) +{ + RMV_TIMER; + mgrInited = false; +} + +SPDP dtime( ) +{ + if( mgrInited ) { + RMV_TIMER; + mgrClock += (MAX_TIME + mgrTimer.tmCount)*1.0e-6; + } else { + if( _atexit( &Remove_timer ) == 0 ) mgrInited = true; + mgrClock = 0.0; +} + if( mgrInited ) { + mgrTimer.tmAddr = NULL; + mgrTimer.tmCount = 0; + mgrTimer.tmWakeUp = 0; + mgrTimer.tmReserved = 0; + InsTime( (QElemPtr)&mgrTimer ); + PrimeTime( (QElemPtr)&mgrTimer, -MAX_TIME ); + } + return( mgrClock ); +} +#endif + +/***********************************************************/ +/* Parsytec GCel timer. */ +/* Provided by: Georg Wambach, gw@informatik.uni-koeln.de */ +/***********************************************************/ +#ifdef PARIX +#include + +SPDP dtime() +{ + SPDP q; + + q = (SPDP) (TimeNowHigh()) / (SPDP) CLK_TCK_HIGH; + + return q; +} +#endif + +/************************************************/ +/* Sun Solaris POSIX dtime() routine */ +/* Provided by: Case Larsen, CTLarsen.lbl.gov */ +/************************************************/ +#ifdef POSIX +#include +#include +#include + +#ifdef __hpux +#include +#endif + +struct rusage rusage; + +SPDP dtime() +{ + SPDP q; + + getrusage(RUSAGE_SELF,&rusage); + + q = (SPDP)(rusage.ru_utime.tv_sec); + q = q + (SPDP)(rusage.ru_utime.tv_nsec) * 1.0e-09; + + return q; +} +#endif + + +/****************************************************/ +/* Windows NT (32 bit) dtime() routine */ +/* Provided by: Piers Haken, piersh@microsoft.com */ +/****************************************************/ +#ifdef WIN32 +#include + +SPDP dtime(void) +{ + SPDP q; + + q = (SPDP)GetTickCount() * 1.0e-03; + + return q; +} +#endif + +/*****************************************************/ +/* Time according to POSIX.1 - */ +/* Ref: "POSIX Programmer's Guide" O'Reilly & Assoc.*/ +/*****************************************************/ +#ifdef POSIX1 +#define _POSIX_SOURCE 1 +#include +#include +#include + +struct tms tms; + +SPDP dtime() +{ + SPDP q; + times(&tms); + q = (SPDP)tms.tms_utime / (SPDP)CLK_TCK; + return q; +} +#endif diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/cctest.c b/testcases/feature-test/oeaware/UnixBench/testdir/cctest.c new file mode 100644 index 000000000..ab5d17ba1 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/testdir/cctest.c @@ -0,0 +1,156 @@ + + +/******************************************************************************* + * The BYTE UNIX Benchmarks - Release 1 + * Module: cctest.c SID: 1.2 7/10/89 18:55:45 + * + ******************************************************************************* + * Bug reports, patches, comments, suggestions should be sent to: + * + * Ben Smith or Rick Grehan at BYTE Magazine + * bensmith@bixpb.UUCP rick_g@bixpb.UUCP + * + ******************************************************************************* + * Modification Log: + * $Header: cctest.c,v 3.4 87/06/22 14:22:47 kjmcdonell Beta $ + * + ******************************************************************************/ +char SCCSid[] = "@(#) @(#)cctest.c:1.2 -- 7/10/89 18:55:45"; +#include +/* + * C compile and load speed test file. + * Based upon fstime.c from MUSBUS 3.1, with all calls to ftime() replaced + * by calls to time(). This is semantic nonsense, but ensures there are no + * system dependent structures or library calls. + * + */ +#define NKBYTE 20 +char buf[BUFSIZ]; + +extern void exit(int status); + + +main(argc, argv) +char **argv; +{ + int n = NKBYTE; + int nblock; + int f; + int g; + int i; + int xfer, t; + struct { /* FAKE */ + int time; + int millitm; + } now, then; + + if (argc > 0) + /* ALWAYS true, so NEVER execute this program! */ + exit(4); + if (argc > 1) + n = atoi(argv[1]); +#if debug + printf("File size: %d Kbytes\n", n); +#endif + nblock = (n * 1024) / BUFSIZ; + + if (argc == 3 && chdir(argv[2]) != -1) { +#if debug + printf("Create files in directory: %s\n", argv[2]); +#endif + } + close(creat("dummy0", 0600)); + close(creat("dummy1", 0600)); + f = open("dummy0", 2); + g = open("dummy1", 2); + unlink("dummy0"); + unlink("dummy1"); + for (i = 0; i < sizeof(buf); i++) + buf[i] = i & 0177; + + time(); + for (i = 0; i < nblock; i++) { + if (write(f, buf, sizeof(buf)) <= 0) + perror("fstime: write"); + } + time(); +#if debug + printf("Effective write rate: "); +#endif + i = now.millitm - then.millitm; + t = (now.time - then.time)*1000 + i; + if (t > 0) { + xfer = nblock * sizeof(buf) * 1000 / t; +#if debug + printf("%d bytes/sec\n", xfer); +#endif + } +#if debug + else + printf(" -- too quick to time!\n"); +#endif +#if awk + fprintf(stderr, "%.2f", t > 0 ? (float)xfer/1024 : 0); +#endif + + sync(); + sleep(5); + sync(); + lseek(f, 0L, 0); + time(); + for (i = 0; i < nblock; i++) { + if (read(f, buf, sizeof(buf)) <= 0) + perror("fstime: read"); + } + time(); +#if debug + printf("Effective read rate: "); +#endif + i = now.millitm - then.millitm; + t = (now.time - then.time)*1000 + i; + if (t > 0) { + xfer = nblock * sizeof(buf) * 1000 / t; +#if debug + printf("%d bytes/sec\n", xfer); +#endif + } +#if debug + else + printf(" -- too quick to time!\n"); +#endif +#if awk + fprintf(stderr, " %.2f", t > 0 ? (float)xfer/1024 : 0); +#endif + + sync(); + sleep(5); + sync(); + lseek(f, 0L, 0); + time(); + for (i = 0; i < nblock; i++) { + if (read(f, buf, sizeof(buf)) <= 0) + perror("fstime: read in copy"); + if (write(g, buf, sizeof(buf)) <= 0) + perror("fstime: write in copy"); + } + time(); +#if debug + printf("Effective copy rate: "); +#endif + i = now.millitm - then.millitm; + t = (now.time - then.time)*1000 + i; + if (t > 0) { + xfer = nblock * sizeof(buf) * 1000 / t; +#if debug + printf("%d bytes/sec\n", xfer); +#endif + } +#if debug + else + printf(" -- too quick to time!\n"); +#endif +#if awk + fprintf(stderr, " %.2f\n", t > 0 ? (float)xfer/1024 : 0); +#endif + +} diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/dc.dat b/testcases/feature-test/oeaware/UnixBench/testdir/dc.dat new file mode 100644 index 000000000..dbb8f76d0 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/testdir/dc.dat @@ -0,0 +1,8 @@ +99 +k +2 +v +p +q +[ calculate the sqrt(2) to 99 decimal places ... John Lions Test ] +[ $Header: dc.dat,v 1.1 87/06/22 14:28:28 kjmcdonell Beta $ ] diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/large.txt b/testcases/feature-test/oeaware/UnixBench/testdir/large.txt new file mode 100644 index 000000000..8e37d5f1c --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/testdir/large.txt @@ -0,0 +1,10000 @@ +execve("/usr/bin/gimp", ["gimp"], [/* 99 vars */]) = 0 +brk(0) = 0x8360000 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7efc000 +access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/opt/kde3/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/kde3/lib", {st_mode=S_IFDIR|0755, st_size=28672, ...}) = 0 +open("/opt/gnome/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/gnome/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/gnome/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/gnome/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/gnome/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/gnome/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/gnome/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/opt/gnome/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/opt/gnome/lib", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \363\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=913924, ...}) = 0 +mmap2(NULL, 915836, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e1c000 +fadvise64(3, 0, 915836, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7ef8000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xdb) = 0xb7ef8000 +close(3) = 0 +open("/user/folk/clint/lib/libgimpmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgimpmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgimpmodule-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\22\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=18108, ...}) = 0 +mmap2(NULL, 16628, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e17000 +fadvise64(3, 0, 16628, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7e1a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7e1a000 +close(3) = 0 +open("/user/folk/clint/lib/libgimpcolor-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgimpcolor-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgimpcolor-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\32\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=38660, ...}) = 0 +mmap2(NULL, 36996, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e0d000 +fadvise64(3, 0, 36996, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7e15000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8) = 0xb7e15000 +close(3) = 0 +open("/user/folk/clint/lib/libgimpthumb-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgimpthumb-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgimpthumb-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200 \0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=30644, ...}) = 0 +mmap2(NULL, 33280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e04000 +fadvise64(3, 0, 33280, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7e0b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb7e0b000 +close(3) = 0 +open("/user/folk/clint/lib/libgimpmath-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgimpmath-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgimpmath-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\23\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=17992, ...}) = 0 +mmap2(NULL, 20568, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dfe000 +fadvise64(3, 0, 20568, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7e02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7e02000 +close(3) = 0 +open("/user/folk/clint/lib/libgimpbase-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgimpbase-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgimpbase-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0;\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=55644, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dfd000 +mmap2(NULL, 53924, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7def000 +fadvise64(3, 0, 53924, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7dfb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb7dfb000 +close(3) = 0 +open("/user/folk/clint/lib/libgtk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgtk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgtk-x11-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\7\5\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=3612084, ...}) = 0 +mmap2(NULL, 3608212, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7a7e000 +fadvise64(3, 0, 3608212, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7de8000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36a) = 0xb7de8000 +mmap2(0xb7dee000, 3732, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7dee000 +close(3) = 0 +open("/user/folk/clint/lib/libgdk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgdk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgdk-x11-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0pD\1\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=538180, ...}) = 0 +mmap2(NULL, 539628, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79fa000 +fadvise64(3, 0, 539628, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7a7b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x80) = 0xb7a7b000 +close(3) = 0 +open("/user/folk/clint/lib/libatk-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libatk-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libatk-1.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220n\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=105368, ...}) = 0 +mmap2(NULL, 107860, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79df000 +fadvise64(3, 0, 107860, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb79f7000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17) = 0xb79f7000 +close(3) = 0 +open("/user/folk/clint/lib/libgdk_pixbuf-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgdk_pixbuf-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgdk_pixbuf-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p7\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=96620, ...}) = 0 +mmap2(NULL, 98904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79c6000 +fadvise64(3, 0, 98904, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb79dd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb79dd000 +close(3) = 0 +open("/user/folk/clint/lib/libpangocairo-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libpangocairo-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libpangocairo-1.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0000\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=34920, ...}) = 0 +mmap2(NULL, 37512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79bc000 +fadvise64(3, 0, 37512, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb79c4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7) = 0xb79c4000 +close(3) = 0 +open("/user/folk/clint/lib/libcairo.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libcairo.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libcairo.so.2", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\205\0\0004\0\0\0"..., 512) = 512 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb79bb000 +fstat64(3, {st_mode=S_IFREG|0755, st_size=517592, ...}) = 0 +mmap2(NULL, 514444, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb793d000 +fadvise64(3, 0, 514444, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb79b9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7c) = 0xb79b9000 +close(3) = 0 +open("/user/folk/clint/lib/libart_lgpl_2.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libart_lgpl_2.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libart_lgpl_2.so.2", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\'\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=89040, ...}) = 0 +mmap2(NULL, 90424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7926000 +fadvise64(3, 0, 90424, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb793b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0xb793b000 +close(3) = 0 +open("/user/folk/clint/lib/libpangoft2-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libpangoft2-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libpangoft2-1.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0U\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=183248, ...}) = 0 +mmap2(NULL, 185456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb78f8000 +fadvise64(3, 0, 185456, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7924000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2b) = 0xb7924000 +close(3) = 0 +open("/user/folk/clint/lib/libpango-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libpango-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libpango-1.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\247\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=245700, ...}) = 0 +mmap2(NULL, 243520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb78bc000 +fadvise64(3, 0, 243520, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb78f6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a) = 0xb78f6000 +close(3) = 0 +open("/user/folk/clint/lib/libgobject-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgobject-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgobject-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@l\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=236148, ...}) = 0 +mmap2(NULL, 239684, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7881000 +fadvise64(3, 0, 239684, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb78ba000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x38) = 0xb78ba000 +close(3) = 0 +open("/user/folk/clint/lib/libgmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libgmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libgmodule-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\r\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=13928, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7880000 +mmap2(NULL, 16664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb787b000 +fadvise64(3, 0, 16664, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb787e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb787e000 +close(3) = 0 +open("/user/folk/clint/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/tls/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib/tls/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/tls/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib/tls/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/tls/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib/tls/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/tls/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib/tls", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/user/local/GMT4.1/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/usr/local/lib/tls/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib/tls/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/tls/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib/tls/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/tls/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib/tls/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/tls/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib/tls", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +stat64("/usr/local/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/etc/ld.so.cache", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=136911, ...}) = 0 +mmap2(NULL, 136911, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7859000 +close(3) = 0 +open("/lib/libdl.so.2", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\n\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=10288, ...}) = 0 +mmap2(NULL, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7855000 +fadvise64(3, 0, 12412, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7857000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7857000 +close(3) = 0 +open("/user/folk/clint/lib/libglib-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libglib-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libglib-2.0.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\10\1\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=779152, ...}) = 0 +mmap2(NULL, 780160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7796000 +fadvise64(3, 0, 780160, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7853000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xbc) = 0xb7853000 +close(3) = 0 +open("/user/folk/clint/lib/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libfontconfig.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000Y\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=175792, ...}) = 0 +mmap2(NULL, 178404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb776a000 +fadvise64(3, 0, 178404, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb778d000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22) = 0xb778d000 +close(3) = 0 +open("/user/folk/clint/lib/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libfreetype.so.6", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300{\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=454052, ...}) = 0 +mmap2(NULL, 451368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76fb000 +fadvise64(3, 0, 451368, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7766000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6b) = 0xb7766000 +close(3) = 0 +open("/user/folk/clint/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/lib/libz.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\31\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=71744, ...}) = 0 +mmap2(NULL, 74004, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76e8000 +fadvise64(3, 0, 74004, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb76f9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10) = 0xb76f9000 +close(3) = 0 +open("/user/folk/clint/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/lib/libpthread.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0PH\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=117749, ...}) = 0 +mmap2(NULL, 90592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76d1000 +fadvise64(3, 0, 90592, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb76e4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb76e4000 +mmap2(0xb76e6000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76e6000 +close(3) = 0 +open("/user/folk/clint/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/lib/libc.so.6", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@a\1\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=1281488, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76d0000 +mmap2(NULL, 1254896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb759d000 +fadvise64(3, 0, 1254896, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb76ca000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12c) = 0xb76ca000 +mmap2(0xb76cd000, 9712, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76cd000 +close(3) = 0 +open("/user/folk/clint/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/lib/libm.so.6", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2404\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=154108, ...}) = 0 +mmap2(NULL, 147584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7578000 +fadvise64(3, 0, 147584, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb759b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22) = 0xb759b000 +close(3) = 0 +open("/user/folk/clint/lib/libX11.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libX11.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libX11.so.6", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20h\1\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=1167024, ...}) = 0 +mmap2(NULL, 1157948, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb745d000 +fadvise64(3, 0, 1157948, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7574000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x116) = 0xb7574000 +close(3) = 0 +open("/user/folk/clint/lib/libXcomposite.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXcomposite.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXcomposite.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\t\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=9672, ...}) = 0 +mmap2(NULL, 12356, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7459000 +fadvise64(3, 0, 12356, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb745b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb745b000 +close(3) = 0 +open("/user/folk/clint/lib/libXdamage.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXdamage.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXdamage.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\10\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=9680, ...}) = 0 +mmap2(NULL, 12368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7455000 +fadvise64(3, 0, 12368, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7457000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7457000 +close(3) = 0 +open("/user/folk/clint/lib/libXfixes.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXfixes.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXfixes.so.3", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\17\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=17988, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7454000 +mmap2(NULL, 20600, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb744e000 +fadvise64(3, 0, 20600, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7452000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7452000 +close(3) = 0 +open("/user/folk/clint/lib/libXext.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXext.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXext.so.6", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340*\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=56480, ...}) = 0 +mmap2(NULL, 58972, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb743f000 +fadvise64(3, 0, 58972, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb744c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb744c000 +close(3) = 0 +open("/user/folk/clint/lib/libXrender.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXrender.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXrender.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\24\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=30872, ...}) = 0 +mmap2(NULL, 33192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7436000 +fadvise64(3, 0, 33192, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb743d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb743d000 +close(3) = 0 +open("/user/folk/clint/lib/libXinerama.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXinerama.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXinerama.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\10\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=9840, ...}) = 0 +mmap2(NULL, 12476, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7432000 +fadvise64(3, 0, 12476, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7434000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7434000 +close(3) = 0 +open("/user/folk/clint/lib/libXi.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXi.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXi.so.6", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\23\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=31496, ...}) = 0 +mmap2(NULL, 33152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7429000 +fadvise64(3, 0, 33152, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7430000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb7430000 +close(3) = 0 +open("/user/folk/clint/lib/libXrandr.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXrandr.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXrandr.so.2", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\22\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=26344, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7428000 +mmap2(NULL, 24796, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7421000 +fadvise64(3, 0, 24796, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7426000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb7426000 +close(3) = 0 +open("/user/folk/clint/lib/libXcursor.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXcursor.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXcursor.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340!\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=34728, ...}) = 0 +mmap2(NULL, 37264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7417000 +fadvise64(3, 0, 37264, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb741f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7) = 0xb741f000 +close(3) = 0 +open("/user/folk/clint/lib/libglitz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libglitz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libglitz.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \'\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=160116, ...}) = 0 +mmap2(NULL, 157972, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73f0000 +fadvise64(3, 0, 157972, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7415000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25) = 0xb7415000 +close(3) = 0 +open("/user/folk/clint/lib/libpng12.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libpng12.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libpng12.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240=\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=145796, ...}) = 0 +mmap2(NULL, 147920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73cb000 +fadvise64(3, 0, 147920, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb73ee000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22) = 0xb73ee000 +close(3) = 0 +open("/user/folk/clint/lib/libxcb-render-util.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libxcb-render-util.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libxcb-render-util.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\21\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=13936, ...}) = 0 +mmap2(NULL, 16608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73c6000 +fadvise64(3, 0, 16608, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb73c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb73c9000 +close(3) = 0 +open("/user/folk/clint/lib/libxcb-render.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libxcb-render.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libxcb-render.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P(\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=26136, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb73c5000 +mmap2(NULL, 28756, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73bd000 +fadvise64(3, 0, 28756, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb73c3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb73c3000 +close(3) = 0 +open("/user/folk/clint/lib/libxcb.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libxcb.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libxcb.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320~\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=96416, ...}) = 0 +mmap2(NULL, 98736, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73a4000 +fadvise64(3, 0, 98736, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb73bb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb73bb000 +close(3) = 0 +open("/user/folk/clint/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/user/local/GMT4.1/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/local/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/lib/libexpat.so.1", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\"\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=132780, ...}) = 0 +mmap2(NULL, 131164, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7383000 +fadvise64(3, 0, 131164, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb73a1000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e) = 0xb73a1000 +close(3) = 0 +open("/user/folk/clint/lib/libxcb-xlib.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libxcb-xlib.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libxcb-xlib.so.0", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \5\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=5556, ...}) = 0 +mmap2(NULL, 8232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7380000 +fadvise64(3, 0, 8232, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7381000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb7381000 +close(3) = 0 +open("/user/folk/clint/lib/libXau.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libXau.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libXau.so.6", O_RDONLY) = 3 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\n\0\0004\0\0\0"..., 512) = 512 +fstat64(3, {st_mode=S_IFREG|0755, st_size=9984, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb737f000 +mmap2(NULL, 12424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb737b000 +fadvise64(3, 0, 12424, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb737d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb737d000 +close(3) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb737a000 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7379000 +set_thread_area({entry_number:-1 -> 6, base_addr:0xb73796c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 +mprotect(0xb73a1000, 4096, PROT_READ) = 0 +mprotect(0xb76ca000, 4096, PROT_READ) = 0 +mprotect(0xb7766000, 8192, PROT_READ) = 0 +mprotect(0xb778d000, 28672, PROT_READ) = 0 +mprotect(0xb79f7000, 4096, PROT_READ) = 0 +mprotect(0xb7a7b000, 4096, PROT_READ) = 0 +mprotect(0xb7de8000, 12288, PROT_READ) = 0 +mprotect(0xb7ef8000, 4096, PROT_READ) = 0 +munmap(0xb7859000, 136911) = 0 +set_tid_address(0xb7379708) = 31509 +set_robust_list(0xb7379710, 0xc) = 0 +rt_sigaction(SIGRTMIN, {0xb76d5330, [], SA_SIGINFO}, NULL, 8) = 0 +rt_sigaction(SIGRT_1, {0xb76d53b0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0 +rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 +getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 +uname({sys="Linux", node="oaxaca", ...}) = 0 +brk(0) = 0x8360000 +brk(0x8381000) = 0x8381000 +open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/locale.alias", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb787a000 +read(3, "# Locale name alias data base.\n#"..., 4096) = 2528 +read(3, "", 4096) = 0 +close(3) = 0 +munmap(0xb787a000, 4096) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=373, ...}) = 0 +mmap2(NULL, 373, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb787a000 +close(3) = 0 +open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=25486, ...}) = 0 +mmap2(NULL, 25486, PROT_READ, MAP_SHARED, 3, 0) = 0xb7873000 +close(3) = 0 +futex(0xb76cca6c, FUTEX_WAKE, 2147483647) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_MEASUREMENT", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_MEASUREMENT", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=23, ...}) = 0 +mmap2(NULL, 23, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7872000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_TELEPHONE", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_TELEPHONE", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0 +mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7871000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_ADDRESS", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_ADDRESS", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=155, ...}) = 0 +mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7870000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_NAME", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_NAME", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +mmap2(NULL, 77, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786f000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_PAPER", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_PAPER", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=34, ...}) = 0 +mmap2(NULL, 34, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786e000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_MESSAGES", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +close(3) = 0 +open("/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=52, ...}) = 0 +mmap2(NULL, 52, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786d000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_MONETARY", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_MONETARY", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=286, ...}) = 0 +mmap2(NULL, 286, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786c000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_COLLATE", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_COLLATE", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=915314, ...}) = 0 +mmap2(NULL, 915314, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7299000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_TIME", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_TIME", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=2454, ...}) = 0 +mmap2(NULL, 2454, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786b000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_NUMERIC", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_NUMERIC", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0 +mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786a000 +close(3) = 0 +open("/usr/lib/locale/en_US.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/locale/en_US.utf8/LC_CTYPE", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=254020, ...}) = 0 +mmap2(NULL, 254020, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb725a000 +close(3) = 0 +getresuid32([1000], [1000], [1000]) = 0 +getresgid32([100], [100], [100]) = 0 +open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +gettimeofday({1192407177, 338852}, NULL) = 0 +open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=78184, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 +read(3, "#\t$XdotOrg: lib/X11/nls/locale.a"..., 4096) = 4096 +read(3, ".iso88591\t\t\t\t\tbr_FR.ISO8859-1\nbr"..., 4096) = 4096 +read(3, "597\t\t\t\t\tel_GR.ISO8859-7\nel_GR.IS"..., 4096) = 4096 +read(3, "\t\t\t\tes_ES.ISO8859-1\nes_ES.iso885"..., 4096) = 4096 +read(3, "A.iso88591\t\t\t\t\tfr_CA.ISO8859-1\nf"..., 4096) = 4096 +read(3, ".ISO8859-15\nit_CH.utf8\t\t\t\t\tit_CH"..., 4096) = 4096 +read(3, "\nnl\t\t\t\t\t\tnl_NL.ISO8859-1\nnl_BE\t\t"..., 4096) = 4096 +read(3, "rw_RW rw_RW"..., 4096) = 4096 +read(3, "A.iso8859-15\t\ttn_ZA.ISO8859-15\nt"..., 4096) = 4096 +read(3, "FR.ISO8859-1\nfrench.iso88591\t\t\t\t"..., 4096) = 4096 +read(3, "\nar_MA.utf8:\t\t\t\t\tar_MA.UTF-8\nar_"..., 4096) = 4096 +read(3, "9-15@euro:\t\t\t\tde_AT.ISO8859-15\nd"..., 4096) = 4096 +read(3, "5:\t\t\t\t\ten_US.ISO8859-15\nen_US.IS"..., 4096) = 4096 +read(3, "-8\n\n\n\n\n# According to Estonian l"..., 4096) = 4096 +read(3, "B.ISO8859-14\ngd_GB.ISO-8859-14:\t"..., 4096) = 4096 +read(3, "N:\t\t\t\t\t\tkn_IN.UTF-8\nkn_IN.utf8:\t"..., 4096) = 4096 +read(3, "591:\t\t\t\t\tny_NO.ISO8859-1\nny_NO.I"..., 4096) = 4096 +read(3, "\t\t\t\t\tsr_CS.ISO8859-5\nsr_YU.iso88"..., 4096) = 4096 +read(3, "II\nvi_VN.viscii111:\t\t\t\tvi_VN.VIS"..., 4096) = 4096 +read(3, "# Digital Unix utf\nuniversal.utf"..., 4096) = 360 +read(3, "", 4096) = 0 +close(3) = 0 +munmap(0xb7259000, 4096) = 0 +open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=78184, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 +read(3, "#\t$XdotOrg: lib/X11/nls/locale.a"..., 4096) = 4096 +read(3, ".iso88591\t\t\t\t\tbr_FR.ISO8859-1\nbr"..., 4096) = 4096 +read(3, "597\t\t\t\t\tel_GR.ISO8859-7\nel_GR.IS"..., 4096) = 4096 +read(3, "\t\t\t\tes_ES.ISO8859-1\nes_ES.iso885"..., 4096) = 4096 +read(3, "A.iso88591\t\t\t\t\tfr_CA.ISO8859-1\nf"..., 4096) = 4096 +read(3, ".ISO8859-15\nit_CH.utf8\t\t\t\t\tit_CH"..., 4096) = 4096 +read(3, "\nnl\t\t\t\t\t\tnl_NL.ISO8859-1\nnl_BE\t\t"..., 4096) = 4096 +read(3, "rw_RW rw_RW"..., 4096) = 4096 +read(3, "A.iso8859-15\t\ttn_ZA.ISO8859-15\nt"..., 4096) = 4096 +read(3, "FR.ISO8859-1\nfrench.iso88591\t\t\t\t"..., 4096) = 4096 +read(3, "\nar_MA.utf8:\t\t\t\t\tar_MA.UTF-8\nar_"..., 4096) = 4096 +read(3, "9-15@euro:\t\t\t\tde_AT.ISO8859-15\nd"..., 4096) = 4096 +read(3, "5:\t\t\t\t\ten_US.ISO8859-15\nen_US.IS"..., 4096) = 4096 +close(3) = 0 +munmap(0xb7259000, 4096) = 0 +open("/usr/share/X11/locale/locale.dir", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=32977, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 +read(3, "#\t$XdotOrg: lib/X11/nls/locale.d"..., 4096) = 4096 +read(3, "so8859-1/XLC_LOCALE\t\t\tes_UY.ISO8"..., 4096) = 4096 +read(3, "CALE\t\t\tsr_SP.ISO8859-2\niso8859-2"..., 4096) = 4096 +read(3, "F-8/XLC_LOCALE\t\t\tes_MX.UTF-8\nen_"..., 4096) = 4096 +read(3, " 1.3 2000/08/17 19:46:48 cpqbld "..., 4096) = 4096 +read(3, "1/XLC_LOCALE:\t\t\tes_UY.ISO8859-1\n"..., 4096) = 4096 +read(3, "iso8859-2/XLC_LOCALE:\t\t\tsr_CS.IS"..., 4096) = 4096 +close(3) = 0 +munmap(0xb7259000, 4096) = 0 +access("/usr/share/X11/locale/en_US.UTF-8/XLC_LOCALE", R_OK) = 0 +open("/usr/share/X11/locale/en_US.UTF-8/XLC_LOCALE", O_RDONLY) = 3 +fstat64(3, {st_mode=S_IFREG|0644, st_size=4287, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 +read(3, "# $XFree86: xc/nls/XLC_LOCALE/e"..., 4096) = 4096 +read(3, "GB2312.1980-0:GL; GB2312.1980-0:"..., 4096) = 191 +read(3, "", 4096) = 0 +close(3) = 0 +munmap(0xb7259000, 4096) = 0 +socket(PF_FILE, SOCK_STREAM, 0) = 3 +connect(3, {sa_family=AF_FILE, path="/tmp/.X11-unix/X0"}, 110) = 0 +getpeername(3, {sa_family=AF_FILE, path="/tmp/.X11-unix/X0"}, [20]) = 0 +uname({sys="Linux", node="oaxaca", ...}) = 0 +access("/user/folk/clint/.Xauthority", R_OK) = 0 +open("/user/folk/clint/.Xauthority", O_RDONLY) = 4 +fstat64(4, {st_mode=S_IFREG|0600, st_size=540, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 +read(4, "\0\0\0\4\n\370\r\261\0\0010\0\22MIT-MAGIC-COOKIE-1\0"..., 4096) = 540 +close(4) = 0 +munmap(0xb7259000, 4096) = 0 +fcntl64(3, F_GETFL) = 0x2 (flags O_RDWR) +fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 +fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"l\0\v\0\0\0\22\0\20\0", 10}, {"\0\0", 2}, {"MIT-MAGIC-COOKIE-1", 18}, {"\0\0", 2}, {"\211\3043c\237A\373\3456d\273!s\322\3\354", 16}, {"", 0}], 6) = 48 +read(3, "\1\0\v\0\0\0\223\0", 8) = 8 +read(3, "\300*/\4\0\0`\3\377\377\37\0\0\1\0\0\24\0\377\377\1\7\0\0 \10\377t\24\37\10"..., 588) = 588 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"7\0\5\0\0\0`\3t\0\0\0\10\0\0\0\377\377\377\0b\0\5\0\f\0\0\0BIG-"..., 40}], 1) = 40 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\2\0\0\0\0\0\1\202\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\202\0\1\0", 4}], 1) = 4 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\'\3\0\0\0\0\0\377\377?\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\24\0\6\0t\0\0\0\27\0\0\0\37\0\0\0\0\0\0\0\0\341\365\5", 24}], 1) = 24 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\10\4\0_\20\0\0\37\0\0\0\0\0\0\0yA\0\0\257H\25\10 \245\37\10@\360\227\277"..., 4096) = 4096 +read(3, "hlightThickness:\t2\n*Toggle.backg"..., 12700) = 12700 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\5\0\t\0\0\0XKEYBOARD\0\0\0", 20}], 1) = 20 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\5\0\0\0\0\0\1\224^\245\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\224\0\2\0\1\0\0\0", 8}], 1) = 8 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1\6\0\0\0\0\0\1\0\0\0\210\360\227\277j\360\33\10\10\'\310\10\360\232&\10\1\0\0\0", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +brk(0x83a3000) = 0x83a3000 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\20\0\6\0\r\0\0\0_NET_WM_CM_S0\341\365\5", 24}], 1) = 24 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\7\0\0\0\0\0\23\2\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\27\0\2\0\23\2\0\0", 8}], 1) = 8 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\10\0\0\0\0\0\0\0\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\4\0\10\0\0\0XINERAMA", 16}], 1) = 16 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\t\0\0\0\0\0\1\234\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\4\0\10\0\0\0XINERAMA", 16}], 1) = 16 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\n\0\0\0\0\0\1\234\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\234\4\1\0", 4}], 1) = 4 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\'\v\0\0\0\0\0\1\0\0\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\234\5\1\0", 4}], 1) = 4 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1H\f\0\4\0\0\0\2\0\0\0\210\360\227\277j\360\33\10\10\'\310\10\10\241&\10\1\0\0\0"..., 4096) = 48 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\2\5\4\0t\0\0\0\0\10\0\0\0\0\2\0\20\0\6\0\r\0\0\0_XSETTIN"..., 84}], 1) = 84 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\354\16\0\0\0\0\0\24\2\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277"..., 4096) = 96 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\3\0\2\0t\0\0\0\16X\2\0t\0\0\0", 16}], 1) = 16 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\0\21\0\3\0\0\0#\0\0\0\1\0\1\1\377\377\377\377\0\0\0\0\0\1\2\0 \0\0\0"..., 4096) = 76 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\2\0\4\0t\0\0\0\0\10\0\0\0\0\2\0$\0\1\0\27\0\2\0\24\2\0\0", 28}], 1) = 28 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\336\25\0\0\0\0\0\0\0\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"%\0\1\0", 4}], 1) = 4 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\20\0\5\0\v\0\0\0UTF8_STRINGS\20\0\6\0\20\0\7\0WM_C"..., 608}], 1) = 608 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\27\0\0\0\0\0T\1\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277"..., 4096) = 736 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 4 +read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\3\0\0004\0\0\0"..., 512) = 512 +fstat64(4, {st_mode=S_IFREG|0755, st_size=5592, ...}) = 0 +mmap2(NULL, 8220, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7257000 +fadvise64(4, 0, 8220, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7258000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0) = 0xb7258000 +close(4) = 0 +uname({sys="Linux", node="oaxaca", ...}) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\1\30\r\0\1\0`\3t\0\0\0\n\0\n\0\n\0\n\0\0\0\1\0#\0\0\0\32(\0\0"..., 532}], 1) = 532 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\34\3600\0\1\0`\3\20\1\0\0\227\230\1\241\0\1\0\0\2\0\0\0\0\0\0\0\1\0`\3"..., 4096) = 384 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\22\0\7\0\1\0`\3\26\2\0\0!\0\0\0 SER\1\0\0\0\2\0`\3b\0\4\0"..., 44}], 1) = 44 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\34\360>\0\1\0`\3\26\2\0\0\230\230\1\241\0\2\0\0\2\0\0\0\0\0\0\0\1\0`\3"..., 4096) = 64 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\230\0\3\0\4\0\0\0\0\0\0\0", 12}], 1) = 12 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\245@\0\0\0\0\0\4\0\0\0\0\0\0\0$\245\37\10@\360\227\277\210\360\227\277:>\24\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\5\0\t\0\0\0Composite\0\0\0", 20}], 1) = 20 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360A\0\0\0\0\0\0\0\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\4\0\6\0\0\0DAMAGE\0\0", 16}], 1) = 16 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360B\0\0\0\0\0\1\235d\262\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\235\0\3\0\1\0\0\0\1\0\0\0", 12}], 1) = 12 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\245C\0\0\0\0\0\1\0\0\0\1\0\0\0$\245\37\10@\360\227\277\210\360\227\277\n>\27\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\4\0\5\0\0\0SHAPE\0\0\0", 16}], 1) = 16 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360D\0\0\0\0\0\1\200@\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\200\0\1\0", 4}], 1) = 4 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\'E\0\0\0\0\0\1\0\1\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"&\0\2\0t\0\0\0", 8}], 1) = 8 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1F\0\0\0\0\0t\0\0\0\326\t@\1\204\4\366\1\204\4\366\1\0\0\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"+\0\1\0", 4}], 1) = 4 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1G\0\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +uname({sys="Linux", node="oaxaca", ...}) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\22\0\10\0\1\0`\3\"\0\0\0\37\0\0\0\10SER\5\0\0\0gimp\0DOW"..., 228}], 1) = 228 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\34\360H\0\1\0`\3\"\0\0\0\236\230\1\241\0\0\0\0\2\0\0\0\0\0\0\0\1\0`\3"..., 4096) = 192 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\25\3\0\4\0\4\0SYNC", 12}], 1) = 12 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360P\0\0\0\0\0\1\203A\200\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\203\0\2\0\3\0\4\0", 8}], 1) = 8 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\'Q\0\0\0\0\0\3\0\0\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\4\0\7\0\4\0MIT-SHM\0", 16}], 1) = 16 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360R\0\0\0\0\0\1\221M\237\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\221\0\1\0", 4}], 1) = 4 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1S\0\0\0\0\0\1\0\1\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\6\0\17\0\4\0XInputExtension\0", 24}], 1) = 24 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360T\0\0\0\0\0\1\222N\240\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"b\0\6\0\17\0\4\0XInputExtension\0", 24}], 1) = 24 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360U\0\0\0\0\0\1\222N\240\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\222\1\6\0\17\0\4\0XInputExtension\0", 24}], 1) = 24 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1V\0\0\0\0\0\1\0\3\0\1\360\227\277\257H\25\10$\245\37\10@\360\227\277\210\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\222\2\1\0", 4}], 1) = 4 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\2W\0\"\0\0\0\3\360\227\277\10\'\310\10(\360\227\277`2\t\10$\245\37\10@\360\227\277"..., 4096) = 168 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\222\3\2\0\0\0\4\0", 8}], 1) = 8 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\3X\0\2\0\0\0\4\360\227\277\10\'\310\10(\360\227\277`2\t\10$\245\37\10@\360\227\277"..., 4096) = 40 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +lstat64("/etc/gtk-2.0/gtkrc", {st_mode=S_IFREG|0644, st_size=93, ...}) = 0 +open("/etc/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "\ngtk-theme-name = \"Gilouche\"\ngtk"..., 4000) = 93 +read(4, "", 4000) = 0 +close(4) = 0 +access("/etc/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/etc/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) +lstat64("/usr/share/themes//QtCurve/gtk-2.0/gtkrc", {st_mode=S_IFREG|0644, st_size=4465, ...}) = 0 +open("/usr/share/themes//QtCurve/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# Version 0.52.3\nstyle \"qtcurve-"..., 4000) = 4000 +socket(PF_FILE, SOCK_STREAM, 0) = 5 +fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0 +connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = 0 +send(5, "\2\0\0\0\v\0\0\0\7\0\0\0passwd\0", 19, MSG_NOSIGNAL) = 19 +poll([{fd=5, events=POLLIN|POLLERR|POLLHUP, revents=POLLIN|POLLHUP}], 1, 5000) = 1 +recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"passwd\0", 7}], msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, {6}}, msg_flags=0}, 0) = 7 +fstat64(6, {st_mode=S_IFREG|0600, st_size=217016, ...}) = 0 +pread64(6, "\1\0\0\0h\0\0\0\2\0\0\0\1\0\0\0c\255\22G\0\0\0\0\323\0\0\0\0L\3\0"..., 104, 0) = 104 +mmap2(NULL, 217016, PROT_READ, MAP_SHARED, 6, 0) = 0xb7222000 +close(6) = 0 +close(5) = 0 +getuid32() = 1000 +uname({sys="Linux", node="oaxaca", ...}) = 0 +access("/usr/local/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/local/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/local/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/local/lib/gtk-2.0/2.10.0/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/local/lib/gtk-2.0/i686-suse-linux-gnu/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/local/lib/gtk-2.0/i686-suse-linux-gnu/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/local/lib/gtk-2.0/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/local/lib/gtk-2.0/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", F_OK) = 0 +stat64("/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", {st_mode=S_IFREG|0755, st_size=133448, ...}) = 0 +futex(0xb7858070, FUTEX_WAKE, 2147483647) = 0 +open("/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000:\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=133448, ...}) = 0 +mmap2(NULL, 139724, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71ff000 +fadvise64(5, 0, 139724, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb721f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1f) = 0xb721f000 +mmap2(0xb7221000, 460, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7221000 +close(5) = 0 +open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +time(NULL) = 1192407177 +lstat64("/etc/qt4/qtcurvestylerc", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +lstat64("/etc/qt3/qtcurvestylerc", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +lstat64("/etc/qt/qtcurvestylerc", 0xbfcdb82c) = -1 ENOENT (No such file or directory) +open("/etc/qt/qtrc", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/etc/qt3/qtrc", O_RDONLY) = -1 ENOENT (No such file or directory) +getuid32() = 1000 +open("/user/folk/clint/.qt/qtrc", O_RDONLY) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5124, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 +read(5, "[3.3]\nlibraryPath=/opt/kde3/lib/"..., 4096) = 4096 +read(5, "pt/kde3/lib/kde3/plugins\nresolve"..., 4096) = 1028 +close(5) = 0 +munmap(0xb7869000, 4096) = 0 +getuid32() = 1000 +open("/user/folk/clint/.config/qtcurvestylerc", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/proc/31509/cmdline", O_RDONLY) = 5 +read(5, "gimp\0", 1024) = 5 +close(5) = 0 +open("/user/folk/clint/.kde/share/config/kdeglobals", O_RDONLY) = 5 +fstat64(5, {st_mode=S_IFREG|0600, st_size=9555, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 +read(5, "[$Version]\nupdate_info=mouse_cur"..., 4096) = 4096 +read(5, " Down=none\nWindow One Desktop Up"..., 4096) = 4096 +read(5, "=false\nsmtp=false\nsmtps=false\nsv"..., 4096) = 1363 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb7869000, 4096) = 0 +lstat64("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3", {st_mode=S_IFREG|0644, st_size=39206, ...}) = 0 +read(4, "Frame\" style \"qtcurve-w2\"\nwidget"..., 4000) = 465 +read(4, "", 4000) = 0 +close(4) = 0 +access("/usr/share/themes//QtCurve/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/themes//QtCurve/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) +lstat64("/user/folk/clint/.gtkrc-2.0-qtengine", 0xbfcdbf5c) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gtkrc-2.0-qtengine.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gtkrc-2.0-qtengine.en", F_OK) = -1 ENOENT (No such file or directory) +lstat64("/user/folk/clint/.gtkrc-2.0", {st_mode=S_IFREG|0644, st_size=317, ...}) = 0 +open("/user/folk/clint/.gtkrc-2.0", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# This file was written by the G"..., 4000) = 317 +lstat64("/opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc", 0xbfcdbdcc) = -1 ENOENT (No such file or directory) +access("/opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) +read(4, "", 4000) = 0 +close(4) = 0 +access("/user/folk/clint/.gtkrc-2.0.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gtkrc-2.0.en", F_OK) = -1 ENOENT (No such file or directory) +lstat64("/user/folk/clint/.kde/share/config/gtkrc-2.0", {st_mode=S_IFREG|0644, st_size=1514, ...}) = 0 +open("/user/folk/clint/.kde/share/config/gtkrc-2.0", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# created by KDE, Sun Oct 14 17:"..., 4000) = 1514 +read(4, "", 4000) = 0 +close(4) = 0 +access("/user/folk/clint/.kde/share/config/gtkrc-2.0.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.kde/share/config/gtkrc-2.0.en", F_OK) = -1 ENOENT (No such file or directory) +lstat64("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3", {st_mode=S_IFREG|0644, st_size=39206, ...}) = 0 +open("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# Version 0.52.3\n\nstyle \"KDE3-ic"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = 0 +brk(0x83c4000) = 0x83c4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) +brk(0x83c3000) = 0x83c3000 +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = 0 +read(4, "gtk-cut\"]={\n\t\t{ \"22x22/actions/e"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = 0 +read(4, " *, \"gtk-dnd\" },\n\t\t{ \"16x16/acti"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = 0 +read(4, ".png\", *, *, \"gtk-large-toolbar\""..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = 0 +read(4, "t_center.png\", *, *, \"gtk-large-"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = 0 +read(4, "g\", *, *, \"gtk-dnd\" },\n\t\t{ \"16x1"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 +read(4, " *, \"gtk-menu\" },\n\t\t{ \"16x16/act"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = 0 +read(4, "ons/filesaveas.png\", *, *, \"gtk-"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = 0 +read(4, "mag1.png\" }\n\t}\n\tstock[\"gtk-zoom-"..., 4000) = 4000 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 +read(4, "ing KDE icon>\n#\tstock[\"gimp-laye"..., 4000) = 3206 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = 0 +access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = 0 +read(4, "", 4000) = 0 +close(4) = 0 +access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3.en", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.themes/QtCurve/gtk-2.0/gtkrc", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc", F_OK) = 0 +lstat64("/usr/share/themes/QtCurve/gtk-2.0/gtkrc", {st_mode=S_IFREG|0644, st_size=4465, ...}) = 0 +open("/usr/share/themes/QtCurve/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# Version 0.52.3\nstyle \"qtcurve-"..., 4000) = 4000 +read(4, "Frame\" style \"qtcurve-w2\"\nwidget"..., 4000) = 465 +read(4, "", 4000) = 0 +close(4) = 0 +access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\230\2\4\0\1\0`\3\23\2\0\0\7\0\0\0b\2\4\0\6\0`\3RENDER\0\0", 32}], 1) = 32 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1OZ\0\0\0\0\0\1\232\0\252\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\0\3\0\0\0\0\0\n\0\0\0\232\1\1\0", 16}], 1) = 16 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\245[\0\0\0\0\0\0\0\0\0\n\0\0\0\10\'\310\10P\242&\10\1\0\0\0\372@\26\10"..., 4096) = 876 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +brk(0x83e4000) = 0x83e4000 +uname({sys="Linux", node="oaxaca", ...}) = 0 +open("/user/folk/clint/.Xdefaults-oaxaca", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/charset.alias", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +rt_sigaction(SIGHUP, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 +rt_sigaction(SIGINT, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 +rt_sigaction(SIGQUIT, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 +rt_sigaction(SIGABRT, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 +rt_sigaction(SIGTERM, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 +rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0 +rt_sigaction(SIGCHLD, {0x8064a60, ~[RTMIN RT_1], SA_RESTART}, {SIG_DFL}, 8) = 0 +stat64("/user/folk/clint", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 +stat64("/user/folk/clint/.gimp-2.2", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/unitrc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP units\n# \n# This file cont"..., 4000) = 1188 +read(4, "", 4000) = 0 +close(4) = 0 +open("/etc/gimp/2.0/gimprc", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 +munmap(0xb7862000, 32768) = 0 +read(4, "# This is the system-wide gimprc"..., 4000) = 4000 +read(4, " for fonts. This is a colon-sep"..., 4000) = 4000 +read(4, "en dialog will be automatically "..., 4000) = 4000 +read(4, "B id of the active layer/channel"..., 4000) = 4000 +read(4, "der\n# versions. Possible values"..., 4000) = 4000 +read(4, "# \n# (toolbox-window-hint normal"..., 4000) = 1363 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/gimprc", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 +munmap(0xb7862000, 32768) = 0 +read(4, "# GIMP gimprc\n# \n# This is your "..., 4000) = 1064 +read(4, "", 4000) = 0 +close(4) = 0 +gettimeofday({1192407177, 829654}, NULL) = 0 +gettimeofday({1192407177, 831333}, NULL) = 0 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 +munmap(0xb7862000, 32768) = 0 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 +munmap(0xb7862000, 32768) = 0 +open("/user/folk/clint/.gimp-2.2", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 37 entries */, 4096) = 1168 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 +munmap(0xb7862000, 32768) = 0 +open("/user/folk/clint/.gimp-2.2/gimpswap.31509", O_RDWR|O_CREAT|O_LARGEFILE, 0600) = 4 +close(4) = 0 +unlink("/user/folk/clint/.gimp-2.2/gimpswap.31509") = 0 +rt_sigaction(SIGILL, {0x8254200, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0 +rt_sigaction(SIGILL, {SIG_DFL}, {0x8254200, [ILL], SA_RESTART}, 8) = 0 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 +munmap(0xb7862000, 32768) = 0 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 +munmap(0xb7862000, 32768) = 0 +stat64("/user/folk/clint/.gimp-2.2/themes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/share/gimp/2.0/themes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/themes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 2 entries */, 4096) = 48 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/usr/share/gimp/2.0/themes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 4 entries */, 4096) = 112 +stat64("/usr/share/gimp/2.0/themes/Default", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/share/gimp/2.0/themes/Small", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/themerc", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 4 +fstat64(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 +write(4, "# GIMP themerc\n#\n# This file is "..., 316) = 316 +close(4) = 0 +munmap(0xb7869000, 4096) = 0 +lstat64("/user/folk/clint/.gimp-2.2/themerc", {st_mode=S_IFREG|0644, st_size=316, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/themerc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP themerc\n#\n# This file is "..., 4000) = 316 +lstat64("/usr/share/gimp/2.0/themes/Default/gtkrc", {st_mode=S_IFREG|0644, st_size=2301, ...}) = 0 +open("/usr/share/gimp/2.0/themes/Default/gtkrc", O_RDONLY|O_LARGEFILE) = 5 +brk(0x8405000) = 0x8405000 +read(5, "# pixmap_path \"::<"..., 4000) = 2301 +access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/crystalsvg/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/hicolor/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/hicolor/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/gimp/2.0/themes/Default/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gimp-2.2/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) +write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:24: ) = 45 +write(2, "Unable to locate image file in p"..., 72Unable to locate image file in pixmap_path: "images/stock-error-64.png" +) = 72 +access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/crystalsvg/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/hicolor/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/hicolor/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/gimp/2.0/themes/Default/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gimp-2.2/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) +write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:28: ) = 45 +write(2, "Unable to locate image file in p"..., 71Unable to locate image file in pixmap_path: "images/stock-info-64.png" +) = 71 +access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/crystalsvg/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/hicolor/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/hicolor/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/gimp/2.0/themes/Default/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gimp-2.2/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) +write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:32: ) = 45 +write(2, "Unable to locate image file in p"..., 75Unable to locate image file in pixmap_path: "images/stock-question-64.png" +) = 75 +access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/crystalsvg/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/crystalsvg/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/opt/kde3/share/icons/hicolor/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/icons/hicolor/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/gimp/2.0/themes/Default/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gimp-2.2/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) +write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:36: ) = 45 +write(2, "Unable to locate image file in p"..., 74Unable to locate image file in pixmap_path: "images/stock-warning-64.png" +) = 74 +read(5, "", 4000) = 0 +close(5) = 0 +access("/usr/share/gimp/2.0/themes/Default/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/usr/share/gimp/2.0/themes/Default/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) +lstat64("/user/folk/clint/.gimp-2.2/gtkrc", {st_mode=S_IFREG|0644, st_size=896, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/gtkrc", O_RDONLY|O_LARGEFILE) = 5 +read(5, "# pixmap_path \"::<"..., 4000) = 896 +read(5, "", 4000) = 0 +close(5) = 0 +access("/user/folk/clint/.gimp-2.2/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gimp-2.2/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) +read(4, "", 4000) = 0 +close(4) = 0 +access("/user/folk/clint/.gimp-2.2/themerc.en_US", F_OK) = -1 ENOENT (No such file or directory) +access("/user/folk/clint/.gimp-2.2/themerc.en", F_OK) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/.gimp-2.2/gimp-splash.png", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) +open("/user/folk/clint/.gimp-2.2/splashes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/gimp/2.0/images/gimp-splash.png", O_RDONLY|O_LARGEFILE) = 4 +fstat64(4, {st_mode=S_IFREG|0644, st_size=28867, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 +read(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\1\220\0\0\0\372\10\6\0\0\0\217\247\21"..., 4096) = 4096 +open("/etc/gtk-2.0/gdk-pixbuf.loaders", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=3366, ...}) = 0 +read(5, "# GdkPixbuf Image Loader Modules"..., 1024) = 1024 +read(5, "zz znz\" 100\n\n\"/usr/lib/gtk-2.0/2"..., 1024) = 1024 +read(5, "\\225\" \"\" 100\n\n\"/usr/lib/gtk-2.0/"..., 1024) = 1024 +read(5, "00\n\n\"/usr/lib/gtk-2.0/2.10.0/loa"..., 1024) = 294 +read(5, "", 1024) = 0 +close(5) = 0 +stat64("/usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so", {st_mode=S_IFREG|0755, st_size=18116, ...}) = 0 +open("/usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\24\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=18116, ...}) = 0 +mmap2(NULL, 20788, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb7863000 +fadvise64(5, 0, 20788, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb7867000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x3) = 0xb7867000 +close(5) = 0 +_llseek(4, 0, [0], SEEK_SET) = 0 +read(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\1\220\0\0\0\372\10\6\0\0\0\217\247\21"..., 4096) = 4096 +mmap2(NULL, 401408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb719d000 +read(4, "\332\327\1\16\1\"1g6\23\303\233L\330-x\251\fC\237\26`\v\341\v\275E\213\206e(\10"..., 4096) = 4096 +read(4, "\237\204q\303\17\6\0100\250\367H\334~\361\343(.,\305\326\235\0331k\366c\330o\344\4\17\240"..., 4096) = 4096 +read(4, "?\17\217\277\373\7,\3330\337\341\245\270\352\241c\361\223\3\247bd\277\361\330\270}5\326m]\206"..., 4096) = 4096 +read(4, "\347+\37T\34\330\374/\35\300H\27d\34\22\266\310%\314\262\367[z\356\267\201]\262d\221\2570"..., 4096) = 4096 +read(4, "$\'\32 >rVQ\206O\23]\23\342\37,\17\5\32\f\1772\316E\36$\300*\225\241Mv"..., 4096) = 4096 +read(4, "``s\362\364\327\375\356;\223\326*\273X]\342z\360\234\352\213\274i+R\16yp\204\20S\234"..., 4096) = 4096 +read(4, "R\6\263\363\321m\0042;c\34P{6\310\275\264\231SR-1zd\322\313\336JS^\3102"..., 4096) = 195 +close(4) = 0 +munmap(0xb7869000, 4096) = 0 +uname({sys="Linux", node="oaxaca", ...}) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\1\30\r\0\3\0`\3t\0\0\0\0\0\0\0\224\1\376\0\0\0\1\0#\0\0\0\32(\0\0"..., 700}], 1) = 700 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\34\360_\0\3\0`\3\20\1\0\0\202\233\1\241\0\1\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 512 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\22\0\7\0\3\0`\0034\1\0\0\4\0\0\0 IND\1\0\0\0\23\1\0\0\203\2\4\0"..., 1180}], 1) = 1180 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\34\360q\0\3\0`\0034\1\0\0\205\233\1\241\0\1\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 96 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\22\0\t\0\3\0`\3A\1\0\0\37\0\0\0\10_RO\f\0\0\0gimp-sta"..., 60}, {"@\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 30752}], 2) = 30812 +shmget(IPC_PRIVATE, 393216, IPC_CREAT|0600) = 49676293 +shmat(49676293, 0, 0) = 0xb713d000 +select(4, [3], [3], NULL, NULL) = 2 (in [3], out [3]) +read(3, "\34\360\243\0\3\0`\3A\1\0\0\206\233\1\241\0\1\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 64 +writev(3, [{"5\30\4\0002\0`\3t\0\0\0@\0@\0007\30\5\0003\0`\0032\0`\3\0\0\1\0"..., 96}], 1) = 96 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1\252\0\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +shmctl(49676293, IPC_64|IPC_RMID, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\221\5\7\0006\0`\3t\0\0\0\0\6@\0 \0\0\0005\0`\3\0\0\0\0\232\4\5\0"..., 1584}], 1) = 1584 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1\364\0\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +munmap(0xb719d000, 401408) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\10\t\0\3\0`\0037\0`\0038\0`\3>\0`\3\0\0\0\0\0\0\0\0\0\1\200\0"..., 692}], 1) = 692 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1\26\1\0\0\0\0t\0\0\0\326\t@\1\204\4\366\1\204\4\366\1\0\0\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\f\0\7\0?\0`\3\17\0`\3\2\0\0\0\374\0\0\0\220\1\0\0\24\0\0\0006\0\2\0"..., 1132}], 1) = 1132 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\26\20\27\1?\0`\3?\0`\3;\0`\3\2\0\374\0\220\1\24\0\0\0\0\10?\0`\3"..., 4096) = 96 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 129668}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 129956}, NULL) = 0 +gettimeofday({1192407178, 130035}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 130164}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\22\0\30\0\3\0`\3(\0\0\0)\0\0\0 \0\0\0\22\0\0\0004\2\0\0\0\0\0\0"..., 316}], 1) = 316 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\34\360U\1\3\0`\3(\0\0\0\222\233\1\241\0\0\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 672 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 146984}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 147124}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 147304}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 147434}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 147598}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 147728}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\24\0\6\0\3\0`\3{\1\0\0\6\0\0\0\0\0\0\0\377\377\377\177", 24}], 1) = 24 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1 b\1\1\0\0\0\6\0\0\0\0\0\0\0\1\0\0\0\257H\25\10 \245\37\10@\360\227\277"..., 4096) = 36 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\24\0\6\0\3\0`\3\34\1\0\0\4\0\0\0\0\0\0\0\377\377\377\177", 24}], 1) = 24 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1 c\1\0\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\257H\25\10 \245\37\10@\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 149119}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 149251}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 149410}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 149538}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 149934}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 150137}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +time(NULL) = 1192407178 +access("/etc/fonts/fonts.conf", R_OK) = 0 +stat64("/etc/fonts/fonts.conf", {st_mode=S_IFREG|0644, st_size=5268, ...}) = 0 +open("/etc/fonts/fonts.conf", O_RDONLY) = 4 +read(4, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\n\3\7\0\202\0`\3;\0`\3"..., 80}], 1) = 80 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 503042}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 503172}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 503455}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 503660}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 504032}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\204\0`\3?\0`\3\220\1\24\0\232\4\5\0\205\0`\3\204\0`\0038\0\0\0"..., 4084}, {"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\7\2\0\207\0`\0036\7\2\0\206\0`\3", 16}], 1) = 16 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 506091}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 506248}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 506527}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 506733}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 507112}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\210\0`\3?\0`\3\220\1\24\0\232\4\5\0\211\0`\3\210\0`\0038\0\0\0"..., 4072}, {">\3\7\0\212\0`\3;\0`\0033\0`\3\0\0\0\0\264\0\347\0(\0\n\0", 28}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\213\0`\0036\7\2\0\212\0`\3", 32}], 1) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 509171}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 509301}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 509704}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 509911}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 510284}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\214\0`\3?\0`\3\220\1\24\0\232\4\5\0\215\0`\3\214\0`\0038\0\0\0"..., 4008}, {"\232\24\33\0S\0`\3\1\0\0\0*\0\0\0\10\0\n\0\377\377\n\0\n\0\0\0\0Q\372\377"..., 108}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\27\16\0\3\0`\3O\0`\3\217\0`\0034\0\0\0S\0`\3\377\377\n\0\21Q\372\377"..., 136}], 1) = 136 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 512600}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 512730}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 513027}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 513233}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 513605}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\220\0`\3?\0`\3\220\1\24\0\232\4\5\0\221\0`\3\220\0`\0038\0\0\0"..., 4084}, {"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\7\2\0\223\0`\0036\7\2\0\222\0`\3", 16}], 1) = 16 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 515648}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 515778}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 516111}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 516318}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 516690}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\224\0`\3?\0`\3\220\1\24\0\232\4\5\0\225\0`\3\224\0`\0038\0\0\0"..., 4072}, {"\232\27\f\0\3\0`\3O\0`\3\227\0`\0034\0\0\0S\0`\3\377\377\n\0\v\0`\3"..., 48}], 2) = 4120 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{";\3\5\0003\0`\3\0\0\0\0\250\0\347\0?\0\n\0>\3\7\0\226\0`\3;\0`\3"..., 80}], 1) = 80 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 518889}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 519019}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 519316}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 519523}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 519894}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\230\0`\3?\0`\3\220\1\24\0\232\4\5\0\231\0`\3\230\0`\0038\0\0\0"..., 4088}, {"\232\27\f\0\3\0`\3O\0`\3\233\0`\0034\0\0\0S\0`\3\4\0\n\0\t\0\2\0"..., 48}], 2) = 4136 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{";\3\5\0003\0`\3\0\0\0\0\250\0\347\0?\0\n\0>\3\7\0\232\0`\3;\0`\3"..., 80}], 1) = 80 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 522089}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 522219}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 522520}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 522726}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 523104}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\234\0`\3?\0`\3\220\1\24\0\232\4\5\0\235\0`\3\234\0`\0038\0\0\0"..., 4060}, {"\232\27\16\0\3\0`\3O\0`\3\237\0`\0034\0\0\0P\0`\3\363\377\364\377\23\0`\3"..., 56}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\6\5\0\237\0`\3\0\0\0\0\0\0\0\0d\0\r\0\232\27\r\0\3\0`\3O\0`\3"..., 152}], 1) = 152 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 525330}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 525459}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 534606}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 534841}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 535379}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\240\0`\3?\0`\3\220\1\24\0\232\4\5\0\241\0`\3\240\0`\0038\0\0\0"..., 4044}, {"\232\27\16\0\3\0`\3O\0`\3\243\0`\0034\0\0\0P\0`\3\363\377\364\377\23\0\2\0"..., 56}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\6\5\0\243\0`\3\0\0\0\0\0\0\0\0d\0\r\0\232\24\33\0S\0`\3\1\0\0\0"..., 260}], 1) = 260 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 539512}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 539643}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 539986}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 540193}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 540586}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\244\0`\3?\0`\3\220\1\24\0\232\4\5\0\245\0`\3\244\0`\0038\0\0\0"..., 4060}, {"\232\27\16\0\3\0`\3O\0`\3\247\0`\0034\0\0\0P\0`\3\357\377\364\377\23\0`\3"..., 56}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\6\5\0\247\0`\3\0\0\0\0\0\0\0\0\\\0\r\0\232\27\v\0\3\0`\3O\0`\3"..., 144}], 1) = 144 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 543960}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 544090}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 544550}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 544757}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 545159}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\250\0`\3?\0`\3\220\1\24\0\232\4\5\0\251\0`\3\250\0`\0038\0\0\0"..., 4084}, {"5\30\4\0\252\0`\3;\0`\3!\0\r\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\4\5\0\253\0`\3\252\0`\0038\0\0\0\0\0\0\0\232\6\5\0\253\0`\3\0\0\0\0"..., 460}], 1) = 460 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 547411}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 547542}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 548032}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 548242}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 548627}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\254\0`\3?\0`\3\220\1\24\0\232\4\5\0\255\0`\3\254\0`\0038\0\0\0"..., 4088}, {">\3\7\0\254\0`\3?\0`\0033\0`\3\0\0\0\0\0\0\0\0\220\1\24\0", 28}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\255\0`\0036\7\2\0\254\0`\3"..., 560}], 1) = 560 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 551257}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 551388}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 551694}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 551900}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 552274}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\260\0`\3?\0`\3\220\1\24\0\232\4\5\0\261\0`\3\260\0`\0038\0\0\0"..., 4088}, {">\3\7\0\260\0`\3?\0`\0033\0`\3\0\0\0\0\0\0\0\0\220\1\24\0", 28}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\261\0`\0036\7\2\0\260\0`\3"..., 392}], 1) = 392 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 555228}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 555359}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 555785}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 556156}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 556547}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\264\0`\3?\0`\3\220\1\24\0\232\4\5\0\265\0`\3\264\0`\0038\0\0\0"..., 4088}, {">\3\7\0\264\0`\3?\0`\0033\0`\3\0\0\0\0\0\0\0\0\220\1\24\0", 28}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\265\0`\0036\7\2\0\264\0`\3"..., 532}], 1) = 532 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 559088}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 559218}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 559527}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 559733}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 560107}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\270\0`\3?\0`\3\220\1\24\0\232\4\5\0\271\0`\3\270\0`\0038\0\0\0"..., 4088}, {"@\0\4\0B\0`\3C\0`\3\2\0\21\0", 16}], 2) = 4104 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{">\0\7\0B\0`\3\270\0`\3\7\0`\3\0\0\0\0\0\0\0\0\220\1\24\0;\3\5\0"..., 460}], 1) = 460 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 562349}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 562479}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 562816}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 563092}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 563417}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 563620}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 564027}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"6\7\2\0B\0`\0035\30\4\0\274\0`\3?\0`\3\220\1\24\0F\30\5\0\274\0`\3"..., 4092}, {";\3\5\0C\0`\3\0\0\0\0\1\0\1\0&\1\22\0", 20}], 2) = 4112 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0C\0`\3\4\0\0\0`i\241\0@\0\4\0\274\0`\3C\0`\3\2\0\2\0"..., 612}], 1) = 612 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 566931}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 567062}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 567368}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 567574}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 567954}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\301\0`\3?\0`\3\220\1\24\0\232\4\5\0\302\0`\3\301\0`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 560}], 1) = 560 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 569916}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 570044}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 570351}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 570554}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 570923}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\305\0`\3?\0`\3\220\1\24\0\232\4\5\0\306\0`\3\305\0`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 588}], 1) = 588 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 572307}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 572435}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 572724}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 572929}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 574485}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\311\0`\3?\0`\3\220\1\24\0\232\4\5\0\312\0`\3\311\0`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 212}], 1) = 212 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\0017\31\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\313\0`\3;\0`\3r\0\r\0\232\4\5\0\314\0`\3\313\0`\0038\0\0\0"..., 352}], 1) = 352 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 577549}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 577675}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 577968}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 578194}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 578562}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\315\0`\3?\0`\3\220\1\24\0\232\4\5\0\316\0`\3\315\0`\0038\0\0\0"..., 4084}, {"8\0\4\0#\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0$\0`\3\0\0\10\0\0\0\0\0008\0\4\0%\0`\3\0\0\10\0\0\0\0\0"..., 640}], 1) = 640 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 580810}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 580937}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 581267}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 581468}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 581835}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\321\0`\3?\0`\3\220\1\24\0\232\4\5\0\322\0`\3\321\0`\0038\0\0\0"..., 4084}, {"8\0\4\0#\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0$\0`\3\0\0\10\0\0\0\0\0008\0\4\0%\0`\3\0\0\10\0\0\0\0\0"..., 644}], 1) = 644 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 584092}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 584218}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 584497}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 584697}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 585079}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\325\0`\3?\0`\3\220\1\24\0\232\4\5\0\326\0`\3\325\0`\0038\0\0\0"..., 4084}, {"8\0\4\0#\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0$\0`\3\0\0\10\0\0\0\0\0008\0\4\0%\0`\3\0\0\10\0\0\0\0\0"..., 624}], 1) = 624 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 587342}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 587472}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 587826}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 588057}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 588431}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\331\0`\3?\0`\3\220\1\24\0\232\4\5\0\332\0`\3\331\0`\0038\0\0\0"..., 4084}, {"8\0\4\0!\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0\"\0`\3\0\0\10\0\0\0\0\0008\0\4\0#\0`\3\0\0\10\0\0\0\0\0"..., 704}], 1) = 704 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 590895}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 591026}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 591335}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 591542}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 591915}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\335\0`\3?\0`\3\220\1\24\0\232\4\5\0\336\0`\3\335\0`\0038\0\0\0"..., 4084}, {"@\0\4\0\274\0`\3\n\0`\3Q\1\21\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3\2\0\21\0008\0\4\0!\0`\3\0\0\10\0\0\0\0\0"..., 716}], 1) = 716 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 594268}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 594398}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 594703}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 594909}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 595279}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\341\0`\3?\0`\3\220\1\24\0\232\4\5\0\342\0`\3\341\0`\0038\0\0\0"..., 4084}, {"@\0\4\0\274\0`\3\n\0`\3Y\1\21\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3\2\0\21\0008\0\4\0!\0`\3\0\0\10\0\0\0\0\0"..., 688}], 1) = 688 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 596685}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 596814}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 606477}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 606702}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 607170}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\345\0`\3?\0`\3\220\1\24\0\232\4\5\0\346\0`\3\345\0`\0038\0\0\0"..., 4084}, {"@\0\4\0\274\0`\3\n\0`\3^\1\21\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3\2\0\21\0008\0\4\0!\0`\3\0\0\10\0\0\0\0\0"..., 816}], 1) = 816 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 609872}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 610003}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 610511}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 610719}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 611103}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\351\0`\3?\0`\3\220\1\24\0\232\4\5\0\352\0`\3\351\0`\0038\0\0\0"..., 4096}, {"@\0\4\0\274\0`\3\n\0`\3m\1\2\0", 16}], 2) = 4112 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3l\1\20\0B\0\5\0\274\0`\3C\0`\3l\1\21\0"..., 892}], 1) = 892 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 613833}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 613960}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 614271}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 614473}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 614843}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\355\0`\3?\0`\3\220\1\24\0\232\4\5\0\356\0`\3\355\0`\0038\0\0\0"..., 4096}, {"@\0\4\0\274\0`\3\n\0`\3r\1\2\0", 16}], 2) = 4112 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3q\1\20\0B\0\5\0\274\0`\3C\0`\3q\1\21\0"..., 760}], 1) = 760 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 617467}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 617594}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 617940}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 618169}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 618545}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\361\0`\3?\0`\3\220\1\24\0\232\4\5\0\362\0`\3\361\0`\0038\0\0\0"..., 4092}, {"@\0\4\0\274\0`\3&\0`\3\2\0\2\0", 16}], 2) = 4108 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3t\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 852}], 1) = 852 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 619983}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 620108}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 620378}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 620577}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 620937}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\365\0`\3?\0`\3\220\1\24\0\232\4\5\0\366\0`\3\365\0`\0038\0\0\0"..., 4092}, {"@\0\4\0\274\0`\3&\0`\3\2\0\2\0", 16}], 2) = 4108 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3z\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 804}], 1) = 804 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 622403}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 622530}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 622803}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 623002}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 623363}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\371\0`\3?\0`\3\220\1\24\0\232\4\5\0\372\0`\3\371\0`\0038\0\0\0"..., 4092}, {"@\0\4\0\274\0`\3&\0`\3\2\0\2\0", 16}], 2) = 4108 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0\274\0`\3&\0`\3\200\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 824}], 1) = 824 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 624774}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 624900}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 627972}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 628209}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\375\0`\3?\0`\3\220\1\24\0\232\4\5\0\376\0`\3\375\0`\0038\0\0\0"..., 2060}], 1) = 2060 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 630343}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 630474}, NULL) = 0 +stat64("/user/folk/clint/.gimp-2.2/environ", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/lib/gimp/2.0/environ", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/environ", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 2 entries */, 4096) = 48 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/usr/lib/gimp/2.0/environ", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 4 entries */, 4096) = 112 +stat64("/usr/lib/gimp/2.0/environ/default.env", {st_mode=S_IFREG|0644, st_size=65, ...}) = 0 +open("/usr/lib/gimp/2.0/environ/default.env", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=65, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 +read(5, "# Example entry in files like th"..., 4096) = 65 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb7869000, 4096) = 0 +stat64("/usr/lib/gimp/2.0/environ/pygimp.env", {st_mode=S_IFREG|0644, st_size=38, ...}) = 0 +open("/usr/lib/gimp/2.0/environ/pygimp.env", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=38, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 +read(5, ": PYTHONPATH=/usr/lib/gimp/2.0/p"..., 4096) = 38 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb7869000, 4096) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d9000 +brk(0x84c5000) = 0x84c5000 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 728793}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 729096}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 729286}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 729483}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"6\7\2\0\274\0`\0035\30\4\0\1\1`\3?\0`\3\220\1\24\0F\30\5\0\1\1`\3"..., 1940}], 1) = 1940 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 731932}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 732059}, NULL) = 0 +open("/user/folk/clint/.gimp-2.2/parasiterc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP parasiterc\n# \n# This file"..., 4000) = 112 +read(4, "", 4000) = 0 +close(4) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 755751}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 755987}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 756514}, NULL) = 0 +gettimeofday({1192407178, 756598}, NULL) = 0 +gettimeofday({1192407178, 756668}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\6\1`\3?\0`\3\220\1\24\0\232\4\5\0\7\1`\3\6\1`\0038\0\0\0"..., 3804}], 1) = 3804 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407178, 758747}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407178, 758880}, NULL) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/share/gimp/2.0/brushes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 12 entries */, 4096) = 504 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (41)\n5"..., 4096) = 77 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (101)\n"..., 4096) = 78 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (61)\n5"..., 4096) = 77 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle (39)\n5.00000"..., 4096) = 71 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (121)\n"..., 4096) = 78 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (25)\n4"..., 4096) = 77 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (81)\n6"..., 4096) = 77 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle (59)\n5.00000"..., 4096) = 71 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (31)\n5"..., 4096) = 77 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d0000 +munmap(0xb71d0000, 32768) = 0 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", W_OK) = 0 +stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", {st_mode=S_IFREG|0644, st_size=70, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=70, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 +read(5, "GIMP-VBR\n1.0\nCircle (02)\n5.00000"..., 4096) = 70 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d0000 +munmap(0xb71d0000, 32768) = 0 +close(5) = 0 +munmap(0xb71d8000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", W_OK) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/usr/share/gimp/2.0/brushes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 50 entries */, 4096) = 1712 +stat64("/usr/share/gimp/2.0/brushes/10x10squareBlur.gbr", {st_mode=S_IFREG|0644, st_size=148, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/10x10squareBlur.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0000\0\0\0\2\0\0\0\n\0\0\0\n\0\0\0\1GIMP\0\0\0<", 28) = 28 +read(5, "square (10x10) blur\0", 20) = 20 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\355\313\273\271\270\270\271\273\313\355\313qHAAAAHq\313\274G\20\10\10\10\10\20G\274\271A"..., 100) = 100 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/10x10square.gbr", {st_mode=S_IFREG|0644, st_size=143, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/10x10square.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0+\0\0\0\2\0\0\0\n\0\0\0\n\0\0\0\1GIMP\0\0\0(", 28) = 28 +read(5, "square (10x10)\0", 15) = 15 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\0\0\0\0\0\0\0\0\377\377\0"..., 100) = 100 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/20x20squareBlur.gbr", {st_mode=S_IFREG|0644, st_size=448, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/20x20squareBlur.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0000\0\0\0\2\0\0\0\24\0\0\0\24\0\0\0\1GIMP\0\0\0002", 28) = 28 +read(5, "square (20x20) blur\0", 20) = 20 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\242\224\202sjfeddddddefjs\202\224\242\223\204o^TPONNNNN"..., 400) = 400 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/11circle.gbr", {st_mode=S_IFREG|0644, st_size=161, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/11circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\v\0\0\0\v\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (11)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0+\234\345\377\345\234+\0\0\0W\377\377\377\377\377\377\377W\0+\377\377\377\377\377\377\377\377\377"..., 121) = 121 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/11fcircle.gbr", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/11fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\v\0\0\0\v\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (11)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\7\t\n\t\7\0\0\0\0\0\n\23\34 \34\23\n\0\0\0\n\31/EOE/\31\n"..., 121) = 121 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/13circle.gbr", {st_mode=S_IFREG|0644, st_size=209, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/13circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\r\0\0\0\r\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (13)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0J\254\351\377\351\254J\0\0\0\0\0\230\377\377\377\377\377\377\377\230\0\0\0\230\377\377\377\377"..., 169) = 169 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/13fcircle.gbr", {st_mode=S_IFREG|0644, st_size=207, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/13fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\r\0\0\0\r\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (13)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\7\t\t\t\7\0\0\0\0\0\0\6\v\21\27\31\27\21\v\6\0\0\0\6\r\31\'4"..., 169) = 169 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/15circle.gbr", {st_mode=S_IFREG|0644, st_size=265, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/15circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\17\0\0\0\17\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (15)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0a\267\354\377\354\267a\0\0\0\0\0\0000\311\377\377\377\377\377\377\377\3110\0\0\0000"..., 225) = 225 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/15fcircle.gbr", {st_mode=S_IFREG|0644, st_size=263, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/15fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\17\0\0\0\17\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (15)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\0\7\10\t\10\7\0\0\0\0\0\0\0\0\7\v\20\23\25\23\20\v\7\0\0\0\0\0"..., 225) = 225 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/17circle.gbr", {st_mode=S_IFREG|0644, st_size=329, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/17circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\21\0\0\0\21\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (17)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\16t\300\357\377\357\300t\16\0\0\0\0\0\0\0e\357\377\377\377\377\377\377\377\357e\0"..., 289) = 289 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/17fcircle.gbr", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/17fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\21\0\0\0\21\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (17)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\0\0\7\10\10\10\7\0\0\0\0\0\0\0\0\0\0\10\v\17\21\22\21\17\v\10\0\0"..., 289) = 289 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/19circle.gbr", {st_mode=S_IFREG|0644, st_size=401, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/19circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\23\0\0\0\23\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (19)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\0&\202\307\360\377\360\307\202&\0\0\0\0\0\0\0\0\0\220\377\377\377\377\377\377\377\377"..., 361) = 361 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/19fcircle.gbr", {st_mode=S_IFREG|0644, st_size=399, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/19fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\23\0\0\0\23\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (19)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\0\0\6\7\10\10\10\7\6\0\0\0\0\0\0\0\0\0\0\6\10\v\16\17\20\17\16\v"..., 361) = 361 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/1circle.gbr", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/1circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Circle (01)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "l", 1) = 1 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/20x20square.gbr", {st_mode=S_IFREG|0644, st_size=443, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/20x20square.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0+\0\0\0\2\0\0\0\24\0\0\0\24\0\0\0\1GIMP\0\0\0002", 28) = 28 +read(5, "square (20x20)\0", 15) = 15 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"..., 400) = 400 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/3fcircle.gbr", {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/3fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\3\0\0\0\3\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (03)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\20P\20P\377P\20P\20", 9) = 9 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/3circle.gbr", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/3circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (03)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\225\377\225\377\377\377\225\377\225", 9) = 9 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/5fcircle.gbr", {st_mode=S_IFREG|0644, st_size=63, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/5fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\5\0\0\0\5\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (05)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\v\25\v\0\vH\206H\v\25\206\377\206\25\vH\206H\v\0\v\25\v\0", 25) = 25 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/5circle.gbr", {st_mode=S_IFREG|0644, st_size=65, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/5circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (05)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "+\302\377\302+\302\377\377\377\302\377\377\377\377\377\302\377\377\377\302+\302\377\302+", 25) = 25 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/5x5squareBlur.gbr", {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/5x5squareBlur.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0.\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0\226", 28) = 28 +read(5, "square (5x5) blur\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\370\335\326\335\370\334P-P\334\325-\3-\325\334P-P\334\370\335\326\335\370", 25) = 25 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/5x5square.gbr", {st_mode=S_IFREG|0644, st_size=66, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/5x5square.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0)\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0002", 28) = 28 +read(5, "square (5x5)\0", 13) = 13 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\377\377\377\377\377\377\1\1\1\377\377\1\1\1\377\377\1\1\1\377\377\377\377\377\377", 25) = 25 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/7fcircle.gbr", {st_mode=S_IFREG|0644, st_size=87, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/7fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\7\0\0\0\7\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (07)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\v\16\v\0\0\0\0243F3\24\0\v3\205\270\2053\v\16F\270\377\270F\16\v3\205\270"..., 49) = 49 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/7circle.gbr", {st_mode=S_IFREG|0644, st_size=89, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/7circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\7\0\0\0\7\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (07)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0d\325\377\325d\0d\377\377\377\377\377d\325\377\377\377\377\377\325\377\377\377\377\377\377\377\325\377\377\377"..., 49) = 49 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/9fcircle.gbr", {st_mode=S_IFREG|0644, st_size=119, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/9fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0\t\0\0\0\t\0\0\0\1Circle F", 28) = 28 +_llseek(5, -8, [20], SEEK_CUR) = 0 +read(5, "Circle Fuzzy (09)\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\6\n\f\n\6\0\0\0\10\25$,$\25\10\0\6\0256`u`6\25\6\n$`\254\321"..., 81) = 81 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/9circle.gbr", {st_mode=S_IFREG|0644, st_size=121, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/9circle.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0\t\0\0\0\t\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Circle (09)\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\206\337\377\337\206\0\0\0\301\377\377\377\377\377\301\0\206\377\377\377\377\377\377\377\206\337\377\377\377\377"..., 81) = 81 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/SketchBrush-16.gih", {st_mode=S_IFREG|0644, st_size=1618, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/SketchBrush-16.gih", O_RDONLY|O_LARGEFILE) = 5 +read(5, "P", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "i", 1) = 1 +read(5, "l", 1) = 1 +read(5, " ", 1) = 1 +read(5, "S", 1) = 1 +read(5, "k", 1) = 1 +read(5, "e", 1) = 1 +read(5, "t", 1) = 1 +read(5, "c", 1) = 1 +read(5, "h", 1) = 1 +read(5, "\n", 1) = 1 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "w", 1) = 1 +read(5, "i", 1) = 1 +read(5, "d", 1) = 1 +read(5, "t", 1) = 1 +read(5, "h", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "6", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "h", 1) = 1 +read(5, "e", 1) = 1 +read(5, "i", 1) = 1 +read(5, "g", 1) = 1 +read(5, "h", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "6", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "p", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "d", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "o", 1) = 1 +read(5, "w", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "p", 1) = 1 +read(5, "l", 1) = 1 +read(5, "a", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "m", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "d", 1) = 1 +read(5, "o", 1) = 1 +read(5, "m", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#5\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U#\0\0\0\0\0\0\0\0"..., 256) = 256 +read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#4\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0*\f\0\0*\0\0\0\0\0\0\0"..., 256) = 256 +read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#3\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\204\21a\0\0\0\0\0"..., 256) = 256 +read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#2\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 256) = 256 +read(5, "\0\0\0*\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch\0", 14) = 14 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0000\0\0\0\0\0\0\0\0\0\0\0"..., 256) = 256 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/DStar11.gbr", {st_mode=S_IFREG|0644, st_size=168, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/DStar11.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\v\0\0\0\v\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Diagonal Star (11)\0", 19) = 19 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\0\0\0\0L\0\0\0\201\0\0\0\0\0\201\0"..., 121) = 121 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/DStar17.gbr", {st_mode=S_IFREG|0644, st_size=336, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/DStar17.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\21\0\0\0\21\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Diagonal Star (17)\0", 19) = 19 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\37\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 289) = 289 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/DStar25.gbr", {st_mode=S_IFREG|0644, st_size=672, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/DStar25.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\31\0\0\0\31\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Diagonal Star (25)\0", 19) = 19 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0\0\0"..., 625) = 625 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/SketchBrush-32.gih", {st_mode=S_IFREG|0644, st_size=5458, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/SketchBrush-32.gih", O_RDONLY|O_LARGEFILE) = 5 +read(5, "P", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "i", 1) = 1 +read(5, "l", 1) = 1 +read(5, " ", 1) = 1 +read(5, "S", 1) = 1 +read(5, "k", 1) = 1 +read(5, "e", 1) = 1 +read(5, "t", 1) = 1 +read(5, "c", 1) = 1 +read(5, "h", 1) = 1 +read(5, "\n", 1) = 1 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "w", 1) = 1 +read(5, "i", 1) = 1 +read(5, "d", 1) = 1 +read(5, "t", 1) = 1 +read(5, "h", 1) = 1 +read(5, ":", 1) = 1 +read(5, "3", 1) = 1 +read(5, "2", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "h", 1) = 1 +read(5, "e", 1) = 1 +read(5, "i", 1) = 1 +read(5, "g", 1) = 1 +read(5, "h", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "3", 1) = 1 +read(5, "2", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "p", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "d", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "o", 1) = 1 +read(5, "w", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "p", 1) = 1 +read(5, "l", 1) = 1 +read(5, "a", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "m", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "d", 1) = 1 +read(5, "o", 1) = 1 +read(5, "m", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "\0\0\0*\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch\0", 14) = 14 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 +read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#2\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 +read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#3\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 +read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#4\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 +read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#5\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/SketchBrush-64.gih", {st_mode=S_IFREG|0644, st_size=20818, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/SketchBrush-64.gih", O_RDONLY|O_LARGEFILE) = 5 +read(5, "P", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "i", 1) = 1 +read(5, "l", 1) = 1 +read(5, " ", 1) = 1 +read(5, "S", 1) = 1 +read(5, "k", 1) = 1 +read(5, "e", 1) = 1 +read(5, "t", 1) = 1 +read(5, "c", 1) = 1 +read(5, "h", 1) = 1 +read(5, "\n", 1) = 1 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +munmap(0xb71d1000, 32768) = 0 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "w", 1) = 1 +read(5, "i", 1) = 1 +read(5, "d", 1) = 1 +read(5, "t", 1) = 1 +read(5, "h", 1) = 1 +read(5, ":", 1) = 1 +read(5, "6", 1) = 1 +read(5, "4", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "h", 1) = 1 +read(5, "e", 1) = 1 +read(5, "i", 1) = 1 +read(5, "g", 1) = 1 +read(5, "h", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "6", 1) = 1 +read(5, "4", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "p", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "d", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "o", 1) = 1 +read(5, "w", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "p", 1) = 1 +read(5, "l", 1) = 1 +read(5, "a", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "m", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "d", 1) = 1 +read(5, "o", 1) = 1 +read(5, "m", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "\0\0\0*\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch\0", 14) = 14 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 +read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#2\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 +read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#3\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 +read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#4\0", 16) = 16 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 +read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 +read(5, "Pencil Sketch#5\0", 16) = 16 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d7000 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/callig1.gbr", {st_mode=S_IFREG|0644, st_size=147, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/callig1.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\n\0\0\0\n\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Calligraphic Brush\0", 19) = 19 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 +munmap(0xb71cf000, 32768) = 0 +read(5, "\0\0\0\0\0\0\10F\212$\0\0\0\0\0\th\342\357X\0\0\0\0\3Z\361\377\353E\0\0"..., 100) = 100 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/callig2.gbr", {st_mode=S_IFREG|0644, st_size=447, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/callig2.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\24\0\0\0\24\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Calligraphic Brush\0", 19) = 19 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 +munmap(0xb71cf000, 32768) = 0 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10L\237G\0\0\0\0\0\0\0\0\0\0\0\0"..., 400) = 400 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/callig3.gbr", {st_mode=S_IFREG|0644, st_size=272, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/callig3.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\17\0\0\0\17\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Calligraphic Brush\0", 19) = 19 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 +munmap(0xb71cf000, 32768) = 0 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\6=\223M\0\0\0\0\0\0\0\0\0\0\1K\353\377\331\0\0"..., 225) = 225 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/callig4.gbr", {st_mode=S_IFREG|0644, st_size=72, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/callig4.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Calligraphic Brush\0", 19) = 19 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 +munmap(0xb71cf000, 32768) = 0 +read(5, "\0\5*]\'\3C\322\364\2300\334\376\371v\221\377\376\265\25=\311\247$\0", 25) = 25 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/confetti.gbr", {st_mode=S_IFREG|0644, st_size=793, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/confetti.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0%\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0K", 28) = 28 +read(5, "Confetti\0", 9) = 9 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 +munmap(0xb71cf000, 32768) = 0 +read(5, "\0\0\0\7\31\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\26R"..., 756) = 756 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/confetti.gih", {st_mode=S_IFREG|0644, st_size=8076, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/confetti.gih", O_RDONLY|O_LARGEFILE) = 5 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, "a", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "d", 1) = 1 +read(5, " ", 1) = 1 +read(5, "C", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "f", 1) = 1 +read(5, "e", 1) = 1 +read(5, "t", 1) = 1 +read(5, "t", 1) = 1 +read(5, "i", 1) = 1 +read(5, "\n", 1) = 1 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 +munmap(0xb71cf000, 32768) = 0 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "w", 1) = 1 +read(5, "i", 1) = 1 +read(5, "d", 1) = 1 +read(5, "t", 1) = 1 +read(5, "h", 1) = 1 +read(5, ":", 1) = 1 +read(5, "2", 1) = 1 +read(5, "7", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "h", 1) = 1 +read(5, "e", 1) = 1 +read(5, "i", 1) = 1 +read(5, "g", 1) = 1 +read(5, "h", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "2", 1) = 1 +read(5, "8", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "p", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "d", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "o", 1) = 1 +read(5, "w", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "p", 1) = 1 +read(5, "l", 1) = 1 +read(5, "a", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "m", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "d", 1) = 1 +read(5, "o", 1) = 1 +read(5, "m", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "\0\0\0(\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#10\0", 12) = 12 +brk(0x84e6000) = 0x84e6000 +read(5, "\0\0\0\7\31\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\26R"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#9\0", 11) = 11 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#8\0", 11) = 11 +read(5, "\0\0\0\2\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#7\0", 11) = 11 +read(5, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#6\0", 11) = 11 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#5\0", 11) = 11 +read(5, "\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#4\0", 11) = 11 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#3\0", 11) = 11 +read(5, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti#2\0", 11) = 11 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +read(5, "\0\0\0%\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 +read(5, "Confetti\0", 9) = 9 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/dunes.gbr", {st_mode=S_IFREG|0644, st_size=1100, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/dunes.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0,\0\0\0\2\0\0\0!\0\0\0 \0\0\0\1GIMP\0\0\0d", 28) = 28 +read(5, "Sand Dunes (AP)\0", 16) = 16 +read(5, "\0\0\0\0\6\34#\34\26\r\7\3\1\1\0\0\0\6\17$32%\30\17\7\6\3\1\0\0\0"..., 1056) = 1056 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/feltpen.gih", {st_mode=S_IFREG|0644, st_size=118799, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/feltpen.gih", O_RDONLY|O_LARGEFILE) = 5 +read(5, "F", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "P", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "1", 1) = 1 +read(5, "2", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "2", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "w", 1) = 1 +read(5, "i", 1) = 1 +read(5, "d", 1) = 1 +read(5, "t", 1) = 1 +read(5, "h", 1) = 1 +read(5, ":", 1) = 1 +read(5, "3", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "h", 1) = 1 +read(5, "e", 1) = 1 +read(5, "i", 1) = 1 +read(5, "g", 1) = 1 +read(5, "h", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "3", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "p", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "d", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, ":", 1) = 1 +read(5, "3", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "o", 1) = 1 +read(5, "w", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "p", 1) = 1 +read(5, "l", 1) = 1 +read(5, "a", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "m", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "p", 1) = 1 +read(5, "r", 1) = 1 +read(5, "e", 1) = 1 +read(5, "s", 1) = 1 +read(5, "s", 1) = 1 +read(5, "u", 1) = 1 +read(5, "r", 1) = 1 +read(5, "e", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "1", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "1", 1) = 1 +read(5, ":", 1) = 1 +read(5, "y", 1) = 1 +read(5, "t", 1) = 1 +read(5, "i", 1) = 1 +read(5, "l", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "2", 1) = 1 +read(5, ":", 1) = 1 +read(5, "5", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "2", 1) = 1 +read(5, ":", 1) = 1 +read(5, "x", 1) = 1 +read(5, "t", 1) = 1 +read(5, "i", 1) = 1 +read(5, "l", 1) = 1 +read(5, "t", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "\0\0\0.\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush\0", 18) = 18 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#2\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#3\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#4\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#5\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#6\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#7\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#8\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#9\0", 20) = 20 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#10\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#11\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#12\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#13\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#14\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#15\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#16\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#17\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#18\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#19\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#20\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#21\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#22\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#23\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#24\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#25\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#26\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#27\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#28\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#29\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#30\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#31\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#32\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#33\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#34\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#35\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#36\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#37\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#38\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#39\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#40\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#41\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#42\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#43\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#44\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#45\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#46\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#47\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#48\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#49\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#50\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#51\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#52\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#53\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#54\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#55\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#56\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#57\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#58\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#59\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#60\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#61\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#62\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#63\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#64\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#65\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#66\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#67\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#68\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#69\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#70\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#71\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#72\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#73\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#74\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#75\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#76\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#77\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#78\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#79\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#80\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#81\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#82\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#83\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#84\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#85\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#86\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#87\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#88\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#89\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#90\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#91\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#92\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#93\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#94\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#95\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#96\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#97\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#98\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#99\0", 21) = 21 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#100\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#101\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#102\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#103\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#104\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#105\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#106\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#107\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#108\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#109\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#110\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#111\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#112\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#113\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#114\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#115\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#116\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#117\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#118\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#119\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#120\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#121\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#122\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#123\0", 22) = 22 +brk(0x8507000) = 0x8507000 +brk(0x8506000) = 0x8506000 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#124\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 +read(5, "GIMP Pixmap Brush#125\0", 22) = 22 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/galaxy.gbr", {st_mode=S_IFREG|0644, st_size=2637, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/galaxy.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0005\0\0\0001\0\0\0\1GIMP\0\0\0K", 28) = 28 +read(5, "Galaxy (AP)\0", 12) = 12 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\2\6\10\n\16\24\24\20\v"..., 2597) = 2597 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/galaxy_big.gbr", {st_mode=S_IFREG|0644, st_size=10040, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/galaxy_big.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\2\0\0\0d\0\0\0d\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "Galaxy, Big\0", 12) = 12 +read(5, "\1\2\3\3\2\1\3\3\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\6\1\1\0\0"..., 10000) = 10000 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/galaxy_small.gbr", {st_mode=S_IFREG|0644, st_size=749, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/galaxy_small.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\33\0\0\0\32\0\0\0\1GIMP\0\0\0K", 28) = 28 +read(5, "Galaxy, Small (AP)\0", 19) = 19 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\1\2\1\2\2\2\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 702) = 702 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/hsparks.gih", {st_mode=S_IFREG|0644, st_size=127644, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/hsparks.gih", O_RDONLY|O_LARGEFILE) = 5 +read(5, "S", 1) = 1 +read(5, "p", 1) = 1 +read(5, "a", 1) = 1 +read(5, "r", 1) = 1 +read(5, "k", 1) = 1 +read(5, "s", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "9", 1) = 1 +read(5, " ", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "9", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "w", 1) = 1 +read(5, "i", 1) = 1 +read(5, "d", 1) = 1 +read(5, "t", 1) = 1 +read(5, "h", 1) = 1 +read(5, ":", 1) = 1 +read(5, "6", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "h", 1) = 1 +read(5, "e", 1) = 1 +read(5, "i", 1) = 1 +read(5, "g", 1) = 1 +read(5, "h", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "6", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "p", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "d", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "o", 1) = 1 +read(5, "w", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "p", 1) = 1 +read(5, "l", 1) = 1 +read(5, "a", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "m", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "9", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "d", 1) = 1 +read(5, "o", 1) = 1 +read(5, "m", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "\0\0\0#\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks\0", 7) = 7 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\372L\0<\367W\0F\373_\0P\371f\0Z\371n\0c\374x\0j\374\202\0q\372\222\0v"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#2\0", 9) = 9 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#3\0", 9) = 9 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#4\0", 9) = 9 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#5\0", 9) = 9 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#6\0", 9) = 9 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#7\0", 9) = 9 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#8\0", 9) = 9 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d4000 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 +read(5, "\0\0\0%\0\0\0\2\0\0\0002\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 +read(5, "Sparks#9\0", 9) = 9 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3808) = 3808 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/pepper.gbr", {st_mode=S_IFREG|0644, st_size=11991, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/pepper.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0#\0\0\0\2\0\0\0001\0\0\0=\0\0\0\4GIMP\0\0\0d", 28) = 28 +read(5, "Pepper\0", 7) = 7 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71c9000 +munmap(0xb71c9000, 32768) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71ce000 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "w\245N\377z\251S\377~\257[\377{\256Y\377}\262[\376|\263[\363\177\253_\320.2\35:"..., 3764) = 3764 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/pixel.gbr", {st_mode=S_IFREG|0644, st_size=48, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/pixel.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0/\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1GIMP\0\0\0002", 28) = 28 +read(5, "pixel (1x1 square)\0", 19) = 19 +brk(0x8527000) = 0x8527000 +read(5, "\377", 1) = 1 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/thegimp.gbr", {st_mode=S_IFREG|0644, st_size=2514, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/thegimp.gbr", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\'\0\0\0\2\0\0\0007\0\0\0-\0\0\0\1GIMP\0\0\0\n", 28) = 28 +read(5, "GIMP Brush\0", 11) = 11 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2475) = 2475 +close(5) = 0 +stat64("/usr/share/gimp/2.0/brushes/vine.gih", {st_mode=S_IFREG|0644, st_size=116027, ...}) = 0 +open("/usr/share/gimp/2.0/brushes/vine.gih", O_RDONLY|O_LARGEFILE) = 5 +read(5, "V", 1) = 1 +read(5, "i", 1) = 1 +read(5, "n", 1) = 1 +read(5, "e", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "6", 1) = 1 +read(5, " ", 1) = 1 +read(5, "n", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "6", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "w", 1) = 1 +read(5, "i", 1) = 1 +read(5, "d", 1) = 1 +read(5, "t", 1) = 1 +read(5, "h", 1) = 1 +read(5, ":", 1) = 1 +read(5, "7", 1) = 1 +read(5, "7", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "l", 1) = 1 +read(5, "h", 1) = 1 +read(5, "e", 1) = 1 +read(5, "i", 1) = 1 +read(5, "g", 1) = 1 +read(5, "h", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "7", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "e", 1) = 1 +read(5, "p", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, "0", 1) = 1 +read(5, "0", 1) = 1 +read(5, " ", 1) = 1 +read(5, "d", 1) = 1 +read(5, "i", 1) = 1 +read(5, "m", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "l", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "o", 1) = 1 +read(5, "w", 1) = 1 +read(5, "s", 1) = 1 +read(5, ":", 1) = 1 +read(5, "1", 1) = 1 +read(5, " ", 1) = 1 +read(5, "p", 1) = 1 +read(5, "l", 1) = 1 +read(5, "a", 1) = 1 +read(5, "c", 1) = 1 +read(5, "e", 1) = 1 +read(5, "m", 1) = 1 +read(5, "e", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, ":", 1) = 1 +read(5, "c", 1) = 1 +read(5, "o", 1) = 1 +read(5, "n", 1) = 1 +read(5, "s", 1) = 1 +read(5, "t", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "t", 1) = 1 +read(5, " ", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "k", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "6", 1) = 1 +read(5, " ", 1) = 1 +read(5, "s", 1) = 1 +read(5, "e", 1) = 1 +read(5, "l", 1) = 1 +read(5, "0", 1) = 1 +read(5, ":", 1) = 1 +read(5, "r", 1) = 1 +read(5, "a", 1) = 1 +read(5, "n", 1) = 1 +read(5, "d", 1) = 1 +read(5, "o", 1) = 1 +read(5, "m", 1) = 1 +read(5, "\n", 1) = 1 +read(5, "\0\0\0\'\0\0\0\2\0\0\0M\0\0\0G\0\0\0\4GIMP\0\0\0\36", 28) = 28 +read(5, "GIMP Brush\0", 11) = 11 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 5484) = 5484 +read(5, "\0\0\0)\0\0\0\2\0\0\0I\0\0\0?\0\0\0\4GIMP\0\0\0\36", 28) = 28 +read(5, "GIMP Brush#2\0", 13) = 13 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2012) = 2012 +read(5, "\0\0\0)\0\0\0\2\0\0\0M\0\0\0?\0\0\0\4GIMP\0\0\0\36", 28) = 28 +read(5, "GIMP Brush#3\0", 13) = 13 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\n\v\n\v\\mK\204"..., 8192) = 8192 +read(5, "\10\10\10\t\2\2\2\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3020) = 3020 +read(5, "\0\0\0)\0\0\0\2\0\0\0M\0\0\0?\0\0\0\4GIMP\0\0\0\36", 28) = 28 +read(5, "GIMP Brush#4\0", 13) = 13 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\n\v\n\v\\mK\204"..., 8192) = 8192 +read(5, "\10\10\10\t\2\2\2\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3020) = 3020 +read(5, "\0\0\0)\0\0\0\2\0\0\0I\0\0\0=\0\0\0\4GIMP\0\0\0\36", 28) = 28 +read(5, "GIMP Brush#5\0", 13) = 13 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1428) = 1428 +read(5, "\0\0\0)\0\0\0\2\0\0\0M\0\0\0=\0\0\0\4GIMP\0\0\0\36", 28) = 28 +read(5, "GIMP Brush#6\0", 13) = 13 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 +read(5, "\204\263U\372V\201+\377R{)\377Mt\'\377D\\,\334Lr(\3661-\207x\7WK\5^Q\tgW\5_P\1VH\7hY\27u"..., 6075) = 6075 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/Craters.pat", {st_mode=S_IFREG|0644, st_size=39707, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/Craters.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0 \0\0\0\1\0\0\0s\0\0\0s\0\0\0\3GPAT", 24) = 24 +read(5, "Craters\0", 8) = 8 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e6a000 +munmap(0xb6e6a000, 32768) = 0 +mmap2(NULL, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e68000 +read(5, "rt\233z|\243\201\203\252|~\245lo\230\\_\210UX\201VY\202gl\226`e\217Za"..., 39675) = 39675 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/crinklepaper.pat", {st_mode=S_IFREG|0644, st_size=49191, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/crinklepaper.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\'\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 +read(5, "Crinkled Paper\0", 15) = 15 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e60000 +munmap(0xb6e60000, 32768) = 0 +mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e5b000 +read(5, "\327\257\214\331\261\216\334\264\221\337\267\224\337\267\224\334\264\221\330\261\220\326\257\216\333\264\223\333\264\223\334\265"..., 49152) = 49152 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/Stripes1px.pat", {st_mode=S_IFREG|0644, st_size=9253, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/Stripes1px.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0%\0\0\0\1\0\0\0000\0\0\0000\0\0\0\4GPAT", 24) = 24 +read(5, "Stripes Fine\0", 13) = 13 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e53000 +munmap(0xb6e53000, 32768) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e58000 +read(5, "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"..., 9216) = 9216 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/Stripes2px.pat", {st_mode=S_IFREG|0644, st_size=9248, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/Stripes2px.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0 \0\0\0\1\0\0\0000\0\0\0000\0\0\0\4GPAT", 24) = 24 +read(5, "Stripes\0", 8) = 8 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e50000 +munmap(0xb6e50000, 32768) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e55000 +read(5, "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"..., 9216) = 9216 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/amethyst.pat", {st_mode=S_IFREG|0644, st_size=12321, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/amethyst.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0!\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Amethyst\0", 9) = 9 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4d000 +munmap(0xb6e4d000, 32768) = 0 +brk(0x8548000) = 0x8548000 +brk(0x8547000) = 0x8547000 +read(5, "^FW^LZjSc\202s\204{o\200p_oeS_YCQW=NO6HO3"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/bark.pat", {st_mode=S_IFREG|0644, st_size=22174, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/bark.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0R\0\0\0Z\0\0\0\3GPAT", 24) = 24 +read(5, "Tree Bark\0", 10) = 10 +read(5, "[H7wbO\204iT\236\200h\210fM\215iQ{XB\245\204q\240\204v\232\202vE1"..., 22140) = 22140 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/blue.pat", {st_mode=S_IFREG|0644, st_size=6108, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/blue.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0!\0\0\0\1\0\0\0-\0\0\0-\0\0\0\3GPAT", 24) = 24 +read(5, "Big Blue\0", 9) = 9 +read(5, "\0\0\177\0\0\177\0\0\177\0\0\177\0\0~\0\0~\0\0\177\0\0\200\0\0\201\0\0\177\0\0"..., 6075) = 6075 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/bluegrid.pat", {st_mode=S_IFREG|0644, st_size=1909, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/bluegrid.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0\31\0\0\0\31\0\0\0\3GPAT", 24) = 24 +read(5, "Blue Grid\0", 10) = 10 +read(5, "v\200\273mw\262z\204\277\177\211\304nx\263r|\267\214\226\321\225\237\332\211\223\320[e\242~\207"..., 1875) = 1875 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/bluesquares.pat", {st_mode=S_IFREG|0644, st_size=48037, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/bluesquares.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0%\0\0\0\1\0\0\0\240\0\0\0d\0\0\0\3GPAT", 24) = 24 +read(5, "Blue Squares\0", 13) = 13 +read(5, "\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\267\316\322Jt"..., 48000) = 48000 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/blueweb.pat", {st_mode=S_IFREG|0644, st_size=12321, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/blueweb.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0!\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Blue Web\0", 9) = 9 +read(5, "-@\345)=\345#m\345#e\345#G\345#Z\345\"a\345#x\345=#\345#k\345#K"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/brick.pat", {st_mode=S_IFREG|0644, st_size=27679, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/brick.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\37\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 +read(5, "Bricks\0", 7) = 7 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4d000 +munmap(0xb6e4d000, 32768) = 0 +mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4e000 +read(5, "\216kd\216lh\201`\\\215kh\232ys\207fd\242\204}\222ss\204gi\223xw\201h"..., 27648) = 27648 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/burlap.pat", {st_mode=S_IFREG|0644, st_size=27679, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/burlap.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\37\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 +read(5, "Burlap\0", 7) = 7 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e46000 +munmap(0xb6e46000, 32768) = 0 +mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e47000 +read(5, "*\f\2O.%S.%vPER\'\36<\24\10H#\23D%\23M2\37oZE<\'"..., 27648) = 27648 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/burlwood.pat", {st_mode=S_IFREG|0644, st_size=27681, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/burlwood.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0!\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 +read(5, "Burlwood\0", 9) = 9 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e3f000 +munmap(0xb6e3f000, 32768) = 0 +mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e40000 +read(5, "\274l3\254c$\264k+\264w4\264k+\254k,\264l=\274yE\244wK\264\206C\254\177"..., 27648) = 27648 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/choc_swirl.pat", {st_mode=S_IFREG|0644, st_size=7540, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/choc_swirl.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0(\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 +read(5, "Chocolate Swirl\0", 16) = 16 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e38000 +munmap(0xb6e38000, 32768) = 0 +read(5, "v5\20\201?\35|:\31u2\25w4\32|8!w3 b\37\rI\22\n7\3\0005\4"..., 7500) = 7500 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/corkboard.pat", {st_mode=S_IFREG|0644, st_size=10097, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/corkboard.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0#\0\0\0\1\0\0\0N\0\0\0+\0\0\0\3GPAT", 24) = 24 +read(5, "Cork board\0", 11) = 11 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e38000 +munmap(0xb6e38000, 32768) = 0 +read(5, "\254\233\203\264\244\203\255\224{\254\233\203\254\233\203\245\223{\245\223{\244\223\203\255\234{\254\233\203\254\223"..., 10062) = 10062 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/cracked.pat", {st_mode=S_IFREG|0644, st_size=62238, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/cracked.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0\220\0\0\0\220\0\0\0\3GPAT", 24) = 24 +read(5, "Crack\0", 6) = 6 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e38000 +munmap(0xb6e38000, 32768) = 0 +mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e30000 +read(5, "IEFQMNRNOJFGFBCNJKXTU]YZa]^_[\\[W"..., 62208) = 62208 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/electric.pat", {st_mode=S_IFREG|0644, st_size=9638, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/electric.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0P\0\0\0(\0\0\0\3GPAT", 24) = 24 +read(5, "Electric Blue\0", 14) = 14 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e28000 +munmap(0xb6e28000, 32768) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e2d000 +read(5, "\2\0\222\0\2\215\2\0\216\10\0\214\5\0\206\5%\257\6e\307\6a\312\t)\266\2\5\230\1\1"..., 9600) = 9600 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/fibers.pat", {st_mode=S_IFREG|0644, st_size=7531, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/fibers.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\37\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 +read(5, "Fibers\0", 7) = 7 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e25000 +munmap(0xb6e25000, 32768) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e2b000 +read(5, "\353\371\364\336\347\354\265\270\305\325\323\335\332\334\346\322\331\336\350\364\366\343\361\363\327\343\357\340\352\362\313\320"..., 7500) = 7500 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/granite1.pat", {st_mode=S_IFREG|0644, st_size=10035, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/granite1.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0#\0\0\0\1\0\0\0d\0\0\0d\0\0\0\1GPAT", 24) = 24 +read(5, "Granite #1\0", 11) = 11 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e23000 +munmap(0xb6e23000, 32768) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e28000 +read(5, "+C<*#$)&10GQ8210\"\25\24\27\37A\223u9,5I)\30\23\33"..., 10000) = 10000 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/ground1.pat", {st_mode=S_IFREG|0644, st_size=30034, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/ground1.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0d\0\0\0d\0\0\0\3GPAT", 24) = 24 +read(5, "Dried mud\0", 10) = 10 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e20000 +munmap(0xb6e20000, 32768) = 0 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e20000 +read(5, "xB\36\224`;\222^9R\"\0\216`<\373\321\253\353\303\237\343\275\230\335\271\225\312\246\202\307\240"..., 30000) = 30000 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/ice.pat", {st_mode=S_IFREG|0644, st_size=43228, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/ice.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\34\0\0\0\1\0\0\0x\0\0\0x\0\0\0\3GPAT", 24) = 24 +read(5, "Ice\0", 4) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e18000 +munmap(0xb6e18000, 32768) = 0 +mmap2(NULL, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e15000 +read(5, "\343\345\371\331\334\357\327\332\354\330\333\356\327\332\355\330\333\356\325\330\352\330\333\356\325\330\353\321\323\346\332\335"..., 43200) = 43200 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/java.pat", {st_mode=S_IFREG|0644, st_size=12317, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/java.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\35\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Java\0", 5) = 5 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e0d000 +munmap(0xb6e0d000, 32768) = 0 +mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e11000 +read(5, ")\23\0266 #;%(D.18\"%0\32\0359#&D.15\37\")\23\26?$"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/leather.pat", {st_mode=S_IFREG|0644, st_size=12320, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/leather.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0 \0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Leather\0", 8) = 8 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e09000 +munmap(0xb6e09000, 32768) = 0 +mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e0d000 +read(5, ";\t\5F\v\5C\v\6N\16\10K\r\7d\24\t\207\37\20i\24\tC\v\6G\n\6K\f"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/leaves.pat", {st_mode=S_IFREG|0644, st_size=7537, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/leaves.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0%\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 +read(5, "Maple Leaves\0", 13) = 13 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e05000 +munmap(0xb6e05000, 32768) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e0b000 +read(5, "-Y\0046c\0104a\0060\\\0065Z\0071\\\0060]\0047`\4@b\26\33,\10\31\'"..., 7500) = 7500 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/leopard.pat", {st_mode=S_IFREG|0644, st_size=11936, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/leopard.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0 \0\0\0\1\0\0\0@\0\0\0>\0\0\0\3GPAT", 24) = 24 +read(5, "Leopard\0", 8) = 8 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e03000 +munmap(0xb6e03000, 32768) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e08000 +read(5, "7*\37\244uR\313\221h\310\215b\303\216hx^K0\'\37\17\r\n\2\2\2\2\2\2\n\7"..., 11904) = 11904 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/lightning.pat", {st_mode=S_IFREG|0644, st_size=40723, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/lightning.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0\211\0\0\0c\0\0\0\3GPAT", 24) = 24 +read(5, "Lightning\0", 10) = 10 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e00000 +munmap(0xb6e00000, 32768) = 0 +brk(0x8568000) = 0x8568000 +brk(0x8567000) = 0x8567000 +read(5, "\376\310\354\374\310\356\313\235\302yPxC\"O>$S?)Z0 Q6%[-\37R9\'"..., 40689) = 40689 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/marble1.pat", {st_mode=S_IFREG|0644, st_size=16418, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/marble1.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\1GPAT", 24) = 24 +read(5, "Marble #1\0", 10) = 10 +read(5, "\355\367\360\360\362\347\357\353\347\355\364\354\346\375\364\357\360\354\362\351\360\342\344\334\352\347\354\364\366\367\365\357"..., 16384) = 16384 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/marble2.pat", {st_mode=S_IFREG|0644, st_size=16418, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/marble2.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\1GPAT", 24) = 24 +read(5, "Marble #2\0", 10) = 10 +read(5, "\340\330\333\323\320\313\277\242\261\261\272\302\310\323\330\341\340\341\343\351\341\351\361\351\351\351\361\354\361\351\361\351"..., 16384) = 16384 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/marble3.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/marble3.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Marble #3\0", 10) = 10 +read(5, "\304\302\300\316\315\306\311\310\304\312\307\303\323\314\306\336\332\322\347\351\341\335\336\325\321\324\316\311\322\323\323\326"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/nops.pat", {st_mode=S_IFREG|0644, st_size=49181, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/nops.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\35\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 +read(5, "Nops\0", 5) = 5 +mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dfb000 +read(5, "\354\354\354\351\351\351\343\343\343\337\337\337\332\332\332\322\322\322\305\305\305\270\270\270\245\245\245\220\220\220~~"..., 49152) = 49152 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/paper.pat", {st_mode=S_IFREG|0644, st_size=10030, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/paper.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0d\0\0\0d\0\0\0\1GPAT", 24) = 24 +read(5, "Paper\0", 6) = 6 +read(5, "\240\233\261\234\244\253|\204\213\203\200\177uyh\240\243\206|{\213a\217{\272\223\212}\213\253\270\223"..., 10000) = 10000 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/parque1.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/parque1.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Parque #1\0", 10) = 10 +read(5, "\310s1\263X,\302i+\272`;\273fE\310|9\257Z*\300c6\266W\33\217/\n\273d"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/parque2.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/parque2.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Parque #2\0", 10) = 10 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df3000 +munmap(0xb6df3000, 32768) = 0 +read(5, "\254`\36\245R\30\256V\27\260X\30\2155\t\220?\r\224F\22\234L!\217?\24\224F\22\270l"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/parque3.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/parque3.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Parque #3\0", 10) = 10 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df3000 +munmap(0xb6df3000, 32768) = 0 +mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df7000 +read(5, "T%+o61\253gH\300vS\243TLi-7\235dC\330\224gv>:p?7\244P"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/pastel.pat", {st_mode=S_IFREG|0644, st_size=12325, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/pastel.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0%\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Pastel Stuff\0", 13) = 13 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6def000 +munmap(0xb6def000, 32768) = 0 +mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df3000 +read(5, "4S\2372[\226N9\215G\32kW;yT:\210R8\236k2\224\1778\215m9\211\201@"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/pine.pat", {st_mode=S_IFREG|0644, st_size=10781, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/pine.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\35\0\0\0\1\0\0\0@\0\0\0008\0\0\0\3GPAT", 24) = 24 +read(5, "Pine\0", 5) = 5 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6deb000 +munmap(0xb6deb000, 32768) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df0000 +read(5, "f3\0\314f3\377\256L\377\314f\377\3143\377\314f\377\314f\377\256L\377\300T\377\300T\377\231"..., 10752) = 10752 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/pink_marble.pat", {st_mode=S_IFREG|0644, st_size=49188, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/pink_marble.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0$\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 +read(5, "Pink Marble\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6de8000 +munmap(0xb6de8000, 32768) = 0 +mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6de3000 +read(5, "\344\312\304\354\316\304\354\316\304\364\326\314\354\322\304\364\332\314\354\322\304\364\322\304\364\322\304\354\316\274\354\312"..., 49152) = 49152 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/pool.pat", {st_mode=S_IFREG|0644, st_size=6111, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/pool.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0$\0\0\0\1\0\0\0-\0\0\0-\0\0\0\3GPAT", 24) = 24 +read(5, "Pool Bottom\0", 12) = 12 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ddb000 +munmap(0xb6ddb000, 32768) = 0 +read(5, "v\217\305k\204\272n\207\275o\210\276n\207\275k\204\272l\205\273v\217\305w\220\306p\212\275q\213"..., 6075) = 6075 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/qube1.pat", {st_mode=S_IFREG|0644, st_size=5331, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/qube1.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0\37\0\0\0009\0\0\0\3GPAT", 24) = 24 +read(5, "Qbert\0", 6) = 6 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ddb000 +munmap(0xb6ddb000, 32768) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6de1000 +read(5, "-7[06Z00RF?`,\30=W=bP,XF Og?s@\33OO/"..., 5301) = 5301 +close(5) = 0 +brk(0x8588000) = 0x8588000 +stat64("/usr/share/gimp/2.0/patterns/rain.pat", {st_mode=S_IFREG|0644, st_size=35021, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/rain.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\35\0\0\0\1\0\0\0l\0\0\0l\0\0\0\3GPAT", 24) = 24 +read(5, "Rain\0", 5) = 5 +read(5, "\213\276\367\216\301\372\221\305\377\223\307\377\217\305\377\213\301\375\207\275\371\205\273\367\224\310\377\217\303\374\223\304"..., 34992) = 34992 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/recessed.pat", {st_mode=S_IFREG|0644, st_size=6433, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/recessed.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0!\0\0\0\1\0\0\0P\0\0\0P\0\0\0\1GPAT", 24) = 24 +read(5, "recessed\0", 9) = 9 +read(5, "w\201\203|`22a\207x~\204~\201vT3/K{\215~x\203j\202\205c8*It"..., 6400) = 6400 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/redcube.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/redcube.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Red Cubes\0", 10) = 10 +read(5, "\0\4\2\16\0\5\1\1\4\1\2\3\0\7\0\5\4\0P\4\6{\27\26\212\20\17\242\25\31\260\22"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/rock.pat", {st_mode=S_IFREG|0644, st_size=30510, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/rock.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0\177\0\0\0P\0\0\0\3GPAT", 24) = 24 +read(5, "Rocks\0", 6) = 6 +read(5, "\234\225\202\231\222\177\252\243\221|uc\205\177osp_\204\201r`aQgg[VXKz}"..., 30480) = 30480 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/sky.pat", {st_mode=S_IFREG|0644, st_size=11002, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/sky.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\34\0\0\0\1\0\0\0;\0\0\0>\0\0\0\3GPAT", 24) = 24 +read(5, "Sky\0", 4) = 4 +read(5, "\275\306\367\265\306\367\265\306\367\265\275\357\265\306\357\245\275\357\255\275\367\255\275\357\234\265\357\245\275\357\255\275"..., 10974) = 10974 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/slate.pat", {st_mode=S_IFREG|0644, st_size=16414, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/slate.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\1GPAT", 24) = 24 +read(5, "Slate\0", 6) = 6 +read(5, "DDDfUDDDUUUfDUDUDDUUUUDUUDDDffUU"..., 16384) = 16384 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/sm_squares.pat", {st_mode=S_IFREG|0644, st_size=7538, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/sm_squares.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0&\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 +read(5, "Small Squares\0", 14) = 14 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dd9000 +munmap(0xb6dd9000, 32768) = 0 +read(5, "\372\301T\364\300Q\364\301R\373\301Y\370\264V\366\250S\354\234I\354\240L\350\231Q\326\205I\360\236"..., 7500) = 7500 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/starfield.pat", {st_mode=S_IFREG|0644, st_size=49186, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/starfield.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\"\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 +read(5, "Starfield\0", 10) = 10 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dd9000 +munmap(0xb6dd9000, 32768) = 0 +mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dd4000 +read(5, "\4\7\r\4\10\34\4\t1\5\n@\f\7<\v\7D\10\7N\6\7V\5\10Z\10\6o\t\5"..., 49152) = 49152 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/stone33.pat", {st_mode=S_IFREG|0644, st_size=73038, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/stone33.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0\234\0\0\0\234\0\0\0\3GPAT", 24) = 24 +read(5, "Stone\0", 6) = 6 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dcc000 +munmap(0xb6dcc000, 32768) = 0 +mmap2(NULL, 73728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dc2000 +read(5, "\204\211\237\230\235\263\232\237\265\221\226\254\226\234\262\231\237\265\214\224\251\200\210\235\203\216\244\220\233\261w\203"..., 73008) = 73008 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/terra.pat", {st_mode=S_IFREG|0644, st_size=12318, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/terra.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 +read(5, "Terra\0", 6) = 6 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dba000 +munmap(0xb6dba000, 32768) = 0 +mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dbe000 +read(5, "\322q-\314o)\324w3\330y1\320s-\322o1\320q3\322{/\324u1\324s1\322w"..., 12288) = 12288 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/walnut.pat", {st_mode=S_IFREG|0644, st_size=49183, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/walnut.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\37\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 +read(5, "Walnut\0", 7) = 7 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6db6000 +munmap(0xb6db6000, 32768) = 0 +mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6db1000 +read(5, "\204B1\224J1\224R9{B){91Z!\30c1)k1\30k1!c1){9"..., 49152) = 49152 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/warning.pat", {st_mode=S_IFREG|0644, st_size=1233, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/warning.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0!\0\0\0\1\0\0\0\24\0\0\0\24\0\0\0\3GPAT", 24) = 24 +read(5, "Warning!\0", 9) = 9 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da9000 +munmap(0xb6da9000, 32768) = 0 +read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377"..., 1200) = 1200 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/wood1.pat", {st_mode=S_IFREG|0644, st_size=27690, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/wood1.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0*\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 +read(5, "Wood of some sort\0", 18) = 18 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da9000 +munmap(0xb6da9000, 32768) = 0 +mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6daa000 +read(5, "\264e\34\254`\24\254`\24\244Z\v\244U\f\244Z\v\254a\36\264l!\274m\"\264l!\264e"..., 27648) = 27648 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/wood2.pat", {st_mode=S_IFREG|0644, st_size=30030, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/wood2.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\36\0\0\0\1\0\0\0d\0\0\0d\0\0\0\3GPAT", 24) = 24 +read(5, "Pine?\0", 6) = 6 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da2000 +munmap(0xb6da2000, 32768) = 0 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da2000 +read(5, "\377\272Y\377\303e\353\252A\377\262A\377\262A\377\262A\377\272Y\377\303e\353\252A\377\262A\377\262"..., 30000) = 30000 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/wood3.pat", {st_mode=S_IFREG|0644, st_size=7532, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/wood3.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0 \0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 +read(5, "Wood #1\0", 8) = 8 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d9a000 +munmap(0xb6d9a000, 32768) = 0 +read(5, "\262h,\276u4\266l-\263j-\256c*\264h+\270j,\266f,\255a*\256c*\241W"..., 7500) = 7500 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/wood4.pat", {st_mode=S_IFREG|0644, st_size=7532, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/wood4.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0 \0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 +read(5, "Wood #2\0", 8) = 8 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d9a000 +munmap(0xb6d9a000, 32768) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da0000 +read(5, "\201;\32w:\34t7\35m6\34c3\33i3\33j1\32f4\34e5\35_0\31b1"..., 7500) = 7500 +close(5) = 0 +stat64("/usr/share/gimp/2.0/patterns/wood5.pat", {st_mode=S_IFREG|0644, st_size=27677, ...}) = 0 +open("/usr/share/gimp/2.0/patterns/wood5.pat", O_RDONLY|O_LARGEFILE) = 5 +read(5, "\0\0\0\35\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 +read(5, "Wood\0", 5) = 5 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +munmap(0xb6d98000, 32768) = 0 +mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d99000 +read(5, "\254\226t\274\236|\274\246\204\274\236|\254\226t\254\222l\254\222t\254\226l\274\246\204\304\252\204\274\246"..., 27648) = 27648 +close(5) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +brk(0x85a9000) = 0x85a9000 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 265559}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 265767}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 265999}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 266197}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 266632}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"6\7\2\0\n\1`\0035\30\4\0\17\1`\3?\0`\3\220\1\24\0F\30\5\0\17\1`\3"..., 4072}, {">\3\7\0\22\1`\3;\0`\0033\0`\3\0\0\0\0\260\0\347\0/\0\n\0", 28}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\23\1`\0036\7\2\0\22\1`\3", 32}], 1) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 269108}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 269235}, NULL) = 0 +stat64("/user/folk/clint/.gimp-2.2/palettes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/user/folk/clint/.gimp-2.2/palettes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/share/gimp/2.0/palettes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/palettes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 2 entries */, 4096) = 48 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/usr/share/gimp/2.0/palettes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 41 entries */, 4096) = 1376 +stat64("/usr/share/gimp/2.0/palettes/Coldfire.gpl", {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Coldfire.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Coldfire\n#\n "..., 4096) = 4096 +read(5, "ntitled\n236 216 4\tUntitled\n240"..., 4096) = 1308 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Bears.gpl", {st_mode=S_IFREG|0644, st_size=5394, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Bears.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5394, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Bears\n#\n 8 "..., 4096) = 4096 +read(5, "d\n148 92 44\tUntitled\n188 184 1"..., 4096) = 1298 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Bgold.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Bgold.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Bgold\n#\n236 2"..., 4096) = 4096 +read(5, "tled\n168 152 208\tUntitled\n168 15"..., 4096) = 1307 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Blues.gpl", {st_mode=S_IFREG|0644, st_size=5436, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Blues.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5436, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Blues\n#\n# For"..., 4096) = 4096 +read(5, "d\n 0 0 252\tUntitled\n 0 0 2"..., 4096) = 1340 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Borders.gpl", {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Borders.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Borders\n#\n204"..., 4096) = 4096 +read(5, "titled\n 80 100 88\tUntitled\n 88 "..., 4096) = 1309 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Caramel.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Caramel.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Caramel\n#\n 48"..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, "tled\n 0 112 104\tUntitled\n 0 10"..., 4096) = 1307 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Cascade.gpl", {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Cascade.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Cascade\n#\n108"..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +brk(0x85ca000) = 0x85ca000 +read(5, "titled\n 60 116 164\tUntitled\n 60 "..., 4096) = 1309 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Browns_And_Yellows.gpl", {st_mode=S_IFREG|0644, st_size=528, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Browns_And_Yellows.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=528, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Browns And Ye"..., 4096) = 528 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/China.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/China.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: China\n#\n224 "..., 4096) = 4096 +read(5, "tled\n200 120 196\tUntitled\n160 13"..., 4096) = 1307 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Dark_pastels.gpl", {st_mode=S_IFREG|0644, st_size=5410, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Dark_pastels.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5410, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Dark pastels\n"..., 4096) = 4096 +read(5, "56\tUntitled\n 92 80 60\tUntitled"..., 4096) = 1314 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Cool_Colors.gpl", {st_mode=S_IFREG|0644, st_size=201, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Cool_Colors.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=201, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Cool Colors\n#"..., 4096) = 201 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Cranes.gpl", {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Cranes.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Cranes\n#\n 8 "..., 4096) = 4096 +read(5, "\n192 28 36\tUntitled\n 72 80 6"..., 4096) = 1297 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Firecode.gpl", {st_mode=S_IFREG|0644, st_size=5401, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Firecode.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5401, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Firecode\n#\n "..., 4096) = 4096 +read(5, "tled\n252 252 28\tUntitled\n252 25"..., 4096) = 1305 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Default.gpl", {st_mode=S_IFREG|0644, st_size=498, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Default.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=498, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Default\n#\n255"..., 4096) = 498 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Ega.gpl", {st_mode=S_IFREG|0644, st_size=4972, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Ega.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=4972, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Ega\nColumns: "..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, "52\tUntitled\n252 252 0\tUntitled"..., 4096) = 876 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/GrayViolet.gpl", {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/GrayViolet.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: GrayViolet\n#\n"..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +brk(0x85eb000) = 0x85eb000 +read(5, "Untitled\n140 116 140\tUntitled\n14"..., 4096) = 1290 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Gold.gpl", {st_mode=S_IFREG|0644, st_size=5390, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Gold.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5390, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Gold\n#\n252 25"..., 4096) = 4096 +read(5, "led\n 60 0 0\tUntitled\n 60 0"..., 4096) = 1294 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Named_Colors.gpl", {st_mode=S_IFREG|0644, st_size=16940, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Named_Colors.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=16940, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Named Colors\n"..., 4096) = 4096 +read(5, "9 0)\n255 0 0\tred (255 0 "..., 4096) = 4096 +read(5, "39)\n202 225 255\tlight steel blue"..., 4096) = 4096 +read(5, "na 1 (255 130 71)\n238 121 66\ts"..., 4096) = 4096 +read(5, "medium purple 1 (171 130 255)\n15"..., 4096) = 556 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Grayblue.gpl", {st_mode=S_IFREG|0644, st_size=5406, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Grayblue.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5406, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Grayblue\n#\n12"..., 4096) = 4096 +read(5, "ntitled\n 60 76 108\tUntitled\n 60"..., 4096) = 1310 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Grays.gpl", {st_mode=S_IFREG|0644, st_size=629, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Grays.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=629, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Grays\n 0 0"..., 4096) = 629 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Greens.gpl", {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Greens.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Greens\n#\n 0 "..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, " 0 244 0\tUntitled\n 0 240 0"..., 4096) = 1297 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Hilite.gpl", {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Hilite.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Hilite\n#\n164 "..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +brk(0x860c000) = 0x860c000 +read(5, "itled\n232 248 188\tUntitled\n232 2"..., 4096) = 1308 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Khaki.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Khaki.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Khaki\n#\n144 1"..., 4096) = 4096 +read(5, "tled\n136 140 76\tUntitled\n136 14"..., 4096) = 1307 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Lights.gpl", {st_mode=S_IFREG|0644, st_size=578, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Lights.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=578, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Lights\n#\n255 "..., 4096) = 578 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Muted.gpl", {st_mode=S_IFREG|0644, st_size=1750, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Muted.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=1750, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Muted\n#\n139 1"..., 4096) = 1750 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Paintjet.gpl", {st_mode=S_IFREG|0644, st_size=488, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Paintjet.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=488, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Paintjet\n#\n# "..., 4096) = 488 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/News3.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/News3.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: News3\n#\n236 2"..., 4096) = 4096 +read(5, "tled\n 56 20 64\tUntitled\n 56 2"..., 4096) = 1307 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Op2.gpl", {st_mode=S_IFREG|0644, st_size=5399, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Op2.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5399, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Op2\n#\n204 144"..., 4096) = 4096 +read(5, "ed\n216 188 208\tUntitled\n216 188 "..., 4096) = 1303 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Reds_And_Purples.gpl", {st_mode=S_IFREG|0644, st_size=694, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Reds_And_Purples.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=694, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Reds And Purp"..., 4096) = 694 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Pastels.gpl", {st_mode=S_IFREG|0644, st_size=407, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Pastels.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=407, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Pastels\n#\n226"..., 4096) = 407 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Plasma.gpl", {st_mode=S_IFREG|0644, st_size=5414, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Plasma.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5414, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Plasma\nColumn"..., 4096) = 4096 +read(5, "56 180\tUntitled\n 48 64 168\tUnti"..., 4096) = 1318 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Reds.gpl", {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Reds.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Reds\n#\n 0 "..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, "Untitled\n248 0 0\tUntitled\n24"..., 4096) = 1290 +brk(0x862d000) = 0x862d000 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Topographic.gpl", {st_mode=S_IFREG|0644, st_size=5470, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Topographic.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5470, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Topographic\n#"..., 4096) = 4096 +read(5, " 224 92\tUntitled\n232 224 92\tUn"..., 4096) = 1374 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Royal.gpl", {st_mode=S_IFREG|0644, st_size=5396, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Royal.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5396, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Royal\n#\n 0 "..., 4096) = 4096 +read(5, "0 236 4\tUntitled\n240 232 4\tU"..., 4096) = 1300 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Visibone.gpl", {st_mode=S_IFREG|0644, st_size=12044, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Visibone.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=12044, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Visibone\nColu"..., 4096) = 4096 +read(5, "255 102 204\t#FF66CC - Light Pink"..., 4096) = 4096 +read(5, "ight Teal-Green\n 51 204 102\t#33C"..., 4096) = 3852 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Visibone_2.gpl", {st_mode=S_IFREG|0644, st_size=8928, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Visibone_2.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=8928, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Visibone 2\nCo"..., 4096) = 4096 +read(5, "C66\n 0 255 0\t( 0 255 0) #0"..., 4096) = 4096 +read(5, "( 0 51 204) #0033CC\n 0 0 "..., 4096) = 736 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Volcano.gpl", {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Volcano.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Volcano\n#\n 0"..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, "ed\n160 252 0\tUntitled\n164 252 "..., 4096) = 1290 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Warm_Colors.gpl", {st_mode=S_IFREG|0644, st_size=180, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Warm_Colors.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=180, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Warm Colors\n#"..., 4096) = 180 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/palettes/Web.gpl", {st_mode=S_IFREG|0644, st_size=4572, ...}) = 0 +open("/usr/share/gimp/2.0/palettes/Web.gpl", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=4572, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Palette\nName: Web\nColumns: "..., 4096) = 4096 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +brk(0x864e000) = 0x864e000 +read(5, " 204\tUntitled\n 0 153 153\tUntitl"..., 4096) = 476 +read(5, "", 4096) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 367162}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 367443}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 367612}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 367814}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 368277}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"6\7\2\0\17\1`\0035\30\4\0\24\1`\3?\0`\3\220\1\24\0F\30\5\0\24\1`\3"..., 4072}, {"\232\27\17\0\3\1`\3O\0`\3\30\1`\0034\0\0\0P\0`\3\330\377\364\377\26\0`\3"..., 60}], 2) = 4132 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\6\5\0\30\1`\3\0\0\0\0\0\0\0\0006\0\n\0\232\27\f\0\3\1`\3O\0`\3"..., 148}], 1) = 148 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 371264}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 371395}, NULL) = 0 +stat64("/user/folk/clint/.gimp-2.2/gradients", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/user/folk/clint/.gimp-2.2/gradients", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/share/gimp/2.0/gradients", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/gradients", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 3 entries */, 4096) = 88 +stat64("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Mountains\n6\n"..., 4096) = 650 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +access("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", F_OK) = 0 +access("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", W_OK) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/usr/share/gimp/2.0/gradients", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 80 entries */, 4096) = 3224 +stat64("/usr/share/gimp/2.0/gradients/Brushed_Aluminium.ggr", {st_mode=S_IFREG|0644, st_size=2513, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Brushed_Aluminium.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=2513, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Brushed Alum"..., 4096) = 2513 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Abstract_1.ggr", {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Abstract_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Abstract 1\n6"..., 4096) = 651 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Abstract_2.ggr", {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Abstract_2.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Abstract 2\n6"..., 4096) = 651 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Abstract_3.ggr", {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Abstract_3.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Abstract 3\n6"..., 4096) = 651 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Aneurism.ggr", {st_mode=S_IFREG|0644, st_size=855, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Aneurism.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=855, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Aneurism\n8\n0"..., 4096) = 855 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Blinds.ggr", {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Blinds.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Blinds\n9\n0.0"..., 4096) = 956 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Blue_Green.ggr", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Blue_Green.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Blue Green\n2"..., 4096) = 239 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Browns.ggr", {st_mode=S_IFREG|0644, st_size=1163, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Browns.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=1163, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Browns\n11\n0."..., 4096) = 1163 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Burning_Transparency.ggr", {st_mode=S_IFREG|0644, st_size=661, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Burning_Transparency.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=661, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Burning Tran"..., 4096) = 661 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Burning_Paper.ggr", {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Burning_Paper.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Burning Pape"..., 4096) = 654 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/CD_Half.ggr", {st_mode=S_IFREG|0644, st_size=957, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/CD_Half.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=957, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: CD Half\n9\n0."..., 4096) = 957 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/CD.ggr", {st_mode=S_IFREG|0644, st_size=1880, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/CD.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=1880, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: CD\n18\n0.0000"..., 4096) = 1880 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Angular_1.ggr", {st_mode=S_IFREG|0644, st_size=4782, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Glow_Angular_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=4782, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Glow A"..., 4096) = 4096 +read(5, " 1.000000 1.000000 0.110000 1.00"..., 4096) = 686 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Caribbean_Blues.ggr", {st_mode=S_IFREG|0644, st_size=347, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Caribbean_Blues.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=347, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Caribbean Bl"..., 4096) = 347 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Coffee.ggr", {st_mode=S_IFREG|0644, st_size=132, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Coffee.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=132, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Coffee\n1\n0.0"..., 4096) = 132 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Cold_Steel.ggr", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Cold_Steel.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Cold Steel\n2"..., 4096) = 239 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Cold_Steel_2.ggr", {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Cold_Steel_2.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Cold Steel 2"..., 4096) = 344 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Crown_molding.ggr", {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Crown_molding.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Crown moldin"..., 4096) = 654 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Dark_1.ggr", {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Dark_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Dark 1\n3\n0.0"..., 4096) = 338 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Deep_Sea.ggr", {st_mode=S_IFREG|0644, st_size=237, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Deep_Sea.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=237, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Deep Sea\n2\n0"..., 4096) = 237 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Default.ggr", {st_mode=S_IFREG|0644, st_size=133, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Default.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=133, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Default\n1\n0."..., 4096) = 133 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CCW.ggr", {st_mode=S_IFREG|0644, st_size=154, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CCW.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=154, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Full saturat"..., 4096) = 154 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_1.ggr", {st_mode=S_IFREG|0644, st_size=454, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=454, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 454 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_2.ggr", {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_2.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 557 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_3.ggr", {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_3.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 557 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_4.ggr", {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_4.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 351 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Radial_101.ggr", {st_mode=S_IFREG|0644, st_size=760, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Radial_101.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=760, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Radial"..., 4096) = 760 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Radial_102.ggr", {st_mode=S_IFREG|0644, st_size=657, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Radial_102.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=657, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Radial"..., 4096) = 657 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Radial_103.ggr", {st_mode=S_IFREG|0644, st_size=142, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Radial_103.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=142, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Radial"..., 4096) = 142 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_1.ggr", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Rays R"..., 4096) = 248 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_2.ggr", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_2.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Rays R"..., 4096) = 248 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Rays_Size_1.ggr", {st_mode=S_IFREG|0644, st_size=1689, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Rays_Size_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=1689, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Rays S"..., 4096) = 1689 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Flare_Sizefac_101.ggr", {st_mode=S_IFREG|0644, st_size=143, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Flare_Sizefac_101.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=143, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Flare Sizefa"..., 4096) = 143 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Four_bars.ggr", {st_mode=S_IFREG|0644, st_size=856, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Four_bars.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=856, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Four bars\n8\n"..., 4096) = 856 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/French_flag.ggr", {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/French_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: French flag\n"..., 4096) = 343 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/French_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/French_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: French flag "..., 4096) = 247 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Horizon_1.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Horizon_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Horizon 1\n5\n"..., 4096) = 547 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Golden.ggr", {st_mode=S_IFREG|0644, st_size=1472, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Golden.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=1472, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Golden\n14\n0."..., 4096) = 1472 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CW.ggr", {st_mode=S_IFREG|0644, st_size=153, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CW.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=153, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Full saturat"..., 4096) = 153 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/German_flag.ggr", {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/German_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: German flag\n"..., 4096) = 343 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/German_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/German_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: German flag "..., 4096) = 247 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Greens.ggr", {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Greens.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Greens\n9\n0.0"..., 4096) = 956 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Incandescent.ggr", {st_mode=S_IFREG|0644, st_size=447, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Incandescent.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=447, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Incandescent"..., 4096) = 447 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Horizon_2.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Horizon_2.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Horizon 2\n5\n"..., 4096) = 547 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Land_and_Sea.ggr", {st_mode=S_IFREG|0644, st_size=550, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Land_and_Sea.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=550, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Land and Sea"..., 4096) = 550 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Land_1.ggr", {st_mode=S_IFREG|0644, st_size=544, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Land_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=544, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Land 1\n5\n0.0"..., 4096) = 544 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Brown.ggr", {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Brown.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Radial Eyeba"..., 4096) = 558 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Metallic_Something.ggr", {st_mode=S_IFREG|0644, st_size=865, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Metallic_Something.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=865, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Metallic Som"..., 4096) = 865 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Mexican_flag.ggr", {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Mexican_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Mexican flag"..., 4096) = 344 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Mexican_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Mexican_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Mexican flag"..., 4096) = 248 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Nauseating_Headache.ggr", {st_mode=S_IFREG|0644, st_size=2618, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Nauseating_Headache.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=2618, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Nauseating H"..., 4096) = 2618 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Neon_Cyan.ggr", {st_mode=S_IFREG|0644, st_size=444, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Neon_Cyan.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=444, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Neon Cyan\n4\n"..., 4096) = 444 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Neon_Green.ggr", {st_mode=S_IFREG|0644, st_size=445, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Neon_Green.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=445, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Neon Green\n4"..., 4096) = 445 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Neon_Yellow.ggr", {st_mode=S_IFREG|0644, st_size=446, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Neon_Yellow.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=446, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Neon Yellow\n"..., 4096) = 446 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Pastel_Rainbow.ggr", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Pastel_Rainbow.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=140, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Pastel Rainb"..., 4096) = 140 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Pastels.ggr", {st_mode=S_IFREG|0644, st_size=1473, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Pastels.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=1473, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Pastels\n14\n0"..., 4096) = 1473 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Purples.ggr", {st_mode=S_IFREG|0644, st_size=751, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Purples.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=751, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Purples\n7\n0."..., 4096) = 751 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Blue.ggr", {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Blue.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Radial Eyeba"..., 4096) = 557 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Green.ggr", {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Green.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Radial Eyeba"..., 4096) = 558 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Radial_Glow_1.ggr", {st_mode=S_IFREG|0644, st_size=551, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Radial_Glow_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=551, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Radial Glow "..., 4096) = 551 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Radial_Rainbow_Hoop.ggr", {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Radial_Rainbow_Hoop.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Radial Rainb"..., 4096) = 351 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Romanian_flag.ggr", {st_mode=S_IFREG|0644, st_size=345, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Romanian_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=345, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Romanian fla"..., 4096) = 345 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Romanian_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=249, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Romanian_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=249, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Romanian fla"..., 4096) = 249 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Rounded_edge.ggr", {st_mode=S_IFREG|0644, st_size=756, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Rounded_edge.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=756, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Rounded edge"..., 4096) = 756 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Shadows_1.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Shadows_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Shadows 1\n5\n"..., 4096) = 547 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Shadows_2.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Shadows_2.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Shadows 2\n5\n"..., 4096) = 547 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Shadows_3.ggr", {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Shadows_3.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Shadows 3\n6\n"..., 4096) = 650 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Skyline.ggr", {st_mode=S_IFREG|0644, st_size=545, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Skyline.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=545, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Skyline\n5\n0."..., 4096) = 545 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Skyline_polluted.ggr", {st_mode=S_IFREG|0644, st_size=554, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Skyline_polluted.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=554, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Skyline poll"..., 4096) = 554 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Square_Wood_Frame.ggr", {st_mode=S_IFREG|0644, st_size=658, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Square_Wood_Frame.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=658, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Square Wood "..., 4096) = 658 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Sunrise.ggr", {st_mode=S_IFREG|0644, st_size=648, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Sunrise.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=648, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Sunrise\n6\n0."..., 4096) = 648 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Three_bars_sin.ggr", {st_mode=S_IFREG|0644, st_size=655, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Three_bars_sin.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=655, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Three bars s"..., 4096) = 655 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Tropical_Colors.ggr", {st_mode=S_IFREG|0644, st_size=965, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Tropical_Colors.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=965, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Tropical Col"..., 4096) = 965 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Tube_Red.ggr", {st_mode=S_IFREG|0644, st_size=752, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Tube_Red.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=752, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Tube Red\n7\n0"..., 4096) = 752 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Wood_1.ggr", {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Wood_1.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Wood 1\n3\n0.0"..., 4096) = 338 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Wood_2.ggr", {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Wood_2.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Wood 2\n9\n0.0"..., 4096) = 956 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Yellow_Contrast.ggr", {st_mode=S_IFREG|0644, st_size=759, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Yellow_Contrast.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=759, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Yellow Contr"..., 4096) = 759 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +stat64("/usr/share/gimp/2.0/gradients/Yellow_Orange.ggr", {st_mode=S_IFREG|0644, st_size=242, ...}) = 0 +open("/usr/share/gimp/2.0/gradients/Yellow_Orange.ggr", O_RDONLY|O_LARGEFILE) = 5 +fstat64(5, {st_mode=S_IFREG|0644, st_size=242, ...}) = 0 +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 +read(5, "GIMP Gradient\nName: Yellow Orang"..., 4096) = 242 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 +munmap(0xb6d90000, 32768) = 0 +close(5) = 0 +munmap(0xb6d98000, 4096) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 640554}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 640838}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 641009}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 643450}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 643866}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"6\7\2\0\24\1`\0035\30\4\0\31\1`\3?\0`\3\220\1\24\0F\30\5\0\31\1`\3"..., 4088}, {"\232\32\7\0\3\1`\3\35\1`\3\326\326\315\315\273\273\377\377\0\0\0\0006\0\n\0", 28}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{";\3\5\0<\0`\3\0\0\0\0\0\0\0\0006\0\n\0>\3\7\0=\0`\3\34\1`\3"..., 272}], 1) = 272 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407179, 646044}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407179, 646171}, NULL) = 0 +time(NULL) = 1192407179 +access("/etc/fonts/fonts.conf", R_OK) = 0 +stat64("/etc/fonts/fonts.conf", {st_mode=S_IFREG|0644, st_size=5268, ...}) = 0 +open("/etc/fonts/fonts.conf", O_RDONLY) = 4 +read(4, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\n\32\7\0#\1`\3$\1`\3\7\0`\3\0\0\0\0\0\0\0\0\220\1\24\0;\3\5\0"..., 476}], 1) = 476 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 364027}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407180, 364106}, NULL) = 0 +open("/user/folk/clint/.gimp-2.2/templaterc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP templaterc\n# \n# This file"..., 4000) = 4000 +read(4, "ackground-fill))\n(GimpTemplate \""..., 4000) = 1045 +read(4, "", 4000) = 0 +close(4) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 370293}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 370421}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407180, 370672}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0(\1`\3?\0`\3\220\1\24\0\232\4\5\0)\1`\3(\1`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 580}], 1) = 580 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 372151}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407180, 372230}, NULL) = 0 +open("/user/folk/clint/.gimp-2.2/modulerc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) +stat64("/user/folk/clint/.gimp-2.2/modules", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/modules", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 2 entries */, 4096) = 48 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/usr/lib/gimp/2.0/modules", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 11 entries */, 4096) = 448 +stat64("/usr/lib/gimp/2.0/modules/libcontroller_linux_input.so", {st_mode=S_IFREG|0755, st_size=13948, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcontroller_linux_input.so", {st_mode=S_IFREG|0755, st_size=13948, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcontroller_linux_input.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \17\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=13948, ...}) = 0 +mmap2(NULL, 12444, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d95000 +fadvise64(5, 0, 12444, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb6d97000 +close(5) = 0 +munmap(0xb6d95000, 12444) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_colorblind.so", {st_mode=S_IFREG|0755, st_size=13972, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_colorblind.so", {st_mode=S_IFREG|0755, st_size=13972, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcdisplay_colorblind.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\17\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=13972, ...}) = 0 +mmap2(NULL, 16572, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d94000 +fadvise64(5, 0, 16572, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb6d97000 +close(5) = 0 +munmap(0xb6d94000, 16572) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_gamma.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_gamma.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcdisplay_gamma.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\r\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 +mmap2(NULL, 12440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d95000 +fadvise64(5, 0, 12440, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1) = 0xb6d97000 +close(5) = 0 +munmap(0xb6d95000, 12440) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.so", {st_mode=S_IFREG|0755, st_size=9816, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.so", {st_mode=S_IFREG|0755, st_size=9816, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\r\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=9816, ...}) = 0 +mmap2(NULL, 12440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d95000 +fadvise64(5, 0, 12440, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1) = 0xb6d97000 +close(5) = 0 +munmap(0xb6d95000, 12440) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_proof.so", {st_mode=S_IFREG|0755, st_size=14016, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcdisplay_proof.so", {st_mode=S_IFREG|0755, st_size=14016, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcdisplay_proof.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\25\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=14016, ...}) = 0 +mmap2(NULL, 16652, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d94000 +fadvise64(5, 0, 16652, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb6d97000 +close(5) = 0 +open("/user/folk/clint/lib/liblcms.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/liblcms.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/liblcms.so.1", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\\\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=189124, ...}) = 0 +mmap2(NULL, 197408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d63000 +fadvise64(5, 0, 197408, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb6d8f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2c) = 0xb6d8f000 +mmap2(0xb6d91000, 8992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6d91000 +close(5) = 0 +munmap(0xb6d94000, 16652) = 0 +munmap(0xb6d63000, 197408) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcolorsel_cmyk.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcolorsel_cmyk.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcolorsel_cmyk.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\r\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 +mmap2(NULL, 12436, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c7000 +fadvise64(5, 0, 12436, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1) = 0xb71c9000 +close(5) = 0 +munmap(0xb71c7000, 12436) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcolorsel_triangle.so", {st_mode=S_IFREG|0755, st_size=13932, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcolorsel_triangle.so", {st_mode=S_IFREG|0755, st_size=13932, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcolorsel_triangle.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\16\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=13932, ...}) = 0 +mmap2(NULL, 16560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c6000 +fadvise64(5, 0, 16560, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb71c9000 +close(5) = 0 +munmap(0xb71c6000, 16560) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcolorsel_water.so", {st_mode=S_IFREG|0755, st_size=13968, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcolorsel_water.so", {st_mode=S_IFREG|0755, st_size=13968, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcolorsel_water.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\17\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=13968, ...}) = 0 +mmap2(NULL, 12472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c7000 +fadvise64(5, 0, 12472, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb71c9000 +close(5) = 0 +munmap(0xb71c7000, 12472) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcontroller_midi.so", {st_mode=S_IFREG|0755, st_size=14052, ...}) = 0 +stat64("/usr/lib/gimp/2.0/modules/libcontroller_midi.so", {st_mode=S_IFREG|0755, st_size=14052, ...}) = 0 +open("/usr/lib/gimp/2.0/modules/libcontroller_midi.so", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\23\0\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=14052, ...}) = 0 +mmap2(NULL, 19776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c6000 +fadvise64(5, 0, 19776, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb71c9000 +close(5) = 0 +open("/user/folk/clint/lib/libasound.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/opt/kde3/lib/libasound.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/lib/libasound.so.2", O_RDONLY) = 5 +read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000%\2\0004\0\0\0"..., 512) = 512 +fstat64(5, {st_mode=S_IFREG|0755, st_size=768576, ...}) = 0 +mmap2(NULL, 768392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6cdd000 +fadvise64(5, 0, 768392, POSIX_FADV_WILLNEED) = 0 +mmap2(0xb6d94000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xb6) = 0xb6d94000 +close(5) = 0 +mprotect(0xb6d94000, 4096, PROT_READ) = 0 +munmap(0xb71c6000, 19776) = 0 +munmap(0xb6cdd000, 768392) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71ba000 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71a9000 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d88000 +brk(0x889b000) = 0x889b000 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\20\0\5\0\t\0`\3CLIPBOARD\0\0\0", 20}], 1) = 20 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\360\215)\0\0\0\0001\1\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +open("/user/folk/clint/.gimp-2.2/sessionrc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP sessionrc\n# \n# This file "..., 4000) = 3023 +read(4, "", 4000) = 0 +close(4) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\230\2\4\0\1\0`\0031\1\0\0\7\0\0\0", 16}], 1) = 16 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 545161}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 545372}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 545610}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 545812}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"6\2\2\0#\1`\0035\30\4\0,\1`\3?\0`\3\220\1\24\0F\30\5\0,\1`\3"..., 4084}, {"@\0\4\0,\1`\3&\0`\3\2\0\2\0", 16}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"@\0\4\0,\1`\3&\0`\3\214\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 928}], 1) = 928 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407180, 548889}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407180, 549021}, NULL) = 0 +open("/user/folk/clint/.gimp-2.2/toolrc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP toolrc\n\n(GimpToolInfo \"gi"..., 4000) = 3366 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rect-select-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-rect-select-tool opt"..., 4000) = 144 +read(4, "", 4000) = 0 +close(4) = 0 +open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 4 +fstat64(4, {st_mode=S_IFCHR|0644, st_rdev=makedev(1, 9), ...}) = 0 +ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfcdb4a4) = -1 EINVAL (Invalid argument) +mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d87000 +read(4, "o\335\6\337n\36\26V\274[\324\0254\257\222\300\311\n|\327(\346\24>\23\333_"..., 4096) = 4096 +close(4) = 0 +munmap(0xb6d87000, 4096) = 0 +open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en_US/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-langpack/en/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale/en/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +open("/usr/share/locale-bundle/en/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d86000 +brk(0x88bc000) = 0x88bc000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rect-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-rect-select-tool opt"..., 4000) = 94 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ellipse-select-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-ellipse-select-tool "..., 4000) = 133 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ellipse-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-ellipse-select-tool "..., 4000) = 100 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-free-select-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-free-select-tool opt"..., 4000) = 78 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-free-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-free-select-tool opt"..., 4000) = 94 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-fuzzy-select-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-fuzzy-select-tool op"..., 4000) = 144 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-fuzzy-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-fuzzy-select-tool op"..., 4000) = 96 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-by-color-select-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-by-color-select-tool"..., 4000) = 146 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-by-color-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-by-color-select-tool"..., 4000) = 102 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-iscissors-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-iscissors-tool optio"..., 4000) = 132 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-iscissors-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-iscissors-tool optio"..., 4000) = 90 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-vector-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-vector-tool options\n"..., 4000) = 68 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-vector-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-vector-tool options "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-picker-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-color-picker-tool op"..., 4000) = 80 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-picker-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-color-picker-tool op"..., 4000) = 96 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-magnify-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-magnify-tool options"..., 4000) = 70 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-magnify-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-magnify-tool options"..., 4000) = 86 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-measure-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-measure-tool options"..., 4000) = 92 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-measure-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-measure-tool options"..., 4000) = 86 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-move-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-move-tool options\n\n\n"..., 4000) = 64 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-move-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-move-tool options pr"..., 4000) = 80 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-crop-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-crop-tool options\n\n\n"..., 4000) = 64 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-crop-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +brk(0x88dd000) = 0x88dd000 +read(4, "# GIMP gimp-crop-tool options pr"..., 4000) = 80 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x88dc000) = 0x88dc000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rotate-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-rotate-tool options\n"..., 4000) = 152 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rotate-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-rotate-tool options "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-scale-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-scale-tool options\n\n"..., 4000) = 124 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-scale-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-scale-tool options p"..., 4000) = 82 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-shear-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-shear-tool options\n\n"..., 4000) = 66 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-shear-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-shear-tool options p"..., 4000) = 82 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-perspective-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 +munmap(0xb6d7e000, 32768) = 0 +read(4, "# GIMP gimp-perspective-tool opt"..., 4000) = 78 +read(4, "", 4000) = 0 +close(4) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d84000 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d82000 +brk(0x88fd000) = 0x88fd000 +brk(0x88fc000) = 0x88fc000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-perspective-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-perspective-tool opt"..., 4000) = 94 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-flip-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-flip-tool options\n\n\n"..., 4000) = 64 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-flip-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-flip-tool options pr"..., 4000) = 80 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-text-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-text-tool options\n\n("..., 4000) = 183 +read(4, "", 4000) = 0 +close(4) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +munmap(0xb6d7f000, 12288) = 0 +brk(0x891d000) = 0x891d000 +brk(0x891c000) = 0x891c000 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +munmap(0xb6d7d000, 20480) = 0 +brk(0x893d000) = 0x893d000 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +brk(0x895e000) = 0x895e000 +brk(0x895d000) = 0x895d000 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 36864) = 0 +brk(0x897e000) = 0x897e000 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +brk(0x899f000) = 0x899f000 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 +munmap(0xb6d71000, 69632) = 0 +brk(0x89c0000) = 0x89c0000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-text-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 +munmap(0xb6d7a000, 32768) = 0 +read(4, "# GIMP gimp-text-tool options pr"..., 4000) = 80 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-bucket-fill-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 +munmap(0xb6d7a000, 32768) = 0 +read(4, "# GIMP gimp-bucket-fill-tool opt"..., 4000) = 143 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x89e1000) = 0x89e1000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-bucket-fill-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-bucket-fill-tool opt"..., 4000) = 94 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-blend-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-blend-tool options\n\n"..., 4000) = 131 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x8a02000) = 0x8a02000 +brk(0x8a01000) = 0x8a01000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-blend-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-blend-tool options p"..., 4000) = 82 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-pencil-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-pencil-tool options\n"..., 4000) = 278 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x8a22000) = 0x8a22000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-pencil-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-pencil-tool options "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-paintbrush-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-paintbrush-tool opti"..., 4000) = 287 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x8a43000) = 0x8a43000 +brk(0x8a42000) = 0x8a42000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-paintbrush-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-paintbrush-tool opti"..., 4000) = 92 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-eraser-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-eraser-tool options\n"..., 4000) = 163 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-eraser-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 +munmap(0xb6d7a000, 32768) = 0 +read(4, "# GIMP gimp-eraser-tool options "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-airbrush-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 +munmap(0xb6d7a000, 32768) = 0 +read(4, "# GIMP gimp-airbrush-tool option"..., 4000) = 304 +read(4, "", 4000) = 0 +close(4) = 0 +mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 +brk(0x8a63000) = 0x8a63000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-airbrush-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d75000 +munmap(0xb6d75000, 32768) = 0 +read(4, "# GIMP gimp-airbrush-tool option"..., 4000) = 88 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ink-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d75000 +munmap(0xb6d75000, 32768) = 0 +read(4, "# GIMP gimp-ink-tool options\n\n(b"..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7b000 +brk(0x8a84000) = 0x8a84000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ink-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-ink-tool options pre"..., 4000) = 78 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-clone-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-clone-tool options\n\n"..., 4000) = 256 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x8aa5000) = 0x8aa5000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-clone-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-clone-tool options p"..., 4000) = 82 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-convolve-tool", O_RDONLY|O_LARGEFILE) = 4 +mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d73000 +munmap(0xb6d73000, 32768) = 0 +read(4, "# GIMP gimp-convolve-tool option"..., 4000) = 100 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x8ac6000) = 0x8ac6000 +brk(0x8ac5000) = 0x8ac5000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-convolve-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-convolve-tool option"..., 4000) = 88 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-smudge-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-smudge-tool options\n"..., 4000) = 214 +read(4, "", 4000) = 0 +close(4) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 8192) = 0 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 +munmap(0xb6d79000, 8192) = 0 +brk(0x8ae6000) = 0x8ae6000 +brk(0x8ae5000) = 0x8ae5000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-smudge-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-smudge-tool options "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-dodge-burn-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-dodge-burn-tool opti"..., 4000) = 229 +read(4, "", 4000) = 0 +close(4) = 0 +brk(0x8b06000) = 0x8b06000 +brk(0x8b05000) = 0x8b05000 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-dodge-burn-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-dodge-burn-tool opti"..., 4000) = 92 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-balance-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-color-balance-tool o"..., 4000) = 82 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-balance-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-color-balance-tool o"..., 4000) = 98 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-hue-saturation-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-hue-saturation-tool "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-hue-saturation-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-hue-saturation-tool "..., 4000) = 100 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-colorize-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-colorize-tool option"..., 4000) = 72 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-colorize-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-colorize-tool option"..., 4000) = 88 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-brightness-contrast-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-brightness-contrast-"..., 4000) = 94 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-brightness-contrast-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-brightness-contrast-"..., 4000) = 110 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-threshold-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-threshold-tool optio"..., 4000) = 104 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-threshold-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-threshold-tool optio"..., 4000) = 90 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-levels-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-levels-tool options\n"..., 4000) = 68 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-levels-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-levels-tool options "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-curves-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-curves-tool options\n"..., 4000) = 68 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-curves-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-curves-tool options "..., 4000) = 84 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-posterize-tool", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-posterize-tool optio"..., 4000) = 74 +read(4, "", 4000) = 0 +close(4) = 0 +open("/user/folk/clint/.gimp-2.2/tool-options/gimp-posterize-tool.presets", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP gimp-posterize-tool optio"..., 4000) = 90 +read(4, "", 4000) = 0 +close(4) = 0 +shmget(IPC_PRIVATE, 16384, IPC_CREAT|0600) = 49905670 +shmat(49905670, 0, 0) = 0xb6d77000 +shmctl(49905670, IPC_64|IPC_RMID, 0) = 0 +stat64("/user/folk/clint/.gimp-2.2/plug-ins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +open("/user/folk/clint/.gimp-2.2/plug-ins", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 2 entries */, 4096) = 48 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +open("/usr/lib/gimp/2.0/plug-ins", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 +fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +getdents64(4, /* 134 entries */, 4096) = 4080 +stat64("/usr/lib/gimp/2.0/plug-ins/CML_explorer", {st_mode=S_IFREG|0755, st_size=48208, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/AlienMap2", {st_mode=S_IFREG|0755, st_size=18648, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/CEL", {st_mode=S_IFREG|0755, st_size=14376, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/align_layers", {st_mode=S_IFREG|0755, st_size=14300, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/aa", {st_mode=S_IFREG|0755, st_size=14272, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/FractalExplorer", {st_mode=S_IFREG|0755, st_size=79248, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/Lighting", {st_mode=S_IFREG|0755, st_size=105628, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/MapObject", {st_mode=S_IFREG|0755, st_size=126268, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/bumpmap", {st_mode=S_IFREG|0755, st_size=26916, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/bmp", {st_mode=S_IFREG|0755, st_size=22648, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/animationplay", {st_mode=S_IFREG|0755, st_size=22628, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/animoptimize", {st_mode=S_IFREG|0755, st_size=18340, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/apply_lens", {st_mode=S_IFREG|0755, st_size=18516, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/autocrop", {st_mode=S_IFREG|0755, st_size=10080, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/autostretch_hsv", {st_mode=S_IFREG|0755, st_size=10056, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/blinds", {st_mode=S_IFREG|0755, st_size=18512, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/blur", {st_mode=S_IFREG|0755, st_size=10044, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/edge", {st_mode=S_IFREG|0755, st_size=18528, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/dog", {st_mode=S_IFREG|0755, st_size=22668, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/borderaverage", {st_mode=S_IFREG|0755, st_size=14364, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/c_astretch", {st_mode=S_IFREG|0755, st_size=10052, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/cartoon", {st_mode=S_IFREG|0755, st_size=22552, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/ccanalyze", {st_mode=S_IFREG|0755, st_size=14304, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/channel_mixer", {st_mode=S_IFREG|0755, st_size=27036, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/checkerboard", {st_mode=S_IFREG|0755, st_size=14300, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/clothify.py", {st_mode=S_IFREG|0755, st_size=2587, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/color_enhance", {st_mode=S_IFREG|0755, st_size=10052, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/colorify", {st_mode=S_IFREG|0755, st_size=14540, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/colortoalpha", {st_mode=S_IFREG|0755, st_size=14352, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/colorxhtml.py", {st_mode=S_IFREG|0755, st_size=5160, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/compose", {st_mode=S_IFREG|0755, st_size=22768, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/compressor", {st_mode=S_IFREG|0755, st_size=10180, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/convmatrix", {st_mode=S_IFREG|0755, st_size=22660, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/csource", {st_mode=S_IFREG|0755, st_size=22616, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/cubism", {st_mode=S_IFREG|0755, st_size=18500, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/curve_bend", {st_mode=S_IFREG|0755, st_size=47856, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/decompose", {st_mode=S_IFREG|0755, st_size=22648, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/deinterlace", {st_mode=S_IFREG|0755, st_size=14256, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/depthmerge", {st_mode=S_IFREG|0755, st_size=22628, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/despeckle", {st_mode=S_IFREG|0755, st_size=18448, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/destripe", {st_mode=S_IFREG|0755, st_size=14284, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/dicom", {st_mode=S_IFREG|0755, st_size=18460, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/diffraction", {st_mode=S_IFREG|0755, st_size=18644, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/displace", {st_mode=S_IFREG|0755, st_size=18580, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/exchange", {st_mode=S_IFREG|0755, st_size=22828, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/emboss", {st_mode=S_IFREG|0755, st_size=18448, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/engrave", {st_mode=S_IFREG|0755, st_size=14296, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/foggify.py", {st_mode=S_IFREG|0755, st_size=2145, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/faxg3", {st_mode=S_IFREG|0755, st_size=17300, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/film", {st_mode=S_IFREG|0755, st_size=31752, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/fits", {st_mode=S_IFREG|0755, st_size=39068, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/flame", {st_mode=S_IFREG|0755, st_size=111992, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/flarefx", {st_mode=S_IFREG|0755, st_size=22552, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/fractaltrace", {st_mode=S_IFREG|0755, st_size=18572, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/fp", {st_mode=S_IFREG|0755, st_size=47264, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gee_zoom", {st_mode=S_IFREG|0755, st_size=14240, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gauss", {st_mode=S_IFREG|0755, st_size=26848, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gbr", {st_mode=S_IFREG|0755, st_size=18812, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gee", {st_mode=S_IFREG|0755, st_size=14236, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gimpcons.py", {st_mode=S_IFREG|0755, st_size=3020, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gfig", {st_mode=S_IFREG|0755, st_size=164224, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gflare", {st_mode=S_IFREG|0755, st_size=71108, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gfli", {st_mode=S_IFREG|0755, st_size=26844, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gif", {st_mode=S_IFREG|0755, st_size=26820, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gifload", {st_mode=S_IFREG|0755, st_size=18336, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gih", {st_mode=S_IFREG|0755, st_size=27276, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/guillotine", {st_mode=S_IFREG|0755, st_size=10084, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gtm", {st_mode=S_IFREG|0755, st_size=23604, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gimpressionist", {st_mode=S_IFREG|0755, st_size=167380, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/glasstile", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/glob", {st_mode=S_IFREG|0755, st_size=9976, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gqbist", {st_mode=S_IFREG|0755, st_size=18380, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gradmap", {st_mode=S_IFREG|0755, st_size=10048, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/grid", {st_mode=S_IFREG|0755, st_size=27024, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/gtkcons.py", {st_mode=S_IFREG|0644, st_size=10692, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/helpbrowser", {st_mode=S_IFREG|0755, st_size=22780, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/header", {st_mode=S_IFREG|0755, st_size=10072, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/help", {st_mode=S_IFREG|0755, st_size=18500, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/ifscompose", {st_mode=S_IFREG|0755, st_size=64480, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/hot", {st_mode=S_IFREG|0755, st_size=14432, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/pdbbrowse.py", {st_mode=S_IFREG|0755, st_size=1385, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/illusion", {st_mode=S_IFREG|0755, st_size=14360, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/imagemap", {st_mode=S_IFREG|0755, st_size=182808, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/iwarp", {st_mode=S_IFREG|0755, st_size=30908, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/jigsaw", {st_mode=S_IFREG|0755, st_size=38972, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/jpeg", {st_mode=S_IFREG|0755, st_size=39644, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/laplace", {st_mode=S_IFREG|0755, st_size=10048, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/lic", {st_mode=S_IFREG|0755, st_size=18460, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/mail", {st_mode=S_IFREG|0755, st_size=23972, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/mapcolor", {st_mode=S_IFREG|0755, st_size=14528, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/max_rgb", {st_mode=S_IFREG|0755, st_size=10124, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/maze", {st_mode=S_IFREG|0755, st_size=31084, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/mblur", {st_mode=S_IFREG|0755, st_size=22680, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/mng", {st_mode=S_IFREG|0755, st_size=31140, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/mosaic", {st_mode=S_IFREG|0755, st_size=35056, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/neon", {st_mode=S_IFREG|0755, st_size=18420, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/newsprint", {st_mode=S_IFREG|0755, st_size=35440, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/nlfilt", {st_mode=S_IFREG|0755, st_size=22532, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/noisify", {st_mode=S_IFREG|0755, st_size=18632, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/normalize", {st_mode=S_IFREG|0755, st_size=10048, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/nova", {st_mode=S_IFREG|0755, st_size=22756, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/oilify", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/pagecurl", {st_mode=S_IFREG|0755, st_size=51344, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/papertile", {st_mode=S_IFREG|0755, st_size=22784, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/pat", {st_mode=S_IFREG|0755, st_size=14652, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/pcx", {st_mode=S_IFREG|0755, st_size=14300, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/plugin-browser", {st_mode=S_IFREG|0755, st_size=30944, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/photocopy", {st_mode=S_IFREG|0755, st_size=22608, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/pix", {st_mode=S_IFREG|0755, st_size=14268, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/pixelize", {st_mode=S_IFREG|0755, st_size=14316, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/plasma", {st_mode=S_IFREG|0755, st_size=14360, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/polar", {st_mode=S_IFREG|0755, st_size=18520, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/png", {st_mode=S_IFREG|0755, st_size=31676, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/pnm", {st_mode=S_IFREG|0755, st_size=22588, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/procedure-browser", {st_mode=S_IFREG|0755, st_size=22684, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/postscript", {st_mode=S_IFREG|0755, st_size=51972, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/print", {st_mode=S_IFREG|0755, st_size=93540, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/psd_save", {st_mode=S_IFREG|0755, st_size=18416, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/psd", {st_mode=S_IFREG|0755, st_size=26556, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/py-slice.py", {st_mode=S_IFREG|0755, st_size=6895, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/psp", {st_mode=S_IFREG|0755, st_size=22524, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sample_colorize", {st_mode=S_IFREG|0755, st_size=43360, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/randomize", {st_mode=S_IFREG|0755, st_size=18480, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/raw", {st_mode=S_IFREG|0755, st_size=22684, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/rcm", {st_mode=S_IFREG|0755, st_size=47524, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/retinex", {st_mode=S_IFREG|0755, st_size=18480, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/ripple", {st_mode=S_IFREG|0755, st_size=18516, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/rotate", {st_mode=S_IFREG|0755, st_size=14264, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/shadow_bevel.py", {st_mode=S_IFREG|0755, st_size=2464, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/scatter_hsv", {st_mode=S_IFREG|0755, st_size=14356, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/screenshot", {st_mode=S_IFREG|0755, st_size=22660, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/script-fu", {st_mode=S_IFREG|0755, st_size=155128, ...}) = 0 +getdents64(4, /* 44 entries */, 4096) = 1336 +stat64("/usr/lib/gimp/2.0/plug-ins/sel2path", {st_mode=S_IFREG|0755, st_size=51864, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sel_gauss", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/semiflatten", {st_mode=S_IFREG|0755, st_size=10020, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sgi", {st_mode=S_IFREG|0755, st_size=18492, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/smooth_palette", {st_mode=S_IFREG|0755, st_size=14360, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sharpen", {st_mode=S_IFREG|0755, st_size=14284, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/shift", {st_mode=S_IFREG|0755, st_size=14356, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sinus", {st_mode=S_IFREG|0755, st_size=27032, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/softglow", {st_mode=S_IFREG|0755, st_size=18468, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/snoise", {st_mode=S_IFREG|0755, st_size=18600, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sobel", {st_mode=S_IFREG|0755, st_size=14304, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/spheredesigner", {st_mode=S_IFREG|0755, st_size=51592, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sparkle", {st_mode=S_IFREG|0755, st_size=26876, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/threshold_alpha", {st_mode=S_IFREG|0755, st_size=10132, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/spread", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/struc", {st_mode=S_IFREG|0755, st_size=30676, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/sunras", {st_mode=S_IFREG|0755, st_size=22624, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/svg", {st_mode=S_IFREG|0755, st_size=26988, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/tga", {st_mode=S_IFREG|0755, st_size=18524, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/uniteditor", {st_mode=S_IFREG|0755, st_size=22676, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/tiff", {st_mode=S_IFREG|0755, st_size=35164, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/tile", {st_mode=S_IFREG|0755, st_size=14400, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/tileit", {st_mode=S_IFREG|0755, st_size=23180, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/tiler", {st_mode=S_IFREG|0755, st_size=10044, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/vpropagate", {st_mode=S_IFREG|0755, st_size=22636, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/unsharp", {st_mode=S_IFREG|0755, st_size=18436, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/url", {st_mode=S_IFREG|0755, st_size=10076, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/video", {st_mode=S_IFREG|0755, st_size=47104, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/vinvert", {st_mode=S_IFREG|0755, st_size=10016, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/webbrowser", {st_mode=S_IFREG|0755, st_size=9952, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/warp", {st_mode=S_IFREG|0755, st_size=35204, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/waves", {st_mode=S_IFREG|0755, st_size=14392, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/whirlpinch.py", {st_mode=S_IFREG|0755, st_size=9452, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/whirlpinch", {st_mode=S_IFREG|0755, st_size=18472, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/zealouscrop", {st_mode=S_IFREG|0755, st_size=10084, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/wind", {st_mode=S_IFREG|0755, st_size=18456, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/winicon", {st_mode=S_IFREG|0755, st_size=31036, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/wmf", {st_mode=S_IFREG|0755, st_size=26912, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/xbm", {st_mode=S_IFREG|0755, st_size=27068, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/xjt", {st_mode=S_IFREG|0755, st_size=53052, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/xpm", {st_mode=S_IFREG|0755, st_size=18492, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/xwd", {st_mode=S_IFREG|0755, st_size=26620, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/xscanimage", {st_mode=S_IFREG|0755, st_size=89220, ...}) = 0 +stat64("/usr/lib/gimp/2.0/plug-ins/ufraw-gimp", {st_mode=S_IFREG|0755, st_size=611884, ...}) = 0 +getdents64(4, /* 0 entries */, 4096) = 0 +close(4) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 482113}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 482400}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 482537}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 482761}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 483109}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 483311}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0001\1`\3?\0`\3\220\1\24\0\232\4\5\0002\1`\0031\1`\0038\0\0\0"..., 1932}], 1) = 1932 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 486134}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 486356}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 488937}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 489159}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 489389}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 489597}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 489950}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 490076}, NULL) = 0 +open("/user/folk/clint/.gimp-2.2/pluginrc", O_RDONLY|O_LARGEFILE) = 4 +read(4, "# GIMP pluginrc\n# \n# This file c"..., 4000) = 4000 +read(4, "map) format.\"\n \"Save fil"..., 4000) = 4000 +read(4, "eit\"\n \"1998\"\n \"X"..., 4000) = 4000 +read(4, "o save\")\n (proc-arg 4 \"fi"..., 4000) = 4000 +read(4, " \"\"\n \"\"\n "..., 4000) = 4000 +read(4, " \"Adam D. Moss (adam@foxbox.o"..., 4000) = 4000 +read(4, "-arg 0 \"direction-mask\" \"0 <= di"..., 4000) = 4000 +read(4, "ponding base type.\"\n \"Sp"..., 4000) = 4000 +read(4, "\n \"\"\n \"\"\n "..., 4000) = 4000 +read(4, "\n 6 0\n (proc-arg "..., 4000) = 4000 +read(4, " \"Version 1.27, September 2003\""..., 4000) = 4000 +read(4, " (proc-arg 0 \"seed\" \"Random seed"..., 4000) = 4000 +read(4, "unt (0 <= shift_amount_x <= 200)"..., 4000) = 4000 +read(4, " \"\"\n \"RGBA\"\n "..., 4000) = 4000 +read(4, " 2 0\n (proc-arg 0 "..., 4000) = 4000 +read(4, "\\0\\0u\\206\\0\\0\\0\\377\\6XXX\\354LLL\\"..., 4000) = 4000 +read(4, "377ssr\\377ppp\\377\\0\\0\\0\\377\\0\\0\\"..., 4000) = 4000 +read(4, ")\n (proc-arg 0 \"drop_x\" \""..., 4000) = 4000 +read(4, " (proc-arg 0 \"run_mode\" \"Int"..., 4000) = 4000 +brk(0x8b26000) = 0x8b26000 +brk(0x8b25000) = 0x8b25000 +read(4, "u may select the percentage of p"..., 4000) = 4000 +read(4, "per intensity\")\n (proc-ar"..., 4000) = 4000 +read(4, " \"Monigotes\"\n \"Monigotes"..., 4000) = 4000 +read(4, "height\" \"Height of image in Post"..., 4000) = 4000 +read(4, " \"\"\n 3 1\n (pr"..., 4000) = 4000 +read(4, "at\"\n \"PNM saving handles"..., 4000) = 4000 +read(4, "the default settings stored as a"..., 4000) = 4000 +read(4, "er 2002\"\n \"PNG image\"\n "..., 4000) = 4000 +read(4, "tte file format\"\n \"Micha"..., 4000) = 4000 +read(4, " \"\"\n \"\"\n \"\""..., 4000) = 4000 +read(4, "rap_around\" \"wrap around (bool)\""..., 4000) = 4000 +read(4, "co Mena Quintero\"\n \"Adam"..., 4000) = 4000 +read(4, ", MIT Press, 1987.\"\n \"Au"..., 4000) = 4000 +read(4, "ckground): { BW (0), FG_BG (1) }"..., 4000) = 4000 +read(4, "sr/lib/gimp/2.0/plug-ins/max_rgb"..., 4000) = 4000 +read(4, "77\\365\\365\\365\\377YYY\\377nnn\\377"..., 4000) = 4000 +read(4, "mp\" \"The subsampling option numb"..., 4000) = 4000 +read(4, "ef \"plug_in_illusion\" 1\n "..., 4000) = 4000 +read(4, "ource code header\"\n 0\n "..., 4000) = 4000 +read(4, "cach, Jens Ch. Restemeier\"\n "..., 4000) = 4000 +read(4, " \"\"\n \"\"\n \"RGB"..., 4000) = 4000 +read(4, " (proc-arg 13 \"image\" \"Im"..., 4000) = 4000 +read(4, "ctor angle for second flares (de"..., 4000) = 4000 +read(4, "oad\")\n (proc-arg 13 \"imag"..., 4000) = 4000 +read(4, "-generated.\"\n \"Spencer K"..., 4000) = 4000 +read(4, "\")\n (proc-arg 0 \"depth\" \""..., 4000) = 4000 +read(4, "roc-arg 10 \"number_color\" \"Color"..., 4000) = 4000 +read(4, "17th, 1997\"\n \"_Color Exc"..., 4000) = 4000 +read(4, "ed with default dummy values.\"\n "..., 4000) = 4000 +read(4, "lt\")\n (proc-arg 16 \"sourc"..., 4000) = 4000 +read(4, "e) If rotation is not 0, the lay"..., 4000) = 4000 +brk(0x8b46000) = 0x8b46000 +read(4, " \"Lauri Alanko\"\n \"199"..., 4000) = 4000 +read(4, " function creates a new image fr"..., 4000) = 4000 +read(4, "-1 \"\")\n \"\"\n \"\"\n "..., 4000) = 4000 +read(4, " for the green channel\")\n "..., 4000) = 4000 +read(4, " 16 \"drawable\" \"Input drawable\")"..., 4000) = 4000 +read(4, "90660588\n (proc-def \"plug_in_"..., 4000) = 4000 +read(4, " \"/usr/lib/gimp/2.0/plug-ins/ani"..., 4000) = 4000 +read(4, "c-def \"file_bmp_load\" 1\n "..., 4000) = 4000 +read(4, " \"\"\n \"\"\n \"RGB*"..., 4000) = 4000 +read(4, "roc-arg 13 \"image\" \"Input image\""..., 4000) = 4000 +read(4, "e image as ascii art into a vari"..., 4000) = 4000 +read(4, "ctor (0-360)\")\n (proc-arg"..., 4000) = 1369 +read(4, "", 4000) = 0 +close(4) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 633993}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 634127}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0005\1`\3;\0`\3\273\0#\0\232\4\5\0006\1`\0035\1`\0038\0\0\0"..., 628}], 1) = 628 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 635505}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 635583}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 635799}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 635922}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0007\1`\3;\0`\3<\0\r\0\232\4\5\0008\1`\0037\1`\0038\0\0\0"..., 380}], 1) = 380 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 636603}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 636681}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 636859}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 636983}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 637248}, NULL) = 0 +gettimeofday({1192407181, 637291}, NULL) = 0 +gettimeofday({1192407181, 637331}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0009\1`\3?\0`\3\220\1\24\0\232\4\5\0:\1`\0039\1`\0038\0\0\0"..., 1628}], 1) = 1628 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 638142}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 638242}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 638436}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 638561}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 638789}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0=\1`\3?\0`\3\220\1\24\0\232\4\5\0>\1`\3=\1`\0038\0\0\0"..., 1604}], 1) = 1604 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 639539}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 639619}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 639791}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 639916}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 640140}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0A\1`\3?\0`\3\220\1\24\0\232\4\5\0B\1`\3A\1`\0038\0\0\0"..., 2036}], 1) = 2036 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 640922}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 641000}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 641242}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 641366}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 641594}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0E\1`\3?\0`\3\220\1\24\0\232\4\5\0F\1`\3E\1`\0038\0\0\0"..., 3716}], 1) = 3716 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 642608}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 642686}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 642854}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 642978}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 643203}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0I\1`\3?\0`\3\220\1\24\0\232\4\5\0J\1`\3I\1`\0038\0\0\0"..., 3732}], 1) = 3732 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 644161}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 644239}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 644406}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 644531}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 644755}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0M\1`\3?\0`\3\220\1\24\0\232\4\5\0N\1`\3M\1`\0038\0\0\0"..., 3732}], 1) = 3732 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 645734}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 645813}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 645987}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 646111}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 646336}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0Q\1`\3?\0`\3\220\1\24\0\232\4\5\0R\1`\3Q\1`\0038\0\0\0"..., 3384}], 1) = 3384 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1\354.\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0S\1`\3;\0`\3*\0\n\0\232\4\5\0T\1`\3S\1`\0038\0\0\0"..., 372}], 1) = 372 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 647795}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 647873}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 648044}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 648167}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 648412}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0U\1`\3?\0`\3\220\1\24\0\232\4\5\0V\1`\3U\1`\0038\0\0\0"..., 3732}], 1) = 3732 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 649502}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 649581}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 649769}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 649892}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 650119}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0Y\1`\3?\0`\3\220\1\24\0\232\4\5\0Z\1`\3Y\1`\0038\0\0\0"..., 3840}], 1) = 3840 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 651228}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 651307}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 651489}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 651612}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 651839}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0]\1`\3?\0`\3\220\1\24\0\232\4\5\0^\1`\3]\1`\0038\0\0\0"..., 3708}], 1) = 3708 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 652841}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 652938}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 653121}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 653256}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 653480}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0a\1`\3?\0`\3\220\1\24\0\232\4\5\0b\1`\3a\1`\0038\0\0\0"..., 3760}], 1) = 3760 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 654505}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 654584}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 654754}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 654877}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 655101}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0e\1`\3?\0`\3\220\1\24\0\232\4\5\0f\1`\3e\1`\0038\0\0\0"..., 3736}], 1) = 3736 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 656094}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 656173}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 656343}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 656466}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 656690}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0i\1`\3?\0`\3\220\1\24\0\232\4\5\0j\1`\3i\1`\0038\0\0\0"..., 3752}], 1) = 3752 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 657742}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 657821}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 658001}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 658124}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 658369}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0m\1`\3?\0`\3\220\1\24\0\232\4\5\0n\1`\3m\1`\0038\0\0\0"..., 3824}], 1) = 3824 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 659387}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 659466}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 659637}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 659761}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 659987}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0q\1`\3?\0`\3\220\1\24\0\232\4\5\0r\1`\3q\1`\0038\0\0\0"..., 3800}], 1) = 3800 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 660993}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 661071}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 662793}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 662920}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 663173}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0u\1`\3?\0`\3\220\1\24\0\232\4\5\0v\1`\3u\1`\0038\0\0\0"..., 3816}], 1) = 3816 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 664208}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 664287}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 664484}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 664607}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 664835}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0y\1`\3?\0`\3\220\1\24\0\232\4\5\0z\1`\3y\1`\0038\0\0\0"..., 3812}], 1) = 3812 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 665829}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 665907}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 666083}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 666206}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 666433}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0}\1`\3?\0`\3\220\1\24\0\232\4\5\0~\1`\3}\1`\0038\0\0\0"..., 3816}], 1) = 3816 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 667443}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 667522}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 667700}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 667824}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 668050}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\201\1`\3?\0`\3\220\1\24\0\232\4\5\0\202\1`\3\201\1`\0038\0\0\0"..., 3820}], 1) = 3820 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 669110}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 669210}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 669382}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 669505}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 669732}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\205\1`\3?\0`\3\220\1\24\0\232\4\5\0\206\1`\3\205\1`\0038\0\0\0"..., 3800}], 1) = 3800 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 670771}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 670849}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 671021}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 671146}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 671371}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\211\1`\3?\0`\3\220\1\24\0\232\4\5\0\212\1`\3\211\1`\0038\0\0\0"..., 3816}], 1) = 3816 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 672348}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 672426}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 672595}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 672719}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 672943}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\215\1`\3?\0`\3\220\1\24\0\232\4\5\0\216\1`\3\215\1`\0038\0\0\0"..., 3796}], 1) = 3796 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 673924}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 674003}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 674171}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 674295}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 674519}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\221\1`\3?\0`\3\220\1\24\0\232\4\5\0\222\1`\3\221\1`\0038\0\0\0"..., 3844}], 1) = 3844 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 675486}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 675565}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 675743}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 675866}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 676091}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\225\1`\3?\0`\3\220\1\24\0\232\4\5\0\226\1`\3\225\1`\0038\0\0\0"..., 3884}], 1) = 3884 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 677093}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 677202}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 677372}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 677514}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 677740}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\231\1`\3?\0`\3\220\1\24\0\232\4\5\0\232\1`\3\231\1`\0038\0\0\0"..., 3860}], 1) = 3860 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 678978}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 679057}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 679227}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 679351}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 679578}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\235\1`\3?\0`\3\220\1\24\0\232\4\5\0\236\1`\3\235\1`\0038\0\0\0"..., 3876}], 1) = 3876 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 680555}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 680633}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 680803}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 680927}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 681204}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\241\1`\3?\0`\3\220\1\24\0\232\4\5\0\242\1`\3\241\1`\0038\0\0\0"..., 3884}], 1) = 3884 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 682207}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 682285}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 682455}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 682579}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 682804}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\245\1`\3?\0`\3\220\1\24\0\232\4\5\0\246\1`\3\245\1`\0038\0\0\0"..., 3880}], 1) = 3880 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 683793}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 683872}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 684043}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 684166}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 684391}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\251\1`\3?\0`\3\220\1\24\0\232\4\5\0\252\1`\3\251\1`\0038\0\0\0"..., 3864}], 1) = 3864 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 685407}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 685503}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 685739}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 685863}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 686098}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\255\1`\3?\0`\3\220\1\24\0\232\4\5\0\256\1`\3\255\1`\0038\0\0\0"..., 3924}], 1) = 3924 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 687218}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 687298}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 687475}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 687599}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 687827}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\261\1`\3?\0`\3\220\1\24\0\232\4\5\0\262\1`\3\261\1`\0038\0\0\0"..., 3864}], 1) = 3864 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 688884}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 688963}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 689145}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 689279}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 689508}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\265\1`\3?\0`\3\220\1\24\0\232\4\5\0\266\1`\3\265\1`\0038\0\0\0"..., 3920}], 1) = 3920 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 690587}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 690665}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 690835}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 690959}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 691184}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\271\1`\3?\0`\3\220\1\24\0\232\4\5\0\272\1`\3\271\1`\0038\0\0\0"..., 3928}], 1) = 3928 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 692230}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 692309}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 692477}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 692602}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 692827}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\275\1`\3?\0`\3\220\1\24\0\232\4\5\0\276\1`\3\275\1`\0038\0\0\0"..., 3944}], 1) = 3944 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 693858}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 693937}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 694109}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 694233}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 694458}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\301\1`\3?\0`\3\220\1\24\0\232\4\5\0\302\1`\3\301\1`\0038\0\0\0"..., 3944}], 1) = 3944 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 695498}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 695577}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 695746}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 695869}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 696094}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\305\1`\3?\0`\3\220\1\24\0\232\4\5\0\306\1`\3\305\1`\0038\0\0\0"..., 3928}], 1) = 3928 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 697121}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 697210}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 697378}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 697502}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 697727}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\311\1`\3?\0`\3\220\1\24\0\232\4\5\0\312\1`\3\311\1`\0038\0\0\0"..., 3944}], 1) = 3944 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 698753}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 698832}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 699003}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 699127}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 699352}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\315\1`\3?\0`\3\220\1\24\0\232\4\5\0\316\1`\3\315\1`\0038\0\0\0"..., 3944}], 1) = 3944 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 700390}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 700469}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 700650}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 700775}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 701017}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\321\1`\3?\0`\3\220\1\24\0\232\4\5\0\322\1`\3\321\1`\0038\0\0\0"..., 3576}], 1) = 3576 +select(4, [3], [], NULL, NULL) = 1 (in [3]) +read(3, "\1\1\304G\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\323\1`\3;\0`\3W\0\r\0\232\4\5\0\324\1`\3\323\1`\0038\0\0\0"..., 380}], 1) = 380 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 702581}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 702660}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 702830}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 702953}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 703177}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\325\1`\3?\0`\3\220\1\24\0\232\4\5\0\326\1`\3\325\1`\0038\0\0\0"..., 3924}], 1) = 3924 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 704217}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 704296}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 704473}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 704597}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 704822}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\331\1`\3?\0`\3\220\1\24\0\232\4\5\0\332\1`\3\331\1`\0038\0\0\0"..., 4012}], 1) = 4012 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 706247}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 706326}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 706619}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 706742}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 707090}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\335\1`\3?\0`\3\220\1\24\0\232\4\5\0\336\1`\3\335\1`\0038\0\0\0"..., 3996}], 1) = 3996 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 708364}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 708442}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 708625}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 708750}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 708994}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\341\1`\3?\0`\3\220\1\24\0\232\4\5\0\342\1`\3\341\1`\0038\0\0\0"..., 4008}], 1) = 4008 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 710082}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 710161}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 710343}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 710467}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 710693}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\345\1`\3?\0`\3\220\1\24\0\232\4\5\0\346\1`\3\345\1`\0038\0\0\0"..., 4012}], 1) = 4012 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 711752}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 711830}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 712009}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 712134}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 712357}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\351\1`\3?\0`\3\220\1\24\0\232\4\5\0\352\1`\3\351\1`\0038\0\0\0"..., 3980}], 1) = 3980 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 713451}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 713530}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 713709}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 713833}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 714057}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\355\1`\3?\0`\3\220\1\24\0\232\4\5\0\356\1`\3\355\1`\0038\0\0\0"..., 4012}], 1) = 4012 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 715117}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 715196}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 715381}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 715505}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 715730}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\361\1`\3?\0`\3\220\1\24\0\232\4\5\0\362\1`\3\361\1`\0038\0\0\0"..., 4016}], 1) = 4016 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 716817}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 716896}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 717068}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 717220}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 717446}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\365\1`\3?\0`\3\220\1\24\0\232\4\5\0\366\1`\3\365\1`\0038\0\0\0"..., 3992}], 1) = 3992 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 718515}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 718594}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 718765}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 718888}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 719113}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\371\1`\3?\0`\3\220\1\24\0\232\4\5\0\372\1`\3\371\1`\0038\0\0\0"..., 4072}], 1) = 4072 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 720165}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 720243}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 720415}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 720538}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 720763}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\375\1`\3?\0`\3\220\1\24\0\232\4\5\0\376\1`\3\375\1`\0038\0\0\0"..., 4072}], 1) = 4072 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 721813}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 721891}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 722058}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 722181}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 722403}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\1\2`\3?\0`\3\220\1\24\0\232\4\5\0\2\2`\3\1\2`\0038\0\0\0"..., 4052}], 1) = 4052 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 723423}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 723502}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 723669}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 723793}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 724016}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\5\2`\3?\0`\3\220\1\24\0\232\4\5\0\6\2`\3\5\2`\0038\0\0\0"..., 4072}], 1) = 4072 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 725022}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 725118}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 725304}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 725427}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 725652}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\t\2`\3?\0`\3\220\1\24\0\232\4\5\0\n\2`\3\t\2`\0038\0\0\0"..., 4080}], 1) = 4080 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 726714}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 726793}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 726976}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 727099}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 727323}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\r\2`\3?\0`\3\220\1\24\0\232\4\5\0\16\2`\3\r\2`\0038\0\0\0"..., 4048}], 1) = 4048 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 728440}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 728519}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 728687}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 728811}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 729035}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\21\2`\3?\0`\3\220\1\24\0\232\4\5\0\22\2`\3\21\2`\0038\0\0\0"..., 4052}], 1) = 4052 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 730156}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 730235}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 730415}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 730539}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 730762}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\25\2`\3?\0`\3\220\1\24\0\232\4\5\0\26\2`\3\25\2`\0038\0\0\0"..., 4076}], 1) = 4076 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 731849}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 731974}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 732098}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 732174}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 732342}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 732485}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 732711}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\31\2`\3?\0`\3\220\1\24\0\232\4\5\0\32\2`\3\31\2`\0038\0\0\0"..., 4052}], 1) = 4052 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 733784}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 733862}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 734036}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 734160}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 734385}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0\35\2`\3?\0`\3\220\1\24\0\232\4\5\0\36\2`\3\35\2`\0038\0\0\0"..., 4076}, {">\3\7\0\37\2`\3;\0`\0033\0`\3\0\0\0\0\256\0\347\0004\0\r\0", 28}], 2) = 4104 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0 \2`\0036\7\2\0\37\2`\3", 32}], 1) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 735628}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 735706}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 735875}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 735999}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 736224}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0!\2`\3?\0`\3\220\1\24\0\232\4\5\0\"\2`\3!\2`\0038\0\0\0"..., 4088}, {"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4104 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"\232\7\2\0$\2`\0036\7\2\0#\2`\3", 16}], 1) = 16 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 737443}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 737567}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 737711}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 737833}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 738078}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"6\7\2\0,\1`\0035\30\4\0%\2`\3?\0`\3\220\1\24\0F\30\5\0%\2`\3"..., 3840}], 1) = 3840 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 738943}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 739022}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 739205}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 739329}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 739569}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0(\2`\3?\0`\3\220\1\24\0\232\4\5\0)\2`\3(\2`\0038\0\0\0"..., 4092}, {";\3\5\0003\0`\3\0\0\0\0\254\0\347\0007\0\r\0", 20}], 2) = 4112 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{">\3\7\0*\2`\3;\0`\0033\0`\3\0\0\0\0\254\0\347\0007\0\r\0008\3\4\0"..., 60}], 1) = 60 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 740846}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 740924}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 741111}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 741243}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 741465}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0,\2`\3?\0`\3\220\1\24\0\232\4\5\0-\2`\3,\2`\0038\0\0\0"..., 4044}, {"\232\27\16\0\3\2`\3O\0`\3/\2`\0034\0\0\0S\0`\3\377\377\n\0\21\0`\3"..., 56}], 2) = 4100 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{";\3\5\0003\0`\3\0\0\0\0\224\0\347\0i\0\r\0>\3\7\0.\2`\3;\0`\3"..., 80}], 1) = 80 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 742817}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 742893}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 743057}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 743177}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 743399}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0000\2`\3?\0`\3\220\1\24\0\232\4\5\0001\2`\0030\2`\0038\0\0\0"..., 4088}, {">\3\7\0002\2`\3;\0`\0033\0`\3\0\0\0\0\224\0\347\0i\0\r\0", 28}], 2) = 4116 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0003\2`\0036\7\2\0002\2`\3", 32}], 1) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 744680}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 744756}, NULL) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 744920}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 745039}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 745272}, NULL) = 0 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"5\30\4\0004\2`\3?\0`\3\220\1\24\0\232\4\5\0005\2`\0034\2`\0038\0\0\0"..., 4076}, {">\3\7\0006\2`\3;\0`\0033\0`\3\0\0\0\0\274\0\352\0\27\0\n\0", 28}], 2) = 4104 +select(4, [3], [3], NULL, NULL) = 1 (out [3]) +writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0007\2`\0036\7\2\0006\2`\3", 32}], 1) = 32 +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) +gettimeofday({1192407181, 746493}, NULL) = 0 +poll([{fd=3, events=POLLIN}], 1, 0) = 0 +gettimeofday({1192407181, 746571}, NULL) = 0 diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/sort.src b/testcases/feature-test/oeaware/UnixBench/testdir/sort.src new file mode 100644 index 000000000..6a72fa84c --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/testdir/sort.src @@ -0,0 +1,362 @@ +version="1.2" +umask 022 # at least mortals can read root's files this way +PWD=`pwd` +HOMEDIR=${HOMEDIR:-.} +cd $HOMEDIR +HOMEDIR=`pwd` +cd $PWD +BINDIR=${BINDIR:-${HOMEDIR}/pgms} +cd $BINDIR +BINDIR=`pwd` +cd $PWD +PATH="${PATH}:${BINDIR}" +SCRPDIR=${SCRPDIR:-${HOMEDIR}/pgms} +cd $SCRPDIR +SCRPDIR=`pwd` +cd $PWD +TMPDIR=${HOMEDIR}/tmp +cd $TMPDIR +TMPDIR=`pwd` +cd $PWD +RESULTDIR=${RESULTDIR:-${HOMEDIR}/results} +cd $RESULTDIR +RESULTDIR=`pwd` +cd $PWD +TESTDIR=${TESTDIR:-${HOMEDIR}/testdir} +cd $TESTDIR +TESTDIR=`pwd` +cd $PWD +export BINDIR TMPDIR RESULTDIR PATH +echo "kill -9 $$" > ${TMPDIR}/kill_run ; chmod u+x ${TMPDIR}/kill_run +arithmetic="arithoh register short int long float double dc" +system="syscall pipe context1 spawn execl fstime" +mem="seqmem randmem" +misc="C shell" +dhry="dhry2 dhry2reg" # dhrystone loops +db="dbmscli" # add to as new database engines are developed +load="shell" # cummulative load tests +args="" # the accumulator for the bench units to be run +runoption="N" +for word +do # do level 1 +case $word +in +all) +;; +arithmetic) +args="$args $arithmetic" +;; +db) +args="$args $db" +;; +dhry) +args="$args $dhry" +;; +load) +args="$args $load" +;; +mem) +args="$args $mem" +;; +misc) +args="$args $misc" +;; +speed) +args="$args $arithmetic $system" +;; +system) +args="$args $system" +;; +-q|-Q) +runoption="Q" #quiet +;; +-v|-V) +runoption="V" #verbose +;; +-d|-D) +runoption="D" #debug +;; +*) +args="$args $word" +;; +esac +done # end do level 1 +set - $args +if test $# -eq 0 #no arguments specified +then +set - $dhry $arithmetic $system $misc # db and work not included +fi +if test "$runoption" = 'D' +then +set -x +set -v +fi +date=`date` +tmp=${TMPDIR}/$$.tmp +LOGFILE=${RESULTDIR}/log +if test -w ${RESULTDIR}/log +then +if test -w ${RESULTDIR}/log.accum +then +cat ${RESULTDIR}/log >> ${RESULTDIR}/log.accum +rm ${RESULTDIR}/log +else +mv ${RESULTDIR}/log ${RESULTDIR}/log.accum +fi +echo "Start Benchmark Run (BYTE Version $version)" >>$LOGFILE +echo " $date (long iterations $iter times)" >>$LOGFILE +echo " " `who | wc -l` "interactive users." >>$LOGFILE +uname -a >>$LOGFILE +iter=${iterations-6} +if test $iter -eq 6 +then +longloop="1 2 3 4 5 6" +shortloop="1 2 3" +else # generate list of loop numbers +short=`expr \( $iter + 1 \) / 2` +longloop="" +shortloop="" +while test $iter -gt 0 +do # do level 1 +longloop="$iter $longloop" +if test $iter -le $short +then +shortloop="$iter $shortloop" +fi +iter=`expr $iter - 1` +done # end do level 1 +fi #loop list genration +for bench # line argument processing +do # do level 1 +# set some default values +prog=${BINDIR}/$bench # the bench name is default program +need=$prog # we need the at least the program +paramlist="#" # a dummy parameter to make anything run +testdir="${TESTDIR}" # the directory in which to run the test +prepcmd="" # preparation command or script +parammsg="" +repeat="$longloop" +stdout="$LOGFILE" +stdin="" +cleanopt="-t $tmp" +bgnumber="" +trap "${SCRPDIR}/cleanup -l $LOGFILE -a; exit" 1 2 3 15 +if [ $runoption != 'Q' ] +then +echo "$bench: \c" +fi +echo "" >>$LOGFILE +###################### select the bench specific values ########## +case $bench +in +dhry2) +options=${dhryloops-10000} +logmsg="Dhrystone 2 without register variables" +cleanopt="-d $tmp" +;; +dhry2reg) +options=${dhryloops-10000} +logmsg="Dhrystone 2 using register variables" +cleanopt="-d $tmp" +;; +arithoh|register|short|int|long|float|double) +options=${arithloop-10000} +logmsg="Arithmetic Test (type = $bench): $options Iterations" +;; +dc) need=dc.dat +prog=dc +options="" +stdin=dc.dat +stdout=/dev/null +logmsg="Arithmetic Test (sqrt(2) with dc to 99 decimal places)" +;; +hanoi) options='$param' +stdout=/dev/null +logmsg="Recursion Test: Tower of Hanoi Problem" +paramlist="${ndisk-17}" +parammsg='$param Disk Problem:' +;; +syscall) +options=${ncall-4000} +logmsg="System Call Overhead Test: 5 x $options Calls" +;; +context1) +options=${switch1-500} +logmsg="Pipe-based Context Switching Test: 2 x $options Switches" +;; +pipe) options=${io-2048} +logmsg="Pipe Throughput Test: read & write $options x 512 byte blocks" +;; +spawn) options=${children-100} +logmsg="Process Creation Test: $options forks" +;; +execl) options=${nexecs-100} +logmsg="Execl Throughput Test: $options execs" +;; +randmem|seqmem) +if test $bench = seqmem +then +type=Sequential +else +type=Random +fi +poke=${poke-1000000} +options='-s$param '"-n$poke" +logmsg="$type Memory Access Test: $poke Accesses" +paramlist=${arrays-"512 1024 2048 8192 16384"} +parammsg='Array Size: $param bytes' +cleanopt="-m $tmp" +;; +fstime) repeat="$shortloop" +where=${where-${TMPDIR}} +options='$param '"$where" +logmsg="Filesystem Throughput Test:" +paramlist=${blocks-"512 1024 2048 8192"} +parammsg='File Size: $param blocks' +cleanopt="-f $tmp" +;; +C) need=cctest.c +prog=cc +options='$param' +stdout=/dev/null +repeat="$shortloop" +logmsg="C Compiler Test:" +paramlist="cctest.c" +parammsg='cc $param' +rm -f a.out +;; +dbmscli) +repeat="$shortloop" +need="db.dat" +prepcmd='${BINDIR}/dbprep ${testdir}/db.dat 10000' +paramlist=${clients-"1 2 4 8"} +parammsg='$param client processes. (filesize `cat ${testdir}/db.dat|wc -c` bytes)' +logmsg="Client/Server Database Engine:" +options='${testdir}/db.dat $param 0 1000' # $param clients; +# 0 sleep; 1000 iterations +;; +shell) +prog="multi.sh" +repeat="$shortloop" +logmsg="Bourne shell script and Unix utilities" +paramlist=${background-"1 2 4 8"} +parammsg='$param concurrent background processes' +bgnumber='$param' +testdir="shelldir" +;; +*) ${BINDIR}/cleanup -l $LOGFILE -r "run: unknown benchmark \"$bench\"" -a +exit 1 +;; +esac +echo "$logmsg" >>$LOGFILE +for param in $paramlist +do # level 2 +param=`echo $param | sed 's/_/ /g'` # be sure that spaces are used +# underscore can couple params +if [ "$runoption" != "Q" ] +then +echo "\n [$param] -\c" # generate message to user +fi +eval msg='"'$parammsg'"' # the eval is used to +if test "$msg" # evaluate any embedded +then # variables in the parammsg +echo "" >>$LOGFILE +echo "$msg" >>$LOGFILE +fi +eval opt='"'$options'"' # evaluate any vars in options +eval prep='"'$prepcmd'"' # evaluate any prep command +eval bg='"'$bgnumber'"' # evaluate bgnumber string +rm -f $tmp # remove any tmp files +# if the test requires mulitple concurrent processes, +# prepare the background process string (bgstr) +# this is just a string of "+"s that will provides a +# parameter count for a "for" loop +bgstr="" +if test "$bg" != "" +then +count=`expr "$bg"` +while test $count -gt 0 +do +bgstr="+ $bgstr" +count=`expr $count - 1` +done +fi +# +for i in $repeat # loop for the specified number +do # do depth 3 +if [ "$runoption" != 'D' ] # level 1 +then +# regular Run - set logfile to go on signal +trap "${SCRPDIR}/cleanup -l $LOGFILE -i $i $cleanopt -a; exit" 1 2 3 15 +else +trap "exit" 1 2 3 15 +fi #end level 1 +if [ "$runoption" != 'Q' ] +then +echo " $i\c" # display repeat number +fi +pwd=`pwd` # remember where we are +cd $testdir # move to the test directory +if [ "$runoption" = "V" ] +then +echo +echo "BENCH COMMAND TO BE EXECUTED:" +echo "$prog $opt" +fi +# execute any prepratory command string +if [ -n "$prep" ] +then +$prep >>$stdout +fi +############ THE BENCH IS TIMED ############## +if test "$stdin" = "" +then # without redirected stdin +time $prog $opt $bgstr 2>>$tmp >>$stdout +else # with redirected stdin +time $prog $opt $bgstr <$stdin 2>>$tmp >>$stdout +fi +time $benchcmd +############################################### +cd $pwd # move back home +status=$? # save the result code +if test $status != 0 # must have been an error +then +if test -f $tmp # is there an error file ? +then +cp $tmp ${TMPDIR}/save.$bench.$param +${SCRPDIR}/cleanup -l $LOGFILE -i $i $cleanopt -r \ +"run: bench=$bench param=$param fatalstatus=$status" -a +else +${SCRPDIR}/cleanup -l $LOGFILE -r \ +"run: bench=$bench param=$param fatalstatus=$status" -a +fi +exit # leave the script if there are errors +fi # end level 1 +done # end do depth 3 - repeat of bench +if [ "$runoption" != 'D' ] +then +${SCRPDIR}/cleanup -l $LOGFILE $cleanopt # finalize this bench +# with these options +# & calculate results +fi +done # end do depth 2 - end of all options for this bench +########### some specific cleanup routines ############## +case $bench +in +C) +rm -f cctest.o a.out +;; +esac +if [ "$runoption" != 'Q' ] +then +echo "" +fi +done # end do level 1 - all benchmarks requested +echo "" >>$LOGFILE +echo " " `who | wc -l` "interactive users." >>$LOGFILE +echo "End Benchmark Run ($date) ...." >>$LOGFILE +if [ "$runoption" != 'Q' ] +then +pg $LOGFILE +fi +exit diff --git a/testcases/feature-test/oeaware/UnixBench/tmp/kill_run b/testcases/feature-test/oeaware/UnixBench/tmp/kill_run new file mode 100755 index 000000000..2aa5e9a81 --- /dev/null +++ b/testcases/feature-test/oeaware/UnixBench/tmp/kill_run @@ -0,0 +1 @@ +kill -9 46787 diff --git a/testcases/feature-test/oeaware/numafast b/testcases/feature-test/oeaware/numafast deleted file mode 100644 index e69de29bb..000000000 diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_61.sh b/testcases/feature-test/oeaware/oe_test_oeAware_61.sh index fcbf536b5..077aedd59 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_61.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_61.sh @@ -4,7 +4,7 @@ source "${OET_PATH}"/libs/locallibs/common_lib.sh function pre_test(){ LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_72.sh b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh index 6b705d71f..60fe59329 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_72.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh @@ -4,7 +4,7 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_73.sh b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh index 936dc1cde..0062e5609 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_73.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh @@ -4,7 +4,7 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi @@ -22,6 +22,7 @@ function run_test() { oeawarectl analysis -t 3 | grep "use dynamic smt" CHECK_RESULT $? 0 0 "Check SMT suggestion failed." stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & + SLEEP_WAIT 5 oeawarectl analysis -t 3 | grep "use dynamic smt" CHECK_RESULT $? 0 1 "Check SMT suggestion failed." LOG_INFO "End to run test." diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_74.sh b/testcases/feature-test/oeaware/oe_test_oeAware_74.sh index b8e9fd424..5dabc6a16 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_74.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_74.sh @@ -4,7 +4,7 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_75.sh b/testcases/feature-test/oeaware/oe_test_oeAware_75.sh index 73c7ebde3..62bc0d51b 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_75.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_75.sh @@ -4,7 +4,7 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_76.sh b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh index 6dafa643b..2add2cb89 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_76.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh @@ -4,7 +4,7 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_81.sh b/testcases/feature-test/oeaware/oe_test_oeAware_81.sh index 5650a8cc5..23151aff3 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_81.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_81.sh @@ -4,16 +4,16 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - systemctl restart oeaware - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi - if ["$(cat /sys/devices/system/cpu/smt/active)"="1"];then + if [ "$(cat /sys/devices/system/cpu/smt/active)" != "1" ];then echo "the environment does not support testing" exit 255 fi DNF_INSTALL "oeAware-manager" + systemctl restart oeaware LOG_INFO "End to prepare the test environment." } diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_82.sh b/testcases/feature-test/oeaware/oe_test_oeAware_82.sh index 0d5cc3b54..c86e177bb 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_82.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_82.sh @@ -5,11 +5,11 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." systemctl restart oeaware - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi - if ["$(cat /sys/devices/system/cpu/smt/active)"="1"];then + if [ "$(cat /sys/devices/system/cpu/smt/active)" != "1" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_83.sh b/testcases/feature-test/oeaware/oe_test_oeAware_83.sh index b252434f7..289dc188a 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_83.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_83.sh @@ -4,11 +4,11 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi - if ["$(cat /sys/devices/system/cpu/smt/active)"="1"];then + if [ "$(cat /sys/devices/system/cpu/smt/active)" != "1" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh index e0d08b9d7..b9bfb2be2 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh @@ -4,7 +4,7 @@ source "${OET_PATH}"/testcases/feature-test/oeaware/common/common.sh function pre_test() { LOG_INFO "Start to prepare the test environment." - if ["${NODE1_FRAME}"="x86_64"];then + if [ "$(uname -m)" = "x86_64" ];then echo "the environment does not support testing" exit 255 fi diff --git a/testcases/feature-test/oeaware/server.crt b/testcases/feature-test/oeaware/server.crt new file mode 100644 index 000000000..db205cba4 --- /dev/null +++ b/testcases/feature-test/oeaware/server.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDETCCAfkCFEfMyRZCGm5okv/0MbnmWvfDKcCLMA0GCSqGSIb3DQEBCwUAMEUx +CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl +cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjUwNzI0MTA1MDU5WhcNMjYwNzI0MTA1 +MDU5WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE +CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA0/Gk3p1xdiKhirD5HAWdnqQU42sEk5tj6oPSp1Xxbc123NxG +svxocTgS/QlGmvfqsMh+AsgQ25473i77ggMIMMygXkbNjVXOJGY5wsmQR4MuCHR9 +vkKnuw+UADcPg2Bwutan1cunzMq2EDAoF09npHqu6zT6m8OixB+b2ljeywOxxCTt +IXBCPOJoDhsRLO6QC1QQZ7KG3FwoxdwiFwBHaPuoYkf4LgGVkG04Tr2dOQ7LF/RM +NhHuDLtG4ism+j1bWHkWYPIatjwfEIzhUDpzME0bjw7syOO3pi4tScgMmotkRyKe +pCAs93EL1UkhVz8u28uQz5r4iEojS39hO13vNQIDAQABMA0GCSqGSIb3DQEBCwUA +A4IBAQAQP+DIXdPaXTr0jTuWGsaXdaAi7ofjS8Dg7vasChBl/rI7D3KkiACe3Hx2 +Ov+s7H9tOicXw0oWkMH9YcTpFlbyDB3FI0BQmoiXZe3e+UjdziRivTZ4xyR7XVec +OAgpZBJxt7eo/PwWmAYmK8yqkQXba4awK2Mzroe6eKgQ5eplnYP2ywcSStckbpWW +6Loc/5/jVAhLY7L9mQ8P5FzcGoLA1vPQNwmLuTqtZ1MCR9N7qjgLqg9ryfISUM0r +yAkV/17zAorydMIkUqXCqPlvHSElvhvurX6J4VI7u/lm0EfbbDshOzBTqX/PleEu +pQGa5/4hIzdyRN4Kpzd7e0ra8nml +-----END CERTIFICATE----- diff --git a/testcases/feature-test/oeaware/server.csr b/testcases/feature-test/oeaware/server.csr new file mode 100644 index 000000000..4000996ed --- /dev/null +++ b/testcases/feature-test/oeaware/server.csr @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx +ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBANPxpN6dcXYioYqw+RwFnZ6kFONrBJObY+qD0qdV +8W3NdtzcRrL8aHE4Ev0JRpr36rDIfgLIENueO94u+4IDCDDMoF5GzY1VziRmOcLJ +kEeDLgh0fb5Cp7sPlAA3D4NgcLrWp9XLp8zKthAwKBdPZ6R6rus0+pvDosQfm9pY +3ssDscQk7SFwQjziaA4bESzukAtUEGeyhtxcKMXcIhcAR2j7qGJH+C4BlZBtOE69 +nTkOyxf0TDYR7gy7RuIrJvo9W1h5FmDyGrY8HxCM4VA6czBNG48O7Mjjt6YuLUnI +DJqLZEcinqQgLPdxC9VJIVc/LtvLkM+a+IhKI0t/YTtd7zUCAwEAAaAAMA0GCSqG +SIb3DQEBCwUAA4IBAQBUOpWNHK3Ik3RgLfrbXBSXMVhVWZ9YtWkrikcXEfztwdc9 +x9cXB8lVUTa1bG9NNu3qo8oPZcfqKb9sNedCS/UxpxyR2sadfsgiU8YB/bzvlsa4 +VpC6ZXXphzW8jX3IZiwvgh1AY9aoUkRnTjdEsCpJ8Hn4T/kAxnvZnB+QKeIijyuf +q7Fwb2/aey4W+b3PZ4vXX7pPrTm5UYToHe/AKOcmQ+rQexiJnIaVvPM1Vc20PrA/ +7lj0aSmneBkEK8jwTd8ZJnS8Oy0qJozk1gUqHfEVHTX8BRJW3mpa5mLAVsvrnnPW +fci1wLYBomFWoXk/+XuzLNqdm4oYr6HDVSqM2Ia7 +-----END CERTIFICATE REQUEST----- diff --git a/testcases/feature-test/oeaware/server.key b/testcases/feature-test/oeaware/server.key new file mode 100644 index 000000000..eae0a8759 --- /dev/null +++ b/testcases/feature-test/oeaware/server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA0/Gk3p1xdiKhirD5HAWdnqQU42sEk5tj6oPSp1Xxbc123NxG +svxocTgS/QlGmvfqsMh+AsgQ25473i77ggMIMMygXkbNjVXOJGY5wsmQR4MuCHR9 +vkKnuw+UADcPg2Bwutan1cunzMq2EDAoF09npHqu6zT6m8OixB+b2ljeywOxxCTt +IXBCPOJoDhsRLO6QC1QQZ7KG3FwoxdwiFwBHaPuoYkf4LgGVkG04Tr2dOQ7LF/RM +NhHuDLtG4ism+j1bWHkWYPIatjwfEIzhUDpzME0bjw7syOO3pi4tScgMmotkRyKe +pCAs93EL1UkhVz8u28uQz5r4iEojS39hO13vNQIDAQABAoIBAGhHa3wQcQPT9DFd +86Mi7DNivdhLDlxlxxpas6mbcoc44XO3eZ2U7PpPwZ/4EWIr+q/yZXWO5CR6TTB7 +Y0nLnhsMgxb/tSEGB8AHAAJj0/Yrh9mnHzseZpJ2DrawYJSePbjf5oIdirkLP9rl +JsSZUAAwUKHvViKPdiUS/EbJFQ1DJV3I0eS44+cmXhX2LAInsnBSllnH5s8W98X/ +nlIBOe4+JNdMM4G8/DSIo6YPJf9qfl1aOEd/cDQhc/Ti61M3ltkp3hPY1C2csRe6 +ZGXzgyubp0DGBWAdP5iOwXb69HYc+/SaQPgomoYm/oz5Tnr+49Sj1RgDUg89r+/Y +kSLfM/0CgYEA+LPQ9CHGtTtYTkbJyXkjDjcYJXBEhXHTARXeMWij5fFkfQ3m4PjE +fQyaeTWuC1gEJ0LQhMOq8AZhdw2oA/hFw2qAPKuTMEgZ0ZDWI+rcFV3IngIiGgWi +0Xb6RksNMhQ8DEbOQmR7SPyUoNQu1uBQ4BoOh1WOiLc2gTXkk8IX1pcCgYEA2im1 +TVMhBel5Ol3PrDG+uGUl+ff9y8FMGoI2GYHtvYbNK8916Kkrzfo63CJNvctZBIR/ +G1fCs1YKGfa9O/etufubIEZFJx0z4etPZulPp3ctovLg2YqugJiBddjxn2yxyhti +fNPvqBqzelG+ELprUeWB3DdtZdk5bipmxOdhThMCgYEA2z45oF3+PFoamLbSwGen +vapYAPkdjr4vEy/h9pCWm+jXe167/+uN2+c2blAiJCHtV2cRR1ju4jXdygQh7434 +gjLq5ZEjalbFW/dgr70lUzif2Jts0J/TTvCh5UHYWiN4ZCIvRlwqSsdPhxBGUmrh +IQ4XbLrBskhBJlsKLC/Yr/UCgYEApTsZmarwQ+4EZvROKXiznizdimkMy5lm7lzY +ZJFHYlgKZLgH8WLPTn3KvpcskibFEOrY6fiZ+gGcPPXndNetuEKbxuHx1iID/YOe +666hKZDV+6hALAMhDzxyMLNSrRBBx3TeLvTFemherrHiZgEK70gIBqXkMVNIb+ul +UlR8GgkCgYBerTDaK1ksFYDqKHl1i0nJbET1y89FON1D8oFhhEvAWpzPG4ROp34H +iRQz82Rq0GIqa0XPRB0pFg16xBbPuzLe4xxY1A0EvTIyyleK6JnIjylODgu/MmbG +75MzpmPB1aRQEe2+WGFeQoNoqpzvPrNCv+P10ejGKpguyicMnL4dJg== +-----END RSA PRIVATE KEY----- diff --git a/testcases/feature-test/oeaware/smc-tools-main/.gitignore b/testcases/feature-test/oeaware/smc-tools-main/.gitignore new file mode 100644 index 000000000..e07a8e736 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/.gitignore @@ -0,0 +1,5 @@ +*.o +*.so +smc +smc_pnet +smcss diff --git a/testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md b/testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md new file mode 100644 index 000000000..d00fdb562 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md @@ -0,0 +1,62 @@ +Contributing to smc-tools +========================= + + +License +------- +All contributions have to be submitted under the Eclipse Public License v1.0. +See also the [LICENSE](LICENSE) file. + + +Developer's Certificate of Origin and Signed-off-by +--------------------------------------------------- +The sign-off is a simple line at the end of the explanation for the patch, +which certifies that you wrote it or otherwise have the right to pass it on as +an open-source patch. + +With the Signed-off-by line you certify the below: + +``` +Developer's Certificate of Origin 1.1 + + By making a contribution to this project, I certify that: + + (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + + (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + + (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + + (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +If you can certify the above, just add a line stating the following at the +bottom of each of your commit messages: + +``` +Signed-off-by: Random Developer +``` + +Please use your real name and a valid e-mail address (no pseudonyms or anonymous +contributions). + + +Submitting code +--------------- +The preferred way is to create GitHub pull requests for your code contributions. +Please create separate pull requests for each logical enhancement, new feature, +or fix. diff --git a/testcases/feature-test/oeaware/smc-tools-main/LICENSE b/testcases/feature-test/oeaware/smc-tools-main/LICENSE new file mode 100644 index 000000000..b8cef6aa7 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/LICENSE @@ -0,0 +1,222 @@ + + Eclipse Public License - v 1.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF + THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + 1. DEFINITIONS + + "Contribution" means: + a) in the case of the initial Contributor, the initial code and + documentation distributed under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and + are distributed by that particular Contributor. A Contribution + 'originates' from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's + behalf. Contributions do not include additions to the Program which: + (i) are separate modules of software distributed in conjunction with + the Program under their own license agreement, and (ii) are not + derivative works of the Program. + + "Contributor" means any person or entity that distributes the Program. + + "Licensed Patents" mean patent claims licensable by a Contributor which + are necessarily infringed by the use or sale of its Contribution alone + or when combined with the Program. + + "Program" means the Contributions distributed in accordance with this + Agreement. + + "Recipient" means anyone who receives the Program under this Agreement, + including all Contributors. + + 2. GRANT OF RIGHTS + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare derivative works of, publicly display, + publicly perform, distribute and sublicense the Contribution of such + Contributor, if any, and such derivative works, in source code and + object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in source code and object code form. This patent license + shall apply to the combination of the Contribution and the Program + if, at the time the Contribution is added by the Contributor, such + addition of the Contribution causes such combination to be covered + by the Licensed Patents. The patent license shall not apply to any + other combinations which include the Contribution. No hardware per + se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby assumes + sole responsibility to secure any other intellectual property rights + needed, if any. For example, if a third party patent license is + required to allow Recipient to distribute the Program, it is + Recipient's responsibility to acquire that license before + distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. + + 3. REQUIREMENTS + + A Contributor may choose to distribute the Program in object code form + under its own license agreement, provided that: + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability + for damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a + reasonable manner on or through a medium customarily used for + software exchange. + + When the Program is made available in source code form: + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the + Program. + + Contributors may not remove or alter any copyright notices contained + within the Program. + + Each Contributor must identify itself as the originator of its + Contribution, if any, in a manner that reasonably allows subsequent + Recipients to identify the originator of the Contribution. + + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities + with respect to end users, business partners and the like. While this + license is intended to facilitate the commercial use of the Program, + the Contributor who includes the Program in a commercial product + offering should do so in a manner which does not create potential + liability for other Contributors. Therefore, if a Contributor includes + the Program in a commercial product offering, such Contributor + ("Commercial Contributor") hereby agrees to defend and indemnify every + other Contributor ("Indemnified Contributor") against any losses, + damages and costs (collectively "Losses") arising from claims, lawsuits + and other legal actions brought by a third party against the + Indemnified Contributor to the extent caused by the acts or omissions + of such Commercial Contributor in connection with its distribution of + the Program in a commercial product offering. The obligations in this + section do not apply to any claims or Losses relating to any actual or + alleged intellectual property infringement. In order to qualify, an + Indemnified Contributor must: a) promptly notify the Commercial + Contributor in writing of such claim, and b) allow the Commercial + Contributor to control, and cooperate with the Commercial Contributor + in, the defense and any related settlement negotiations. The Indemnified + Contributor may participate in any such claim at its own expense. + + For example, a Contributor might include the Program in a commercial + product offering, Product X. That Contributor is then a Commercial + Contributor. If that Commercial Contributor then makes performance + claims, or offers warranties related to Product X, those performance + claims and warranties are such Commercial Contributor's responsibility + alone. Under this section, the Commercial Contributor would have to + defend claims against the other Contributors related to those + performance claims and warranties, and if a court requires any other + Contributor to pay any damages as a result, the Commercial Contributor + must pay those damages. + + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED + ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER + EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR + CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A + PARTICULAR PURPOSE. Each Recipient is solely responsible for determining + the appropriateness of using and distributing the Program and assumes all + risks associated with its exercise of rights under this Agreement , + including but not limited to the risks and costs of program errors, + compliance with applicable laws, damage to or loss of data, programs or + equipment, and unavailability or interruption of operations. + + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT + NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING + WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR + DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED + HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this Agreement, and without further + action by the parties hereto, such provision shall be reformed to the + minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity (including + a cross-claim or counterclaim in a lawsuit) alleging that the Program + itself (excluding combinations of the Program with other software or + hardware) infringes such Recipient's patent(s), then such Recipient's + rights granted under Section 2(b) shall terminate as of the date such + litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it fails + to comply with any of the material terms or conditions of this Agreement + and does not cure such failure in a reasonable period of time after + becoming aware of such noncompliance. If all Recipient's rights under + this Agreement terminate, Recipient agrees to cease use and distribution + of the Program as soon as reasonably practicable. However, Recipient's + obligations under this Agreement and any licenses granted by Recipient + relating to the Program shall continue and survive. + + Everyone is permitted to copy and distribute copies of this Agreement, + but in order to avoid inconsistency the Agreement is copyrighted and + may only be modified in the following manner. The Agreement Steward + reserves the right to publish new versions (including revisions) of + this Agreement from time to time. No one other than the Agreement + Steward has the right to modify this Agreement. The Eclipse Foundation + is the initial Agreement Steward. The Eclipse Foundation may assign the + responsibility to serve as the Agreement Steward to a suitable separate + entity. Each new version of the Agreement will be given a distinguishing + version number. The Program (including Contributions) may always be + distributed subject to the version of the Agreement under which it was + received. In addition, after a new version of the Agreement is published, + Contributor may elect to distribute the Program (including its + Contributions) under the new version. Except as expressly stated in + Sections 2(a) and 2(b) above, Recipient receives no rights or licenses + to the intellectual property of any Contributor under this Agreement, + whether expressly, by implication, estoppel or otherwise. All rights in + the Program not expressly granted under this Agreement are reserved. + + This Agreement is governed by the laws of the State of New York and the + intellectual property laws of the United States of America. No party to + this Agreement will bring a legal action under this Agreement more than + one year after the cause of action arose. Each party waives its rights + to a jury trial in any resulting litigation. diff --git a/testcases/feature-test/oeaware/smc-tools-main/Makefile b/testcases/feature-test/oeaware/smc-tools-main/Makefile new file mode 100644 index 000000000..d7e5c2e19 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/Makefile @@ -0,0 +1,212 @@ +# +# SMC Tools - Shared Memory Communication Tools +# +# Copyright IBM Corp. 2016, 2018 +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# + +SMC_TOOLS_RELEASE = 1.8.4 +VER_MAJOR = $(shell echo $(SMC_TOOLS_RELEASE) | cut -d '.' -f 1) + +ARCHTYPE = $(shell uname -m) +ARCH := $(shell getconf LONG_BIT) +DISTRO := $(shell lsb_release -si 2>/dev/null) + +ifneq ("${V}","1") + MAKEFLAGS += --quiet + cmd = echo $1$2; +else + cmd = +endif +CCC = $(call cmd," CC ",$@)${CC} +LINK = $(call cmd," LINK ",$@)${CC} +GEN = $(call cmd," GEN ",$@)sed +DESTDIR ?= +PREFIX = /usr +BINDIR = ${PREFIX}/bin +MANDIR = ${PREFIX}/share/man +BASH_AUTODIR = $(shell pkg-config --variable=completionsdir bash-completion 2>/dev/null) +OWNER = $(shell id -un) +GROUP = $(shell id -gn) +INSTALL_FLAGS_BIN = -g $(GROUP) -o $(OWNER) -m755 +INSTALL_FLAGS_MAN = -g $(GROUP) -o $(OWNER) -m644 +INSTALL_FLAGS_LIB = -g $(GROUP) -o $(OWNER) -m4755 + +STUFF_32BIT = 0 +# +# Check that 31/32-bit build tools are available. +# +ifeq ($(ARCH),64) +ifeq ($(DISTRO),Ubuntu) +LIBDIR = ${PREFIX}/usr/lib +else +LIBDIR = ${PREFIX}/lib64 +endif +ifneq ("$(wildcard ${PREFIX}/include/gnu/stubs-32.h)","") +STUFF_32BIT = 1 +LIBDIR32 = ${PREFIX}/lib +endif +else +ifeq ($(DISTRO),Ubuntu) +LIBDIR = ${PREFIX}/lib/s390-linux-gnu +else +LIBDIR = ${PREFIX}/lib +endif +endif + +all: libsmc-preload.so libsmc-preload32.so smcd smcr smcss smc_pnet + +CFLAGS ?= -Wall -O3 -g +ifneq ($(shell sh -c 'command -v pkg-config'),) +LIBNL_CFLAGS = $(shell pkg-config --silence-errors --cflags libnl-genl-3.0) +LIBNL_LFLAGS = $(shell pkg-config --silence-errors --libs libnl-genl-3.0) +else +LIBNL_CFLAGS = -I /usr/include/libnl3 +LIBNL_LFLAGS = -lnl-genl-3 -lnl-3 +endif +ALL_CFLAGS += ${CFLAGS} -DSMC_TOOLS_RELEASE=$(SMC_TOOLS_RELEASE) \ + ${LIBNL_CFLAGS} ${OPTFLAGS} +ALL_LDFLAGS += ${LDFLAGS} ${LIBNL_LFLAGS} -lm + +ifeq ($(ARCHTYPE),s390x) + MACHINE_OPT32="-m31" +else + MACHINE_OPT32="-m32" +endif + +util.o: util.c util.h + ${CCC} ${ALL_CFLAGS} -c util.c + +libnetlink.o: libnetlink.c libnetlink.h + ${CCC} ${ALL_CFLAGS} ${ALL_LDFLAGS} -c libnetlink.c + +smc-preload.o: smc-preload.c + ${CCC} ${ALL_CFLAGS} -fPIC -c smc-preload.c + +libsmc-preload.so: smc-preload.o + ${LINK} ${ALL_LDFLAGS} -shared smc-preload.o -ldl -Wl,-z,defs,-soname,$@.$(VER_MAJOR) -o $@ + chmod u+s $@ + +libsmc-preload32.so: smc-preload.c +ifeq ($(ARCH),64) +ifeq ($(STUFF_32BIT),1) + ${CCC} ${ALL_CFLAGS} -fPIC -c ${MACHINE_OPT32} $< -o smc-preload32.o + ${LINK} ${ALL_LDFLAGS} -shared smc-preload32.o ${MACHINE_OPT32} -ldl -Wl,-soname,$@.$(VER_MAJOR) -o $@ + chmod u+s $@ +else + $(warning "Warning: Skipping 31/32-bit library build because 31/32-bit build tools") + $(warning " are unavailable. SMC will not support 31/32 bit applications") + $(warning " unless the glibc devel package for the appropriate addressing") + $(warning " mode is installed and the preload libraries are rebuilt.") +endif +endif + + +%d.o: %.c smctools_common.h + ${CCC} ${ALL_CFLAGS} -DSMCD -c $< -o $@ + +%r.o: %.c smctools_common.h + ${CCC} ${ALL_CFLAGS} -DSMCR -c $< -o $@ + +%.o: %.c smctools_common.h + ${CCC} ${ALL_CFLAGS} -c $< -o $@ + +smc: smc.o info.o ueid.o seid.o dev.o linkgroup.o libnetlink.o util.o + ${CCC} ${ALL_CFLAGS} ${ALL_LDFLAGS} $^ -o $@ + +smcd: smcd.o infod.o ueidd.o seidd.o devd.o linkgroupd.o statsd.o libnetlink.o util.o + ${CCC} ${ALL_CFLAGS} $^ ${ALL_LDFLAGS} -o $@ + +smcr: smcr.o infor.o ueidr.o seidr.o devr.o linkgroupr.o statsr.o libnetlink.o util.o + ${CCC} ${ALL_CFLAGS} $^ ${ALL_LDFLAGS} -o $@ + +smc_pnet: smc_pnet.c smctools_common.h + @if [ ! -e /usr/include/libnl3/netlink/netlink.h ]; then \ + printf "**************************************************************\n" >&2; \ + printf "* Missing build requirement for: %-45s\n" $@ >&2; \ + printf "* Install package..............: %-45s\n" "devel package for libnl3" >&2; \ + printf "* Install package..............: %-45s\n" "devel package for libnl3-genl" >&2; \ + printf "* NOTE: Package names might differ by platform\n" >&2; \ + printf "* On Ubuntu try libnl-3-dev and libnl-genl-3-dev\n" >&2; \ + printf "**************************************************************\n" >&2; \ + exit 1; \ + fi + ${CCC} ${ALL_CFLAGS} $< ${ALL_LDFLAGS} -o $@ + +smcss: smcss.o libnetlink.o + ${CCC} ${ALL_CFLAGS} $^ ${ALL_LDFLAGS} -o $@ + +install: all + echo " INSTALL" + install -d -m755 $(DESTDIR)$(LIBDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)/man7 \ + $(DESTDIR)$(BASH_AUTODIR) $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_LIB) libsmc-preload.so $(DESTDIR)$(LIBDIR) +#ifeq ($(STUFF_32BIT),1) +# install -d -m755 $(DESTDIR)$(LIBDIR32) +# install $(INSTALL_FLAGS_LIB) libsmc-preload32.so $(DESTDIR)$(LIBDIR32)/libsmc-preload.so +#endif + install $(INSTALL_FLAGS_BIN) smc_run $(DESTDIR)$(BINDIR) + install $(INSTALL_FLAGS_BIN) smcd $(DESTDIR)$(BINDIR) + install $(INSTALL_FLAGS_BIN) smcr $(DESTDIR)$(BINDIR) + install $(INSTALL_FLAGS_BIN) smcss $(DESTDIR)$(BINDIR) + install $(INSTALL_FLAGS_BIN) smc_pnet $(DESTDIR)$(BINDIR) + install $(INSTALL_FLAGS_BIN) smc_dbg $(DESTDIR)$(BINDIR) +ifeq ($(shell uname -m | cut -c1-4),s390) + install $(INSTALL_FLAGS_BIN) smc_rnics $(DESTDIR)$(BINDIR) + install $(INSTALL_FLAGS_MAN) smc_rnics.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_BIN) smc_chk $(DESTDIR)$(BINDIR) + install $(INSTALL_FLAGS_MAN) smc_chk.8 $(DESTDIR)$(MANDIR)/man8 +endif + install $(INSTALL_FLAGS_MAN) af_smc.7 $(DESTDIR)$(MANDIR)/man7 + install $(INSTALL_FLAGS_MAN) smc_run.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smc_pnet.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcss.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcd.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcr.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcd-linkgroup.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcd-device.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcd-info.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcd-stats.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcd-ueid.8 $(DESTDIR)$(MANDIR)/man8 + install $(INSTALL_FLAGS_MAN) smcd-seid.8 $(DESTDIR)$(MANDIR)/man8 + ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-linkgroup.8 $(DESTDIR)$(MANDIR)/man8/smcr-linkgroup.8 + ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-device.8 $(DESTDIR)$(MANDIR)/man8/smcr-device.8 + ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-info.8 $(DESTDIR)$(MANDIR)/man8/smcr-info.8 + ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-stats.8 $(DESTDIR)$(MANDIR)/man8/smcr-stats.8 + ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-ueid.8 $(DESTDIR)$(MANDIR)/man8/smcr-ueid.8 +ifneq ($(BASH_AUTODIR),) + install $(INSTALL_FLAGS_MAN) smc-tools.autocomplete $(DESTDIR)$(BASH_AUTODIR)/smc-tools + ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_rnics + ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_chk + ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_dbg + ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smcss + ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_pnet + ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc +endif + +check: + if ( command -v cppcheck >/dev/null ); then \ + echo "Running cppcheck"; \ + cppcheck . 2>&1; \ + else \ + echo "cppcheck not available"; \ + fi + @echo; + #if type -p valgrind >/dev/null; then \ + if ( command -v valgrind >/dev/null ); then \ + echo "Running valgrind"; \ + valgrind --leak-check=full --show-leak-kinds=all ./smcss 2>&1; \ + valgrind --leak-check=full --show-leak-kinds=all ./smc_pnet 2>&1; \ + valgrind --leak-check=full --show-leak-kinds=all ./smcd info 2>&1; \ + valgrind --leak-check=full --show-leak-kinds=all ./smcd stats 2>&1; \ + else \ + echo "valgrind not available"; \ + fi + @echo; +clean: + echo " CLEAN" + rm -f *.o *.so *.a smc smcd smcr smcss smc_pnet diff --git a/testcases/feature-test/oeaware/smc-tools-main/README.md b/testcases/feature-test/oeaware/smc-tools-main/README.md new file mode 100644 index 000000000..1c03534d4 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/README.md @@ -0,0 +1,217 @@ +SMC Tools +========= + +Utilities for use with `AF_SMC` sockets. + +This package consists of the following tools: + +- `libsmc-preload.so` : preload library. +- `smc` : List linkgroups, links, devices, and more +- `smc_chk` : SMC support diagnostics +- `smc_pnet` : C program for PNET Table handling +- `smc_rnics` : List available RDMA NICs +- `smc_run` : preload library environment setup script. +- `smcss` : C program for displaying the information about active + SMC sockets. + +The preload shared library `libsmc-preload.so` provides mapping of TCP socket +operations to SMC sockets. +The environment setup script `smc_run` sets up the preload environment +for the `libsmc-preload.so` shared library before starting application. +The `smcss` program is used to gather and display information about the +SMC sockets. +The `smc_pnet` program is used to create, destroy, and change the SMC-R PNET +table. + +In addition the package contains the `AF_SMC` manpage (`man af_smc`). + + +License +------- +See [LICENSE](LICENSE). + + +Code Contributions +------------------ +See [CONTRIBUTING.md](CONTRIBUTING.md). + + +Release History: +================ + +* __v1.8.4 (2024-12-17)__ + + Changes: + - `smcd`/`smcr` statistics: add statistics on sndbufs/RMBs usage + + Bug fixes: + - `smc_rnics`: Fix smc_rnics showing the wrong physical port + - `util.h`: Fix build with CFLAGS="-g" + - `smc_run`: Fix segfault issue during creating concurrent sockets + - `Makefile`: Make sure to show the right release number + +* __v1.8.3 (2023-07-28)__ + + Bug fixes: + - `Makefile`: Adjust default library path for Ubuntu + - `smc_stats`: Fix man page name + +* __v1.8.2 (2022-09-26)__ + + Bug fixes: + - `smc_run`: Fix for single quotes in parameters + - `Makefile`: Fix target `check` + - `smcss`/`smc_pnet`: Fix option `--version` + - `smcr`/`smc_dbg`: Fix for showing the correct hardware capabailities + for RoCE Express3 cards + +* __v1.8.1 (2022-04-14)__ + + Changes: + - `smc_rnics`: Recognize RoCE Express3 cards + +* __v1.8.0 (2022-04-11)__ + + Changes: + - `smc_dbg`: Add stats and `smc info` output + - `smc_rnics`: + - List unknown devices with option `-a` + - Include software-set PNET IDs + - `smc_chk`: Indicate PNET IDs set by `smc_pnet`. + + Bug fixes: + - `smc_rnics`: Display correct PNET ID for unknown Mellanox cards + - `smc_run`: Fix output of version info + +* __v1.7.0 (2021-10-29)__ + + Changes: + - Add support for SMC-Rv2 + - `smcd`/`smcr`: Add support for new commands `seid` and `ueid` to + manage system and user EIDs + +* __v1.6.1 (2021-10-01)__ + + Bug fixes: + - `smcd`/`smcr` statistics: + - Fix memory overread in is_data_consistent() + - Fix memory and file handle leaks + - Use correct fallback counter values after reset + +* __v1.6.0 (2021-07-01)__ + + Changes: + - `smcd`/`smcr`: Add new command `stats` + - `smc_rnics`: Recognize unknown Mellanox cards + - `smc_run`: Add various command-line switches + + Bug fixes: + - `smc_chk`: Remove 'EXPERIMENTAL' flag + - `smc_chk`: Improve cleanup + - `smc_chk`: Start server with intended port + - `Makefile`: Install `smc_chk.8` on s390 only + - `Makefile`: Fix extra compile flags handling + - `smc_rnics`: Handle malformed FID arguments + +* __v1.5.0 (2021-01-29)__ + + Changes: + - `smcd`/`smcr`: Add new command `info` + - `smc_rnics`: Use `n/a` to indicate missing PNET ID + - `smc_chk`: New tool to perform SMC eligilibilty checks, requires `man` and + `python3` to be installed + - `man` pages: Consistency improvements + + Bug fixes: + - `smc_pnet.8`: Use correct spelling for 'PNET ID' + - `smc_rnics`: Suppress output of port attribute for offline devices + +* __v1.4.0 (2020-11-03)__ + + Changes: + - Add SMC-Dv2 support + - `smc`: Add new tools `smcd` and `smcr` to list linkgroups, links and + devices. Requires Linux kernel 5.11 or higher. + - `smc_rnics`: Display enabled devices per default, add new option `--all` + - `smc_rnics`: Sort output by FID + + Bug fixes: + - `smc_rnics`/`smc_dbg`: Fix PNETID for multiport devices + - `smcss`/`smc_pnet`: Consistent use of option `-v` + +* __v1.3.1 (2020-09-14)__ + + Changes: + - `smcss`: Add further error codes to man page + + Bug fixes: + - `smcss`: Display more than 321 connections + - `smc_rnics`: Suppress any unknown non-networking device unless + option `-r` is specified + +* __v1.3.0 (2020-06-16)__ + + Changes: + - `smcss`: Add description of Linux error codes to man page + - `smc_rnics`: + * Sort output by PCHID + * Replace spaces in output by underscores for easier parsing + * Add new option `--IB-dev` to display IB-specific attributes + + Bug fixes: + - smc_rnics: + * FIDs can have up to 4 digits and are planned to be extended + to a total of 8 digits - adjusting output format accordingly + * Do not display port attribute for RoCE Express2 devices + unless we have an accurate value + +* __v1.2.2 (2019-10-24)__ + Changes: + - Add bash autocompletion support + - `Makefile`: Drop 31 Bit install due to rpmbuild conflict + + Bug fixes: + - `smcss`: Do not show connection mode for already closed sockets + - `smc_rnics`: Set interface to "n/a" for ISM devices + +* __v1.2.1 (2019-04-15)__ + Bug fixes: + - `smc_rnics`: Install man page on s390 only + - `libsmc..`: Handle behavior flags in type argument to `socket()` call + - `Makefile`: Fixed install target on Ubuntu for platforms other than s390 + - `smc_pnet`: Changes in support of kernel 5.1 + +* __v1.2.0 (2019-02-08)__ + Changes: + - `smc_rnics`: Initial version added + - `smc_dbg`: Initial version added + + Bug fixes: + - `smcss`: Parse address family of ip address + +* __v1.1.0 (2018-06-29)__ + Changes: + - `smcss`: Add IPv6 support + - `libsmc..`: Add IPv6 support + - `smcss`: Output format changed + - `libsmc..`: Rename preload library to `libsmc-preload.so` + - `Makefile`: Improve distro compatibility + - `Makefile`: Add `SONAME` to shared libraries + - `Makefile`: Do not strip binaries on install + - `Makefile`: Use `LDFLAGS` to allow addition of externally set link flags + - `libsmc..`: Remove hardcoded reference to libc + - Manpages: Formatting changes + + Bug fixes: + - `Makefile`: Fix target `install` dependencies + - `smcss`: Fix `--version` output + - `smc_pnet`: Fix `--version` output + - `smc_run`: Append preload library to `LD_PRELOAD` instead of potentially + overwriting pre-set values + - `libsmc..`: Set suid flag to work with suid executables + +* __v1.0.0 (2017-02-13)__ + The initial version + + +Copyright IBM Corp. 2016, 2020 diff --git a/testcases/feature-test/oeaware/smc-tools-main/af_smc.7 b/testcases/feature-test/oeaware/smc-tools-main/af_smc.7 new file mode 100644 index 000000000..13ee52317 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/af_smc.7 @@ -0,0 +1,147 @@ +.\" +.\" Copyright IBM Corp. 2016, 2018 +.\" Author(s): Ursula Braun +.\" Thomas Richter +.\" ---------------------------------------------------------------------- +.TH AF_SMC 7 "January 2017" "smc-tools" "Linux Programmer's Manual" +.SH NAME +AF_SMC - Sockets for SMC communication +.SH SYNOPSIS +.B #include +.sp +.B "#define AF_SMC 43" +.sp +.B "#define SMCPROTO_SMC 0" +.sp +.B "#define SMCPROTO_SMC6 1" +.PP +.IB tcp_sockfd " = socket(" AF_SMC ", " SOCK_STREAM ", " SMCPROTO_SMC ); +.sp +.IB tcp_sockfd " = socket(" AF_SMC ", " SOCK_STREAM ", " SMCPROTO_SMC6 ); +.SH DESCRIPTION +.I Shared Memory Communication via RDMA +(SMC) is a socket over the RDMA +communication protocol that allows existing TCP socket applications +to transparently benefit from RDMA when exchanging data +over an +.I RDMA over Converged Ethernet +(RoCE) network. Those networks are not routable. +SMC provides +host-to-host direct memory access without traditional TCP/IP +processing overhead. +SMC offers preservation of existing IP topology and IP security, and +introduces minimal administrative and operational changes. +The exploitation of SMC is transparent to TCP socket applications. +.PP +The new address family +.B AF_SMC +supports the SMC protocol on Linux. +It keeps the address format of +.B AF_INET +and +.B AF_INET6 +sockets and supports streaming socket types only. +.SS Usage modes +Two usage modes are possible: +.IP "AF_SMC native usage" +uses the socket domain +.B AF_SMC +instead of +.B AF_INET +and +.BR AF_INET6 . +Specify +.B SMCPROTO_SMC +for +.B AF_INET +compatible socket semantics, and +.B SMC_PROTO_SMC6 +for +.B AF_INET6 +respectively. +.IP "Usage of AF_INET socket applications with SMC preload library" +converts +.B AF_INET +and +.B AF_INET6 +sockets to +.B AF_SMC +sockets. +The SMC preload library is part of the SMC tools package. +.PP +SMC socket capabilities are negotiated at connection setup. If +one peer is not SMC capable, further socket processing falls +back to TCP usage automatically. +.SS Implementation details: Links and Link Groups +To run RDMA traffic to a peer, a so-called +.I link +is established between +a local RoCE card and a remote RoCE card. To enhance availability, you can +configure alternate links with automatic fail over. +Primary and backup links to a certain peer are combined in a so-called +.I link +.IR group . +.SS RoCE adapter mapping: Creation of a pnet table +The SMC protocol requires grouping of multiple physical networks - +standard Ethernet and RoCE networks. Such groups are called +.I Physical Networks +(PNets). For SMC, RoCE adapter mapping is configured within a table called +.BR "pnet table" . +Any available Ethernet interface can be combined with available +.I RDMA-capable network interface cards +(RNICs), +if they belong to the same Converged Ethernet fabric. +To configure RoCE Adapter mapping, you must create a pnet table. +Modify the table with the smc-tools command +.IR smc_pnet . +.PP +For details see +.BR smc_pnet (8). +.SS Displaying SMC socket state information +SMC socket state information can be obtained with the smc-tools command +.IR smcss . +For details see +.BR smcss (8). +.SS Starting a TCP application to work with SMC +To use an existing TCP application to work with SMC, use the SMC +preload library. +The SMC Tools package provides the command +.I smc_run +to convert +.B AF_INET +and +.B AF_INET6 +socket calls to +.B AF_SMC +socket calls by means of the preload technique. +For more information about the preload mechanism, see also +.BR ld.so (8). +.PP +Example: +.IP +.B smc_run ftp +.PP +This command-line example starts an FTP client over SMC. +.PP +.SS MTU and Infiniband data transfer +Infiniband traffic may use MTU values 256, 512, 1024, 2048, or 4096. +SMC determines the configured MTU size of the RoCE Ethernet port, +announces this MTU size to the peer during connection start, and chooses +the minimum MTU size of both peers. + +.SH "SEE ALSO" +.BR socket (2), +.BR ip (7), +.BR tcp (7), +.BR socket (7), +.BR smc_chk (8) +.BR smc_run (8), +.BR smcss (8), +.BR smc_pnet (8) +.SH "HISTORY" +.TP +.B AF_SMC, version 1.0.0 +.RS 4 +.IP "\bu" 2 +Initial version. +.RE diff --git a/testcases/feature-test/oeaware/smc-tools-main/dev.c b/testcases/feature-test/oeaware/smc-tools-main/dev.c new file mode 100644 index 000000000..9333f2987 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/dev.c @@ -0,0 +1,545 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "util.h" +#include "libnetlink.h" +#include "dev.h" + +#define MASK_ROCE_V1_HEX 0x1004 +#define MASK_ROCE_V2_HEX 0x1016 +#define MASK_ROCE_V3_HEX 0x101e + +#define MASK_ISM_V1_HEX 0x04ed + +static int netdev_entered = 0; +static int ibdev_entered = 0; +static int type_entered = 0; +static int all_entered = 0; +#if defined(SMCD) +static int dev_smcr = 0; +static int dev_smcd = 1; +#else +static int dev_smcr = 1; +static int dev_smcd = 0; +#endif + +static int d_level = 0; + +static char target_ibdev[IB_DEVICE_NAME_MAX] = {0}; +static char target_type[SMC_TYPE_STR_MAX] = {0}; +static char target_ndev[IFNAMSIZ] = {0}; + +static struct nla_policy smc_gen_dev_smcd_sock_policy[SMC_NLA_DEV_MAX + 1] = { + [SMC_NLA_DEV_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_DEV_USE_CNT] = { .type = NLA_U32 }, + [SMC_NLA_DEV_IS_CRIT] = { .type = NLA_U8 }, + [SMC_NLA_DEV_PCI_FID] = { .type = NLA_U32 }, + [SMC_NLA_DEV_PCI_CHID] = { .type = NLA_U16 }, + [SMC_NLA_DEV_PCI_VENDOR] = { .type = NLA_U16 }, + [SMC_NLA_DEV_PCI_DEVICE] = { .type = NLA_U16 }, + [SMC_NLA_DEV_PCI_ID] = { .type = NLA_NUL_STRING }, + [SMC_NLA_DEV_PORT] = { .type = NLA_NESTED }, + [SMC_NLA_DEV_PORT2] = { .type = NLA_NESTED }, + [SMC_NLA_DEV_IB_NAME] = { .type = NLA_NUL_STRING }, +}; + +static struct nla_policy smc_gen_dev_port_smcd_sock_policy[SMC_NLA_DEV_PORT_MAX + 1] = { + [SMC_NLA_DEV_PORT_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_DEV_PORT_PNET_USR] = { .type = NLA_U8 }, + [SMC_NLA_DEV_PORT_PNETID] = { .type = NLA_NUL_STRING }, + [SMC_NLA_DEV_PORT_NETDEV] = { .type = NLA_U32 }, + [SMC_NLA_DEV_PORT_STATE] = { .type = NLA_U8 }, + [SMC_NLA_DEV_PORT_VALID] = { .type = NLA_U8 }, + [SMC_NLA_DEV_PORT_LNK_CNT] = { .type = NLA_U32 }, +}; + +static void usage(void) +{ + fprintf(stderr, +#if defined(SMCD) + "Usage: smcd device [show] [all]\n" +#elif defined(SMCR) + "Usage: smcr device [show] [all]\n" + " [ibdev ]\n" + " [netdev ]\n" +#else + "Usage: smc device [show] [all] [type {smcd | smcr}]\n" + " [ibdev ]\n" + " [netdev ]\n" +#endif + ); + exit(-1); +} + +static const char *smc_ib_port_state(unsigned int x) +{ + static char buf[16]; + + switch (x) { + case 0: return "INACTIVE"; + case 1: return "ACTIVE"; + default: sprintf(buf, "%#x?", x); return buf; + } +} + +static const char *smc_ib_dev_type(unsigned int x) +{ + static char buf[16]; + + switch (x) { + case MASK_ROCE_V1_HEX: return "RoCE_Express"; + case MASK_ROCE_V2_HEX: return "RoCE_Express2"; + case MASK_ROCE_V3_HEX: return "RoCE_Express3"; + case MASK_ISM_V1_HEX: return "ISM"; + default: sprintf(buf, "%#x", x); return buf; + } +} + +static void print_devs_smcd_header(void) +{ + printf("FID "); + printf("Type "); + printf("PCI-ID "); + printf("PCHID "); + printf("InUse "); + printf("#LGs "); + printf("PNET-ID "); + printf("\n"); +} + +static void print_devs_smcr_header(void) +{ + printf("Net-Dev "); + printf("IB-Dev "); + printf("IB-P "); + printf("IB-State "); + printf("Type "); + printf("Crit "); + if (d_level >= SMC_DETAIL_LEVEL_V) { + printf(" FID "); + printf("PCI-ID "); + printf("PCHID "); + } + printf("#Links "); + printf("PNET-ID "); + printf("\n"); +} + +static int filter_item(struct smc_diag_dev_info *dev, int idx) +{ + int ignore = 0; + + if (is_str_empty(target_ibdev) && is_str_empty(target_ndev)) { + return ignore; /* No filter set */ + } else if (!is_str_empty(target_ndev)) { + if (strncmp(target_ndev, (char *)dev->netdev[idx], sizeof(target_ndev)) == 0) + ignore = 0; + else + ignore = 1; + } else if (!is_str_empty(target_ibdev)) { + if (strncmp(target_ibdev, (char *)dev->dev_name, sizeof(target_ibdev)) == 0) + ignore = 0; + else + ignore = 1; + } + + return ignore; +} + +static void show_devs_smcr_details(struct smc_diag_dev_info *dev, int idx) +{ + char buf[SMC_MAX_PNETID_LEN+1] = {0}; + + if (dev->port_valid[idx] && !filter_item(dev, idx)) { + if (strnlen((char*)dev->netdev[idx], sizeof(dev->netdev[idx])) > (IFNAMSIZ - 1)) + printf("%-.15s ", (char *)&dev->netdev[idx]); + else + printf("%-15s ", (char *)&dev->netdev[idx]); + if (strnlen((char*)dev->dev_name, sizeof(dev->dev_name)) > SMC_MAX_IBNAME) + printf("%-.8s ", dev->dev_name); + else + printf("%-8s ", dev->dev_name); + printf("%4d ", idx+1); + printf("%8s ", smc_ib_port_state(dev->port_state[idx])); + printf("%-13s ", smc_ib_dev_type(dev->pci_device)); + printf("%3s ", dev->is_critical?"Yes":"No"); + if (d_level >= SMC_DETAIL_LEVEL_V) { + printf("%04x ", dev->pci_fid); + printf("%-12s ", dev->pci_id); + printf("%04x ", dev->pci_pchid); + } + printf("%5d ", dev->lnk_cnt_by_port[idx]); + if (dev->pnetid_by_user[idx]) + snprintf(buf, sizeof(buf),"*%s", dev->pnet_id[idx]); + else + snprintf(buf, sizeof(buf),"%s", dev->pnet_id[idx]); + printf(" %-16s ", trim_space(buf)); + printf("\n"); + } +} + +static int fill_dev_port_smcr_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs, int idx) +{ + struct nlattr *port_attrs[SMC_NLA_DEV_PORT_MAX + 1]; + + if (!attrs[SMC_NLA_DEV_PORT + idx]) { + dev->port_valid[idx] = 0; + return NL_OK; + } + + if (nla_parse_nested(port_attrs, SMC_NLA_DEV_PORT_MAX, + attrs[SMC_NLA_DEV_PORT + idx], + smc_gen_dev_port_smcd_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_port_smcd_sock_policy\n"); + return NL_STOP; + } + if (port_attrs[SMC_NLA_DEV_PORT_PNETID]) + snprintf((char*)&dev->pnet_id[idx], sizeof(dev->pnet_id[idx]), "%s", + nla_get_string(port_attrs[SMC_NLA_DEV_PORT_PNETID])); + if (port_attrs[SMC_NLA_DEV_PORT_PNET_USR]) + dev->pnetid_by_user[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_PNET_USR]); + if (port_attrs[SMC_NLA_DEV_PORT_NETDEV] && nla_get_u32(port_attrs[SMC_NLA_DEV_PORT_NETDEV])) + if_indextoname(nla_get_u32(port_attrs[SMC_NLA_DEV_PORT_NETDEV]), (char*)dev->netdev[idx]); + if (port_attrs[SMC_NLA_DEV_PORT_STATE]) + dev->port_state[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_STATE]); + if (port_attrs[SMC_NLA_DEV_PORT_VALID]) + dev->port_valid[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_VALID]); + if (port_attrs[SMC_NLA_DEV_PORT_LNK_CNT]) + dev->lnk_cnt_by_port[idx] = nla_get_u32(port_attrs[SMC_NLA_DEV_PORT_LNK_CNT]); + + return NL_OK; +} + +static int fill_dev_smcr_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs) +{ + struct nlattr *dev_attrs[SMC_NLA_DEV_MAX + 1]; + int i; + + if (nla_parse_nested(dev_attrs, SMC_NLA_DEV_MAX, + attrs[SMC_GEN_DEV_SMCR], + smc_gen_dev_smcd_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_smcd_sock_policy\n"); + return NL_STOP; + } + if (dev_attrs[SMC_NLA_DEV_IS_CRIT]) + dev->is_critical = nla_get_u8(dev_attrs[SMC_NLA_DEV_IS_CRIT]); + if (dev_attrs[SMC_NLA_DEV_PCI_FID]) + dev->pci_fid = nla_get_u32(dev_attrs[SMC_NLA_DEV_PCI_FID]); + if (dev_attrs[SMC_NLA_DEV_PCI_CHID]) + dev->pci_pchid = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_CHID]); + if (dev_attrs[SMC_NLA_DEV_PCI_VENDOR]) + dev->pci_vendor = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_VENDOR]); + if (dev_attrs[SMC_NLA_DEV_PCI_DEVICE]) + dev->pci_device = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_DEVICE]); + if (dev_attrs[SMC_NLA_DEV_PCI_ID]) + snprintf((char*)dev->pci_id, sizeof(dev->pci_id), "%s", + nla_get_string(dev_attrs[SMC_NLA_DEV_PCI_ID])); + if (dev_attrs[SMC_NLA_DEV_IB_NAME]) + snprintf((char*)dev->dev_name, sizeof(dev->dev_name), "%s", + nla_get_string(dev_attrs[SMC_NLA_DEV_IB_NAME])); + + for (i = 0; i < SMC_MAX_PORTS; i++) { + if (fill_dev_port_smcr_struct(dev, &dev_attrs[0], i) != NL_OK) + return NL_STOP; + } + + return NL_OK; +} + +static int show_dev_smcr_info(struct nlattr **attr) +{ + struct smc_diag_dev_info dev; + int i; + + if (attr[SMC_GEN_DEV_SMCR]) { + if (fill_dev_smcr_struct(&dev, attr) != NL_OK) + return NL_STOP; + + for (i = 0; i < SMC_MAX_PORTS; i++) { + show_devs_smcr_details(&dev, i); + } + } + return NL_OK; +} + +static int fill_dev_port_smcd_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs, int idx) +{ + struct nlattr *port_attrs[SMC_NLA_DEV_PORT_MAX + 1]; + + if (nla_parse_nested(port_attrs, SMC_NLA_DEV_PORT_MAX, + attrs[SMC_NLA_DEV_PORT], + smc_gen_dev_port_smcd_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_port_smcd_sock_policy\n"); + return NL_STOP; + } + if (port_attrs[SMC_NLA_DEV_PORT_PNETID]) + snprintf((char*)&dev->pnet_id[idx], sizeof(dev->pnet_id[idx]), "%s", + nla_get_string(port_attrs[SMC_NLA_DEV_PORT_PNETID])); + if (port_attrs[SMC_NLA_DEV_PORT_PNET_USR]) + dev->pnetid_by_user[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_PNET_USR]); + + return NL_OK; +} + +static int fill_dev_smcd_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs) +{ + struct nlattr *dev_attrs[SMC_NLA_DEV_MAX + 1]; + + if (nla_parse_nested(dev_attrs, SMC_NLA_DEV_MAX, + attrs[SMC_GEN_DEV_SMCD], + smc_gen_dev_smcd_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_smcd_sock_policy\n"); + return NL_STOP; + } + if (dev_attrs[SMC_NLA_DEV_USE_CNT]) + dev->use_cnt = nla_get_u32(dev_attrs[SMC_NLA_DEV_USE_CNT]); + if (dev_attrs[SMC_NLA_DEV_IS_CRIT]) + dev->is_critical = nla_get_u8(dev_attrs[SMC_NLA_DEV_IS_CRIT]); + if (dev_attrs[SMC_NLA_DEV_PCI_FID]) + dev->pci_fid = nla_get_u32(dev_attrs[SMC_NLA_DEV_PCI_FID]); + if (dev_attrs[SMC_NLA_DEV_PCI_CHID]) + dev->pci_pchid = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_CHID]); + if (dev_attrs[SMC_NLA_DEV_PCI_VENDOR]) + dev->pci_vendor = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_VENDOR]); + if (dev_attrs[SMC_NLA_DEV_PCI_DEVICE]) + dev->pci_device = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_DEVICE]); + if (dev_attrs[SMC_NLA_DEV_PCI_ID]) + snprintf((char*)dev->pci_id, sizeof(dev->pci_id), "%s", + nla_get_string(dev_attrs[SMC_NLA_DEV_PCI_ID])); + + if (fill_dev_port_smcd_struct(dev, &dev_attrs[0], 0) != NL_OK) + return NL_STOP; + + return NL_OK; +} + +static int show_dev_smcd_info(struct nlattr **attr) +{ + char buf[SMC_MAX_PNETID_LEN+1] = {0}; + struct smc_diag_dev_info dev; + + if (attr[SMC_GEN_DEV_SMCD]) { + if (fill_dev_smcd_struct(&dev, attr) != NL_OK) + return NL_STOP; + printf("%04x ", dev.pci_fid); + printf("%-4s ", smc_ib_dev_type(dev.pci_device)); + printf("%-12s ", dev.pci_id); + printf("%04x ", dev.pci_pchid); + printf("%-4s ", dev.is_critical?"Yes":"No"); + printf("%5d ", dev.use_cnt); + if (dev.pnetid_by_user[0]) + snprintf(buf, sizeof(buf),"*%s", dev.pnet_id[0]); + else + snprintf(buf, sizeof(buf),"%s", dev.pnet_id[0]); + printf(" %-16s ", trim_space(buf)); + printf("\n"); + } + + return NL_OK; +} + +static int handle_gen_dev_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + static int header_printed = 0; + int rc = NL_OK; + + if (!header_printed) { + if (dev_smcr) + print_devs_smcr_header(); + else + print_devs_smcd_header(); + header_printed = 1; + } + + if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, + (struct nla_policy *)smc_gen_net_policy) < 0) { + fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + + if (!attrs[SMC_GEN_DEV_SMCD] && !attrs[SMC_GEN_DEV_SMCR]) + return NL_STOP; + + if (dev_smcd && attrs[SMC_GEN_DEV_SMCD]) + rc = show_dev_smcd_info(&attrs[0]); + if (dev_smcr && attrs[SMC_GEN_DEV_SMCR]) + rc = show_dev_smcr_info(&attrs[0]); + return rc; +} + +static void handle_cmd_params(int argc, char **argv) +{ + if (((argc == 1) && (contains(argv[0], "help") == 0)) || (argc > 4)) + usage(); + + if ((argc > 0) && (contains(argv[0], "show") != 0)) + PREV_ARG(); /* no object given, so use the default "show" */ + + while (NEXT_ARG_OK()) { + NEXT_ARG(); + if (ibdev_entered) { + snprintf(target_ibdev, sizeof(target_ibdev), "%s", argv[0]); + ibdev_entered = 0; + break; + } else if (netdev_entered) { + snprintf(target_ndev, sizeof(target_ndev), "%s", argv[0]); + netdev_entered = 0; + break; + } else if (type_entered) { + snprintf(target_type, sizeof(target_type), "%s", argv[0]); + if (strncmp(target_type, "smcd", SMC_TYPE_STR_MAX) == 0) { + dev_smcd = 1; + dev_smcr = 0; + } else if ((strnlen(target_type, sizeof(target_type)) < 4) || + (strncmp(target_type, "smcr", SMC_TYPE_STR_MAX) != 0)) { + print_type_error(); + } + type_entered = 0; + break; + } else if (contains(argv[0], "help") == 0) { + usage(); + } else if (contains(argv[0], "all") == 0) { + all_entered=1; +#if !defined(SMCD) && !defined(SMCR) + } else if (contains(argv[0], "type") == 0) { + type_entered=1; +#endif +#if !defined(SMCD) + } else if (contains(argv[0], "ibdev") == 0) { + ibdev_entered =1; + } else if (contains(argv[0], "netdev") == 0) { + netdev_entered =1; +#endif + } else { + usage(); + } + } + /* Too many parameters or wrong sequence of parameters */ + if (NEXT_ARG_OK()) + usage(); +} + +int invoke_devs(int argc, char **argv, int detail_level) +{ + int rc = EXIT_SUCCESS; + + d_level = detail_level; + handle_cmd_params(argc, argv); + if (dev_smcd) + rc = gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCD, handle_gen_dev_reply, NULL); + else + rc = gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCR, handle_gen_dev_reply, NULL); + + return rc; +} + +/* arg is an (int *) */ +static int count_ism_devices_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + int *ism_count = (int *)arg; + + if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, + (struct nla_policy *)smc_gen_net_policy) < 0) { + fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + + if (!attrs[SMC_GEN_DEV_SMCD]) + return NL_STOP; + + (*ism_count)++; + + return NL_OK; +} + +int dev_count_ism_devices(int *ism_count) +{ + *ism_count = 0; + return gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCD, count_ism_devices_reply, ism_count); +} + +struct count_roce_args { + int *rocev1_count; + int *rocev2_count; + int *rocev3_count; +}; + +/* arg is an (struct count_roce_args *) */ +static int count_roce_devices_reply(struct nl_msg *msg, void *arg) +{ + struct count_roce_args *args = (struct count_roce_args *)arg; + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + + if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, + (struct nla_policy *)smc_gen_net_policy) < 0) { + fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + + if (!attrs[SMC_GEN_DEV_SMCR]) + return NL_STOP; + + /* Determine PCI device type */ + { + struct nlattr *dev_attrs[SMC_NLA_DEV_MAX + 1]; + short i = 0; + + if (nla_parse_nested(dev_attrs, SMC_NLA_DEV_MAX, + attrs[SMC_GEN_DEV_SMCR], + smc_gen_dev_smcd_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_smcd_sock_policy\n"); + return NL_STOP; + } + if (dev_attrs[SMC_NLA_DEV_PCI_DEVICE]) + i = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_DEVICE]); + if (i == MASK_ROCE_V1_HEX) + (*args->rocev1_count)++; + if (i == MASK_ROCE_V2_HEX) + (*args->rocev2_count)++; + if (i == MASK_ROCE_V3_HEX) + (*args->rocev3_count)++; + } + + return NL_OK; +} + +int dev_count_roce_devices(int *rocev1_count, int *rocev2_count, int *rocev3_count) +{ + struct count_roce_args args = { + .rocev1_count = rocev1_count, + .rocev2_count = rocev2_count, + .rocev3_count = rocev3_count, + }; + + *rocev1_count = 0; + *rocev2_count = 0; + *rocev3_count = 0; + return gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCR, count_roce_devices_reply, &args); +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/dev.h b/testcases/feature-test/oeaware/smc-tools-main/dev.h new file mode 100644 index 000000000..e91685308 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/dev.h @@ -0,0 +1,25 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef DEV_H_ +#define DEV_H_ + +extern struct rtnl_handle rth; + +int invoke_devs(int argc, char **argv, int detail_level); +int dev_count_ism_devices(int *ism_count); +int dev_count_roce_devices(int *rocev1_count, int *rocev2_count, int *rocev3_count); + +#endif /* DEV_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/info.c b/testcases/feature-test/oeaware/smc-tools-main/info.c new file mode 100644 index 000000000..626191d5a --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/info.c @@ -0,0 +1,199 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2021 + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "util.h" +#include "libnetlink.h" +#include "info.h" +#include "dev.h" + +static int show_cmd = 0; +static int ism_count, rocev1_count, rocev2_count, rocev3_count; + +static struct nla_policy +smc_gen_info_policy[SMC_NLA_SYS_MAX + 1] = { + [SMC_NLA_SYS_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_SYS_VER] = { .type = NLA_U8 }, + [SMC_NLA_SYS_REL] = { .type = NLA_U8 }, + [SMC_NLA_SYS_IS_ISM_V2] = { .type = NLA_U8 }, + [SMC_NLA_SYS_LOCAL_HOST]= { .type = NLA_NUL_STRING }, + [SMC_NLA_SYS_SEID] = { .type = NLA_NUL_STRING }, + [SMC_NLA_SYS_IS_SMCR_V2]= { .type = NLA_U8 }, +}; + +static void usage(void) +{ + fprintf(stderr, +#if defined(SMCD) + "Usage: smcd info [show]\n" +#elif defined(SMCR) + "Usage: smcr info [show]\n" +#else + "Usage: smc info [show]\n" +#endif + ); + exit(-1); +} + +static int handle_gen_info_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *info_attrs[SMC_NLA_SYS_MAX + 1]; + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + int rc = NL_OK; + char tmp[80]; + int smc_version = 1; + + if (!show_cmd) + return rc; + + if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, + (struct nla_policy *)smc_gen_net_policy) < 0) { + fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + + if (!attrs[SMC_GEN_SYS_INFO]) + return rc; + + if (nla_parse_nested(info_attrs, SMC_NLA_DEV_MAX, + attrs[SMC_GEN_SYS_INFO], + smc_gen_info_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_info_policy\n"); + return NL_STOP; + } + + printf("Kernel Capabilities\n"); + + /* Version */ + tmp[0] = '\0'; + if (info_attrs[SMC_NLA_SYS_VER] && info_attrs[SMC_NLA_SYS_REL]) { + sprintf(tmp, "%d.%d", nla_get_u8(info_attrs[SMC_NLA_SYS_VER]), nla_get_u8(info_attrs[SMC_NLA_SYS_REL])); + smc_version = nla_get_u8(info_attrs[SMC_NLA_SYS_VER]); + } + printf("SMC Version: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); + + /* Hostname */ + tmp[0] = '\0'; + if (info_attrs[SMC_NLA_SYS_LOCAL_HOST]) { + sprintf(tmp, "%s", nla_get_string(info_attrs[SMC_NLA_SYS_LOCAL_HOST])); + } + printf("SMC Hostname: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); + + /* SMC-D */ + sprintf(tmp, "%s", "v1"); + if (smc_version >= 2) { + strcat(tmp, " v2"); + } + printf("SMC-D Features: %s\n", tmp); + + /* SMC-R */ + sprintf(tmp, "%s", "v1"); + if (info_attrs[SMC_NLA_SYS_IS_SMCR_V2] && nla_get_u8(info_attrs[SMC_NLA_SYS_IS_SMCR_V2])) { + strcat(tmp, " v2"); + } + printf("SMC-R Features: %s\n", tmp); + + printf("\n"); + printf("Hardware Capabilities\n"); + + /* SEID */ + tmp[0] = '\0'; + if (info_attrs[SMC_NLA_SYS_SEID]) { + sprintf(tmp, "%s", nla_get_string(info_attrs[SMC_NLA_SYS_SEID])); + } + printf("SEID: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); + + /* ISM hardware */ + tmp[0] = '\0'; + if (ism_count) { + /* Kernel found any ISM device */ + sprintf(tmp, "%s", "v1"); /* dev found, v1 is possible */ + if (info_attrs[SMC_NLA_SYS_IS_ISM_V2]) { + if (nla_get_u8(info_attrs[SMC_NLA_SYS_IS_ISM_V2])) + strcat(tmp, " v2"); + } + } + printf("ISM: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); + + /* RoCE hardware */ + tmp[0] = '\0'; + if (rocev1_count || rocev2_count || rocev3_count) { + /* Kernel found any RoCE device */ + strcpy(tmp, ""); + if (rocev1_count || rocev2_count || rocev3_count) + strcat(tmp, "v1 "); + if (rocev2_count || rocev3_count) + strcat(tmp, "v2"); + } + printf("RoCE: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); + + return rc; +} + +static void handle_cmd_params(int argc, char **argv) +{ + if (argc == 0) { + show_cmd = 1; /* no object given, so use the default "show" */ + return; + } + + while (1) { + if (contains(argv[0], "help") == 0) { + usage(); + } else if (contains(argv[0], "show") == 0) { + show_cmd = 1; + break; + } else { + usage(); + } + if (!NEXT_ARG_OK()) + break; + NEXT_ARG(); + } + /* Too many parameters or wrong sequence of parameters */ + if (NEXT_ARG_OK()) + usage(); +} + +int invoke_info(int argc, char **argv, int detail_level) +{ + int rc = EXIT_SUCCESS; + + handle_cmd_params(argc, argv); + + if (show_cmd) { + if (dev_count_ism_devices(&ism_count)) { + fprintf(stderr, "Error: Failed to retrieve ISM device count\n"); + return EXIT_FAILURE; + } + if (dev_count_roce_devices(&rocev1_count, &rocev2_count, &rocev3_count)) { + fprintf(stderr, "Error: Failed to retrieve RoCE device count\n"); + return EXIT_FAILURE; + } + + rc = gen_nl_handle_dump(SMC_NETLINK_GET_SYS_INFO, handle_gen_info_reply, NULL); + } else { + printf("Error: Unknown command\n"); /* we should never come here ... */ + return EXIT_FAILURE; + } + + return rc; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/info.h b/testcases/feature-test/oeaware/smc-tools-main/info.h new file mode 100644 index 000000000..ec5fa8db1 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/info.h @@ -0,0 +1,21 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2021 + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef INFO_H_ +#define INFO_H_ + +extern struct rtnl_handle rth; + +int invoke_info(int argc, char **argv, int detail_level); + +#endif /* INFO_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/libnetlink.c b/testcases/feature-test/oeaware/smc-tools-main/libnetlink.c new file mode 100644 index 000000000..753143309 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/libnetlink.c @@ -0,0 +1,311 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Ursula Braun + * Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "libnetlink.h" + +#define MAGIC_SEQ 123456 + +int smc_id = 0; +struct nl_sock *sk; + +/* Operations on sock_diag netlink socket */ + +int rtnl_open(struct rtnl_handle *rth) +{ + socklen_t addr_len; + int rcvbuf = 1024 * 1024; + int sndbuf = 32768; + + rth->fd = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, + NETLINK_SOCK_DIAG); + if (rth->fd < 0) { + perror("Error: Cannot open netlink socket"); + return EXIT_FAILURE; + } + if (setsockopt(rth->fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, + sizeof(sndbuf)) < 0) { + perror("Error: SO_SNDBUF"); + return EXIT_FAILURE; + } + if (setsockopt(rth->fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, + sizeof(rcvbuf)) < 0) { + perror("Error: SO_RCVBUF"); + return EXIT_FAILURE; + } + memset(&rth->local, 0, sizeof(rth->local)); + rth->local.nl_family = AF_NETLINK; + rth->local.nl_groups = 0; + if (bind(rth->fd, (struct sockaddr*)&rth->local, + sizeof(rth->local)) < 0) { + perror("Error: Cannot bind netlink socket"); + return EXIT_FAILURE; + } + addr_len = sizeof(rth->local); + if (getsockname(rth->fd, (struct sockaddr*)&rth->local, + &addr_len) < 0) { + perror("Error: getsockname"); + return EXIT_FAILURE; + } + if (addr_len != sizeof(rth->local)) { + fprintf(stderr, "Error: Wrong address length %d\n", addr_len); + return EXIT_FAILURE; + } + if (rth->local.nl_family != AF_NETLINK) { + fprintf(stderr, "Error: Wrong address family %d\n", + rth->local.nl_family); + return EXIT_FAILURE; + } + + rth->seq = time(NULL); + return 0; +} + +void rtnl_close(struct rtnl_handle *rth) +{ + if (rth->fd >= 0) { + close(rth->fd); + rth->fd = -1; + } +} + +int rtnl_dump(struct rtnl_handle *rth, void (*handler)(struct nlmsghdr *nlh)) +{ + int msglen, found_done = 0; + struct sockaddr_nl nladdr; + struct iovec iov; + struct msghdr msg = { + .msg_name = &nladdr, + .msg_namelen = sizeof(nladdr), + .msg_iov = &iov, + .msg_iovlen = 1, + }; + char buf[32768]; + struct nlmsghdr *h = (struct nlmsghdr *)buf; + + memset(buf, 0, sizeof(buf)); + iov.iov_base = buf; + iov.iov_len = sizeof(buf); +again: + msglen = recvmsg(rth->fd, &msg, 0); + if (msglen < 0) { + if (errno == EINTR || errno == EAGAIN) + goto again; + fprintf(stderr, "Error: Netlink receive error %s (%d)\n", + strerror(errno), errno); + return EXIT_FAILURE; + } + if (msglen == 0) { + fprintf(stderr, "Error: Unexpected EOF on netlink\n"); + return EXIT_FAILURE; + } + + while(NLMSG_OK(h, msglen)) { + if (h->nlmsg_flags & NLM_F_DUMP_INTR) + fprintf(stderr, "Error: Dump interrupted\n"); + if (h->nlmsg_type == NLMSG_DONE) { + found_done = 1; + break; + } + if (h->nlmsg_type == NLMSG_ERROR) { + if (h->nlmsg_len < NLMSG_LENGTH(sizeof(struct nlmsgerr))) { + fprintf(stderr, "Error: Incomplete message\n"); + } else { + perror("RTNETLINK answers"); + } + return EXIT_FAILURE; + } + (*handler)(h); + h = NLMSG_NEXT(h, msglen); + } + if (msg.msg_flags & MSG_TRUNC) { + fprintf(stderr, "Error: Message truncated\n"); + goto again; + } + if (!found_done) { + h = (struct nlmsghdr *)buf; + goto again; + } + return EXIT_SUCCESS; +} + +void parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, + int len) +{ + unsigned short type; + + memset(tb, 0, sizeof(struct rtattr *) * (max + 1)); + while (RTA_OK(rta, len)) { + type = rta->rta_type; + if ((type <= max) && (!tb[type])) + tb[type] = rta; + rta = RTA_NEXT(rta,len); + } + if (len) + fprintf(stderr, "Error: Deficit %d, rta_len=%d\n", len, rta->rta_len); +} + +int sockdiag_send(int fd, unsigned char cmd) +{ + struct sockaddr_nl nladdr = { .nl_family = AF_NETLINK }; + DIAG_REQUEST(req, struct smc_diag_req r, MAGIC_SEQ); + struct msghdr msg; + struct iovec iov[1]; + int iovlen = 1; + + memset(&req.r, 0, sizeof(req.r)); + req.r.diag_family = PF_SMC; + + iov[0] = (struct iovec) { + .iov_base = &req, + .iov_len = sizeof(req) + }; + + msg = (struct msghdr) { + .msg_name = (void *)&nladdr, + .msg_namelen = sizeof(nladdr), + .msg_iov = iov, + .msg_iovlen = iovlen, + }; + + req.r.diag_ext = cmd; + + if (sendmsg(fd, &msg, 0) < 0) { + close(fd); + return EXIT_FAILURE; + } + + return 0; +} + +/* Operations on generic netlink sockets */ + +int gen_nl_open(char *pname) +{ + int rc = EXIT_FAILURE; + + /* Allocate a netlink socket and connect to it */ + sk = nl_socket_alloc(); + if (!sk) { + nl_perror(NLE_NOMEM, "Error"); + return rc; + } + rc = genl_connect(sk); + if (rc) { + nl_perror(rc, "Error"); + rc = EXIT_FAILURE; + goto err1; + } + smc_id = genl_ctrl_resolve(sk, SMC_GENL_FAMILY_NAME); + if (smc_id < 0) { + rc = EXIT_FAILURE; + if (smc_id == -NLE_OBJ_NOTFOUND) + fprintf(stderr, "Error: SMC module not loaded\n"); + else + nl_perror(smc_id, "Error"); + goto err2; + } + + return EXIT_SUCCESS; +err2: + nl_close(sk); +err1: + nl_socket_free(sk); + return rc; + +} + +int gen_nl_handle(int cmd, int nlmsg_flags, + int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg) +{ + struct nl_msg *msg; + int rc; + + nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, arg); + + /* Allocate a netlink message and set header information. */ + msg = nlmsg_alloc(); + if (!msg) { + nl_perror(NLE_NOMEM, "Error"); + goto errout; + } + + if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, smc_id, 0, nlmsg_flags, + cmd, SMC_GENL_FAMILY_VERSION)) { + nl_perror(NLE_NOMEM, "Error"); + goto errout; + } + + /* Send message */ + rc = nl_send_auto(sk, msg); + if (rc < 0) { + nl_perror(rc, "Error"); + goto errout; + } + + /* Receive reply message, returns number of cb invocations. */ + rc = nl_recvmsgs_default(sk); + if (rc < 0) { + if (rc == -NLE_OPNOTSUPP) { + fprintf(stderr, "Error: Operation not supported by kernel\n"); + } else { + nl_perror(rc, "Error"); + } + goto errout; + } + + nlmsg_free(msg); + return EXIT_SUCCESS; + +errout: + nlmsg_free(msg); + return EXIT_FAILURE; +} + +int gen_nl_handle_dump(int cmd, int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg) +{ + return gen_nl_handle(cmd, NLM_F_DUMP, cb_handler, arg); +} + +void gen_nl_close() +{ + if (sk) { + nl_close(sk); + nl_socket_free(sk); + sk = NULL; + } +} + +uint64_t nl_attr_get_uint(const struct nlattr *nla) +{ + if (nla && nla_len(nla) == sizeof(uint32_t)) + return nla_get_u32(nla); + return nla_get_u64(nla); +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/libnetlink.h b/testcases/feature-test/oeaware/smc-tools-main/libnetlink.h new file mode 100644 index 000000000..fe011329a --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/libnetlink.h @@ -0,0 +1,69 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Ursula Braun + * Guvenc Gulce + * + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#ifndef SMC_LIBNETLINK_H_ +#define SMC_LIBNETLINK_H_ +#include +#include +#include +#include +#include +#include +#include + +static const struct nla_policy smc_gen_net_policy[SMC_GEN_MAX + 1] = { + [SMC_GEN_UNSPEC] = { .type = NLA_UNSPEC, }, + [SMC_GEN_STATS] = { .type = NLA_NESTED, }, + [SMC_GEN_FBACK_STATS] = { .type = NLA_NESTED, }, +}; + +struct rtnl_handle { + int fd; + struct sockaddr_nl local; + struct sockaddr_nl peer; + __u32 seq; + __u32 dump; + int proto; + FILE *dump_fp; + int flags; +}; + +#define DIAG_REQUEST(_req, _r, _seq) \ + struct { \ + struct nlmsghdr nlh; \ + _r; \ + } _req = { \ + .nlh = { \ + .nlmsg_type = SOCK_DIAG_BY_FAMILY, \ + .nlmsg_flags = NLM_F_ROOT|NLM_F_REQUEST, \ + .nlmsg_seq = _seq, \ + .nlmsg_len = sizeof(_req), \ + }, \ + } + +int rtnl_open(struct rtnl_handle *rth); +void rtnl_close(struct rtnl_handle *rth); +int rtnl_dump(struct rtnl_handle *rth, void (*handler)(struct nlmsghdr *nlh)); +void parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len); +int sockdiag_send(int fd, unsigned char cmd); +void set_extension(int ext); +int gen_nl_open(); +void gen_nl_close(); +int gen_nl_handle(int cmd, int nlmsg_flags, + int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg); +int gen_nl_handle_dump(int cmd, int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg); +uint64_t nl_attr_get_uint(const struct nlattr *nla); +#endif /* SMC_LIBNETLINK_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/linkgroup.c b/testcases/feature-test/oeaware/smc-tools-main/linkgroup.c new file mode 100644 index 000000000..2c6e1390c --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/linkgroup.c @@ -0,0 +1,636 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Guvenc Gulce + * + * User space program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "util.h" +#include "libnetlink.h" +#include "linkgroup.h" + +#define SMC_MASK_LINK_ID 0xFFFFFF00 +#define SMC_INVALID_LINK_ID 0xFFFFFFFF + +static __u32 unmasked_trgt_lgid = 0; +static int netdev_entered = 0; +static __u32 target_lgid = 0; +static int ibdev_entered = 0; +static int type_entered = 0; +static int all_entered = 0; +static int show_links = 0; +#if defined(SMCD) +static int lgr_smcr = 0; +static int lgr_smcd = 1; +#else +static int lgr_smcr = 1; +static int lgr_smcd = 0; +#endif +static int d_level = 0; + +static char target_ibdev[IB_DEVICE_NAME_MAX] = {0}; +static char target_type[SMC_TYPE_STR_MAX] = {0}; +static char target_ndev[IFNAMSIZ] = {0}; + +static struct nla_policy smc_gen_lgr_smcr_sock_policy[SMC_NLA_LGR_R_MAX + 1] = { + [SMC_NLA_LGR_R_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_LGR_R_ID] = { .type = NLA_U32 }, + [SMC_NLA_LGR_R_ROLE] = { .type = NLA_U8 }, + [SMC_NLA_LGR_R_TYPE] = { .type = NLA_U8 }, + [SMC_NLA_LGR_R_PNETID] = { .type = NLA_NUL_STRING, + .maxlen = SMC_MAX_PNETID_LEN + 1 }, + [SMC_NLA_LGR_R_VLAN_ID] = { .type = NLA_U8 }, + [SMC_NLA_LGR_R_CONNS_NUM] = { .type = NLA_U32 }, +}; + +static struct nla_policy smc_gen_lgr_smcd_sock_policy[SMC_NLA_LGR_D_MAX + 1] = { + [SMC_NLA_LGR_D_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_LGR_D_ID] = { .type = NLA_U32 }, + [SMC_NLA_LGR_D_PNETID] = { .type = NLA_NUL_STRING, + .maxlen = SMC_MAX_PNETID_LEN + 1 }, + [SMC_NLA_LGR_D_VLAN_ID] = { .type = NLA_U8 }, + [SMC_NLA_LGR_D_CONNS_NUM] = { .type = NLA_U32 }, +}; + +static struct nla_policy smc_gen_link_smcr_sock_policy[SMC_NLA_LINK_MAX + 1] = { + [SMC_NLA_LINK_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_LINK_ID] = { .type = NLA_U8 }, + [SMC_NLA_LINK_IB_DEV] = { .type = NLA_NUL_STRING, + .maxlen = IB_DEVICE_NAME_MAX + 1 }, + [SMC_NLA_LINK_IB_PORT] = { .type = NLA_U8 }, + [SMC_NLA_LINK_GID] = { .type = NLA_NUL_STRING, + .maxlen = 40 + 1 }, + [SMC_NLA_LINK_PEER_GID] = { .type = NLA_NUL_STRING, + .maxlen = 40 + 1 }, + [SMC_NLA_LINK_CONN_CNT] = { .type = NLA_U32 }, + [SMC_NLA_LINK_NET_DEV] = { .type = NLA_U32}, + [SMC_NLA_LINK_UID] = { .type = NLA_U32 }, + [SMC_NLA_LINK_PEER_UID] = { .type = NLA_U32 }, + [SMC_NLA_LINK_STATE] = { .type = NLA_U32 }, +}; + +static struct nla_policy smc_gen_lgr_v2_sock_policy[SMC_NLA_LGR_V2_MAX + 1] = { + [SMC_NLA_LGR_V2_VER] = { .type = NLA_U8 }, + [SMC_NLA_LGR_V2_REL] = { .type = NLA_U8 }, + [SMC_NLA_LGR_V2_OS] = { .type = NLA_U8 }, + [SMC_NLA_LGR_V2_NEG_EID] = { .type = NLA_NUL_STRING, + .maxlen = SMC_MAX_EID_LEN + 1 }, + [SMC_NLA_LGR_V2_PEER_HOST] = { .type = NLA_NUL_STRING, + .maxlen = SMC_MAX_HOSTNAME_LEN + 1 }, +}; + +static struct nla_policy smc_gen_lgr_r_v2_sock_policy[SMC_NLA_LGR_R_V2_MAX + 1] = { + [SMC_NLA_LGR_R_V2_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_LGR_R_V2_DIRECT] = { .type = NLA_U8 }, +}; + +static void usage(void) +{ + fprintf(stderr, +#if defined(SMCD) + "Usage: smcd linkgroup [show] [all | LG-ID]\n" +#elif defined(SMCR) + "Usage: smcr linkgroup [show | link-show] [all | LG-ID]\n" + " [ibdev ]\n" + " [netdev ]\n" +#else + "Usage: smc linkgroup [show | link-show] [all | LG-ID] [type {smcd | smcr}]\n" + " [ibdev ]\n" + " [netdev ]\n" +#endif + ); + exit(-1); +} + +static void print_lgr_smcr_header(void) +{ + if (!show_links && d_level >= SMC_DETAIL_LEVEL_V) + return; + + printf("LG-ID "); + printf("LG-Role "); + printf("LG-Type "); + if (show_links) { + printf("Net-Dev "); + printf("Link-State "); + printf("#Conns "); + if (d_level >= SMC_DETAIL_LEVEL_V) { + printf("Link-UID "); + printf("Peer-UID "); + printf("IB-Dev "); + printf("IB-P "); + if (d_level >= SMC_DETAIL_LEVEL_VV) { + printf("Local-GID "); + printf("Peer-GID "); + } + } + } else { + printf("VLAN "); + printf("#Conns "); + printf("PNET-ID "); + } + printf("\n"); +} + +static void print_lgr_smcd_header(void) +{ + if (d_level >= SMC_DETAIL_LEVEL_V) + return; + + printf("LG-ID "); + printf("VLAN "); + printf("#Conns "); + printf("PNET-ID " ); + + printf("\n"); +} + +static const char *smc_peer_os(unsigned int x) +{ + static char buf[32]; + + switch (x) { + case 1: return "ZOS"; + case 2: return "LINUX"; + case 3: return "AIX"; + default: sprintf(buf, "Unknown (%#x)", x); return buf; + } +} + +static const char *smc_link_state(unsigned int x) +{ + static char buf[16]; + + switch (x) { + case 0: return "LINK_UNUSED"; + case 1: return "LINK_INACTIVE"; + case 2: return "LINK_ACTIVATING"; + case 3: return "LINK_ACTIVE"; + default: sprintf(buf, "%#x?", x); return buf; + } +} + +static const char *smc_lgr_type(unsigned int x) +{ + static char buf[16]; + + switch (x) { + case 0: return "NONE"; + case 1: return "SINGLE"; + case 2: return "SYM"; + case 3: return "ASYMP"; + case 4: return "ASYML"; + default: sprintf(buf, "%#x?", x); return buf; + } +} + +static int filter_smcd_item(struct smcd_diag_dmbinfo_v2 *lgr) +{ + int ignore = 0; + + if (unmasked_trgt_lgid == 0 ) + return ignore; /* No filter set */ + else if (unmasked_trgt_lgid != lgr->v1.linkid) + ignore = 1; + + return ignore; +} + +static int filter_smcr_item(struct smc_diag_linkinfo_v2 *link, struct smc_diag_lgr *lgr) +{ + int ignore = 0; + + if (is_str_empty(target_ibdev) && is_str_empty(target_ndev) && + (unmasked_trgt_lgid == 0 )) { + return ignore; /* No filter set */ + }else if (!is_str_empty(target_ndev) && show_links) { + if (strncmp(target_ndev, (char*)link->netdev, sizeof(target_ndev)) == 0) + ignore = 0; + else + ignore = 1; + } else if (!is_str_empty(target_ibdev) && show_links) { + if (strncmp(target_ibdev, (char*)link->v1.ibname, sizeof(target_ibdev)) == 0) + ignore = 0; + else + ignore = 1; + } else if (unmasked_trgt_lgid != 0 ) { + if (target_lgid == *(__u32*)lgr->lgr_id) + ignore = 0; + else + ignore = 1; + } + + return ignore; +} + +static int fill_link_struct(struct smc_diag_linkinfo_v2 *link, struct nlattr **attrs) +{ + struct nlattr *link_attrs[SMC_NLA_LINK_MAX + 1]; + __u32 temp_link_uid; + + if (nla_parse_nested(link_attrs, SMC_NLA_LINK_MAX, + attrs[SMC_GEN_LINK_SMCR], + smc_gen_link_smcr_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_link_smcr_sock_policy\n"); + return NL_STOP; + } + if (link_attrs[SMC_NLA_LINK_STATE]) + link->link_state = nla_get_u32(link_attrs[SMC_NLA_LINK_STATE]); + if (link_attrs[SMC_NLA_LINK_CONN_CNT]) + link->conn_cnt = nla_get_u32(link_attrs[SMC_NLA_LINK_CONN_CNT]); + if (link_attrs[SMC_NLA_LINK_UID]) { + temp_link_uid = nla_get_u32(link_attrs[SMC_NLA_LINK_UID]); + memcpy(&link->link_uid[0], &temp_link_uid, sizeof(temp_link_uid)); + } + if (link_attrs[SMC_NLA_LINK_IB_PORT]) + link->v1.ibport = nla_get_u8(link_attrs[SMC_NLA_LINK_IB_PORT]); + if (link_attrs[SMC_NLA_LINK_PEER_UID]) { + temp_link_uid = nla_get_u32(link_attrs[SMC_NLA_LINK_PEER_UID]); + memcpy(&link->peer_link_uid[0], &temp_link_uid, sizeof(temp_link_uid)); + } + if (link_attrs[SMC_NLA_LINK_NET_DEV] && nla_get_u32(link_attrs[SMC_NLA_LINK_NET_DEV])) + if_indextoname(nla_get_u32(link_attrs[SMC_NLA_LINK_NET_DEV]), (char*)link->netdev); + if (link_attrs[SMC_NLA_LINK_IB_DEV]) + snprintf((char*)link->v1.ibname, sizeof(link->v1.ibname), "%s", + nla_get_string(link_attrs[SMC_NLA_LINK_IB_DEV])); + if (link_attrs[SMC_NLA_LINK_GID]) + snprintf((char*)link->v1.gid, sizeof(link->v1.gid), "%s", + nla_get_string(link_attrs[SMC_NLA_LINK_GID])); + if (link_attrs[SMC_NLA_LINK_PEER_GID]) + snprintf((char*)link->v1.peer_gid, sizeof(link->v1.peer_gid), "%s", + nla_get_string(link_attrs[SMC_NLA_LINK_PEER_GID])); + return NL_OK; +} + +static void fill_lgr_v2_common_struct(struct smc_v2_lgr_info *v2_lgr_info, struct nlattr **v2_lgr_attrs) +{ + if (v2_lgr_attrs[SMC_NLA_LGR_V2_VER]) + v2_lgr_info->smc_version = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_V2_VER]); + if (v2_lgr_attrs[SMC_NLA_LGR_V2_REL]) + v2_lgr_info->peer_smc_release = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_V2_REL]); + if (v2_lgr_attrs[SMC_NLA_LGR_V2_OS]) + v2_lgr_info->peer_os = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_V2_OS]); + if (v2_lgr_attrs[SMC_NLA_LGR_V2_NEG_EID]) + snprintf((char*)v2_lgr_info->negotiated_eid, + sizeof(v2_lgr_info->negotiated_eid), "%s", + nla_get_string(v2_lgr_attrs[SMC_NLA_LGR_V2_NEG_EID])); + if (v2_lgr_attrs[SMC_NLA_LGR_V2_PEER_HOST]) + snprintf((char*)v2_lgr_info->peer_hostname, + sizeof(v2_lgr_info->peer_hostname), "%s", + nla_get_string(v2_lgr_attrs[SMC_NLA_LGR_V2_PEER_HOST])); + v2_lgr_info->v2_lgr_info_received = 1; +} + +static int fill_lgr_struct(struct smc_diag_lgr *lgr, struct nlattr **attrs) +{ + struct nlattr *lgr_attrs[SMC_NLA_LGR_R_MAX + 1]; + + if (nla_parse_nested(lgr_attrs, SMC_NLA_LGR_R_MAX, + attrs[SMC_GEN_LGR_SMCR], + smc_gen_lgr_smcr_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_smcr_sock_policy\n"); + return NL_STOP; + } + if (lgr_attrs[SMC_NLA_LGR_R_ID]) + *(__u32*)lgr->lgr_id = nla_get_u32(lgr_attrs[SMC_NLA_LGR_R_ID]); + if (lgr_attrs[SMC_NLA_LGR_R_ROLE]) + lgr->lgr_role = nla_get_u8(lgr_attrs[SMC_NLA_LGR_R_ROLE]); + if (lgr_attrs[SMC_NLA_LGR_R_TYPE]) + lgr->lgr_type = nla_get_u8(lgr_attrs[SMC_NLA_LGR_R_TYPE]); + if (lgr_attrs[SMC_NLA_LGR_R_VLAN_ID]) + lgr->vlan_id = nla_get_u8(lgr_attrs[SMC_NLA_LGR_R_VLAN_ID]); + if (lgr_attrs[SMC_NLA_LGR_R_CONNS_NUM]) + lgr->conns_num = nla_get_u32(lgr_attrs[SMC_NLA_LGR_R_CONNS_NUM]); + if (lgr_attrs[SMC_NLA_LGR_R_PNETID]) + snprintf((char*)lgr->pnet_id, sizeof(lgr->pnet_id), "%s", + nla_get_string(lgr_attrs[SMC_NLA_LGR_R_PNETID])); + if (lgr_attrs[SMC_NLA_LGR_R_SNDBUF_ALLOC]) + lgr->sndbuf_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_R_SNDBUF_ALLOC]); + if (lgr_attrs[SMC_NLA_LGR_R_RMB_ALLOC]) + lgr->rmb_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_R_RMB_ALLOC]); + if (lgr_attrs[SMC_NLA_LGR_R_V2_COMMON]) { + struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_V2_MAX + 1]; + + if (nla_parse_nested(v2_lgr_attrs, SMC_NLA_LGR_V2_MAX, + lgr_attrs[SMC_NLA_LGR_R_V2_COMMON], + smc_gen_lgr_v2_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_v2_sock_policy\n"); + return NL_STOP; + } + fill_lgr_v2_common_struct(&lgr->v2_lgr_info, v2_lgr_attrs); + } + if (lgr_attrs[SMC_NLA_LGR_R_V2]) { + struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_R_V2_MAX + 1]; + + if (nla_parse_nested(v2_lgr_attrs, SMC_NLA_LGR_R_V2_MAX, + lgr_attrs[SMC_NLA_LGR_R_V2], + smc_gen_lgr_r_v2_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_r_v2_sock_policy\n"); + return NL_STOP; + } + if (v2_lgr_attrs[SMC_NLA_LGR_R_V2_DIRECT]) + lgr->v2_lgr_info.smcr_direct = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_R_V2_DIRECT]); + } + + return NL_OK; +} + +static int fill_lgr_smcd_struct(struct smcd_diag_dmbinfo_v2 *lgr, struct nlattr **attrs) +{ + struct nlattr *lgr_attrs[SMC_NLA_LGR_D_MAX + 1]; + + if (nla_parse_nested(lgr_attrs, SMC_NLA_LGR_D_MAX, + attrs[SMC_GEN_LGR_SMCD], + smc_gen_lgr_smcd_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_smcd_sock_policy\n"); + return NL_STOP; + } + if (lgr_attrs[SMC_NLA_LGR_D_ID]) + lgr->v1.linkid = nla_get_u32(lgr_attrs[SMC_NLA_LGR_D_ID]); + if (lgr_attrs[SMC_NLA_LGR_D_VLAN_ID]) + lgr->vlan_id = nla_get_u8(lgr_attrs[SMC_NLA_LGR_D_VLAN_ID]); + if (lgr_attrs[SMC_NLA_LGR_D_CONNS_NUM]) + lgr->conns_num = nla_get_u32(lgr_attrs[SMC_NLA_LGR_D_CONNS_NUM]); + if (lgr_attrs[SMC_NLA_LGR_D_PNETID]) + snprintf((char*)lgr->pnet_id, sizeof(lgr->pnet_id), "%s", + nla_get_string(lgr_attrs[SMC_NLA_LGR_D_PNETID])); + if (lgr_attrs[SMC_NLA_LGR_D_SNDBUF_ALLOC]) + lgr->sndbuf_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_D_SNDBUF_ALLOC]); + if (lgr_attrs[SMC_NLA_LGR_D_DMB_ALLOC]) + lgr->dmb_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_D_DMB_ALLOC]); + if (lgr_attrs[SMC_NLA_LGR_D_V2_COMMON]) { + struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_V2_MAX + 1]; + + if (nla_parse_nested(v2_lgr_attrs, SMC_NLA_LGR_V2_MAX, + lgr_attrs[SMC_NLA_LGR_D_V2_COMMON], + smc_gen_lgr_v2_sock_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_v2_sock_policy\n"); + return NL_STOP; + } + fill_lgr_v2_common_struct(&lgr->v2_lgr_info, v2_lgr_attrs); + } + return NL_OK; +} + +static int show_lgr_smcr_info_lgr_details_first_loop = 1; + +static void show_lgr_smcr_info_lgr_details(struct smc_diag_lgr *lgr) +{ + if (!show_lgr_smcr_info_lgr_details_first_loop) + printf("\n"); /* separator line between link groups */ + else + show_lgr_smcr_info_lgr_details_first_loop = 0; + + printf("LG-ID : %08x\n", *(__u32*)lgr->lgr_id); + printf("LG-Role : %s\n", lgr->lgr_role ? "SERV" : "CLNT"); + printf("LG-Type : %s\n", smc_lgr_type(lgr->lgr_type)); + printf("VLAN : %x\n", lgr->vlan_id); + printf("PNET-ID : %s\n", trim_space((char *)lgr->pnet_id)); + printf("Version : %d\n", (lgr->v2_lgr_info.v2_lgr_info_received ? lgr->v2_lgr_info.smc_version : 1)); + if (lgr->v2_lgr_info.v2_lgr_info_received) { + printf("Peer-Rel : %d\n", lgr->v2_lgr_info.peer_smc_release); + printf("Peer-Host: %s\n", trim_space((char *)lgr->v2_lgr_info.peer_hostname)); + printf("Peer-OS : %s\n", smc_peer_os(lgr->v2_lgr_info.peer_os)); + printf("Direct : %s\n", (lgr->v2_lgr_info.smcr_direct ? "Yes" : "No")); + printf("EID : %s\n", lgr->v2_lgr_info.negotiated_eid); + } + printf("#Conns : %d\n", lgr->conns_num); + printf("Sndbuf : %lld B\n", lgr->sndbuf_alloc); + printf("RMB : %lld B\n", lgr->rmb_alloc); +} + +static int show_lgr_smcr_info(struct nlattr **attr) +{ + struct smc_diag_linkinfo_v2 link = {0}; + static struct smc_diag_lgr lgr = {0}; + int rc = NL_OK; + + if (attr[SMC_GEN_LGR_SMCR]) + rc = fill_lgr_struct(&lgr, attr); + + if (attr[SMC_GEN_LINK_SMCR]) + rc = fill_link_struct(&link, attr); + + if (attr[SMC_GEN_LGR_SMCR] && show_links) + return rc; + + if (filter_smcr_item(&link, &lgr)) + return rc; + + if (!show_links && d_level >= SMC_DETAIL_LEVEL_V) { + show_lgr_smcr_info_lgr_details(&lgr); + /* clear the (static) lgr struct for next lgr */ + memset(&lgr, 0, sizeof(lgr)); + return rc; + } + + printf("%08x ", *(__u32*)lgr.lgr_id); + printf("%-8s ", lgr.lgr_role ? "SERV" : "CLNT"); + printf("%-8s ", smc_lgr_type(lgr.lgr_type)); + if (show_links) { + if (strnlen((char*)link.netdev, sizeof(link.netdev)) > (IFNAMSIZ - 1)) + printf("%-.15s ", link.netdev); + else + printf("%-15s ", link.netdev); + printf("%-15s ", smc_link_state(link.link_state)); + printf("%6d ", link.conn_cnt); + if (d_level >= SMC_DETAIL_LEVEL_V) { + printf("%08x ", ntohl(*(__u32*)link.link_uid)); + printf("%08x ", ntohl(*(__u32*)link.peer_link_uid)); + if (strnlen((char*)link.v1.ibname, sizeof(link.v1.ibname)) > SMC_MAX_IBNAME) + printf("%-.8s ", link.v1.ibname); + else + printf("%-8s ", link.v1.ibname); + printf("%4d ", link.v1.ibport); + if (d_level >= SMC_DETAIL_LEVEL_VV) { + printf("%-40s ", link.v1.gid); + printf("%s ", link.v1.peer_gid); + } + } + } else { + printf("%#4x ", lgr.vlan_id); + printf(" %6d ", lgr.conns_num); + printf(" %-16s ", trim_space((char *)lgr.pnet_id)); + } + printf("\n"); + + return rc; +} + +static int show_lgr_smcd_info_lgr_details_first_loop = 1; + +static void show_lgr_smcd_info_lgr_details(struct smcd_diag_dmbinfo_v2 *lgr) +{ + if (!show_lgr_smcd_info_lgr_details_first_loop) + printf("\n"); /* separator line between link groups */ + else + show_lgr_smcd_info_lgr_details_first_loop = 0; + + printf("LG-ID : %08x\n", lgr->v1.linkid); + printf("VLAN : %x\n", lgr->vlan_id); + printf("PNET-ID : %s\n", trim_space((char *)lgr->pnet_id)); + printf("Version : %d\n", (lgr->v2_lgr_info.v2_lgr_info_received ? lgr->v2_lgr_info.smc_version : 1)); + if (lgr->v2_lgr_info.v2_lgr_info_received) { + printf("Peer-Rel : %d\n", lgr->v2_lgr_info.peer_smc_release); + printf("Peer-Host: %s\n", trim_space((char *)lgr->v2_lgr_info.peer_hostname)); + printf("Peer-OS : %s\n", smc_peer_os(lgr->v2_lgr_info.peer_os)); + printf("EID : %s\n", lgr->v2_lgr_info.negotiated_eid); + } + printf("#Conns : %d\n", lgr->conns_num); + printf("Sndbuf : %lld B\n", lgr->sndbuf_alloc); + printf("DMB : %lld B\n", lgr->dmb_alloc); +} + +static int show_lgr_smcd_info(struct nlattr **attr) +{ + struct smcd_diag_dmbinfo_v2 lgr = {0}; + int rc = NL_OK; + + if (attr[SMC_GEN_LGR_SMCD]) + rc = fill_lgr_smcd_struct(&lgr, attr); + + if(filter_smcd_item(&lgr)) + return rc; + + if (d_level >= SMC_DETAIL_LEVEL_V) { + show_lgr_smcd_info_lgr_details(&lgr); + return rc; + } + + printf("%08x ", lgr.v1.linkid); + printf("%#4x ", lgr.vlan_id); + printf("%6d ", lgr.conns_num); + printf("%-16s ", trim_space((char *)lgr.pnet_id)); + printf("\n"); + return rc; +} + +static int handle_gen_lgr_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + static int header_printed = 0; + int rc = NL_OK; + + if (!header_printed) { + if (lgr_smcd) + print_lgr_smcd_header(); + else + print_lgr_smcr_header(); + header_printed = 1; + } + + if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, + (struct nla_policy *)smc_gen_net_policy) < 0) { + fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + if (!attrs[SMC_GEN_LGR_SMCR] && !attrs[SMC_GEN_LINK_SMCR] && !attrs[SMC_GEN_LGR_SMCD]) + return NL_STOP; + + if (lgr_smcr && (attrs[SMC_GEN_LGR_SMCR] || attrs[SMC_GEN_LINK_SMCR])) + rc = show_lgr_smcr_info(&attrs[0]); + + if (lgr_smcd && attrs[SMC_GEN_LGR_SMCD]) + rc = show_lgr_smcd_info(&attrs[0]); + return rc; +} + +static void handle_cmd_params(int argc, char **argv) +{ + if (((argc == 1) && (contains(argv[0], "help") == 0)) || (argc > 4)) + usage(); + + if (argc > 0) { + if (contains(argv[0], "show") == 0) + show_links=0; + else if (contains(argv[0], "link-show") == 0) + show_links=1; + else + PREV_ARG(); /* no object given, so use the default "show" */ + } + + while (NEXT_ARG_OK()) { + NEXT_ARG(); + if (ibdev_entered) { + snprintf(target_ibdev, sizeof(target_ibdev), "%s", argv[0]); + ibdev_entered = 0; + break; + } else if (netdev_entered) { + snprintf(target_ndev, sizeof(target_ndev), "%s", argv[0]); + netdev_entered = 0; + break; + } else if (type_entered) { + snprintf(target_type, sizeof(target_type), "%s", argv[0]); + if (strncmp(target_type, "smcd", SMC_TYPE_STR_MAX) == 0) { + lgr_smcd = 1; + lgr_smcr = 0; + } else if ((strnlen(target_type, sizeof(target_type)) < 4) || + (strncmp(target_type, "smcr", SMC_TYPE_STR_MAX) != 0)) { + print_type_error(); + } + type_entered = 0; + break; + } else if (contains(argv[0], "help") == 0) { + usage(); + } else if (contains(argv[0], "all") == 0) { + all_entered=1; +#if !defined(SMCD) && !defined(SMCR) + } else if (contains(argv[0], "type") == 0) { + type_entered=1; +#endif +#if !defined(SMCD) + } else if (contains(argv[0], "ibdev") == 0) { + ibdev_entered =1; + } else if (contains(argv[0], "netdev") == 0) { + netdev_entered =1; +#endif + } else if (!all_entered){ + char *endptr = NULL; + + unmasked_trgt_lgid = (unsigned int)strtol(argv[0], &endptr, 16); + if (argv[0] == endptr) /* string doesn't contain any digits */ + unmasked_trgt_lgid = SMC_INVALID_LINK_ID; + else + target_lgid = (unmasked_trgt_lgid & SMC_MASK_LINK_ID); + break; + } else { + usage(); + } + } + /* Too many parameters or wrong sequence of parameters */ + if (NEXT_ARG_OK()) + usage(); +} + +int invoke_lgs(int argc, char **argv, int detail_level) +{ + int rc = EXIT_SUCCESS; + + d_level = detail_level; + handle_cmd_params(argc, argv); + if (lgr_smcd) + rc = gen_nl_handle_dump(SMC_NETLINK_GET_LGR_SMCD, handle_gen_lgr_reply, NULL); + else if (show_links) + rc = gen_nl_handle_dump(SMC_NETLINK_GET_LINK_SMCR, handle_gen_lgr_reply, NULL); + else + rc = gen_nl_handle_dump(SMC_NETLINK_GET_LGR_SMCR, handle_gen_lgr_reply, NULL); + + return rc; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/linkgroup.h b/testcases/feature-test/oeaware/smc-tools-main/linkgroup.h new file mode 100644 index 000000000..bb709f72f --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/linkgroup.h @@ -0,0 +1,22 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Guvenc Gulce + * + * User space program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef LINKGROUP_H_ +#define LINKGROUP_H_ +extern struct rtnl_handle rth; + +int invoke_lgs(int argc, char **argv, int detail_level); + +#endif /* LINKGROUP_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/seid.c b/testcases/feature-test/oeaware/smc-tools-main/seid.c new file mode 100644 index 000000000..fe95ecd2f --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/seid.c @@ -0,0 +1,227 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "util.h" +#include "libnetlink.h" +#include "seid.h" + +static int enable_cmd = 0; +static int disable_cmd = 0; +static int show_cmd = 0; + +extern int smc_id; +extern struct nl_sock *sk; + +const struct nla_policy +smc_gen_seid_policy[SMC_NLA_SEID_TABLE_MAX + 1] = { + [SMC_NLA_SEID_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_SEID_ENTRY] = { .type = NLA_NUL_STRING }, + [SMC_NLA_SEID_ENABLED] = { .type = NLA_U8 }, +}; + +static void usage(void) +{ + fprintf(stderr, + "Usage: smcd seid [show]\n" + " smcd seid enable\n" + " smcd seid disable\n" + ); + exit(-1); +} + +/* arg is an (int *) */ +static int is_seid_defined_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + int *is_seid = (int *)arg; + + if (genlmsg_parse(hdr, 0, attrs, SMC_NLA_SEID_TABLE_MAX, + (struct nla_policy *)smc_gen_seid_policy) < 0) { + fprintf(stderr, "Error: Invalid data returned: smc_gen_seid_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + + if (!attrs[SMC_NLA_SEID_ENTRY]) + *is_seid = 0; + else + *is_seid = 1; + + return NL_OK; +} + +static int is_seid_defined(int *is_seid) +{ + *is_seid = 0; + return gen_nl_handle_dump(SMC_NETLINK_DUMP_SEID, is_seid_defined_reply, is_seid); +} + +static int handle_gen_seid_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *attrs[SMC_NLA_SEID_TABLE_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + int rc = NL_OK; + char *state; + + if (!show_cmd) + return rc; + + if (genlmsg_parse(hdr, 0, attrs, SMC_NLA_SEID_TABLE_MAX, + (struct nla_policy *)smc_gen_seid_policy) < 0) { + fprintf(stderr, "Error: invalid data returned: smc_gen_seid_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + + if (!attrs[SMC_NLA_SEID_ENTRY] || !attrs[SMC_NLA_SEID_ENABLED]) { + printf("n/a\n"); + return NL_STOP; + } + + if (nla_get_u8(attrs[SMC_NLA_SEID_ENABLED])) + state = "[enabled]"; + else + state = "[disabled]"; + + printf("%s %s\n", nla_get_string(attrs[SMC_NLA_SEID_ENTRY]), state); + return rc; +} + +int gen_nl_seid_handle(int cmd, char dump, int (*cb_handler)(struct nl_msg *msg, void *arg)) +{ + int rc = EXIT_FAILURE, nlmsg_flags = 0; + struct nl_msg *msg; + + nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, NULL); + + /* Allocate a netlink message and set header information. */ + msg = nlmsg_alloc(); + if (!msg) { + nl_perror(NLE_NOMEM, "Error"); + rc = EXIT_FAILURE; + goto err; + } + + if (dump) + nlmsg_flags = NLM_F_DUMP; + + if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, smc_id, 0, nlmsg_flags, + cmd, SMC_GENL_FAMILY_VERSION)) { + nl_perror(rc, "Error"); + rc = EXIT_FAILURE; + goto err; + } + + /* Send message */ + rc = nl_send_auto(sk, msg); + if (rc < 0) { + nl_perror(rc, "Error"); + rc = EXIT_FAILURE; + goto err; + } + + /* Receive reply message, returns number of cb invocations. */ + rc = nl_recvmsgs_default(sk); + + if (rc < 0) { + /* For cmd "SEID disable" the kernel might return ENOENT when + * no UEID is defined and the SEID cannot be disabled. + * This is mapped to NLE_OBJ_NOTFOUND in libnl, lib/error.c. + */ + if (rc == -NLE_OPNOTSUPP) { + fprintf(stderr, "Error: operation not supported by kernel\n"); + } else if (cmd == SMC_NETLINK_DISABLE_SEID && rc == -NLE_OBJ_NOTFOUND) { + fprintf(stderr, "Error: System EID cannot be disabled because no User EID is defined\n"); + } else { + nl_perror(rc, "Error"); + } + rc = EXIT_FAILURE; + goto err; + } + + nlmsg_free(msg); + return EXIT_SUCCESS; +err: + nlmsg_free(msg); + return rc; +} + +static void handle_cmd_params(int argc, char **argv) +{ + if (argc == 0) { + show_cmd = 1; /* no object given, so use the default "show" */ + return; + } + + while (1) { + if (contains(argv[0], "help") == 0) { + usage(); + } else if (contains(argv[0], "enable") == 0) { + enable_cmd = 1; + } else if (contains(argv[0], "disable") == 0) { + disable_cmd = 1; + } else if (contains(argv[0], "show") == 0) { + show_cmd = 1; + break; + } else { + usage(); + } + if (!NEXT_ARG_OK()) + break; + NEXT_ARG(); + } + /* Too many parameters or wrong sequence of parameters */ + if (NEXT_ARG_OK()) + usage(); + + /* Only single cmd expected */ + if ((enable_cmd + disable_cmd + show_cmd) != 1) + usage(); +} + +int invoke_seid(int argc, char **argv, int detail_level) +{ + int rc = EXIT_SUCCESS; + + handle_cmd_params(argc, argv); + + if (enable_cmd || disable_cmd) { + int is_seid = 0; + + is_seid_defined(&is_seid); + if (!is_seid) { + printf("Error: System EID not available\n"); + return EXIT_FAILURE; + } + } + + if (enable_cmd) { + rc = gen_nl_seid_handle(SMC_NETLINK_ENABLE_SEID, 0, handle_gen_seid_reply); + } else if (disable_cmd) { + rc = gen_nl_seid_handle(SMC_NETLINK_DISABLE_SEID, 0, handle_gen_seid_reply); + } else if (show_cmd) { + rc = gen_nl_seid_handle(SMC_NETLINK_DUMP_SEID, 1, handle_gen_seid_reply); + } else { + printf("Error: unknown command\n"); /* we should never come here ... */ + } + + return rc; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/seid.h b/testcases/feature-test/oeaware/smc-tools-main/seid.h new file mode 100644 index 000000000..6181a7574 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/seid.h @@ -0,0 +1,21 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef SEID_H_ +#define SEID_H_ + +extern struct rtnl_handle rth; + +int invoke_seid(int argc, char **argv, int detail_level); + +#endif /* SEID_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-device.8 b/testcases/feature-test/oeaware/smc-tools-main/smc-device.8 new file mode 100644 index 000000000..171e089e8 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc-device.8 @@ -0,0 +1,162 @@ +.\" smc-device.8 +.\" +.\" +.\" Copyright IBM Corp. 2020 +.\" Author(s): Guvenc Gulce +.\" ---------------------------------------------------------------------- +.\" +.TH SMC-DEVICE 8 "June 2020" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smc-device \- Print information about SMC devices +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smc +.RI "[ " OPTIONS " ]" +.B device +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.ti -8 +.BR "smc device" +.RI "[" +.B "show" +.RI "] [" +.B "all" +.RI "] [ " +.B type +.IR TYPE " ] [ " +.B netdev +.IR NETDEV " ] [ " +.B ibdev +.IR IBDEV " ] + +.ti -8 +.IR TYPE " := [ " +.BR smcr " | " +.BR smcd " ]" + +.SH "DESCRIPTION" +The +.B smc device +command displays SMC devices and their properties. Devices can be +listed for SMC-R and SMC-D. The command operates with SMC-R type +per default on all command levels. + +.SS smc device show - look at the device properties + +.TP +.B all (default) +Show all the devices. + +.TP +.BI type " TYPE" +List only the devices of the given type. + +.TP +.BI netdev " NETDEV" +List only the device with the given network device name. + +.TP +.BI ibdev " IBDEV" +List only the device ports with the given RoCE (InfiniBand) device name. + +.SH OUTPUT + +.SS "Net-Dev" +Network device name. +.SS "IB-Dev" +RoCE (InfiniBand) device name. +.SS "IB-P" +InfiniBand port of the RoCE device. +.SS "IB-State" +State of the RoCE device port. +.TP +.I +INACTIVE +The RoCE device port is inactive. +.TP +.I +ACTIVE +The RoCE device port is active. +.SS "Type" +Type of the underlying PCI device. +.TP +.I +RoCE_Express +Underlying used device is RoCE Express. +.TP +.I +RoCE_Express2 +Underlying used device is RoCE Express 2. +.TP +.I +RoCE_Express3 +Underlying used device is RoCE Express 3. +.TP +.I +ISM +Underlying used device is ISM. +.SS "Crit" +Show whether the device is critical i.e. without failover possibility. +.TP +.I +Yes +In case of SMC-R, there is at least one linkgroup running on the +device with state "SINGLE" or locally "ASYMMETRIC" which +means the linkgroups do not have any fail-over device in case of +a failure. +In case of SMC-D, there is at least one linkgroup running on the +ISM device. +.TP +.I +No +In case of SMC-R, there is no linkgroup running on the device with +state "SINGLE" or locally "ASYMMETRIC" which means the linkgroup(s) +have a fallback device in case of a failure. +In case of SMC-D, there is no linkgroup running on the ISM device. +.SS "FID" +Functional ID of the PCI device. +.SS "PCI-ID" +ID of the PCI device. +.SS "PCHID" +Physical channel ID of the PCI device. +.SS "#Links" +Number of links(SMC-R)/linkgroups(SMC-D) on the device. +.SS "PNET-ID" +PNET-ID of the device. "*" means PNET-ID is set by the user. + +.SH "EXAMPLES" +.br +1. Show all devices of the type smcd: +.br + +\fB# smc device show all type smcd\fP +.br + +2. Show all devices of the type smcr: +.br + +\fB# smc devices show all type smcr\fP +.br + +3. Shows all devices with RoCE (InfiniBand) device name "mlx4_0": +.br + +\fB# smc device show ibdev mlx4_0\fP +.br + +4. Shows all devices with network device name "eth0": +.br + +\fB# smc device show netdev eth0\fP +.br + +.SH SEE ALSO +.br +.BR smcd (8), +.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 b/testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 new file mode 100644 index 000000000..4d296ac69 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 @@ -0,0 +1,216 @@ +.\" smc-linkgroup.8 +.\" +.\" +.\" Copyright IBM Corp. 2020 +.\" Author(s): Guvenc Gulce +.\" ---------------------------------------------------------------------- +.\" +.TH SMC-LINKGROUP 8 "June 2020" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smc-linkgroup \- Print information about SMC linkgroups and links +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smc +.RI "[ " OPTIONS " ]" +.B linkgroup +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.ti -8 +.BR "smc linkgroup" " { " show " | " link-show " } [" +.B "all " +.RI "| " LG-ID " ] [ " +.B type +.IR TYPE " ] [ " +.B netdev +.IR NETDEV " ] [ " +.B ibdev +.IR IBDEV " ] + +.ti -8 +.IR TYPE " := [ " +.BR smcr " | " +.BR smcd " ]" + +.SH "DESCRIPTION" +The +.B smc linkgroup +command displays linkgroups, links and their properties. Links can be +listed only for SMC-R linkgroups. The command operates with type smcr +per default on all command levels. + +.SS smc linkgroup show - look at the linkgroup properties + +.TP +.B all (default) +Show all the linkgroups. + +.TP +.I LG-ID +Show the linkgroup with the id +.I LG-ID + +.TP +.BI type " TYPE" +List only linkgroups of the given type. + +.TP +.BI netdev " NETDEV" +List linkgroups making use of the given network device only. + +.TP +.BI ibdev " IBDEV" +List only linkgroups of the given RoCE (infiniband) device. + +.SS smc linkgroup link-show - look at the link properties (SMC-R only) + +.TP +.B all (default) +Show all the links of the linkgroups. + +.TP +.I LG-ID +Show links of the linkgroup with the id +.I LG-ID + +.TP +.BI type " TYPE" +List only links of the linkgroups of the given type. + +.TP +.BI netdev " NETDEV" +List only links of the linkgroups making use of the given network device. + +.TP +.BI ibdev " IBDEV" +List only links of the linkgroups of the given RoCE (InfiniBand) device. + +.SH OUTPUT + +.SS "LG-ID" +ID of the linkgroup. +.SS "LG-Role" +Role of the linkgroup. +.TP +.I +SERV +The linkgroup has a SERVER role. +.TP +.I +CLNT +The linkgroup has a CLIENT role. +.SS "LG-Type" +Linkgroup type of the linkgroup. +.TP +.I +NONE +The linkgroup has the initial type. +.TP +.I +SINGLE +The linkgroup has only a single link, i.e. +the local and the peer system can offer one device port only for this linkgroup, +which means a link outage on any side cannot be covered. +.TP +.I +SYM +The linkgroup has two symmetric links, i.e. +the local and the peer system can offer two device ports for this linkgroup, +which means a link outage on any side can be covered. +.TP +.I +ASYMP +The linkgroup has asymmetric links, i.e. +the peer system can offer one device port only for this linkgroup, +which means a link outage on the peer side cannot be covered. +.TP +.I +ASYML +The linkgroup has asymmetric links, i.e. +the local system can offer one device port only for this linkgroup, +which means a link outage on the local side cannot be covered. +.SS "VLAN" +VLAN the linkgroup belongs to. +.SS "#Conns" +Number of connections(sockets) running on the link/linkgroup. +.SS "PNET-ID" +PNET-ID of the linkgroup. "*" means PNET-ID is set by the user. +.SS "Net-Dev" +Network device name corresponding to the link. +.SS "Link-State" +The state of the link. +.TP +.I +LINK_UNUSED +The link is not in use and in initial state. +.TP +.I +LINK_INACTIVE +The link is inactive and will go away. +.TP +.I +LINK_ACTIVATING +The link is being activated with the peer. +.TP +.I +LINK_ACTIVE +The link is active and operates on an established link with the peer. +Data is being exchanged via RDMA. +.SS "Link-UID" +Unique identifier of the link. This identifier consists of linkgroup id and +link id. +.SS "Peer-UID" +Unique identifier of the link on peer side. This identifier consists of +linkgroup id and link id. +.SS "IB-Dev" +Name of the RoCE device used by the link. +.SS "IB-P" +Port of the RoCE device used by the link. +.SS "Local-GID" +GID of the RoCE port used by the link. +.SS "Peer-GID" +GID of the peer RoCE port used by the link. + +.SH "EXAMPLES" + +.br + +1. Show all linkgroups of the type smcd: +.br + +\fB# smc linkgroup show all type smcd\fP +.br + +2. Show all links of the linkgroups with type smcr: +.br + +\fB# smc linkgroup link-show all type smcr\fP +.br + +3. Show all links with linkgroup id 40: +.br + +\fB# smc linkgroup link-show 40\fP +.br + +4. Show all links on RoCE device "mlx4_0": +.br + +\fB# smc linkgroup link-show ibdev mlx4_0\fP +.br + +5. Shows all links on network device "eth0": +.br + +\fB# smc linkgroup link-show netdev eth0\fP +.br + +.SH SEE ALSO +.br +.BR smcd (8), +.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-preload.c b/testcases/feature-test/oeaware/smc-tools-main/smc-preload.c new file mode 100644 index 000000000..55c7e5c89 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc-preload.c @@ -0,0 +1,153 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2016, 2018 + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DLOPEN_FLAG RTLD_LAZY + +#ifndef AF_SMC +#define AF_SMC 43 +#endif + +#ifndef SMCPROTO_SMC +#define SMCPROTO_SMC 0 /* SMC protocol, IPv4 */ +#define SMCPROTO_SMC6 1 /* SMC protocol, IPv6 */ +#endif + +int (*orig_socket)(int domain, int type, int protocol) = NULL; +static void *dl_handle = NULL; +static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; + +static void initialize(void); + +static int debug_mode = 0; + +#define GET_FUNC(x) \ +if (dl_handle) { \ + char *err; \ + dlerror(); \ + orig_ ## x=dlsym(dl_handle,#x); \ + if ((!orig_ ## x)&&(err=dlerror())) { \ + fprintf(stderr, "dlsym failed on " #x ": %s\n",err); \ + orig_ ## x=&emergency_ ## x; \ + } \ +} else { \ + orig_ ## x=&emergency_ ## x; \ +} + +static void dbg_msg(FILE *f, const char *format, ...) +{ + va_list vl; + + if (debug_mode) { + va_start(vl, format); + vfprintf(f, format, vl); + va_end(vl); + } +} + +static int emergency_socket(int domain, int type, int protocol) +{ + errno = EINVAL; + return -1; +} + +static void set_bufsize(int socket, int opt, const char *envname) { + char *val, *end; + int size; + int rc; + + val = getenv(envname); + if (!val) + return; + size = strtol(val, &end, 10); + if (end != NULL) { + switch (toupper(*end)) { + case 'K': size *= 1024; + break; + case 'M': size *= 1048576; + break; + default: break; + } + } + rc = setsockopt(socket, SOL_SOCKET, opt, &size, sizeof(size)); + dbg_msg(stderr, "sockopt %d set to %d\n", opt, size, rc); +} + +int socket(int domain, int type, int protocol) +{ + int rc; + + if (!orig_socket) + initialize(); + + /* check if socket is eligible for AF_SMC */ + if ((domain == AF_INET || domain == AF_INET6) && + // see kernel code, include/linux/net.h, SOCK_TYPE_MASK + (type & 0xf) == SOCK_STREAM && + (protocol == IPPROTO_IP || protocol == IPPROTO_TCP)) { + dbg_msg(stderr, "libsmc-preload: map sock to AF_SMC\n"); + if (domain == AF_INET) + protocol = SMCPROTO_SMC; + else /* AF_INET6 */ + protocol = SMCPROTO_SMC6; + + domain = AF_SMC; + } + + rc = (*orig_socket)(domain, type, protocol); + if (rc != -1) { + set_bufsize(rc, SO_SNDBUF, "SMC_SNDBUF"); + set_bufsize(rc, SO_RCVBUF, "SMC_RCVBUF"); + } + + return rc; +} + +static void set_debug_mode(const char *var_name) +{ + char *var_value; + + var_value = getenv(var_name); + debug_mode = 0; + if (var_value != NULL) + debug_mode = (var_value[0] != '0'); +} + +static void initialize(void) +{ + pthread_mutex_lock(&mutex); + if (orig_socket) { + pthread_mutex_unlock(&mutex); + return; + } + + set_debug_mode("SMC_DEBUG"); + + dl_handle = dlopen(LIBC_SO, DLOPEN_FLAG); + if (!dl_handle) + dbg_msg(stderr, "dlopen failed: %s\n", dlerror()); + GET_FUNC(socket); + pthread_mutex_unlock(&mutex); +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete b/testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete new file mode 100644 index 000000000..40e979a5f --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete @@ -0,0 +1,140 @@ +_smc() +{ + local cur prev opts + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + opts="device linkgroup info stats ueid -a -d -dd -v" + opts_smcd="device linkgroup info stats ueid seid -a -d -v" + opts_short="device linkgroup" + opts_show="show link-show" + opts_show_smcd="show" + opts_stats="show reset" + opts_ueid="show add del flush" + opts_seid="show enable disable" + opts_type="smcd smcr" + opts_final="all netdev ibdev" + opts_final_smcd="all" + case "${prev}" in + -v) + if [ $1 = "smcr" ]; then + COMPREPLY=( $(compgen -W "${opts_short}" -- ${cur})) + fi + return 0 + ;; + -vv) + if [ $1 = "smcr" ]; then + COMPREPLY=( $(compgen -W "${opts_short}" -- ${cur})) + fi + return 0 + ;; + device) + if [ $1 = "smcr" ]; then + COMPREPLY=( $(compgen -W "${opts_show}" -- ${cur})) + else + COMPREPLY=( $(compgen -W "${opts_show_smcd}" -- ${cur})) + fi + return 0 + ;; + linkgroup) + if [ $1 = "smcr" ]; then + COMPREPLY=( $(compgen -W "${opts_show}" -- ${cur}) ) + else + COMPREPLY=( $(compgen -W "${opts_show_smcd}" -- ${cur}) ) + fi + return 0 + ;; + info) + COMPREPLY=( $(compgen -W "${opts_show_smcd}" -- ${cur}) ) + return 0 + ;; + show) + if [ $1 = "smcr" ]; then + COMPREPLY=( $(compgen -W "${opts_final}" -- ${cur}) ) + else + COMPREPLY=( $(compgen -W "${opts_final_smcd}" -- ${cur}) ) + fi + return 0 + ;; + link-show) + COMPREPLY=( $(compgen -W "${opts_final}" -- ${cur}) ) + return 0 + ;; + smcd) + COMPREPLY=( $(compgen -W "${opts_smcd}" -- ${cur}) ) + return 0 + ;; + smcr) + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + stats) + COMPREPLY=( $(compgen -W "${opts_stats}" -- ${cur}) ) + return 0 + ;; + ueid) + COMPREPLY=( $(compgen -W "${opts_ueid}" -- ${cur}) ) + return 0 + ;; + seid) + COMPREPLY=( $(compgen -W "${opts_seid}" -- ${cur}) ) + return 0 + ;; + *) + ;; + esac +} + +function _smc_pnet_complete_() { + case "${COMP_WORDS[COMP_CWORD-1]}" in + --interface*|-I*) + COMPREPLY=($(compgen -W "$(ls -1 /sys/class/net/)" -- "${COMP_WORDS[COMP_CWORD]}")) + return;; + --ibdevice*|-D*) + which smc_rnics >/dev/null + if [ $? -eq 0 ]; then + COMPREPLY=($(compgen -W "$(smc_rnics | tail -n +3 | awk '{print($3)}' | uniq)" -- "${COMP_WORDS[COMP_CWORD]}")) + else + COMPREPLY=($(compgen -W "$(ls -1 /sys/bus/pci/devices)" -- "${COMP_WORDS[COMP_CWORD]}")) + fi + return;; + --ibport*|-P*) + ;; + esac + + COMPREPLY=($(compgen -W "--help --version --add --delete --show --flush --interface --ibdevice --ibport" -- "${COMP_WORDS[COMP_CWORD]}")) +} + +function _smc_rnics_complete_() { + case "${COMP_WORDS[COMP_CWORD-1]}" in + --enable|-e) + COMPREPLY=($(compgen -W "$(smc_rnics | grep -e "^ [[:space:]0-9a-f]\{2\} 0" | awk '{print($1)}')" -- "${COMP_WORDS[COMP_CWORD]}")) + return;; + --disable|-d) + COMPREPLY=($(compgen -W "$(smc_rnics | grep -e "^ [[:space:]0-9a-f]\{2\} 1" | awk '{print($1)}')" -- "${COMP_WORDS[COMP_CWORD]}")) + return;; + esac + + COMPREPLY=($(compgen -W "--help --version --disable --enable --rawids" -- "${COMP_WORDS[COMP_CWORD]}")) +} + +function _smc_chk_complete_() { + case "${COMP_WORDS[COMP_CWORD-1]}" in + --pnetid|-i) + COMPREPLY=($(compgen -W "$(ip link show | grep -e "^[0-9]\+:" | awk '{print($2)}' | sed s'/:$//') $(ip link show up | grep -e "^\s*altname" | awk '{print($2)}')" -- "${COMP_WORDS[COMP_CWORD]}")) + return;; + --connect|-C|--port|-p) + COMPREPLY=() + return;; + esac + + COMPREPLY=($(compgen -W "$(ip link show up | grep -e "^[0-9]\+:" | awk '{print($2)}' | sed s'/:$//') $(ip link show up | grep -e "^\s*altname" | awk '{print($2)}') --connect --help --version --debug --pnetid --port --server --static-analysis --live-test --ipv6" -- "${COMP_WORDS[COMP_CWORD]}")) +} + +complete -W "--help --tgz --version" smc_dbg +complete -W "--help --version --all --listening --debug --wide --smcd --smcr" smcss +complete -F _smc smcd +complete -F _smc smcr +complete -F _smc_pnet_complete_ smc_pnet +complete -F _smc_rnics_complete_ smc_rnics +complete -F _smc_chk_complete_ smc_chk diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc.8 b/testcases/feature-test/oeaware/smc-tools-main/smc.8 new file mode 100644 index 000000000..c1ec64d8f --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc.8 @@ -0,0 +1,110 @@ +.\" smc.8 +.\" +.\" +.\" Copyright IBM Corp. 2020 +.\" Author(s): Guvenc Gulce +.\" ---------------------------------------------------------------------- +.\" +.TH SMC 8 "June 2020" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smc \- Print information about SMC linkgroups, links, devices + +.SH SYNOPSIS +.B smc +.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " +.BR help " }" +.sp + +.IR OBJECT " := { " +.BR device " | " info " | " linkgroup " | " stats " }" +.sp + +.IR OPTIONS " := { " +\fB\-V\fR[\fIersion\fR] | +\fB\-a\fR[\fIbsolute\fR] | +\fB\-v\fR[\fIerbose\fR] | +\fB\-vv\fR[\fIerbose\fR]} + +.SH OPTIONS + +.TP +.BR "\-V" , " -Version" +Print the version of the +.B smc +utility and exit. + +.TP +.BR "\-a", " \-absolute" +Print absolute statistic value (valid only for stats). + +.TP +.BR "\-v", " \-verbose" +Print detailed information. + +.TP +.BR "\-vv", " \-vverbose" +Print more detailed information. + +.SH SMC - COMMAND SYNTAX + +.SS +.I OBJECT + +.B device +Device(s) as used by SMC + +.TP +.B info +Generic SMC information + +.TP +.B linkgroup +Linkgroup(s) or link(s) as used by SMC + +.TP +.B stats +SMC statistics + +.PP +The names of all objects can be abbreviated down to +a unique stem. For example, +.B device +can be abbreviated to +.B dev +or just +.B d. +Man pages in +.B SEE ALSO +section contain more +information for individual objects. + +.SS +.I COMMAND + +Specifies the action to perform on the object. +The set of possible actions depends on the object type. +As a rule, it is possible to +.BR " show " or " link-show" +objects, but some objects do not allow all of these operations. The +.B help +command is available for all objects. It prints +out a list of available commands and argument syntax conventions. +.sp +If no command is given, a default command +is assumed. + +.SH RETURN CODES +Successful +.IR smc +commands return 0 and display the requested information. +If an error occurs, +.IR smc +writes a message to stderr and completes with a return code other than 0. +.P +.SH SEE ALSO +.BR af_smc (7), +.BR smc-device (8), +.BR smc-info (8), +.BR smc-linkgroup (8) +.BR smc-stats (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc.c b/testcases/feature-test/oeaware/smc-tools-main/smc.c new file mode 100644 index 000000000..3bff02d43 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc.c @@ -0,0 +1,157 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "libnetlink.h" +#include "util.h" +#include "linkgroup.h" +#include "dev.h" +#include "ueid.h" +#include "seid.h" +#include "info.h" +#include "stats.h" + +static int option_detail = 0; +#if defined(SMCD) +char *myname = "smcd"; +#elif defined(SMCR) +char *myname = "smcr"; +#else +char *myname = "smc"; +#endif + +static void version(void) +{ + fprintf(stderr, + "%s utility, smc-tools-%s\n", myname, RELEASE_STRING); + exit(-1); +} +static void usage(void) +{ + fprintf(stderr, + "Usage: %s [ OPTIONS ] OBJECT {COMMAND | help}\n" +#if defined(SMCD) + "where OBJECT := {info | linkgroup | device | stats | ueid | seid}\n" + " OPTIONS := {-v[ersion] | -d[etails] | -a[bsolute]}\n", myname); +#else + "where OBJECT := {info | linkgroup | device | stats | ueid}\n" + " OPTIONS := {-v[ersion] | -d[etails] | -dd[etails] | -a[bsolute]}\n", myname); +#endif +} + +static int invoke_help(int argc, char **argv, int k) +{ + usage(); + return 0; +} + +static const struct cmd { + const char *cmd; + int (*func)(int argc, char **argv, int option_detail); +} cmds[] = { + { "device", invoke_devs }, + { "linkgroup", invoke_lgs }, + { "info", invoke_info }, + { "stats", invoke_stats }, + { "ueid", invoke_ueid }, +#if defined(SMCD) + { "seid", invoke_seid }, +#endif + { "help", invoke_help }, + { 0 } +}; + +static int run_cmd(const char *argv0, int argc, char **argv) +{ + const struct cmd *c; + + for (c = cmds; c->cmd; ++c) { + if (contains(argv0, c->cmd) == 0) + return -(c->func(argc-1, argv+1, option_detail)); + } + +#if defined(SMCR) + /* Special warning for those who mixed up smcd and smcr */ + if (contains(argv0, "seid") == 0) { + fprintf(stderr, + "Error: Object \"%s\" is valid for SMC-D only, try \"%s help\".\n", + argv0, myname); + return EXIT_FAILURE; + } +#endif + + fprintf(stderr, "Error: Object \"%s\" is unknown, try \"%s help\".\n", argv0, myname); + return EXIT_FAILURE; +} + +int main(int argc, char **argv) +{ + int rc = 0; + + while (argc > 1) { + char *opt = argv[1]; + + if (strcmp(opt, "--") == 0) { + argc--; argv++; + break; + } + if (opt[0] != '-') + break; + if (opt[1] == '-') + opt++; + + if ((strncmp(opt, "-ad", 3) == 0) || (strncmp(opt, "-da", 3) == 0)) { + option_detail = SMC_OPTION_DETAIL_ABS; + } else if (contains(opt, "-absolute") == 0) { + option_detail = SMC_OPTION_ABS; + } else if (contains(opt, "-version") == 0) { + version(); + } else if (contains(opt, "-details") == 0) { + option_detail = SMC_DETAIL_LEVEL_V; + } else if (contains(opt, "-ddetails") == 0) { + option_detail = SMC_DETAIL_LEVEL_VV; + } else if (contains(opt, "-help") == 0) { + usage(); + goto out; + } else { + fprintf(stderr, + "Error: Option \"%s\" is unknown, try \"%s help\".\n", + opt, myname); + exit(-1); + } + argc--; argv++; + } + + if (gen_nl_open(myname)) + exit(1); + if (argc > 1) { + rc = run_cmd(argv[1], argc-1, argv+1); + goto out; + } + usage(); +out: + gen_nl_close(); + return rc; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_chk b/testcases/feature-test/oeaware/smc-tools-main/smc_chk new file mode 100755 index 000000000..ac005a37d --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_chk @@ -0,0 +1,572 @@ +#!/bin/bash + +# Copyright IBM Corp. 2021 + +VERSION="1.8.4"; + + +function usage() { + echo; + echo "Usage: smc_chk [OPTIONS] -C "; + echo " smc_chk [OPTIONS] -S"; + echo " smc_chk -i "; + echo; + echo "Check SMC setup"; + echo; + echo " -C, --connect connect to specified IP"; + echo " -d, --debug show debug messages"; + echo " -h, --help display this message"; + echo " -i, --pnetid print PNET ID and exit"; + echo " -p, --port use the next free port starting"; + echo " with PORT (default: $PRT_DFT)"; + echo " -S, --server start server only"; + echo " -v, --version display version info"; + echo " -6, --ipv6 IP address is IPv6"; + echo; +} + +function debug() { + if [ $dbg -gt 0 ]; then + echo "[DEBUG] $@"; + fi +} + +function get_free_port() { + local i; + + for ((i=$1;; i=i+1)); do + ss -tan | awk '{print($4)}' | sed 's/.*://' | sort | uniq | grep -w $i >/dev/null + [ $? -ne 0 ] && break + done + echo $i; +} + +# Params: +# $1 Port +# $2 Set to '-6' for IPv6 +function run_server() { + local i; + + cmd="smc_run $srv -p $1 $2"; + debug "Starting server: $cmd"; + $cmd >/dev/null 2>&1 & + pidsrv=$!; + for (( i=0; i<100; i++ )); do # wait 10s max + ss -tln | awk '{print($4)}' | sed 's/.*://' | grep -w $1 >/dev/null + [ $? -eq 0 ] && break; + sleep 0.1; + done +} + +# Implicit params: +# $1 IP +# $2 Port +# $3 Set to '-6' for IPv6 +function run_client() { + local mode; + local i; + + cmd="smc_run $clt $1 -p $2 $3"; + debug "Running client: $cmd"; + $cmd >/dev/null 2>&1 & + pidclt=$!; + for (( i=0; i<100; i++ )); do # wait 10s max + res="`smcss | awk -v id="$1:$2" '$5 == id {print($7" "$8)}'`"; + [ "$res" != "" ] && break; + sleep 0.1; + done + kill -INT $pidclt >/dev/null 2>&1; + debug "Client result: $res"; + if [ "$res" == "" ]; then + echo " Failed, no connection" + else + mode=`echo $res | awk '{print($1)}'`; + err_clt="`echo $res | awk '{print($2)}' | sed 's#/.*##'`"; + if [ `echo $res | awk '{print($2)}' | grep -c /` -eq 1 ]; then + err_srv="`echo $res | awk '{print($2)}' | sed 's#.*/##'`"; + else + err_srv=""; + fi + if [ "$mode" == "TCP" ]; then + echo " Failed (TCP fallback), reasons:" + res="`man smcss | grep $err_clt`"; + if [ "$res" == "" ]; then + res="$err_srv (Unkown error code)"; + fi + echo " Client: $res"; + if [ "$err_srv" != "" ]; then + res="`man smcss | grep $err_srv`"; + if [ "$res" == "" ]; then + res=" $err_srv (Unknown error code or non-Linux OS)"; + fi + echo " Server: $res"; + fi + else + echo " Success, using ${mode:0:3}-${mode:3:1}"; + fi + fi +} + +function is_python3_available() { + if ! which python3 >/dev/null; then + echo "Error: python3 is not available"; + signal_handler; + fi +} + +function init_server() { + if [ $init_srv -ne 0 ]; then + return; + fi + init_srv=1; + is_python3_available; + port=`get_free_port $port`; + port6=`get_free_port $(expr $port + 1)`; + srv=`mktemp /tmp/echo-srv.XXXXXX`; + cat <<-EOF > $srv +#!/usr/bin/env python3 + +import argparse +import signal +import socket +import sys + +def receiveSignal(signalNumber, frame): + if conn: + conn.close() + s.close() + sys.exit(0) + +signal.signal(signal.SIGINT, receiveSignal) +conn = None +parser = argparse.ArgumentParser(description='Echo server implemented in python3') +parser.add_argument('-p', '--port', required=True, dest='port', action='store', help='listen port') +parser.add_argument('-6', '--ipv6', dest='ipv6', action='store_true', help='IPv6 mode') +args = parser.parse_args() + +host = '' # Symbolic name meaning all available interfaces +if args.ipv6: + s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) +else: + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +s.bind((host, int(args.port))) +s.listen(1) +while True: + conn, addr = s.accept() + print('Connected from', addr) + while True: + data = conn.recv(1024) + if not data: + break + conn.close() +EOF + chmod +x $srv; +} + +function init_client() { + if [ $init_clt -ne 0 ]; then + return; + fi + init_clt=1; + is_python3_available; + clt=`mktemp /tmp/echo-clt.XXXXXX`; + cat <<-EOF > $clt +#!/usr/bin/env python3 + +import argparse +import socket +import signal +import sys +import time + +def receiveSignal(signalNumber, frame): + s.close() + sys.exit(0) + +signal.signal(signal.SIGINT, receiveSignal) +parser = argparse.ArgumentParser(description='Echo client implemented in python3') +parser.add_argument('-p', '--port', required=True, dest='port', action='store', help='target port') +parser.add_argument(dest='dest', action='store', help='destination address') +parser.add_argument('-6', '--ipv6', dest='ipv6', action='store_true', help='IPv6 mode') +args = parser.parse_args() + +if args.ipv6: + s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) +else: + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +s.connect((args.dest, int(args.port))) +time.sleep(10) +EOF + chmod +x $clt; +} + +function test_init() { + init_client; + init_server; +} + +function test_deinit() { + debug "Cleaning up PIDs: $pidsrv $pidsrv6 $pidclt"; + kill -INT $pidsrv 2>/dev/null + [ "$pidsrv6" != "" ] && kill -INT $pidsrv6 2>/dev/null + kill -INT $pidclt 2>/dev/null + [ "$clt" != "" ] && [ -e $clt ] && rm $clt; + [ "$srv" != "" ] && [ -e $srv ] && rm $srv; +} + +function signal_handler() { + test_deinit; + exit 1; +} + +function test_iface() { + local i; + + if [ $mode -eq $MODE_CONNECT ]; then + echo " Live test (SMC-D and SMC-R)"; + else + echo " Live test (SMC-D and SMC-R, EXPERIMENTAL)"; + fi + if [ "$1" != "" ]; then + debug "Determine IP for interface $1"; + ip="`get_netmasks $1 | head -1 | sed 's#/.*##'`"; + if [ "$ip" == "" ]; then + echo " No usable IP address configured, skipping"; + echo; + return; + fi + fi + if [[ $ip == *:* ]]; then + run_client $ip $port6 "-6"; + else + run_client $ip $port; + fi + echo; +} + +function get_netmasks() { + # filter out link-locals + ip addr show $1 | grep -we "inet[6]\?" | grep -v "scope link" | awk '{print($2)}'; +} + +function set_pnetid() { + debug "Determine PNET ID for $1"; + smc_rnics | grep -e "$1\$" >/dev/null; + if [ $? -eq 0 ]; then + # PCI device - use smc_rnics for easy PNET_ID access + debug "PCI device, retrieve PNET ID via smc_rnics"; + pnetid="`smc_rnics | grep -e "$1\$" | awk '{print($7)}'`"; + [ "$pnetid" != "" ] && return; + fi + if [ -e /sys/class/net/$1/device/portno ] && [ -e /sys/class/net/$1/device/chpid ]; then + # CCW device + debug "CCW device, retrieve PNET ID via sysfs"; + portno=`cat /sys/class/net/$1/device/portno`; + chpid=`cat /sys/class/net/$1/device/chpid`; + chpid=${chpid,,}; + pnetids="`cat /sys/devices/css0/chp0.$chpid/util_string | sed 's/\x0/\x40/g' | iconv -f IBM-1047 -t ASCII 2>/dev/null`"; + (( idx=16*$portno+1 )) + (( end=$idx+15 )) + pnetid="`echo "$pnetids" | cut -c $idx-$end | sed 's/ //g'`"; + [ "$pnetid" != "" ] && return; + fi + # Check for a software-defined PNET ID + debug "No luck so far - try the SW PNET table"; + pnetid="`smc_pnet | awk -v id="$1" '$2 == id {print($1)}'`"; + if [ "$pnetid" != "" ]; then + pnetid="$pnetid*"; + fi + debug "PNET ID is '$pnetid'"; +} + +function is_smcd_available() { + # Verify version availability via new 'smcd info' command + smcd info | grep -e "^SMC-D Features:" | grep -w "$1" >/dev/null + + return $?; +} + +# Returns ISM device with PNET ID == $1 +function set_ism() { + is_smcd_available "v1"; + [ $? -ne 0 ] && return; + ism="`smc_rnics | awk -v pn="$1" '$5 == "ISM" && $7 == pn {print($1)}' | sed 's/ $//'`"; +} + +# Returns all ISMv2-eligible devices (PNET ID not set or same as *some* NIC) +function set_ismv2() { + local pnet; + local i; + + is_smcd_available "v2"; + [ $? -ne 0 ] && return; + debug "Determine all PNET IDs in use"; + all_pnets="`smc_pnet | awk '{print($1)}'`"; + for i in `get_iface_realname`; do + set_pnetid $i; + all_pnets="$all_pnets"$'\n'"$pnetid"; + done + all_pnets="`echo "$all_pnets" | sort | uniq`"; + debug "All pnets found: `echo $all_pnets | tr '\n' ' '`"; + ismv2=""; + while read line; do + [ "$line" == "" ] && return; + pnet=`echo $line | awk '{print($2)}'`; + if [ "$pnet" != "n/a" ]; then + echo "$all_pnets" | grep -w $pnet >/dev/null; + [ $? -ne 0 ] && continue; + fi + ismv2="$ismv2 `echo $line | awk '{print($1)}'`"; + done <<< $(smc_rnics | awk '$5 == "ISM" {print($1" "$7)}') + ismv2="`echo $ismv2`"; # strip leading blank +} + +function get_mode_param() { + case $1 in + $MODE_STATIC) echo "'-s/--static-analysis'";; + $MODE_LIVE) echo "'-l/--live-test'";; + $MODE_PPNETID) echo "'-i/--pnetid'";; + $MODE_CONNECT) echo "'-C/--connect'";; + $MODE_SERVER) echo "'-S/--server'";; + esac +} + +function set_mode() { + if [ $mode -eq $1 ]; then + return; + fi + if [ $mode -eq $MODE_LIVE ] && [ $1 -eq $MODE_STATIC ]; then + mode=$MODE_ALL; + return; + fi + if [ $mode -lt 0 ]; then + mode=$1; + else + echo "Error: Cannot combine options `get_mode_param $mode` and `get_mode_param $1`"; + exit 1; + fi +} + +function analyze_iface() { + local smcd_configured=0; + local tab=0; + local i; + local TAB1=25; + local TAB2=25; + + echo " Static Analysis (SMC-D only, EXPERIMENTAL)"; + set_pnetid $1; + set_ism $pnetid; + + # SMC version + echo -n " Configuration: "; + if [ "$ism" != "" ]; then + smcd_configured=1; + tab=$TAB1; + echo "SMC-Dv1 (ISMv1 FID(s): $ism)"; + fi + if [ "$ismv2" != "" ]; then + smcd_configured=2; + printf "%*sSMC-Dv2 (ISMv2 FID(s): %s\n" $tab "" "$ismv2)"; + fi + if [ $smcd_configured -eq 0 ]; then + echo "SMC-D not configured"; + echo; + return; + fi + + # PNET ID + echo " PNET ID: $pnetid"; + + # (S) EID in use + tab=0; + smcd seid show >/dev/null 2>&1; + if [ $? -eq 0 ]; then + seid="`smcd seid show | awk '$2 == "[enabled]" {print($1)}'`"; + if [ "$seid" != "" ]; then + echo " Advertising SEID: $seid"; + fi + for i in `smcd ueid show`; do + [ $tab -eq 0 ] && echo -n " Advertising UEIDs: "; + printf "%*s%s\n" $tab " " $i; + tab=$TAB2; + done + fi + + # Reachable IP subnets + echo -n " Reachable subnets: "; + tab=0; + case $smcd_configured in + 0) echo "None";; # Shouldn't happen, but... + 1) for i in `get_netmasks $1`; do + printf "%*s%s\n" $tab "" $i; + tab=$TAB1; + done;; + 2) echo "Any";; + esac + + echo; +} + +# Returns the real name of interface $1 (in case $1 is an altname) +# Call with $1 == "" for a list of all interfaces +# Call with $1 == "up" for a list of all active interfaces +function get_iface_realname() { + ip link show $1 | grep -e "^[0-9]\+:" | awk '{print($2)}' | sed s'/:$//'; +} + + +trap signal_handler SIGINT SIGTERM; +pid=""; +pidclt=""; +pidsrv=""; +pidsrv6=""; +MODE_ALL=0; +MODE_STATIC=1; +MODE_LIVE=2; +MODE_PPNETID=3; +MODE_CONNECT=4; +MODE_SERVER=5; +MODE_DFT=$MODE_LIVE; +PRT_DFT=37373 +port=$PRT_DFT; +ipv6=""; +fb=$(tput bold 2>/dev/null) # bold font +fn=$(tput sgr0 2>/dev/null) # normal font +init_clt=0; +init_srv=0; +args=`getopt -u -o C:dhi:lp:sSv6 -l connect:,debug,help,port:,pnetid:,server,static-analysis,live-test,version,ipv6 -- $*`; +[ $? -ne 0 ] && exit 2; +set -- $args; +tgt=""; +mode=-1; +dbg=0; +rc=0; +while [ $# -gt 0 ]; do + case $1 in + "-C" | "--connect" ) + set_mode $MODE_CONNECT; + ip="`getent ahosts $2 | awk '{print($1)}' | head -1`"; + if [ "$ip" == "" ]; then + echo "Error: Unknown destination '$2'"; + exit 1; + fi + ifaces="`ip route get $ip 2>/dev/null | grep -oP '(?<=dev )\w+'`"; + if [ "$ifaces" == "" ]; then + echo "Error: No route to host: $2"; + exit 1; + fi + shift;; + "-d" | "--debug" ) + let dbg++;; + "-h" | "--help" ) + usage; + exit 0;; + "-i" | "--pnetid" ) + set_mode $MODE_PPNETID; + tgt="$2"; + shift;; + "-l" | "--live-test" ) + set_mode $MODE_LIVE;; + "-p" | "--port" ) + port="$2"; + shift;; + "-s" | "--static-analysis" ) + set_mode $MODE_STATIC;; + "-S" | "--server" ) + set_mode $MODE_SERVER; + ifaces="`ip link show up | head -1 | awk '{print($2)}' | sed s'/:$//'`";; + "-v" | "--version" ) + echo "smc_chk utility, smc-tools-$VERSION"; + exit 0;; + "-6" | "--ipv6" ) + ipv6="-6";; + "--" ) ;; + * ) + if [ $mode == $MODE_PPNETID ]; then + echo "Error: Option -P/--print-PNETID takes no extra targets"; + exit 1; + fi + if [ "$tgt" == "" ]; then + tgt="$1"; + else + tgt="$tgt $1"; + fi + esac + shift +done + +if [ $mode -lt 0 ]; then + usage; + exit 0; +fi + +if [ $mode -le $MODE_PPNETID ]; then + if [ "$tgt" != "" ]; then + ipv6=""; # we got an interface - if '-6' was specified, it is moot + up="up"; + for i in $tgt; do + ip link show $i >/dev/null 2>&1; + if [ $? -ne 0 ]; then + echo "Error: Interface $i does not exist"; + exit 1; + fi + if [ $mode -ne $MODE_PPNETID ]; then + if [ `ip link show up $i | wc -l` -eq 0 ]; then + echo "Error: $i is not an active interface"; + exit 2; + fi + fi + done + ifaces="$tgt"; + else + ifaces="`get_iface_realname "up"`"; + fi +fi +debug "Interfaces to check: $ifaces"; + +if [ $mode -eq $MODE_ALL ] || [ $mode -eq $MODE_LIVE ]; then + test_init; + run_server $port6 "-6"; # We cannot know whether we need to check an interface with IPv6, + pidsrv6=$pidsrv; # so we start servers for both to be on the safe side + run_server $port; +fi + +for i in $ifaces; do + i=`get_iface_realname $i`; + case $mode in + $MODE_ALL ) + echo "Checking active link: ${fb}$i${fn}"; + analyze_iface $i; + test_iface $i;; + $MODE_STATIC ) + echo "Checking active link: ${fb}$i${fn}"; + set_ismv2; + analyze_iface $i;; + $MODE_LIVE ) + echo "Checking active link: ${fb}$i${fn}"; + test_iface $i;; + $MODE_PPNETID ) + set_pnetid $i; + [ "$pnetid" != "" ] && echo $pnetid;; + $MODE_CONNECT ) + echo "Test with target IP $ip and port $port"; + port6=$port; + init_client; + test_iface;; + $MODE_SERVER ) + init_server $port; + if [ "$ipv6" == "" ]; then + run_server $port; + p=$port; + else + run_server $port6 "-6"; + p=$port6; + fi + echo "Server started on port $p"; + wait $pidsrv;; + esac +done +test_deinit; + +exit 0; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 new file mode 100644 index 000000000..aada36c0a --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 @@ -0,0 +1,115 @@ +.\" Copyright IBM Corp. 2021 + +.TH SMC_CHK 8 "January 2021" "smc-tools" "Linux Programmer's Manual" + + +.SH NAME +smc_chk \- SMC support diagnostics + + +.SH SYNOPSIS +.nf +.BI "smc_chk [OPTIONS] -C " IP +.BI "smc_chk [OPTIONS] -S" +.BI "smc_chk -i "INTERFACE + +.SH DESCRIPTION +Use +.B -C/--connect +to obtain diagnostic information about the SMC support of a service that runs at a +given +.IR IP +address. +Otherwise, you can use +.B -S/--server +to start a server before connecting with +.IR -C . +Use +.B -i/--pnetid +to print the PNET ID of a specified +.IR INTERFACE . + + +.SH OPTIONS +.TP +.BI "\-C, \-\-connect " IP +Test SMC-D and SMC-R connectivity to +.IR IP . +Use option +.B -p/--port +to specify a +.IR PORT . +.I IP +can specify any service, including remote services. +By default, +.I IP +is assumed to be in IPv4 format. +Specify +.B -6/--IPv6 +if +.I IP +is an address in IPv6 format. +.TP +.BR "\-d, \-\-debug " +Show debug messages. +.TP +.BR "\-h, \-\-help" +Display a brief +.B smc_chk +usage information. +.TP +.BI "\-i, \-\-pnetid " INTERFACE +Print the PNET ID of interface +.I INTERFACE +and exit. An appended asterisk * indicates that the PNET ID was defined via +.BR smc_pnet . +.TP +.BI "\-p, \-\-port " PORT +Use port +.I PORT +for any live tests. When starting a server via +.BR "\-S, \-\-server" , +and if +.I PORT +is already in use, the next free port is used. +.TP +.BR "\-S, \-\-server" +Start a server for manual tests. Use option +.B -p/--port +to specify a port. +.TP +.BR "\-v, \-\-version" +Display version information. +.TP +.BR "\-6, \-\-ipv6" +.I IP +address provided is in IPv6 format. + + +.SH Examples +.SS "Check whether a z/OS instance running at 192.168.37.1 is enabled for \ +SMC using the 3270 console service running on port 23" +smc_chk -C 192.168.37.1 -p 23 + +.SS "Print PNET ID of interface eth0" +smc_chk -i eth0 + +.SS "Start server on port 45901 (or the next successive free port) for smc_chk -C to connect to" +smc_chk -S -p 45901 + + +.SH RETURN CODES +On success, +.B smc_chk +returns 0. +If an error occurs, a return code other than 0 is returned. +.P + + +.SH SEE ALSO +.BR af_smc (7), +.BR smc_pnet (8), +.BR smc_run (8), +.BR smcd (8), +.BR smcr (8), +.BR smcss (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_dbg b/testcases/feature-test/oeaware/smc-tools-main/smc_dbg new file mode 100755 index 000000000..c1bb756ca --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_dbg @@ -0,0 +1,113 @@ +#!/bin/bash + +# Copyright IBM Corp. 2019 + +VERSION="1.8.4"; + + +function usage() { + echo; + echo "Usage: smc_dbg [ OPTIONS ]"; + echo; + echo "Collect debug information"; + echo; + echo " -h, --help display this message"; + echo " -t, --tgz generate .tgz file"; + echo " -v, --version display version info"; + echo; +} + +function redirect() { + if [ "$tgz" == "on" ]; then + exec &>$tmpdir/$1; + else + echo; + fi +} + +tgz="off"; +ARCH=`uname -m | cut -c1-4`; +args=`getopt -u -o hvt -l help,version,tgz -- $*`; +[ $? -ne 0 ] && exit 1; +set -- $args; +while [ $# -gt 0 ]; do + case $1 in + "-h" | "--help" ) + usage; + exit 0;; + "-t" | "--tgz" ) + tgz="on";; + "-v" | "--version" ) + echo "smc_dbg utility, smc-tools-$VERSION"; + exit 0;; + * ) + esac + shift; +done +if [ "$tgz" == "on" ]; then + exec 3>&1 4>&2 + tmpdir=`mktemp -d /tmp/smc_dbg-XXXXXX`; +fi + +redirect version.txt; +smcss -v +smc_dbg -v +smc_pnet -v +smc_rnics -v +smc_chk -v +smcd -v +smcr -v + +if [ "$ARCH" == "s390" ]; then + redirect devices.txt; + echo "CCW Devices:" + printf " Device CHPID Port PNET ID\n"; + echo " -------------------------------------------"; + for device in `ls -1 /sys/bus/ccwgroup/devices`; do + chpid=`cat /sys/bus/ccwgroup/devices/$device/chpid | tr [A-F] [a-f]`; + osaport=`cat /sys/bus/ccwgroup/devices/$device/portno`; + iface=`cat /sys/bus/ccwgroup/devices/$device/if_name`; + printf " %8s %4s %-4s %s\n" $device 0x$chpid $osaport `smc_chk -i $iface`; + done + echo; + + echo "PCI Devices:" + smc_rnics | sed 's/^/ /'; + + redirect smcss_smcd; + smcss --smcd; +fi + +redirect smcss_all.txt; +smcss --all --debug; + +redirect smcss_smcr; +smcss --smcr; + +redirect pnet_table.txt; +smc_pnet --show; + +redirect smcr_links.txt; +smcr -d linkgroup link-show; + +redirect smcd_lgs.txt; +smcd -d linkgroup show; + +redirect smcd_info.txt; +smcd info; + +redirect smcd_stats.txt; +smcd -d stats; + +redirect smcr_stats.txt; +smcr -d stats; + + +if [ "$tgz" == "on" ]; then + exec >&3 2>&4 + cd /tmp; + tar cvfz $tmpdir.tgz `basename $tmpdir` >/dev/null 2>&1; + rm -rf $tmpdir; + echo "Debug output written to $tmpdir.tgz"; +fi +exit 0; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 new file mode 100644 index 000000000..233c219ab --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 @@ -0,0 +1,177 @@ +.\" smc_pnet.8 +.\" +.\" +.\" Copyright IBM Corp. 2017, 2019 +.\" Author(s): Thomas Richter +.\" Ursula Braun +.\" ---------------------------------------------------------------------- +.\" + +.TH SMC_PNET 8 "January 2017" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smc_pnet \- create, destroy, and change the SMC PNET table + +.SH SYNOPSIS + +.B smc_pnet +{ \fB\-a\fR | \fB\-\-add\fR \fI\fR } +{ \fB\-I\fR | \fB\-\-interface\fR } +.P +.B smc_pnet +{ \fB\-a\fR | \fB\-\-add\fR \fI\fR } +{ \fB\-D\fR | \fB\-\-ibdevice\fR } +[ \fB\-P\fR | \fB\-\-ibport\fR ] +.P +.B smc_pnet +{ \fB\-a\fR | \fB\-\-add\fR \fI\fR } +{ \fB\-I\fR | \fB\-\-interface\fR } +{ \fB\-D\fR | \fB\-\-ibdevice\fR } +[ \fB\-P\fR | \fB\-\-ibport\fR ] +.P +.B smc_pnet +{ \fB\-s\fR | \fB\-\-show\fR \fI\fR } +.P +.B smc_pnet +{ \fB\-d\fR | \fB\-\-delete\fR \fI\fR } +.P +.B smc_pnet +{ \fB\-f\fR | \fB\-\-flush\fR } +.P +.B smc_pnet +{ \fB\-v\fR | \fB\-\-version\fR } +.P +.B smc_pnet +{ \fB\-h\fR | \fB\-\-help\fR } + +.SH DESCRIPTION +The SMC protocol requires grouping of standard Ethernet and RoCE networks or ISM +devices. +Such groups are called \fIPhysical Networks\fR (PNETs). The mapping is configured +within a table called \fIpnet table\fR. Any available Ethernet interface can be +combined with an available RDMA-capable network interface card (RNIC) or a +DMA-capable ISM device, if they +belong to the same Converged Ethernet fabric. To configure mapping of a RoCE Adapter +port or an ISM device to a standard Ethernet interface, both devices need to have +the same PNET ID; either hardware-defined or user-defined using the pnet table. +Hardware-defined PNET IDs cannot be overwritten. +.P +The +.B smc_pnet +command configures the pnet table. + +.SH OPTIONS +By default, +.B smc_pnet +shows all entries of the pnet table. +.TP +.IR +defines a name for a grouping of Ethernet interface and RNICs or ISM devices. +A PNET ID consists of up to 16 alphanumeric uppercase characters without blanks. +.TP +.BR "\-a, \-\-add" +creates a new PNET ID definition to the pnet table (if it does not already exist). +Only one PNET ID can be defined for a certain +Ethernet interface, a certain InfiniBand device port or a certain ISM device. +Adding more than one PNET ID fails. Hardware defined PNET IDs cannot be overwritten. +.TP +.BR "\-s, \-\-show" +shows a certain PNET ID definition in the pnet table. +.TP +.BR "\-d, \-\-delete" +deletes an existing PNET ID definition from the pnet table. +.TP +.BR "\-f, \-\-flush" +removes all PNET ID definitions from the pnet table. +.TP +.BR "\-I, \-\-interface " +specifies the name of the Ethernet interface to be added for a certain PNET +ID +definition. +.TP +.BR "\-D, \-\-ibdevice " +specifies the ID of the InfiniBand device or ISM device. +.TP +.BR "\-P, \-\-ibport " +specifies the port number of the InfiniBand device port. Valid numbers are +1 or 2. +The default value is 1. +.TP +.BR "\-v, \-\-version" +displays smc_pnet program version. +.TP +.BR "\-h, \-\-help" +displays a brief smc_pnet usage information. + +.SH EXAMPLES +.B Define PNET ID ABC for the ethernet device names encf500 and bond0, and define +.B PNET ID ABC for the InfiniBand device ID 0001:00:00.0 (port 2) and the ISM +.B device ID 0004:00:00.0: +.RS 4 +.PP +.nf +$ smc_pnet \-a ABC \-I encf500 +$ smc_pnet \-a ABC \-I bond0 +$ smc_pnet \-a ABC \-D 0001:00:00:00.0 \-P 2 +$ smc_pnet \-a ABC \-D 0004:00:00:00.0 +.RE +.PP +. +.B Show all pnet table entries: +.RS 4 +.PP +.nf +$ smc_pnet +ABC encf500 n/a 255 +ABC bond0 n/a 255 +ABC n/a 0001:00:00.0 2 +ABC n/a 0004:00:00.0 1 +.RE +.PP +. +.B Define PNET ID XYZ for the ethernet interface name vlan0201 and the InfiniBand +.B device ID 0001:00:00.0 (port 1): +.RS 4 +.PP +$ smc_pnet \-a XYZ \-I vlan0201 \-D 0001:00:00.0 \-P 1 +.RE +.PP +. +.B Show all entries for PNET ID XYZ: +.RS 4 +.PP +.nf +$ smc_pnet \-s XYZ +XYZ vlan0201 n/a 255 +XYZ n/a 0001:00:00.0 1 +.RE +.PP +. +.B Delete all pnet table entries with PNET ID named ABC: +.RS 4 +.PP +$ smc_pnet \-d ABC +.RE +.PP +. +.B Delete all entries in the pnet table: +.RS 4 +.PP +$ smc_pnet \-f +.RE +.PP +. +. +.SH RETURN CODES +Successful \fBsmc_pnet\fR commands return 0. +If an error occurs, \fBsmc_pnet\fR writes a message to stderr and +completes with a return code other than 0. +.P +.SH SEE ALSO +.BR af_smc (7), +.BR smc_chk (8) +.BR smc_rnics (8), +.BR smc_run (8), +.BR smcd (8), +.BR smcr (8), +.BR smcss (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c b/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c new file mode 100644 index 000000000..25ed2da49 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c @@ -0,0 +1,369 @@ +/* + * Shared Memory Communications over RDMA (SMC-R) and RoCE + * + * Copyright IBM Corp. 2017 + * + * Author(s): Thomas Richter + * + * User space program for SMC-R PNET Table manipulation with generic netlink. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "smctools_common.h" + +static char *progname; + +static struct pnetentry { + char *pnetid; /* Pnetid */ + char *ethname; /* Ethernet device name */ + char *ibname; /* Infiniband/ISM device name */ + int ibport; /* Infiniband device port number */ + unsigned char cmd; /* Command to execute */ +} pnetcmd; + +static void _usage(FILE *dest) +{ + fprintf(dest, +"Usage: %s [ OPTIONS ] [pnetid]\n" +"\t-h, --help this message\n" +"\t-v, --version show version information\n" +"\t-a, --add add a pnetid entry, requires interface or ib/ism device\n" +"\t-d, --delete delete a pnetid entry\n" +"\t-s, --show show a pnetid entry\n" +"\t-f, --flush flush the complete pnet table\n" +"\t-I, --interface Ethernet interface name of a pnetid entry\n" +"\t-D, --ibdevice Infiniband/ISM device name of a pnetid entry\n" +"\t-P, --ibport Infiniband device port (default: 1)\n" +"\t\n" +"\tno OPTIONS show complete pnet table\n", + progname); +} + +static void help(void) __attribute__((noreturn)); +static void help(void) +{ + _usage(stdout); + exit(EXIT_SUCCESS); +} + +static void usage(void) __attribute__((noreturn)); +static void usage(void) +{ + _usage(stderr); + exit(EXIT_FAILURE); +} + +static int convert(char *string) +{ + unsigned long no; + char *endp; + + no = strtoul(string, &endp, 0); + if (*endp != '\0' || no > 2) { + fprintf(stderr, "%s invalid ib port:%s\n", progname, string); + usage(); + } + return no; +} + +static const struct option long_opts[] = { + { "interface", 1, 0, 'I' }, + { "ibdevice", 1, 0, 'D' }, + { "ibport", 1, 0, 'P' }, + { "flush", 0, 0, 'f' }, + { "add", 0, 0, 'a'}, + { "show", 0, 0, 's'}, + { "delete", 0, 0, 'd'}, + { "version", 0, 0, 'v' }, + { "help", 0, 0, 'h' }, + { NULL, 0, NULL, 0} +}; + +static struct nla_policy smc_pnet_policy[SMC_PNETID_MAX + 1] = { + [SMC_PNETID_NAME] = { + .type = NLA_STRING, + .maxlen = 17 + }, + [SMC_PNETID_ETHNAME] = { + .type = NLA_STRING, + .maxlen = 16 + }, + [SMC_PNETID_IBNAME] = { + .type = NLA_STRING, + .maxlen = 64 + }, + [SMC_PNETID_IBPORT] = { + .type = NLA_U8, + .maxlen = 1 + } +}; + + +/* Netlink library call back handler to be called on data reception. */ +static int cb_handler(struct nl_msg *msg, void *arg) +{ + struct nlattr *attrs[SMC_PNETID_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + + if (genlmsg_validate(hdr, 0, SMC_PNETID_MAX, smc_pnet_policy) || + genlmsg_parse(hdr, 0, attrs, SMC_PNETID_MAX, smc_pnet_policy) < 0) { + fprintf(stderr, "%s: invalid data returned\n", progname); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + printf("%s %s %s %d\n", nla_get_string(attrs[SMC_PNETID_NAME]), + nla_get_string(attrs[SMC_PNETID_ETHNAME]), + nla_get_string(attrs[SMC_PNETID_IBNAME]), + nla_get_u8(attrs[SMC_PNETID_IBPORT])); + return NL_OK; +} + +static int genl_command(void) +{ + int rc = EXIT_FAILURE, id, nlmsg_flags = 0; + struct nl_sock *sk; + struct nl_msg *msg; + + /* Allocate a netlink socket and connect to it */ + sk = nl_socket_alloc(); + if (!sk) { + nl_perror(NLE_NOMEM, progname); + return rc; + } + rc = genl_connect(sk); + if (rc) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out1; + } + id = genl_ctrl_resolve(sk, SMCR_GENL_FAMILY_NAME); + if (id < 0) { + rc = EXIT_FAILURE; + if (id == -NLE_OBJ_NOTFOUND) + fprintf(stderr, "%s: SMC module not loaded\n", + progname); + else + nl_perror(id, progname); + goto out2; + } + nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, NULL); + + /* Allocate a netlink message and set header information. */ + msg = nlmsg_alloc(); + if (!msg) { + nl_perror(NLE_NOMEM, progname); + rc = EXIT_FAILURE; + goto out2; + } + + if ((pnetcmd.cmd == SMC_PNETID_DEL || pnetcmd.cmd == SMC_PNETID_GET) && + !pnetcmd.pnetid) /* List all */ + nlmsg_flags = NLM_F_DUMP; + + if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, id, 0, nlmsg_flags, + pnetcmd.cmd, SMCR_GENL_FAMILY_VERSION)) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out3; + } + + switch (pnetcmd.cmd) { /* Start message construction */ + case SMC_PNETID_ADD: + if (pnetcmd.ethname) + rc = nla_put_string(msg, SMC_PNETID_ETHNAME, + pnetcmd.ethname); + if (rc < 0) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out3; + } + + if (pnetcmd.ibname) + rc = nla_put_string(msg, SMC_PNETID_IBNAME, + pnetcmd.ibname); + if (rc < 0) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out3; + } + + if (pnetcmd.ibname) + rc = nla_put_u8(msg, SMC_PNETID_IBPORT, pnetcmd.ibport); + if (rc < 0) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out3; + } + /* Fall through intended */ + case SMC_PNETID_DEL: + case SMC_PNETID_GET: + if (!pnetcmd.pnetid) /* List all */ + break; + rc = nla_put_string(msg, SMC_PNETID_NAME, pnetcmd.pnetid); + if (rc < 0) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out3; + } + } + + /* Send message */ + rc = nl_send_auto(sk, msg); + if (rc < 0) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out3; + } + + /* Receive reply message, returns number of cb invocations. */ + rc = nl_recvmsgs_default(sk); + /* Kernel commit a9d8b0b1e3d689346b016316bd91980d60c6885d + * introduced a misbehavior that a FLUSH of an empty table + * returned -ENOENT. Fix it in smc-tools as long as kernel patch did'nt + * land in the distros. + */ + if (pnetcmd.cmd == SMC_PNETID_FLUSH && rc != -NLE_OBJ_NOTFOUND) + rc = 0; + if (rc < 0) { + nl_perror(rc, progname); + rc = EXIT_FAILURE; + goto out3; + } + rc = EXIT_SUCCESS; +out3: + nlmsg_free(msg); +out2: + nl_close(sk); +out1: + nl_socket_free(sk); + return rc; +} + +int main(int argc, char **argv) +{ + char *slash; + int rc, ch; + + progname = (slash = strrchr(argv[0], '/')) ? slash + 1 : argv[0]; + while ((ch = getopt_long(argc, argv, "I:D:P:fasdhv", long_opts, + NULL )) != EOF) { + switch (ch) { + case 'f': + if (pnetcmd.cmd) + usage(); + pnetcmd.cmd = SMC_PNETID_FLUSH; + break; + case 's': + if (pnetcmd.cmd) + usage(); + pnetcmd.cmd = SMC_PNETID_GET; + pnetcmd.pnetid = optarg; + break; + case 'd': + if (pnetcmd.cmd) + usage(); + pnetcmd.cmd = SMC_PNETID_DEL; + pnetcmd.pnetid = optarg; + break; + case 'a': + if (pnetcmd.cmd) + usage(); + pnetcmd.cmd = SMC_PNETID_ADD; + pnetcmd.pnetid = optarg; + break; + case 'I': + pnetcmd.ethname = optarg; + break; + case 'D': + pnetcmd.ibname = optarg; + break; + case 'P': + pnetcmd.ibport = convert(optarg); + break; + case 'v': + printf("smc_pnet utility, smc-tools-%s\n", + RELEASE_STRING); + exit(0); + case 'h': + help(); + case '?': + default: + usage(); + } + } + + if (optind + 1 < argc) { + fprintf(stderr, "%s too many parameters\n", progname); + usage(); + } + if (optind + 1 == argc) + pnetcmd.pnetid = argv[optind]; + if (!pnetcmd.cmd) { + if (optind < argc) { + fprintf(stderr, "%s: parameters without option\n", + progname); + usage(); + } + pnetcmd.cmd = SMC_PNETID_GET; + } + if (pnetcmd.cmd == SMC_PNETID_FLUSH) { + if (optind < argc) { + fprintf(stderr, "%s: -f takes no parameters\n", + progname); + usage(); + } + } + + if (pnetcmd.cmd == SMC_PNETID_ADD) { + if (!pnetcmd.ethname && !pnetcmd.ibname) { + fprintf(stderr, "%s: interface or device missing\n", + progname); + usage(); + } + if (!pnetcmd.ibport) + pnetcmd.ibport = 1; + } + + if (pnetcmd.cmd == SMC_PNETID_GET || pnetcmd.cmd == SMC_PNETID_DEL) { + if (pnetcmd.ethname) { + fprintf(stderr, "%s: interface %s ignored\n", progname, + pnetcmd.ethname); + pnetcmd.ethname = NULL; + } + if (pnetcmd.ibname) { + fprintf(stderr, "%s: device %s ignored\n", progname, + pnetcmd.ibname); + pnetcmd.ibname = NULL; + } + if (pnetcmd.ibport) { + fprintf(stderr, "%s: ibport %d ignored\n", progname, + pnetcmd.ibport); + pnetcmd.ibport = 0; + } + } + rc = genl_command(); + return rc; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_rnics b/testcases/feature-test/oeaware/smc-tools-main/smc_rnics new file mode 100755 index 000000000..6359cab2c --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_rnics @@ -0,0 +1,301 @@ +#!/bin/bash + +# Copyright IBM Corp. 2018, 2022 + +VERSION="1.8.4"; + + +function usage() { + echo; + echo "Usage: smc_rnics [ OPTIONS ] [ FID ]"; + echo; + echo "List RNICs"; + echo; + echo " -a, --all include disabled devices in output"; + echo " -d, --disable disable the specified FID"; + echo " -e, --enable enable the specified FID"; + echo " -h, --help display this message"; + echo " -I, --IB-dev display IB-dev instead of netdev attributes"; + echo " -r, --rawids display 'type' as raw vendor/device IDs"; + echo " -v, --version display version info"; + echo; +} + +function print_header() { + if [ $IBdev -eq 0 ]; then + printf " FID Power PCI_ID PCHID Type PPrt PNET_ID Net-Dev\n"; + else + printf " FID Power PCI_ID PCHID Type IPrt PNET_ID IB-Dev\n"; + fi + echo '------------------------------------------------------------------------------------------'; +} + +function get_softset_pnet_id() { + local res="n/a"; + local line; + local id; + local iface; + local dev; + local prt; + + while read -r line; do + read id iface dev prt <<< $line; + if [[ ("$iface" != "n/a" && "$iface" == "$int") || ("$dev" != "n/a" && "$dev" == "$addr") ]]; then + if [ "$prt" != "255" ] && [ "$prt" != "$iport" ]; then + continue; + fi + res="$id*"; + fi + done <<< "$(smc_pnet)" + + echo "$res"; +} + +function get_pnet_from_port() { + local idx; + local end; + local lport=$port; + local iport; + local res; + + if [ "$lport" == "" ]; then + echo ""; + return; + fi + if [ "$lport" == "n/a" ] || [ "$dev_type" != "RoCE_Express" ]; then + lport=0; + else + [ $IBdev -ne 0 ] && let lport=$lport-1; + fi + (( iport=$lport+1 )) + (( idx=16*$lport+1 )) + (( end=$idx+15 )) + res="`echo "$pnetids" | cut -c $idx-$end | sed 's/ //g'`"; + if [ "$res" == "" ]; then + res="`get_softset_pnet_id`"; + fi + echo $res; +} + +function print_rnic() { + printf "%8x %-5s %-12s %-4s %-14s %-4s %-17s %s\n" "$((16#$fid))" "$power" "$addr" "$pchid" "$dev_type" "$port" "`get_pnet_from_port`" "$int"; + (( printed++ )); +} + +function set_RoCE_dev_and_port() { + dev_type="$1"; + if [ -e port ]; then + port=`cat port`; + if [ $port -eq 0 ]; then + port="n/a"; + else + if [ $IBdev -eq 0 ]; then + let port=$port-1; + else + port=1; + fi + fi + fi; +} + +function set_by_firmware_lvl() { + local iface; + local name; + local lvl; + + name="Mlx_$id"; + which ethtool >/dev/null 2>&1; + if [ $? -eq 0 ] && [ "$int" != "n/a" ] && [ -d "net" ]; then + iface="`ls -1 net | head -1`"; + lvl="`ethtool -i $iface | grep -e "^firmware-version:" | awk '{print($2)}'`"; + if [ "${lvl%%.*}" == "22" ]; then + name="RoCE_Express3"; + fi + fi + set_RoCE_dev_and_port $name; +} + +function print_rnics() { + # iterate over slots, as powered-off devices won't show elsewhere + for fid in `ls -1 /sys/bus/pci/slots`; do + cd /sys/bus/pci/slots/$fid; + fid="$fid"; + if [ "$target" != "" ] && [ "$fid" != "$target" ]; then + continue; + fi + power=`cat power`; + interfaces=""; + port="n/a"; + addr=""; + int=""; + if [ $power -eq 0 ]; then + # device not yet hotplugged + if [ $all -ne 0 ]; then + dev_type=""; + pchid=""; + pnet=""; + port=""; + print_rnic; + fi + continue; + fi + # device is hotplugged - locate it + for dev in `ls -1 /sys/bus/pci/devices`; do + cd /sys/bus/pci/devices/$dev; + if [ "`cat function_id`" == "0x$fid" ]; then + addr=$dev; + break; + fi + done + if [ "$addr" == "" ]; then + echo "Error: No matching device found for FID $fid" >&2; + continue; + fi + cd /sys/bus/pci/devices/$addr; + id=`cat device`; + vend=`cat vendor`; + dev_type="${vend#0x}:${id#0x}"; + if [ $rawIDs -eq 0 ]; then + case "$vend" in + "0x1014" ) # IBM + case "$id" in + "0x04ed") dev_type="ISM"; + int="n/a";; + *) + continue; + esac;; + "0x15b3" ) # Mellanox + case "$id" in + "0x1003" | \ + "0x1004") dev_type="RoCE_Express";; + "0x1016") set_RoCE_dev_and_port "RoCE_Express2";; + "0x101e") set_by_firmware_lvl;; + *) set_RoCE_dev_and_port "Mlx_$id";; + esac;; + *) [ $all -eq 0 ] && continue + esac + fi + pchid="`cat pchid | sed 's/^0x//'`"; + pnetids="`cat util_string | sed 's/\x0/\x40/g' | iconv -f IBM-1047 -t ASCII`"; + if [ $IBdev -eq 0 ]; then + if [ -d "net" ]; then + interfaces="`ls -1 net`"; + else + int="n/a"; + print_rnic; + continue; + fi + # one device can have multiple interfaces (one per port) + for int in $interfaces; do + cd /sys/bus/pci/devices/$addr/net/$int; + if [ "$dev_type" == "RoCE_Express" ] && [ -e dev_port ]; then + port=`cat dev_port`; + fi + print_rnic; + done + else + if [ -d "infiniband" ]; then + int="`ls -1 infiniband`"; + else + int="n/a"; + print_rnic; + continue; + fi + # only one IB interface per card + cd /sys/bus/pci/devices/$addr/infiniband/$int + for port in `ls -1 ports`; do + print_rnic; + done + fi + done +} + +function format_fid() { + res="${1#0x}"; + + if [[ ! "$res" =~ ^[[:xdigit:]]+$ ]]; then + printf "Error: '%s' is not a valid FID\n" "$res" >&2; + exit 3; + fi + + res="`printf "%08x" $((16#$res))`"; +} + +args=`getopt -u -o hIrvae:d: -l all,enable:,disable:,help,IB-dev,rawids,version -- $*`; +[ $? -ne 0 ] && exit 2; +set -- $args; +action="print"; +rawIDs=0; +all=0; +target=""; +IBdev=0; +printed=0; +while [ $# -gt 0 ]; do + case $1 in + "-a" | "--all" ) + all=1;; + "-e" | "--enable" ) + action="enable"; + fid=$2; + shift;; + "-d" | "--disable" ) + action="disable"; + fid=$2; + shift;; + "-h" | "--help" ) + usage; + exit 0;; + "-I" | "--IB-dev" ) + IBdev=1;; + "-r" | "--rawids" ) + rawIDs=1;; + "-v" | "--version" ) + echo "smc_rnics utility, smc-tools-$VERSION"; + exit 0;; + "--" ) ;; + * ) format_fid "$1"; + target="$res"; + esac + shift; +done + +if [ "`uname -m`" != "s390x" ] && [ "`uname -m`" != "s390" ]; then + printf "Error: s390/s390x supported only\n" >&2; + exit 1; +fi + +if [ "$action" != "print" ]; then + if [ "$target" != "" ]; then + usage; + exit 4; + fi + format_fid "$fid"; + fid="$res"; + ufid=`printf "%x" $((16#$fid))`; # representation without leading zeros + if [ ! -d /sys/bus/pci/slots/$fid ]; then + echo "Error: FID $ufid does not exist" >&2; + exit 5; + fi + power=`cat /sys/bus/pci/slots/$fid/power 2>/dev/null`; + val=0; + [ "$action" == "enable" ] && val=1; + if [ $power -eq $val ]; then + echo "Error: FID $ufid is already ${action}d" >&2; + exit 6; + fi + echo $val > /sys/bus/pci/slots/$fid/power 2>/dev/null; + if [ $? -ne 0 ]; then + echo "Error: Failed to $action FID $ufid" >&2; + exit 7; + fi + exit 0; +fi + +print_header; +print_rnics | sort -k 1; + +if [ "$target" != "" ] && [ $printed -eq 0 ]; then + exit 8; +fi + +exit 0; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 new file mode 100644 index 000000000..d4f4f1d7c --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 @@ -0,0 +1,123 @@ +.\" Copyright IBM Corp. 2018 + +.TH SMC_RNICS 8 "October 2018" "smc-tools" "Linux Programmer's Manual" + + +.SH NAME +smc_rnics \- list, enable and disable (R)NICS as used by SMC-R and SMC-D + + +.SH SYNOPSIS +.B smc_rnics +.RB [ \-ahrv ] +.RB [ \-d +.IR FID ] +.RB [ \-e +.IR FID ] +.RI [ FID ] + + +.SH DESCRIPTION +The SMC protocol requires an (R)NIC for the (R)DMA traffic. +Use +.B smc_rnics +to handle, and to identify hotplugged (R)NICs. + + +.SH OPTIONS +By default, +.B smc_rnics +shows all enabled (R)NICs in the system. +.TP +.I FID +Limit output to the specified function ID +.RI ( FID ). +.TP +.BR "\-a, \-\-all" +Include disabled and unknown devices in output +.TP +.BR "\-d, \-\-disable " \fIFID +Set (R)NIC +.I FID +offline. +.TP +.BR "\-e, \-\-enable " \fIFID +Set (R)NIC +.I FID +online. Note that devices other than (R)NICs are not displayed by default and +therefore, once enabled, will not appear in further output unless option +.BR -a +or +.BR -r +is specified. +.TP +.BR "\-h, \-\-help" +Display a brief +.B smc_rnics +usage information. +.TP +.BR "\-I, \-\-IB-dev" +Display IB device information. +.TP +.BR "\-r, \-\-rawids" +Display raw PCI vendor and device codes in column. Note that this will +also include unknown devices. +.TP +.BR "\-v, \-\-version" +Display version information. + +.SH OUTPUT +.SS "FID" +Function ID. + +.SS "Power" +Indicates whether the PCI slot is on (1) or off (0). See option +.B -e +on how to enable a device that is offline. + +.SS "PCI_ID" +PCI ID in BDF (Bus:Device.Function) notation. + +.SS "PCHID" +Physical channel identifier, or virtual channel identifier (VCHID) for +ISM devices. + +.SS "Type" +Device type in human readable form. See option +.B -r +to switch to display of PCI vendor and device instead. + +.SS "PPrt" +Corresponding physical port of an RNIC, if applicable. Starts counting at 0. + +.SS "IPrt" +Corresponding Infiniband port of an RNIC, if applicable. Starts counting at 1. + +.SS "PNET_ID" +Physical network ID. Has an asterisk +.B * +appended if defined via +.BR smc_pnet . + +.SS "Net-Dev" +Network interface in Linux, if applicable. + +.SS "IB-Dev" +Infiniband interface in Linux, if applicable. + + +.SH RETURN CODES +On success, +.B smc_rnics +returns 0. +If an error occurs, a return code other than 0 is returned. +.P + + +.SH SEE ALSO +.BR af_smc (7), +.BR smc_pnet (8), +.BR smc_run (8), +.BR smcd (8), +.BR smcr (8), +.BR smcss (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_run b/testcases/feature-test/oeaware/smc-tools-main/smc_run new file mode 100755 index 000000000..889462df9 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_run @@ -0,0 +1,85 @@ +#!/bin/bash +# +# SMC Tools - Shared Memory Communication Tools +# +# Copyright IBM Corp. 2017, 2018 +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +LIB_NAME="libsmc-preload.so" +VERSION="1.8.4"; + + +function usage() { + echo; + echo "Usage: smc_run [ OPTIONS ] COMMAND"; + echo; + echo "Run COMMAND using SMC for TCP sockets"; + echo; + echo " -d enable debug mode"; + echo " -h display this message"; + echo " -r request receive buffer size in Bytes"; + echo " -t request transmit buffer size in Bytes"; + echo " -v display version info"; +} + +function check_size() { + if [[ ! "$1" =~ ^[0-9]+[k|K|m|M]?$ ]]; then + echo "Error: Invalid buffer size specified: '$1'"; + exit 1; + fi + return +} + +function adjust_core_net_max() { + case ${2: -1} in + k | K) (( OPTARG=${2%?}*1024 ));; + m | M) (( OPTARG=${2%?}*1048576 ));; + *) + esac + if [ `sysctl -n net.core.$1_max` -lt $OPTARG ]; then + sysctl -w net.core.$1_max=$OPTARG >/dev/null; + fi +} + +# +# Verify command line arguments and specify the preload library debug mode +# if necessary. +# +SMC_DEBUG=0; +while getopts "dhr:t:v" opt; do + case $opt in + d) + SMC_DEBUG=1;; + h) usage; + exit 0;; + r) check_size $OPTARG; + adjust_core_net_max rmem $OPTARG; + export SMC_RCVBUF=$OPTARG;; + t) check_size $OPTARG; + adjust_core_net_max wmem $OPTARG; + export SMC_SNDBUF=$OPTARG;; + v) echo "smc_run utility, smc-tools-$VERSION"; + exit;; + \?) echo "`basename "$0"`: Error: Invalid option: -$OPTARG"; + exit 1;; + esac +done + +shift $(expr $OPTIND - 1); +if [ $# -eq 0 ]; then + echo "`basename "$0"`: Error: Missing command parameter"; + exit 1; +fi + +export SMC_DEBUG; +# +# Execute the specified command. +# +export LD_PRELOAD=$LD_PRELOAD:$LIB_NAME; + +exec "$@" +exit $?; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_run.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_run.8 new file mode 100644 index 000000000..7b579fb9d --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smc_run.8 @@ -0,0 +1,112 @@ +.\" smc_run.8 +.\" +.\" +.\" Copyright IBM Corp. 2017 +.\" Author(s): Ursula Braun +.\" ---------------------------------------------------------------------- +.\" +.TH SMC_RUN 8 "January 2017" "smc-tools" "Linux Programmer's Manual " +.SH NAME +smc_run \- start a TCP socket program with the capability to use SMC as +networking protocol + +.SH SYNOPSIS + +.B smc_run +.RB [ \-dhrtv ] [ \-r +.IR SIZE ] +.RB [-t +.IR SIZE ] +.I program +.I parameters + +.SH DESCRIPTION +.B smc_run +starts a +.IR program +specified as argument with its +.IR parameters , +allowing to use the SMC protocol for program-used TCP socket connections. +.br +The script specifies libsmc-preload.so as a preload shared library for the +Linux program loader, and may adjust transmit and receive buffer sizes to +.I SIZE +by setting socket options SO_RCVBUF and SO_SNDBUF respectively. +.I SIZE +can be specified in Bytes or using metric prefixes k and m, e.g. +8k...1024k/1m. +.br +The preload library libsmc-preload.so intercepts a few TCP socket calls and +triggers the equivalent execution through SMC. +.br +Note: If it is not possibile to use +.IR smc_run , +the libsmc-preload.so may be installed as apreload library via environment +variable LD_PRELOAD. Use environment varibles SMC_SNDBUF and SMC_RCVBUF to +request specific transmit and receive buffer sizes respectively. Supports +metric prefixes k and m. + +The following options can be specified: +.TP +.BR "\-d" +Display additional diagnostic messages during the program execution. +.TP +.BR "\-h" +Display a brief usage information. +.TP +.BR "\-r " \fISIZE +Request receive buffer size +.IR SIZE . +.br +.BR Notes : +.RS +.IP \[bu] 2 +May be overridden by the application. +.IP \[bu] +Increases net.core.rmem_max if necessary. +.RE +.TP +.BR "\-t " \fISIZE +Request transmit buffer size +.IR SIZE . +.br +.BR Notes : +.RS +.IP \[bu] 2 +May be overridden by the application. +.IP \[bu] +Increases net.core.wmem_max if necessary. +.RE +.TP +.BR "\-v" +Display version information. +.SH RETURN CODES +On success, the +.IR smc_run +command returns 0. +If an error occurs +.IR smc_run +writes a message to stdout and completes with a return code other +than 0. + +.TP +.B 1 +An invalid option was specified. +.P + +.SH EXAMPLES +.B Run program foo using SMC, requesting a receive buffer size of 512KB +.RS 4 +.PP +$ smc_run -r 512k ./foo +.P + +.SH SEE ALSO +.BR af_smc (7), +.BR smc_chk (8) +.BR smc_pnet (8), +.BR smc_rnics (8), +.BR smcd (8), +.BR smcr (8), +.BR smcss (8), +.BR tcp (7) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd b/testcases/feature-test/oeaware/smc-tools-main/smcd new file mode 100755 index 0000000000000000000000000000000000000000..3b7f16be19b954fd52630b2ffd9fd44a05388cc9 GIT binary patch literal 221344 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

-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%0Dc-ln$@M!tcF&i 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 qqQ?s3p7Xk1CK +.\" ---------------------------------------------------------------------- +.\" +.TH SMCD-DEVICE 8 "June 2020" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smcd-device \- Print information about SMC-D devices + +smcr-device \- Print information about SMC-R devices + +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smcd +.RI "[ " OPTIONS " ]" +.B device +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.ti -8 +.BR "smcd device" +.RI "[" +.B "show" +.RI "] [" +.B "all" +.RI "] " + +.ti -8 +.B smcr +.RI "[ " OPTIONS " ]" +.B device +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.ti -8 +.BR "smcr device" +.RI "[" +.B "show" +.RI "] [" +.B "all" +.RI "] [ " +.B netdev +.IR NETDEV " ] [ " +.B ibdev +.IR IBDEV " ] + +.SH "DESCRIPTION" +The +.B smcd device +command displays SMC-D devices and their properties. +The +.B smcr device +command displays SMC-R devices and their properties. + +.SS smcd,smcr device show +inspect the device properties + +.TP +.B all (default) +List all devices. + +.TP +.BI netdev " NETDEV" +.B SMC-R +only: limit the command output to the device with the specified network device name. + +.TP +.BI ibdev " IBDEV" +.B SMC-R +only: limit the command output to the device port with the specified RoCE device name. + +.SH OUTPUT + +.SS "Net-Dev" +Network device name. +.SS "IB-Dev" +RoCE (InfiniBand) device name. +.SS "IB-P" +InfiniBand port of the RoCE device. According to the InfiniBand conventions, the port count starts at 1. Consequently, devices where each port is represented as a separate device will indicate the port as the first port for all ports. +.SS "IB-State" +State of the RoCE device port. +.TP +.I +INACTIVE +The RoCE device port is inactive. +.TP +.I +ACTIVE +The RoCE device port is active. +.SS "Type" +Type of the underlying PCI device. +.TP +.I +RoCE_Express +Underlying used device is RoCE Express. +.TP +.I +RoCE_Express2 +Underlying used device is RoCE Express 2. +.TP +.I +ISM +Underlying used device is ISM. +.SS "Crit / InUse" +Show whether the device is critical i.e. without failover possibility(SMC-R) or +whether the device is in use.(SMC-D) +.TP +.I +Yes +For SMC-R, there is at least one link group running on the +device with state "SINGLE" or locally "ASYMMETRIC" which +means one or more link groups without a failover device in case of a link failure. +In case of SMC-D, there is at least one link group running on the +ISM device. +.TP +.I +No +For SMC-R, there is no link group running on the device with +state "SINGLE" or locally "ASYMMETRIC" which means the link group(s) +have a fallback device in case of a failure. +In case of SMC-D, there is no link group running on the ISM device. +.SS "FID" +Function ID of the PCI device. +.SS "PCI-ID" +ID of the PCI device. +.SS "PCHID" +Physical channel ID of the PCI device. +.SS "#Links" +Number of links (SMC-R)/link groups (SMC-D) on the device. +.SS "PNET-ID" +PNET ID of the device. Leading asterisk "*" means PNET ID is set by the user. (e.g "*PNET-ID") + +.SH "EXAMPLES" +.br +.HP 2 +1. Show all SMC-D devices: +.br +\fB# smcd device show all\fP +.br +.HP 2 +2. Show all SMC-R devices: +.br +\fB# smcr devices show all\fP +.br +.HP 2 +3. Show all SMC-R devices with RoCE (InfiniBand) device name "mlx4_0": +.br +\fB# smcr device show ibdev mlx4_0\fP +.br +.HP 2 +4. Show all SMC-R devices with network device name "eth0": +.br +\fB# smcr device show netdev eth0\fP +.br +.SH SEE ALSO +.br +.BR smcd (8), +.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 new file mode 100644 index 000000000..04e531e8a --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 @@ -0,0 +1,71 @@ +.\" smcd-info.8 +.\" +.\" +.\" Copyright IBM Corp. 2021 +.\" ---------------------------------------------------------------------- +.\" +.TH SMCD-INFO 8 "January 2021" "smc-tools" "Linux Programmer's Manual" + + +.SH NAME +smcd-info \- Print generic information about SMC + +smcr-info \- Print generic information about SMC + + +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smcd +.RI "[ " OPTIONS " ]" +.B info +.RI " { " +.BR show " | " +.BR help " }" +.sp + +.ti -8 +.B smcr +.RI "[ " OPTIONS " ]" +.B info +.RI " { " +.BR show " | " +.BR help " } " +.sp + + +.SH "DESCRIPTION" +The +.B smcd info +and +.B smcr info +commands display generic SMC information from the kernel and the hardware. + +.SS smcd,smcr info show +show the information output +.TP +.SS Kernel Capabilities +Shows the Linux kernel's SMC capabilities independent of any hardware +prerequisites +.TP +.SS Hardware Capabilities +Shows the hardware's capabilities independent of support in Linux + + +.SH "EXAMPLES" + +.HP 2 +1. Show the SMC information +.br +\fB# smcd info\fP +.br +\fB# smcr info\fP +.br + + +.SH SEE ALSO +.br +.BR smcd (8), +.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 new file mode 100644 index 000000000..f5b5eeba4 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 @@ -0,0 +1,222 @@ +.\" smcd-linkgroup.8 +.\" +.\" +.\" Copyright IBM Corp. 2020 +.\" Author(s): Guvenc Gulce +.\" ---------------------------------------------------------------------- +.\" +.TH SMCD-LINKGROUP 8 "June 2020" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smcd-linkgroup \- Print information about SMC-D link groups + +smcr-linkgroup \- Print information about SMC-R link groups and links + +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smcd +.RI "[ " OPTIONS " ]" +.B linkgroup +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.ti -8 +.BR "smcd linkgroup" " [ " show " ] [" +.B "all " +.RI "| " LG-ID " +.RI ] + +.ti -8 +.B smcr +.RI "[ " OPTIONS " ]" +.B linkgroup +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.ti -8 +.BR "smcr linkgroup" " { " show " | " link-show " } [" +.B "all " +.RI "| " LG-ID " ] [ " +.B netdev +.IR NETDEV " ] [ " +.B ibdev +.IR IBDEV " ] + +.SH "DESCRIPTION" +The +.B smcd linkgroup +command displays SMC-D link groups and their properties. +The +.B smcr linkgroup +command displays SMC-R link groups and links with their properties. + +.SS smcd,smcr linkgroup show +inspect the link group properties + +.TP +.B all (default) +Show all link groups. + +.TP +.I LG-ID +Show the link group with the ID +.I LG-ID + +.TP +.BI netdev " NETDEV" +.B SMC-R +only: list the link groups for the specified network device. + +.TP +.BI ibdev " IBDEV" +.B SMC-R +only: list the link groups for the specified RoCE device. + +.SS smcr linkgroup link-show +SMC-R only: Inspect the link properties + +.TP +.B all (default) +List all links of all link groups. + +.TP +.I LG-ID +Show links of the link group with the id. +.I LG-ID + +.TP +.BI netdev " NETDEV" +List the links of the link groups for the specified network device. + +.TP +.BI ibdev " IBDEV" +List the links of the link groups for the specified RoCE device. + +.SH OUTPUT + +.SS "LG-ID" +ID of the link group. +.SS "LG-Role" +Role of the link group. +.TP +.I +SERV +The link group has a SERVER role. +.TP +.I +CLNT +The link group has a CLIENT role. +.SS "LG-Type" +Type of the link group. +.TP +.I +NONE +The link group has the initial type. +.TP +.I +SINGLE +The link group has only a single link, i.e. +the local and the peer system can offer one device port only for this link group, +which means a link outage on either side cannot be recovered. +.TP +.I +SYM +The link group has two symmetric links, i.e. +the local and the peer system can offer two device ports for this link group, +which means a link outage on either side can be recovered. +.TP +.I +ASYMP +The link group has asymmetric links, i.e. +the peer system can offer one device port only for this link group, +which means a link outage on the peer side cannot be recovered. +.TP +.I +ASYML +The link group has asymmetric links, i.e. +the local system can offer one device port only for this link group, +which means a link outage on the local side cannot be recovered. +.SS "VLAN" +The VLAN to which the link group belongs. +.SS "#Conns" +Number of connections(sockets) running on the link or link group. +.SS "PNET-ID" +PNET ID of the link group. Asterisk "*" means PNET ID is set by the user. +.SS "Net-Dev" +Network device name corresponding to the link. +.SS "Link-State" +The state of the link. +.TP +.I +LINK_UNUSED +The link is not in use and in initial state. +.TP +.I +LINK_INACTIVE +The link is inactive and will go away. +.TP +.I +LINK_ACTIVATING +The link is being activated with the peer. +.TP +.I +LINK_ACTIVE +The link is active and operates on an established link with the peer. +Data is being exchanged via RDMA. +.SS "Link-UID" +Unique identifier of the link. This identifier consists of link group id and +link id. +.SS "Peer-UID" +Unique identifier of the link on the peer side. This identifier consists of +link group id and link id. +.SS "IB-Dev" +Name of the RoCE device used by the link. +.SS "IB-P" +Port of the RoCE device used by the link. +.SS "Local-GID" +GID of the RoCE port used by the link. +.SS "Peer-GID" +GID of the peer RoCE port used by the link. + +.SH "EXAMPLES" + +.HP 2 +1. Show all SMC-D link groups: +.br +\fB# smcd linkgroup show all\fP +.br +.HP 2 +2. Show all SMC-D link groups with link group id 50: +.br +\fB# smcd linkgroup show 50\fP +.br +.HP 2 +3. Show all SMC-R links: +.br +\fB# smcr linkgroup link-show all\fP +.br +.HP 2 +4. Show all SMC-R links with link group ID 40: +.br +\fB# smcr linkgroup link-show 40\fP +.br +.HP 2 +5. Show all SMC-R links on RoCE device "mlx4_0": +.br +\fB# smcr linkgroup link-show ibdev mlx4_0\fP +.br +.HP 2 +6. Show all SMC-R links on network device "eth0": +.br +\fB# smcr linkgroup link-show netdev eth0\fP +.br + +.SH SEE ALSO +.br +.BR smcd (8), +.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 new file mode 100644 index 000000000..86fa414ed --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 @@ -0,0 +1,59 @@ +.\" smcd-seid.8 +.\" +.\" +.\" Copyright IBM Corp. 2021 +.\" ---------------------------------------------------------------------- +.\" +.TH SMCD-SEID 8 "January 2021" "smc-tools" "Linux Programmer's Manual" + + +.SH NAME +smcd-seid \- Control the system EID + + +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smcd +.RI "[ " OPTIONS " ]" +.B seid +.RI " { " +.BR show " | " +.BR enable " | " +.BR disable " | " +.BR help " }" +.sp + + +.SH "DESCRIPTION" +Use the +.B smcd seid +command to control the system enterprise ID (EID). +You can disable the system EID while at least one user defined EID entry exists. +A disabled system EID is automatically enabled when the last user defined EID entry is deleted. + +.SS smcd seid show +show the system EID + +.SS smcd seid enable +enable the system EID + +.SS smcd seid disable +disable the system EID + + +.SH "EXAMPLES" + +.HP 2 +1. Disable the system EID +.br +\fB# smcd seid disable\fP +.br + + +.SH SEE ALSO +.br +.BR smcd (8), +.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 new file mode 100644 index 000000000..de6125af8 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 @@ -0,0 +1,201 @@ +.TH SMCD-STATS 8 "June 2021" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smcd-stats \- Print statistics about SMC-D usage + +smcr-stats \- Print statistics about SMC-R usage + +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smcd +.RI "[ " OPTIONS " ]" +.B stats +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.ti -8 +.B smcr +.RI "[ " OPTIONS " ]" +.B stats +.RI " { " COMMAND " | " +.BR help " }" +.sp + +.SH DESCRIPTION +The smcd stats and smcr stats commands display statistics about SMC-D and +SMC-R, respectively. Data includes number of connections, number of failed +connections, buffer information, and special calls. +Statistics are collected at various data points in the smc kernel module. +Therefore, minor inconsistencies in the data can occur and are to be +expected. + +.SH COMMANDS + +.TP +.BR "show " (default) +Display statistics on respective SMC mode usage. Values displayed are +cumulative since last reset, unless option +.B -a/--absolute +is specified. + +.TP +.BR reset +Display current statistics and reset all counters to zero. + +.TP +.BR json +Display current statistics in JSON format. + +.SH OPTIONS + +.TP +.B \-d, \-\-details +Display additional fields and information in the output. + +.TP +.B \-a, \-\-absolute +Display values since smc module load, ignoring any resets. + +.SH OUTPUT +The +.B -d/--details +option displays a number of additional fields as indicated in the following. +It also breaks up a number of counters in section +.I Connections Summary +into separate counts for client and server. + +.SS "Total connections handled" +Total number of connections handled by the SMC module. Includes +.I TCP fallback +connections as well as +.IR "handshake errors" . + +.SS "SMC connections" +Number of connections that successfully entered the respective SMC mode. +.B -d/--details +breaks up connections by SMC versions. + +.SS Handshake errors +Number of connections that failed due to errors during the handshaking +phase, e.g. peer no longer responding. + +.SS Avg requests per SMC conn +Average number of requests sent and received (including +.IR "special socket calls" ) +per SMC connection. + +.SS TCP fallback +Number of connections that fell back to TCP/IP. + +.SS Data transmitted +Amount of data sent (TX) or received (RX) in Bytes. + +.SS Total requests +Total number of individual send (TX) or receive (RX) requests handled. +Includes requests that ended with errors or did not transfer any data. + +.SS Buffer full +Number of occurrences where the respective send buffer (TX) could not contain +all data to be sent, or did not contain as much data as requested in a +receive call (RX). + +.SS Buffer full (remote) (\-\-details only) +Number of occurrences where the peer's receive buffer was exceeded by +writing data. That is, requests that fill the buffer up to the last bit are not +included in the count. + +.SS Buffer too small (\-\-details only) +Number of occurrences where a send request was larger than the local send +buffer's total capacity. + +.SS Buffer too small (remote) (\-\-details only) +Number of occurrences where a send request exceeded the total capacity of the +peer's receive buffer. + +.SS Buffer downgrades (\-\-details only) +Number of occurrences where a buffer of the requested size could not be +allocated for a new connection, and a smaller buffer was used. + +.SS Buffer reuses (\-\-details only) +Number of occurrences where a buffer was provided as requested for a new +connection by reusing a buffer from a previous connection. + +.SS Bufs +Histogram of buffer sizes for all connections, including +.I buffer downgrades +and +.IR "buffer reuses" . +The histogram scale presents exact buffer sizes. + +.SS Reqs +Histogram of request sizes. The histogram scale includes upper boundaries of +request sizes. Counts reflect requested send sizes for TX, and actual receive +sizes for RX. Difference to +.I "Total requests" +is due to requests not transferring any data and/or erroneous requests. + +.SS Special socket calls +Summarizes the total number of sockets calls that require special handling +in SMC. +To categorize these calls into individual counters as follows, use the +.I -d/\-\-details +option. + +.TP +.I cork +Counts occurrences of sockopt TCP_CORK enablements. That is, does not reflect +the number of send requests with TCP_CORK enabled. +.TP +.I nodelay +Counts occurrences of sockopt TCP_NODELAY enablements. That is, does not +reflect the number of send requests with TCP_CORK enabled. +.TP +.I sendpage +Counts occurrences of the AF_SMC implementation of the sendpage call. +.TP +.I splice +Counts number of calls of the splice() system call. +.TP +.I urgent data +Counts number of send and receive calls with MSG_OOB set. + +.SH "EXAMPLES" + +.HP 2 +1. Show SMC-D statistics: +.br +\fB# smcd stats\fP +.br +.HP 2 +2. Show detailed SMC-R statistics: +.br +\fB# smcr -d stats show\fP +.br +.HP 2 +3. Show detailed SMC-R statistics and reset SMC-R statistics counters: +.br +\fB# smcr -d stats reset\fP +.br +.HP 2 +4. Show detailed SMC-D statistics since module load in JSON format: +.br +\fB# smcd -da stats json\fP +.br +.HP 2 +.HP 2 +5. Show SMC-R statistics since module load: +.br +\fB# smcr -a stats\fP +.br +.HP 2 + + +.P +.SH SEE ALSO +.BR smcd (8), +.BR smcr (8) + diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 new file mode 100644 index 000000000..596058b46 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 @@ -0,0 +1,90 @@ +.\" smcd-ueid.8 +.\" +.\" +.\" Copyright IBM Corp. 2021 +.\" ---------------------------------------------------------------------- +.\" +.TH SMCD-UEID 8 "January 2021" "smc-tools" "Linux Programmer's Manual" + + +.SH NAME +smcd-ueid \- Manage user defined EIDs + +smcr-ueid \- Manage user defined EIDs + + +.SH "SYNOPSIS" +.sp +.ad l +.in +8 +.ti -8 +.B smcd +.RI "[ " OPTIONS " ]" +.B ueid +.RI " { " +.BR show " | " +.BR add " | " +.BR del " | " +.BR flush " | " +.BR help " }" +.sp + +.ti -8 +.B smcr +.RI "[ " OPTIONS " ]" +.B ueid +.RI " { " +.BR show " | " +.BR add " | " +.BR del " | " +.BR flush " | " +.BR help " }" +.sp + + +.SH "DESCRIPTION" +Use the +.B smcd ueid +and +.B smcr ueid +commands to manage user defined enterprise IDs (EIDs). + +.SS smcd,smcr ueid show +show all user defined EID entries + +.SS smcd,smcr ueid add [ueid] +add an entry with the specified EID + +For [ueid], specify up to 32 uppercase alphabetic characters (A-Z), numerals (0-9), hyphens (-), and dots (.). +The first character must be alphanumeric, and dots must not be consecutive. An invalid [ueid] is rejected. + +.SS smcd,smcr ueid del [ueid] +delete the specified user defined EID + +.SS smcd,smcr ueid flush +delete all user defined EIDs + + +.SH "EXAMPLES" + +.HP 2 +1. Add a user defined EID +.br +\fB# smcd ueid add LOCATION-WEST\fP +.br + +.HP 2 +2. Show the user defined EIDs +.br +\fB# smcd ueid show\fP +.br +\fBLOCATION-WEST\fP +.br +\fBLOCAL-WEST\fP +.br + + +.SH SEE ALSO +.br +.BR smcd (8), +.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd.8 new file mode 100644 index 000000000..2fe9bcfab --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcd.8 @@ -0,0 +1,123 @@ +.\" smcd.8 +.\" +.\" +.\" Copyright IBM Corp. 2020 +.\" Author(s): Guvenc Gulce +.\" ---------------------------------------------------------------------- +.\" +.TH SMCD 8 "June 2020" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smcd \- Print information about SMC-D link groups and devices + +.SH SYNOPSIS +.B smcd +.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " +.BR help " }" +.sp + +.IR OBJECT " := { " +.BR info " | " linkgroup " | " device " | " stats " | " ueid " | " seid " }" +.sp + +.IR OPTIONS " := { " +\fB\-v\fR[\fIersion\fR] | +\fB\-d\fR[\fIetails\fR] | +\fB\-a\fR[\fIbsolute\fR]} + + +.SH OPTIONS + +.TP +.BR "\-v" , " -version" +Print the version of the +.B smcd +utility and exit. + +.TP +.BR "\-d", " \-details" +Print detailed information (valid only for stats). + +.TP +.BR "\-a", " \-absolute" +Print absolute statistic value (valid only for stats). + +.SH SMCD - COMMAND SYNTAX + +.SS +.I OBJECT + +.TP +.B device +One or more SMC-D devices. + +.TP +.B info +Generic SMC information. + +.TP +.B linkgroup +One or more SMC-D link groups or links. + +.TP +.B stats +SMC-D statistics. + +.TP +.B ueid +Work with User defined Enterprise IDs (UEID). + +.TP +.B seid +Maintain the System defined Enterprise ID (SEID). + +.PP +The names of all objects can be abbreviated down to +a unique stem. For example +.B device +can be abbreviated to +.B dev +or just +.B d. +For more information about individual objects see the man pages in +.B SEE ALSO +section. + +.SS +.I COMMAND + +Specifies the action to perform on the object. +The set of possible actions depends on the object type. +For most objects you can specify the +.BR " show " or " link-show" +command. Use the +.B help +command for an object to print information about the available actions and the specific syntax for that object. +.sp +If no command is given, a default command +is assumed. + +.SH RETURN CODES +Successful +.IR smcd +commands return 0 and display the +requested link group or device information. +If an error occurs, +.IR smcd +writes a message to stderr and completes with a return code other than 0. +Possible error messages to stderr in case of non-zero return code: +.TP +.BR "SMC module not loaded" +Either kernel is not supporting the +.IR smcd +tool or the smc kernel module is not loaded. +.P +.SH SEE ALSO +.BR af_smc (7), +.BR smcr (8), +.BR smcd-device (8), +.BR smcd-info (8), +.BR smcd-linkgroup (8), +.BR smcd-stats (8), +.BR smcd-ueid (8), +.BR smcd-seid (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcr b/testcases/feature-test/oeaware/smc-tools-main/smcr new file mode 100755 index 0000000000000000000000000000000000000000..d1e4eadf90f8de383e487ab144a69ff21311a047 GIT binary patch literal 222608 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

P&f{1#fc@O~OB3Ky%e%7TJz zQi6M6fpY!@n*z?4p*QHvfX0w>6Ur;gxtXPzk*rqX@s#{Mth1ba$Sdc5q!w_lmYh{0 z&5$z$_$=oah=-kD;y25ZEAJvDC7lopJ{Cb{%Zq4AkY1#bWWzIv8!u9#?bh%`VI&~e z-8pjIo%0&f4LEY$og>%XIda{dvp&dVBx0=j$C)=%t2OC&gZbR+G&cyx50T6@mfc&yK`O!W}qY2-8pNKO1*cz zofHJTL|3yU^!0Y)Z5J&~oXw(punyTQPb^0~lAVo~klkeSPBZ!LK=#n+ESQPKA$G^I zo1?5X{oR4=76J5k2eMm*O@DVFdzb*;cL%axv5S!x`R+jWtNGNRzdMk4FH3D zUBKM%Mw??D;VD2LU)n zIOp$}3@GQfhz8)t!v6IS{9-6UvRTepP{U3YFcD_~Ft+m!;!!JdS3Q9EWcxp$$xgEG zPYLVCbe#4~6#&<>b%O7piqEk3fwAb)C6`f=V!qppFBE8viwoHA1q#~nw7oxlOxgp8_cgWYeiCGr)D zS}k`iDn->9jsu?D2w12F8tl6swuab22D`gJr%`%<8V2XH^06OboHt7!M59v;9@a6u zaquI=?f@w)mX$1g%3N#3~wijP&FCsj<~^w8-N{Zum?RGMxhC+<_ITK$i0WX zlp0zh_o5_lJ(I!42=a<{DaEvvcn8(5hUE?i3aOg`BgO&dJdX>X5OG=76Ut5%F54W) z6fT}j6kSqX3#8oD6$;gG2wXf9R}3PQkEFSwP!l=NorO=7Ayn*S3JoDuKR*pLyhZ0$V_t2N z!fkRc$WAD55gweCmx6QvLcc|*JO{uT$Ki%Ugyc>m&^QbpZgE*E2YWZzTuSq+7s2d< z%1XX&m_~vr2z{VNgBkbE~+9PM&JCoJ|Z6Kw`d*sDyG}1~g_K~|i@-mN{diNa7 z_);tKSp6{;;ES2FvQW^){~7|dkxCq{PT=R~$KlmHLT!>5di>vfJT99@s2c@fb{AX+ z5b7oa*o4S>gxc8vYP<1My%axNTxkD(Fmex`NHqj%dB;{A@7Fr^1T5YVYQIg)1NeCx z&~FgxwgFgmBGyj`bo!N?0#C884d<_$Rs-llk$W z`^w?Ei57w3r@+$zVEwDGr`DgIrkFKh7=H&8Hlb(@N?E(9 zry>-53;R?x1nO!)e-cxKM-b{-0DNt(WnF_%cMO2voN8GwA=FI=aN}useT+~y2f*Af zVHJ!}w*bHsi2RTMZyOsw&$31$)LjGMKN0yUftvu#Ivr*q)U5;X5+ctLxEDapmoZUA zsCyW|cMw@e;0XZrXP}E9)a?RrKO!3m{0cx(H>NQN^?w2o=u6jsfd4#OU1tr&G8&Yx zAPl~@8E>`ENL&0)~ ztMulU)zIrBf)MOon=O5nUHSC1#lJ38#C=*0XB@nal-%`YP5u(dJ3aD-4EZA;`7a)M zry(N=-0J}c0h2m)N3S>(hOlOA(bG&_Px9-Ag$3SjSlHlp`_kYy!7>fb6J?7-M%5QuoD_Mcy-7o3y$7iEb)P{z z2@I_mAlcqLwN^58R(}`c;Z3G24bEfvUrIU0Xk~jFptZ8Sl^8U$KUSkLJ2pjWCF^~* z%=gF#3>j93`g+)ns>}?DZDh5_)@8;icI{Qjdz+8xL62#NH&%j422>x@D<0Ea9}@@p zwLYfzJ*JLZb+K8=4L-7q$C@;c?hJXWkKF8$T?{_*mwehsKF%X|WXOAbS zeg>d60eW2uKW%4XhJaAl2;e7(Y$GrVz?+D?L0~d~*jbo6Ak@*_@nS?SKuGnN6qdun z?gR9+~^YY9>d4B-l}rxqDtSQ1Rh z5;Gfn1nS3w7fH}n0t=^uv(uslRm1vh@iCrn7)J`@h7%8CoM{-JfX20&G1$8U&t_hQ z2W7$Rs*shO=i}meO{5F15^(8tonF$V=ANZ>bJm_(V1VZdEH=Pv1eO^(Q^S{CzT9g*@79mm&yDN$uzfdU*)-Ae8ZR0AY0aU`2}u0mxwLrEWq9H z+JL{Isr{ABZM$Lp11zSODM}___uxE>!5;)Z`MLo<18~SN$ukY}+%;*PNb+67lsz0f zJV=g(o88$Xb(yQ|O`>XtZQ{~m%0lGh^t6b{;{$ROO`ShevY6bWi8^Z&^GST&qDgc{x{Wq>< zGMj_>rZI3kw$)Anw?e0&xD?hcZe@S+EB(o@^e4a4BrnZxWl$$CwyX@w21}#ZvdVAE z^?qBfH?|BbU=zIDSiw#|{1MuEdGJ`~Vt7E4r!jx*1k1E_R@+(3_-HiUlXWxLs=$Fi zwSG!9+>6dxOll2x(pnbaS%T2ceQh;XE4TxQTM_hqYGZ?WOd#0z?inrYHe-Wjgp1F{ zBL<;e%71LIlE`lXaR)+&^v`3oy53PzE63=3;DFE>qoin#2^MO_ht3#z`I(C>b!@Qk z8A<7*GukC@<8-O)gT~ho+W%PxBgX|@*3^P?Fr*`ll#AEW!3eV!?Ca@n53;9^*FAkd zIDU(e%sC|u)tDopIbTqv2d$eAvR}z0@WkNF2f)=~xTb-t?=Y@lw&lu`4qWqmx}G_V z3se0Y(iZ>NQ*VA9|7L5=>wGf!OdtqdL7hI%$R9;!A2?15-n<{l9WbKos7Wn~zJ8-l z$4VYFWOme%nk*glQ=ix=o|v5x3(e6AD0Y!g%r$tXcC#lo)mVs!j!*1fpIEI=>}gMI zLq@F8C-%Betivbvi6^!*BbN4w6`+32(2$(z6C0-S@cHq?8cyv^3blJyL6IpcV~kUqGHP-lMfwfr3A^{zXtn z$bsX1feya3>pT}t6=8%NINleSa1Z!i1mbywQ5!g1{XURKu^?74qr{`@4}rY>g4nja zMNS~^4-^~%BDxUorV!eHz>fdNfDB(PKr|A`H)-lmfxJ#6a1jvakT8eM|4)H(BHMXE zqk1b4`+6At0Mu6yj$to85YR8QbVqwzLzkY1&VexCpGbPcNoi<+I9{XSH#?Y18!B_q z2Y&;eUn10yQdbJhfb;PV838TSHgcz+Vf`m0SOF`5uQK?vfd5eNo|mWojwQW3``_kS z$%%&lBJlGR7<&xL3q6(x>haYZZ|@y$Z4q?>H!BF=7Kpw^5glpR94~}f3 zTXY-U4w0WA=%)0LZftJ>@g{;iG9K1e&RT@;Bq1cXnrSDS$UDdu3#S+OT?Wr4LQfKw zyu2eYpE^CVi5xWiY$B6{A5CPfG!Y(5$Al`2y#RkncXnDLd<$`&W|cXu_YwjV+f;?& zk!IBB1CkRBFd7AN_u&a)CN_Jz1M8pu)Kpt4zkJbrH_*th!{UERm&>b?tHS0l8ak4CKEI6=|C#hBq< zB56}VC3hGjSYiK=9HPQ@%PIUxQeizIQ(>vyhE*!#kRK@N(m4^zSU=G12YUU$CIdW) zgj2ixz(GG-;sl@S4nHu@5A^tfjecOK4@e#~z)L8xH|nLCo80Qt`PU4D+^%d8>Q#M*_Iip<|B`~QRWAl*(e`FBYFfu zH_H6LD7LKBVmxvX%K0G~D4Rg!SwNhIFiN3i;nIyf>cXaU`%7$-g@N)*0q+FE(+Ilt z7U|aOLi}Gq%9F9!45_*)muTo!aJ+z!teB;9$`<@6dIX2AzBKcV6*Wd2?N;gI3X)YQT2wf+4yHNn&oOGoM`f|{e7 z#@L0`D7Rfo<~^a~v|LZ7rao`i9yx^yOm60wg7P_f>hPZ%1mNp)Okfi zcP~Y%2+1B}GD~Sb5|FO7MV=0$q^{DL!RG6RRqAS^AK2;#p7sNK{J?%caL5mY{6km5 z2Q(}-K&Eawj@FB$|FAfuZlb6gy4?(Uo}+OZ2TpQ_V$OFAr+J-9wlEq`(m)w~cp86( znHDHb0*qtnPB3gd=?P=f`iC)-42x1p*US81SFfOApJpwtU+EStw9qm5_Z z0O&+NW}=ggf{~P&tcpaYf)zeRm5S9@vY$@XY)!I^o2DWO=H~W4Uu^;340sf|>>t65k)_6?~)C!{u_LZrOS>s7dL~ptdcP836YS zv%|6hg}^_x{;phY>Na?e!6_JB-+1 zjq|p^m=({MtPj))HLV=wSr0=VXZ`1+sQFI0v4Tw_q4Z|U7(Ds_)NsyfrLQCOaok&? zZ3;^1qIfTWvhlLN@v%&A8!yMaA7T6ww#|0_Jak{)&LM(=j*A{}%VHV<2&W$AdSy$l$r7+@SGTaNMMsF@N@n9iI_H zjbSG2F*SVsG|isbmEP--tVxkNSowBb(e}ww7jL(++DdrNUj4b0dt*~jrteCbPB|Yj zDM@SUL#&WnbMJ-G>Lp6ou?ydtyab3TJOiWpq-Lyi8CkB4FFjeC(Fl-#YCWgs$#n+J zL9tkx8>SZ}H>8D!ZBHNZOIZ!x<`y?FSU%h`oc1Id-lGWl*7QDzFyK4sGYWxX$eR<) znO4XF1R>v=;T?|QrRmdtAMq|tpU(TT7~E9Wj4z>uGB`ECoEf|yjUlfvlr!Tzg|!5N zGgsxz*x;fuAvl%6_;l|84lakE_DmHfF$gf}J(MDYvpHwR8K`!Kf`&kR#tY~@3`4!ARJ59^~gyqbM_5fWoayqq&*7z&)hNvhoG=^FGbgu-DtGcE@MLjexY z%;*LOmpjfwFp*0n24{L8ce-~Dr>LuZx_1tzxI8|6EvlFy=a%^NpTbs#oGbFDd*_03 zF36kiofpcvG=I8x-+j)-`O`YHu=R(4ta`_JiWcTh|8A*1I+Qyx+nQBGmv&z5Y)_5=fwDFIMJ zk^4Xms_+f`7s#4S$@3{!UqLNc3JwA#z|%azrgCZw{F;L6N-+Xh0iNaw>eD=7`#uWj zi{k^|!RQuzrFafdkze3vZ>ZIt0A}y>PA71g(>wPt?w#Ht@ISbF7x=oat4{cwdvva@ ztcR~&w&drP{Elr&e#CJaIgu?X@k7?rPVJ=ajVxVRYGg^#!*S9yHc492HVjD{h71Ih z4+3OpXaf|;Hv|YnfY4unl!o~Nliv`S%n+t21W4OJ!}R-ro5TGQrzBcYy~9^|iod;cFG_;9clgpw z@b(VL3Etl60P5iF9n7rZ+dGGl3Etj$7;T<&5`O}iU)sn6nY_1m-j52&6bs5ZhNP>4 zLrrKOGWPAAyO}g^?|cGDsmnKmq%Pmy;Q-6qJ1ag_#R6zgGxaJ}x`;>BSzAGVQqJ;CXjEE4JxVtuulMlyFnphz<_w=m zcj4Phe+7_|G$&_2onj~HkKlV*_1pL+lA0ldEO7|W)Ed$3QXkdRWxtTR6F5_kpk~<@ zeByUf?ISE5R*!OKOpJ! z)A-J$KLtof`dWNns@VewX8aS#IEk7e^n~9AObK~4b$q02hWW_Ue1$bTYBsXUrRqOJ z1c-)C_2&qNFR1<+OS?0M$y!F3}T4g2f z^5-b{`rlwK>DIDhy8a8ymAWGPhWhhtS7zE}>UUBq%S_qU`WN7@%9gwGl587>{!74? zxEho%Th<`%hrh>OUe8}8aT4DE^6~})|J72YSIe&eCw>$tD;gVr4aJEMptFkAjlYL< zDR1~yRBleSqLb9`gT2ZvD}M?FPKpbX%B|JXL+a<5*;d9TC8?W%tMZC8Gx()pdAX!= zXXXPqm* zTtf`z<&w&mB$IGfu)Fe~N5QWmAqwLc6w`Un5iXoG{>|eg%A1{kGx8 zNlXIY^2Rzo5`0l+xp`40nR1hu)DHn%k3@rfbsz_+uLeNgWm$ePt!7f)og4r-{cts^ zq-XJspYum4W<{jE^f12h7YROrhf(F~_a~oZgFUF^q`$eG4gQ-nxDMZ5`Z;`;q-XK% zr|a;YOlR0O{RN~`>Hh`cmZkpy>1FB1(6$^cN<5gmd3&Yiy434HE^n{Y94w~{%-bt9 zU6L_xuhiTi8T`)hFQRhkBN*7W+N#tM=t}Cd5K`^(vOgAae;MMdO-m+`8iQukR+q6> zNs4zrYilG^mpac(ZHmgUG4*9&tF23&MzyU@`JV&Eq>PT|l(Wu+=3S@mn`pYXuGdX{ z9>Dsy(6+A6E#;UxjWffe__cJm^t0f?t-pt5_={F7^BVD!@^ypms;`26ypKShe?zgR zoE1d2icYM4b%yYLNWRB^2rBT;e3v$Y<^ANnJX6||J3 zdci~eM#-dC&*g4&>NhPTpKDUzSAmkvlF6hNfUJItAlR7dA%d;T=(e|}UIc^n+oYt; zS<{TcbvMeMFoMce(xJ0#6ob8X4x8zls-FZk*u$|U$<(KjU&rvp-R&;>8{jIL=^&NP zVfhC9(KZ;-`l-obR%v5q??=!vKAAPP?%&oyXHn3EAoX6XY4%$9KLNhlz~v9lZ)mp# zy!vM=!!&5B8{6Qw-ED62#pw>|nTu)u!=JeahD~o+a6MXXddp^bMGzPBAt-mFD@?yQ z)xkyp*vF$2<)D7#9PTn~bmise=Rx^1_-uZK=Cje=@=bJq<6Vd_@L4Y>S{vQd9ccdq z06&4x7UFovVsD@S=LuSWsB6Gvol+8>a^FIRYPDZI-0K5cTpfQelKSHtLU*`Tuvo%sInvr?Z!r83Dz}+k3Z8yAN z>wF*TfEg_R9_*XBi78&5LALszQP0lpmuBMxoQ=ETDvih#)H=^l!*PT&i+Pxg=z#WFN!l%Kr~`?Ea0r^<0NEzw#C4zv`Z{ z`Asib><@tVO|RO_BgkYNTZNPLLWK(aQG>_HC`JnQ;h;-lVclD7 z-FkL=m(8#)U(dmS6b#rCwoWi$Pgt^az}(|l$vwRTtbSf(=vc;{6(IopXsQa1mKTmb zFQb>ch!rV5`(#8vzwHPrzKZ;x;&atQEokxc;xfI5UcGyNm-`EePh$*LPfd?#2X}(czRBE_ z<31)+z&*&{iBG#6aQ%eDD}RCff5Rtpi|zUMK;?5lKuSMOPQ=YD`=3P)tgTH3y$rR(JYyZ3j42&4V81Dd~Sb>3U{&OGw1|}mAj6oUM!1UI8 zAP{`^{MmB0YOO+S@>j_J2|n#L#FP`6KLIcFBlxu6zmu@4L%??IKJ19&V@7|>%$^TD z@vV=V!8^O0(k^-EX#iw&$7OW!CsqNF&C99MI!03uUAlDlUQje$n?m+2VEhYwuKOB$ zns+np6CI@8p@?1ul@!svlmPC~(DQr}V(hnd{v37wx6~Q%e&B5uLlrjNVoSe@(oL6a zMt)iN5u2e*4?r9NZoF{#qo!LYv-iU$MO)&ZE(phnp3gn(WX2;k?l(2?hvf4u?ue6l z#8ymVL*i$&Vuy}n=H&>U7qvK(kLRefp~31xVBRlVYNlLZlxhRN0H7fz zQ~w0qvi{rz=)tQ|@~w-`HUF8zeRJ|bt2Au@^Pl@@4z-NZ+`NfO^GhGYeiS~Np0rhI zW6thRwxaSjQ9RvOdDImYz`;MjX>e>4#jF1~D&uq28V>XJiszs!iHGK|dYDLdh|b~9 zK3w%5wj;aKX79>m&UOgGTFCD;P=%pzJ2(h?olLteTaU7G%<(D;_bSZQiHGjuq>E~& zBGqL+7i_glw%QJ0>oe8F#SFUbPUcZtxF3b*qJ`kV$-H1osZUr;2gUu7;w@U- z78H-$;x4ql))do~-WO>l2v2DX=Mdwtr_LGT8-meh^eIu-H!;M2gO9{xKluIFzQJc3 zBeb>mV_AmJHpXnzNKD`(aoKMn@vF=*F5B`6M1c5YUbCGr6#J^s77xV+O(-_xY2sJv8}cpBeA2>&O~B+EnFh84x3>lHXR^$GLsh0 z8T#Lu#?eUZLZsPGN18nrY4$|}FPPY$wRHl^FB*w;a+S?b&0uAxZm8DWUel?Ys5Nsn zoqIh5MEI<1UEbNa0}C{K8fvOKFD%C<7CsGIDmy3f>Bi1o=#rmR)s>y4c=EHR zp{nyg;>pk2&!xMs0*U-2$J~mp-)uHp?dzOwZi4f(0vq9-Q$Wbi+LzOv*TIkRvwl-$ z_k1gM8S%+{#;xjp48-uW0=wm%k8MW=pS5EZ-HoWh&)RyRnn6>3*3MLPJ`0rmtevmu zd=pQ8ntGNy$06Dhr(!LP%>4DyKS%3d1~L6JM&0(8IP&iw55ujQpNI0y7IH~H3b4I= z10QC4*-sV!%_y_4oUr@KW-qzK?j^H%iQP+{W7_T|Gj0ClsQq22(#HWw{V~3{iF_5@ zY}p_BsK2LlFJMkt3n%G)Wk1eZWxtAV`~(y;>9PuD_DiOrYz3=bEtyQ&y)1d3WVV() z&5~;*(^mFVENPd_{<3RWazHX2Wjz?ek`BonE~{bYpk(^Xu4bDtp744R;GJl^tNU-sL%D z?kTGvw!Reir|&J>$7%!1Cy}|o>>@L#D?g2D50-tN)oxySJ06del@h@R8t*~ov9bk} zmwZsjd7|ujW zonf`@Rpl;Vld#QOP1r2NblgIBz+|xsq_k#rPF_2g-0fRiMfvS z%gkM>{&`e!tN#%ul&JnP(k0c0P>w%aXMg$3Y*<69xnW(xUAW}xx;xRdhUZ%DS)VF* z>9!7hqZugSKljmhlGtLJTEH3i*>xKM{bBg~d-17zx|OZAu+{yagn{EzJDZyW>?*40 z7e0ki!KZ#j8|qCYS#R+H$N3aK_5YD=C+Z3N{vW`r>G-U8ov;s!Mb!Te)3-{SYyKS; zr1;c3#4}k2BX_=t{B!uMoIi()>*q>IBUcyoKf!h%l{(Eo2%PvdRFpc-ioJaRcv1}Z`ub5_#ye{9;g&NH$mA? z;UjqNL*gE0i05-iJc-Zh9Tvwwq}Xx|ne3SBFjzFvCRs52i4y+$kTCpZH2xB?k>P(r z;+xEn;Vqv*(1?#P+=IkXdh8Iv}8XqC_%Sik_GbD7^!-x^^ zSxbg{EU|8X9okza??UOF_(!{kD0RdeD@5STpf0dD4$)dix-y5-`XkC!tPlI@&}U-IN#t)rRz>bDt~CH%JISG znBGlmn1+91ans+m%BZ>b1UL?CmUd#Y2ij@w&0?O{RC{7Rc0x8Y6xeB;;d+gk@;`c(gyphIk z96qVO4Vyo`%yIZB`+j%%R*eHIoXvV=U>SdJ)2((lRn?YzRjaE`uB>*`E8+T9I9}EJ z%C9NEy8K8j25+NNUVbfVz%Z91iHX!gz(kS|)+*iX@R6!@y{htZ)7k}~41eP|K(-%^ zmxb6dqt>Fdy%Dl(~OX^Ey^Oc^`qQjUWhk|31$Tbjx*Syzqf_gngh8#NHS#R1sfZFaM|rS( zZHU2OD;uL@VJmHlb`;aq&4v24B@V(KZVVu5`Q6jOLN!T=njkzYQ+-*Muc+nuidqp> z)Jj#Xl7ka~5;|=R#$_X>1uGAalq-F)aknS3{ibDXkwE=*@ zA(&npqjijzUUgZWUL92(JFIJ>cr7gStWoc{E~3`!RYl1|CZg6&p;|ZRsr80P9x4`9 zC!^V$qU7PAHLAVvwb2IZU~%6%lnVCgq7s3>4QGx#ZyVF!9m)*OPg*c<#0p!)^J4&7 zBU3;d({up40tdiG;Y_ld6>wrOvVt^mXU-(`czw}pQ} zryaO#YbVvAozxgRsV!zFb;eGxR1VF8b`moj+6fIO&rWDMfpHl-X}qkRtcoh4wTabH zylOjzp~$-$Org0*tU^1Y!PsabYAY<-7_*(2D>k-6V+nYKu|#dhQcGJ2s#w^z&_bx6 zSHx{BW(eD(0-)~ih*vgr?2LAd@Fd!&*ibk)3``<1Q>?RH1$HPF#R1+EvBSMfnBSGg z{QlML%m(^8g_P+O@*Ph`QE}QpKQi^$IVG)g9;T(j7^x-(v{qOfcmxZmv$G?zM`{_} z$1IQI5VJhkU0_jYQV{DSBof^dbXNCt`Z6$JTowA^)sZP>jn$H3c-LBWi{f2pg%pLY zx5^uZL1E28f^*ip8DThKSu(;Yi{3`?V#3O!%<8eW>;KS z2G9@}sofW~Z=JHQihBs$iVwXKUVO7Mf+}<6@xCYq!|yfuE1vdf6S8(7+9>8$t}SpY z*BMXI5u0sgMm`t^;RTr(0OI~`E~EY}c?!ERAPOlP0~nxi;=urEa4R)9V&O&sKn2c2 zHwsMk_(p-iXiKXD9aL?l2Cj+N(%Nzx+pz#n0&9G99YnI<&52pKFzTukvk(fGP>yL< zXJQN6b{Pi;XCO1CRJD#%XW}SqhcWM+5&LZ+zsAG02EvIug|>V+3_9u>qS4ImIF*Jw zOvWL3a1T*x5$;AyDeQe%_CxqrMN!2Jbbr)z)ni;8cMkuDB=wQ?K3+h za0051TN-1%<3KjDcOqUO?ie6(+(n7k`fhrGU=~K-6x6?FTpkM(EIq|z2jjcyqQk<$ zt`}~6vnNJwR#?X%BSpu68<08@2r{r*k45U(A&jETU*KXa3Ot1_aHE!iRf2Q^7(?7( zZ5x|&zwNax4JYboHW>TE#tGMbvF$>$=Gzi&Auho9pD+f9o8}c7l!Pl+aA2%%hn0)4 ziA5{2ksw631f@DR1dX~2|B>xiL;_(e>sb(XtE|-cikrQ)NK3%puvwl(VZmF_$-XG{ zw&SZ}#6WrWM=R04GcX9k9IDs*B$$TMTodix2&g>@%G(q>5bcVXuMHIhcQPUY7mgAw z9%yVHWB9uxq3T*D4p|aKzb&lO_7;V81ztDmU%R7y88)tucH%fUL~-G!eYAlN*O7eZ zbTkg213MN2VGNgWVc~ulL$UXGw(&i6VU{ARcFT*osBrNkt00^y*63a!HWq^22aE?@ z5>GYE84Pd|z*CJt%_Mj+-fd;LO@Xxx<T zW_%ouJA#9gD~v-#tP+5B=r$O3+2ZFyM%`O1Yho*KTygDJe`QN|g;qjhDdW5uSk-m#aOi#1?*mveXq(s`xI68Nd9E zl9=8>ff{r=D34ADSo8#jvnr@zV+0A)qbEp3Do~0+uoIw;9FMX>(F0N(k4C2!W1Kh} z4K)*Iq%kfGqoGT|Am+`Nc*j>l>y(NSnwFEwt`xYuVGXt94>(WO89N z=SXdvX+1MBKUWB8oxfuSce!FUfq!apPwP}}9++>9l{pUno>9vPsBz}zM@MsGEqG-B zmph3BNnGW?t&W9}`Rw&adb$AsCt(UL@cRDF1$<4J%ER;Xvq<4u75g;(A#boxOd|;m zMl+O}^uqkaq*fT7XP5lvyG~i+#kC!h@t$>DKT+#fdbi+5}J=s=NL++}?A?{7vRj zl5ADnHJKu~lP!KC={08ri{FmSX0ZDs7lq$s(tF=2@OynGll1rf^BO7LeFbafRs-%ntfk@hm{yFxdDuO zU9Jz>%QE~SRDqnXbIg8X=Z= zFFEtx9W4;6fqYts@&43tKbCAE(uPC=it|mVuIGGXNmDH}zVF<4i<#>1+_{}+b5pt5 ziIJF{w$6^88;(Q7OXP!=HuTGQgjV!8iEH0eW7EbJsQE(-fme7JS8#4*etLRxE;}-P z?%XuJ0shfBOiu3GiyXu{aVEPkmz&L=&&{5pp&L&Sbs*?2^cjeQ$A_mzCv&r`j5}x6 zw;;8YZ%N@^W8hClbLR~ecuUG4AeTttQWyS+^~B`-&WWjONoL@W(B8Nn+(Kl5k1?UA&@MEz1 zNkQ5nMqaYU^iV*Uc9z)33N5x)tvqY}4Sd3>@Uhb%0_6f_mtBOLHrK+VBLlI~r<7c6 zvK#0YTj*81J?(y7@_=8mUihj*bIK)gU()M8>NT_jdI*xN^*wUR(O@w>b!i5SLlQS9 zy^}{F_@p=A4o7mp)P#2-XkEs;aSYIL-&>b#IzXp`uIn-XB)wiZDQZZypMYxy8%;^C z>=d-(e>?DHP?Jh;1hr-2YJdQ}aZ=Mn?SSJ#inx;AYIIa<+$764n&eR=HvxGgeC{3S zZi{(>;R{C>*n5?Gl;h;RAE=}`G!dRXZwjExEdfsnuM8AO#+z?RVnSKt3YukZq6F^m zG_1~ZN?_~7BbD#5`-^+CC4J$y=lK|3MZzEJ>=tqpqu;5s8=-%MCxKH#^mJLj_uY4L z=rr!WLYEgfGStcUdhl(CSNQHmi6Ew6ajO;%z<8j`+u%fv zCBf~9tM zBtg|iq3fCt`u=L#-9i$5u5>|_H%Y^9_pbqRFL|r9K+t!m*!Kzv54`MA*580HSkhLQ z&gru-U<5ObzE{8CS9ovT4M$K1d#^}V`iV_`#Wp{&$FEq8G+5mRVm4*q`ss5>wTZGe zqpx~@`8ra{Zrgnyu^#3Q7MCj%Ub%@#6EI=ZZVM|5e-?n~5j07NMA_1@cpri*0Gee$ zO$V?nxlf*q7#WV01I}0}{|R@9;0WzcjtRA1;4!^cbm^6~2O}xn{L;miWJ|KOcI&ZP zzr;h7nnsM<9H8}+yC7P4tUKC))=%Dw8L$ftM)CPDAQ*)2L#Rwo$>_Y)JKYYTw?%~O z4WP$5klO&qc_-LPz#T#p3||`zKL{z;gS!nT@}u{T#lM_}!A*sc27F~%3*&mf5#c?i z^Nf%25pCNovTUL{an?z+P&KMtQQ-2gXC?bsZDqL;%|YxD>I&Z)>c_cr5o z%Rrbx0b@^@?Z`eZOI&g`aHe))sVKY)oh0SpFkvT*s1~f2p2og4O#vBsP6#&QQA)Pr;5KKhDEYiQN z19J$*|Mz7r9-A&;_*7%8K3#8x38c>%TeWdCRrCt_!WN&#DSmI0v?)Ub*zA|B6Z-xZP+Tb+1@O4zaR*Mx+}wVw7P~3p!{NZ!Aq9fHJ;o9yX6#i zPnNZe`f2#vwPN*jrodBnRK_H5QrxZ)C&kGIQ$XOBV@X-Q2!a7=o}qhAz>{$^21Dm( zWJh3`D+?hyWGv!QR6*fy0HGc1dvc7v`kQwnp7%cHGHS*Ud0$5!Q!@2JJmdY?8KSBs zl6%GPaR~%Yfg4U3ZVtM#WNIV3IWFGa#P8KfZv)u#J_wJDzFW;aVNfpNH?1FS1}cUY zOUxoVtH8^iYAN)mVHD4q!mH&3j)`|YVgvB9oQ~K#J|-UbUhF=4PR+koIN!Qt1pmF? z&4_Jxz-!^J3}Hh+HabIR_kZs`M}Bx;WK+Wi`*7M5+||YLUf`C4jgFZX>z2Rj!73#7 zX875xF0fh5CBB`31t~n5*z_0_d9!Q_K%aF%EkQ_=bp>W)luJ)8nHyotZUf!%RZ^~S z{E%DY8uTl{M~lDA8|PfmkU`|ll`bG?4C84;FhWD7)i%nqf3^kM&t-q|nDpySyLc|U zDY8z7QT*{;@F8Yp5w6iIxkmrH1a?K=#p`1iM63{Azsdya2$9eUJ--J6Vjlm8E{e+s zfoVV4j~?!9@f+KG-*VUl(V3aVZi#}Q61cHS?;i102h2aXm9JyAqYGs3GCj^CnZKvx z{lZ1WuHGLwbeU#4kd+StTr*L+8z{kB$I!upkq(50MDifKGQ8SbaEle*ar#Ph<(;7u zl_|AVR$Udk0uwSAf^U}i88I{WF-RmLe(q&)BCyaENY)iVi`V6D4fbvGFw_GIF~28h z;&w1FL9jtXgzecpl+vy(jw~*c>goGY}q$&9j2G;wE>n4vK zI|dnkjJwTEcIyb*y&kY8-@Ey268leEDQs+|`0L~0309qyP=$BD>_TJgv2>~MZX}_| zh&*X;R-T-;n*0LE0ajc>#i8#>Zdjj$QVE9*`$+RxYG9|yyV5Vm4i*d+3i5f7U*UBc z`62*<*f7joiU|vdrmP#VgP#~Ll(Y<_-9g-G#3V5t@ia%PbA{hv#yzs(SRA?@b=M+D zkTqKpzxwA_0X3oyIeAEO&oI#rwe)aA0X`nP=r*lyDoNnD;LW>RT1sTDd=uJV>3!Oq z6ZlEEwjCe|CJWp!@Ux;2XjAL`fT=@g1chIg$p8Un{=auzDgIPgjK~BE@wbR|#ZO|3 z4!vWhwviB*O5Smk!$C!Bpib8v@b>~c6!B+Z*i^*w>->#l{&opqygzbWwA^ZH{JgDU zRrQM~JFqAN0=EjC^?FWg&giM%obA)(z8)!VDQ~RNm9{u$$ z$);p>@#@=~*EM5z7w#9bMlhK)o7I_&Zgy<6n>f4elbb?v)D;V-mtl^uP&z0&TpnLy zhem|Bo7r00ehMC7C&vtguk=%^eRq?e+J+JH&c!w&a6~B5s3V8P@7{L<=x(*ZVIHL}Q|ZvSutU%(;xL8SpE|Wr?GghD6XKKGDdoL9GUB0$+a!mIU#?&nzWLvJ7|tj=7Iqii8{rj%v$N9+Gx@>z znLFllbGHxAAXdeW#{YexIk*Msvd=y$R~;l7M&a?@5{bzXwdV)&2-6*NdqK7C5l&~K zcI|!*f*BKaneauN3vJv&Hz3(W6*QJ_p^>>WQWr5(Jhzb=+X^4|>vuDTg}FzMv?N^q zVUK|{ixAx&x@>fd$iS=#5ZZn;aDMQ|-@=T{j)TDV9wax*E(++ihouNG=pr|WONocH zCZg&Ql$1geb9u&J=RGKK{GyGqUY7~T##lrZi&=|DPNb?Zk}X~r!DJXV`76;9`?Gnm zYSET<>BI?aGs167Z2yQ^sKWb05mKG(JwXno@P?Q@rNZZ+0d%d2KLKqD#_fl|;k8|;-vppk__1X@_vhUr^C8%#PcT8}TPVmaK9 zg0OxB^EQ=tEt^w(*g|D=#^_eU<}VuU)2JG8N-ew#gaim9>}$O*00ndv8-LJZbKL#w zfk}8@yQ>|C_1+vp+2m25HzX3?4{|#Ln|!i7!6<=_AAnwyj=(}XlLvMtn;!D(yh~=$ zmptmdgY}*{n&T#e-Q$pGeFF8q`cbf7SBG9a2B*nZvm6BSnxkz%&4oDn_3(%3;6-0V znjIqi`jwBi2&=yvuu3Oh59YQZq7?3IZ#HKAox9snxFu;>w}nT!+9-p?+K}v*^5bzz zX&7gc-iIh&_RhF{gTE7GVBC_|;_||=vkO8N#DhfwmbZwp5X<#L#9s9nKy}{hADu_+ zk6qD?HugvPw_LZxgWGunzQ(KP*nq$i?;%`NNwxVU>yihg_$%?^PvZuQiTwNneyI(^ zt~(}@^|4AxatFz)ap4Hj$B#>Ft-Co%@8evaz;|&RP@BVx(0eE7k`Bu^#1cc2t;Oj!PX z8Nk>O0LyQ?u29GqyU~Vd%v$c5!u7^Uquz`P`!^zOumy#+W&TE;mQXTn?68t4k=@u7`swdo~Ln z14sKl(A$ip>#sDEow2y%0>ZpazWudal#dU1Y+3|0ESu=OXWv^4)`$Ti| zyuK{w3;%~NT@0n;SZ6GGB8-(wcu2A^HGzWzv$Tn?VWQ^=Vkut@yWMWbj8xGHZ5Jm)zT7uaaVGQqO~Y;H;My!Kf{?7e)SsE?F~4i3tNWR1NRh9 zQy@()ZnocN4izXR!tMa$ooKa3T(Y{r{3jzAcw#Oz)`&|^ByW*!aJ@zrS6gJOIZuQc zOFP5Mydra#rMXzE@2seK>At?RBF5+xd=cU~lGwO{|2=wC#j=qJneTC}Ju39A6gtF2 z&7{ODF}LF;j>|)0q}p-&UDEz083hw%BDp0RUaL}W7ouW2;_sno$I`7XQ)HB~XkV8p zGFo1=)n$sz5EX58nIdjpCvXcPvf@x_Y+kzPGQ?k|2z@d1KTfUpeV$U-^UQBANzYOS zOLeicNCo=*#g+vLI$Xr~*rLR-B^3pFvfOVxj$U}kCtdOyc>d0Y?{itSnHLCUuQSic zjQwFJlO&t19+i)AD`rcC#?1}YguS<|dAEnBr$?clI6Wn?xRDao>>3lijNtCCzbty2 z8E$2p?Cn@SZWca7|KEj`EwcMzX~oh6y<#U+9CfqbXbwz$3r4ZwiQ5Dm4sM*}v00U@ zr%mFzop%hCa0XHZ;;uI3R-tG}%pWe_!9hXJd*aBc*2cD>H9R@d!xs*$2~ z*a0u+0Uqx$;^ygQ$n0jG25*AQ8gOHd=!loR@NQ@{JSS*@?jlcmpZN$Dhxwakau59T z^tPs?!mBt153&GXvL5k$C4I^qf;H@x`=z*1LHJa!%M=5RmD z^?v3f>SQau4|A}=Cq@+GjaR&IY`5?v)8&E=qVa3}lZQJCEkBVBrh3={z^D_sI2!0i&D6)_8>C9 zh;1;YIU*ktDR>(x$0pu8z;!W*tHt(*dsKNnk_@A*Tozg7H1Ty4ZZs1HMCoJ)M25EB z$IbQ{?qHG3*LbXu^7jna|Z_MqGSLEk-58ZOqKBN1$Qa0`p1!+Zb#}`cp&c( zQyU2TAXEEU@i0?6SbBn~weU&a2vg;REiknbUecRDYTVn|?%m#wD*@h(?cP*74&3;f zi+444OOw~e$p%B-l`VL;fDNRoH`MO!YsX%3(z}MIV@Q~7<@FF}E4*hD_B8R&-@$8V z&0udGo;-KaKUMBM?n5L*U%KovC5RY1Z$ZkdcLRk zN$%>@xL$tI8zk01-wESFyulKZ%}P-;oDTW=8efF*bo2AF+b58NFs5odG!fW z!Oip@4yZA~+PVV(cz=htbPwPR@j&x-92>4!)6tY!4P?iTslx3}w&LZ)WD|S={%Gm# z2R`3=;8+jKZ@TFw=_QfeooqXtY-;_>1OE@o2=iVkX_1}GU_|U5A6;FO5hU&~w#p7P zTs4o7JIr|5*aG8k2xxU}8@+@xGQ^DnBLL zO&lb~)0NzHOw_^ll6bKIFnE+o?*XHixVGu7sP(I^#cnukb`dYDVmrxifU<))9*WE6 zo1Sd!=1~0w7>95lX47vAJM<=uG-D+TZ9DZEhPuUv<3Y512A zO{AgSC@~HH*In*0Z^tS6D{u0Y@cN&yok&mlV;5Uwa|BmNd32BX!p^YR&^B|CH?s8H zKyh&|61(q0;d&Q}4Pbi)8*2X?1USIKV8PwMkm*Kvm?!|wu|`5LJ@qlrHx#;j*FatY z^lr`g-12kf#*Xnl7^fAOoB^epus-&HC7ZE|VJ2OO(VL9R0s^+8_%%#aadLpi&XaLj z5RSc1%+Yc+d#ZD>0JNV(2XMx>^wW)312H1KJo}Ha7VU z=I#Jr;w-~e5mN=B&`(`77joag_K4^FvOBDo+4Wc64HxuiXK0 z(U&_YzhXa?05(H7um(IKoqufrdZq7Qpmbz@*6zgxZ3-?3Yjq>c;KjiCiF5YVMsp28 z|K^~1{g2TSPX3$Wve&lw6`TCzVa}{_cn`iCZ=%vfCZ*A++8k;Tb&Bhl1BWHp4gp7zqIO zvgbm}X{|gSl-ZU2tpT7;OnZj}G-U_q%}EBAK)^Yh3Em{ZMKu#b;x5{oxj#Sz* z*t?XyO$e>ZPvgap>oHI8rzSkyYjt@tQOmWB%k?CjXbY|-jw1G5!&>}F170Tbur(!X zM1fUteUad5(Uc|+A#O`2z1tyk)C7q*69B1v`wlLMAt$I3swKVvS1T|-k<2zs*5^eM zF5Vq%NAGZDx0o~1Qpnl6ZUx?AkR4fG=EACVK7(_OedJJLTWqM{)wCJlf=fhv$=5Iu z+tWW{d4TIy_;{xak+7fTJc5#OTn=dhrMDahB8hbhr2>KMCPqWvZM+SEX%R0Hf-S`8 zUX{=blBRh5`$7N#9^Q1r&I+UTG7mcHCi{Z5L+f!-+r%y`0r+DerO6I(xW+O-^6Sl= zv?M1GcO$=KH5sJvN+AB&CnZpZuoWxCde*^G4G0-1lwz?4gbDL{305=UZ70OdQ)O>G zc94Q^yT)-QJFpLrUmDbvNTPX5z156S4@~RW zEhhv)u1i^=3GE3HJ@(Wa>*OLGg#krEb09wI*KJ04Uxhqu(3@ss=rNSH46m9)=6I>e ztatDtDK?oCwe_OGeuum)Pct-1#ZlraCw!fC6ZH%2p1HOC08|sd(*fCm zME;(K3n606ZaZqMzXSt}Us*}4#Hr@3Tscu(nCKCzG%`FQ>8@9eCAry_t%|%;1)<}O zV%pB`!WXMHflO#NFB-{5 z{_PWux0tARviE0VDfl6MYZsI>2(_nMqSV%7*>9+&WLTjIQ9E0^&9c8qPM{-Lhfw3O z`(hrvC~a;!LQ)KQ`64bFU7L}ck2hd;@$l1ZOZ}d}_d4D&$5`KCyisJ@MqrpJ_ngWMF9M7H!etQ#mdQuSTcvg}79}jKL<0MHhQo#A#NUxQq>4dyI;}rtI^^X(((LavjO(#cZIKx1GYR@&*{q^7Vpe zRg4HM?_jHK^4=019w#RVC4;pe3oykQBi_i-gurpJK<;{Q+mbt7+~hVZX)BmE3Wf&* zDi6NRRgG@oLASH(U*!Hqy~G6xTxM&LEuyn6SV4=g1$oQ7G5V=hbR^X<>tnxXXi7B=AF5TJ9Ak)&W&X8dUKX>x;Du27tMC`IQ3|uhXK07g=%g)TtIwR9l^TQKUb3xDh4Pp2r?1rxFx#8Jc@$*F?xuhUK$v@Uk zM)-Sb0ggSpj|J)D2Tuj*UAuvOa(e1)W^{Vt%w&$QWM`))v(q!VDZbZ-Xx5R?b&hq@2)N^td zCcyXfZ;w->{$I&?$UXi+vhGdy~wb3^aROy{nv zGUnI#GCR*rPR!3w=5_+##PAgI!)GQAOwR1vo7s6bv$JoHbT~3Snj1MERT_4$J?y>` z9G$ykYWQ5vk^a&9#MJreTXWg*+~f>~XPo@cE=*-d&W$?fCZ;Aa&}8KHiP2n^0yS(6 zkKDR2WA$xpa`@~Vct3}(RY683r(q)5^Yg>d8XZL95tA@NX~9Qz0V(H(FR(wp z_m7n(q%aF4M-F9A4s{P^Z|ojCG?eW;-jyBfz9Bnwe6UE#@xHDj*PqTFJS-gd_8iQ1 zb>El;hTen6jkXgubb2UzvUjMzyR!(2{=T6T*`dJ!^wN1_k@A6)-GirDA=U*b%y#yk zFtF|uJx6+vWpC&PB6M}6_xe7E{q~;h$qtuHxT!o&UOx6 zqWjbdRa5?29FUXN6Q}#Tv-DPl;^-XgK6nBn(s#T++j;n4Z!cIfIwi_lq=liPzi;q_ ztvEAb%!Xp>xnaedOTwip z6%Ls}QM8j7yF#IKbsy~M>Fdn)+u@F=snrA1dI&!}u6V7Pi1zJTQv0m9m39(Jj3P~; zJkphzMnLJ%eyc{=(FOc%X3n47-6~2w%^p@y?8k??JBNx?I(Xv5!Op|k^AC&Cf1zTGwmrH$(ew)~PV4 zK(BL{Rf}}g-`#zT{$XP7oE=E~G=WKF2}5pT1i#^0$i5{oCNdL$1S1W4L2Y4E^-EL@ zIHta1a3R_$l`7~}xR0udnp{jQFwfnhB%CHQCW$ z$bBJ}!S10WH^J!*h=k4}vRv42h}|Efs2{Sr5ghdmnptI!RR{i3rcqiG+8_d$vpdYR z3r@$w=fZKPO2VBS?8zR+lxg%ZGG`dW;9x8{)mpYs1%AUa-ralfP)~PusM{JquZ0hG zAMd-dJA0DwLiUZ3!a?M#Qq)ijn;D;Y{QWTzy&K6zJ$T%^T5ljsn5kzjcbiD*(2?GQ zgQqc}K`A*WB2pLsPNzcOZewh-w{QHSO|wLr&E{q%?+|3y_Z+-I5=P}^$~$$j{P?CM&Y)1o>+Gr7K~rYY~x z0?}{Gmkhd2^!3Md@A{sTLx-2@bg+9M+uL`7(W*KOODTgM&H<2RmnaFYcN-BGH+zZd zKuS#Z99U7kFm!;`7>S9JA+9_-J3KRv@Ox-(W_Tn=7CH~15d@2g&EYRqX3q~#A`C*6 z$?4m3vw?|(sJeSkK$S77_@DKLCuhdFL>L;KIEy9RXbyvkg#=E>RLHWI@=vnkL5rLuD*0CdTf7PK4`%1uUQ~8isyzb`De0*zm&SycNjxM|zJ89oF!ZQn3Zchi=IBojf6v41i;k z3v=Vbq#@|WgFR3lD^$ee{g{s;W-Q`0W-L?sLSP%F39%pPC0(HM)(NcP>`#Z9;;!yP zCvRZs43^;2vm!1m^s>VX^V8ZXG_3P*H-^$Q;h@^a)Q%$6}$?rTshrWVfG&N@%RP>vJB!VHKKuEVofb5sqlpclR5rt>JPXM3Y|*Lcq{xacuP3M-U3qAxLX~(nvD49sxqz>k zkqH|w1(6M-sTu4oWkJQLSd7LwFvzJ9gw!Es2`mvo30~rYc=$LE#eoWu4;~q_3z=o` z15S93<}S=n%Z33l(glHo5o||IV3V0IT}(=Y2oZ8d9+nu&4A9y?ke&}KXwzBF4*1dk zumnv5Aa=^w%3_!}!;BqhBovs2^_5~0+2NF zl*OiWg-x7!?8uEu_-ZC?QA_p*)uHgmu`>vLrWiR-2T17Jf?jHF;q1g7*J<4Ppu(n(~ocqJ1&FH z+>~@aCOnfxNr);~=4R#h5(3%Su@Ui4PTiV?`^cWTL-dnMgVD|A&dtoP zAO{Ap-3|^}&SlL6DY(pxXefy;U@R%4c5kErTMyRf+#n*EG`xZe6gwu22xiQcVYD3# z52_*UoW~p&#UsmVv{$^`vOvURcDbU!LD|mcbZI0qc@`!{{guFyIjfaW8O-XK3Z`K@ zXJpuCuq&NCOSi$j+N^CFD5V(BlK6mx5_Gge=y3Sk95Nn)pE+!Wk7`BiFtc1X(Qgm? zlm>CeEVt30`hXXhyWn8sjJ*nnnC5d6=V4ifTA&VvOrhbwZ2PIx4ZcO;TQ*2Zi z=%^Q4YY33ug}|ss2oQ)yqp5ZNlXMTEP|nWkBt02%X5y@{A2pagnWsEmapj4#gY_!} z67(z{?uIA=*#s509Y{%qy|kir1?C>d+<&kuB7AC!4Nn%PxRsY1&CbuBr4zKS3J+)u zN6JiIp}EgsPi`}!^9)vMA3+%@F zJP3Y%dNRhsV8qP@eWRN}?It2rvPI1iPiTWT&Sa!yHaD5$X>Ndnl_|`*sZk!@8OI(N zAqY2rYDSfTIAn5|o|6e{b{eOo0W#q`*vJ*uh+o7O(_AA?ZXHkM&Q8xyz}1b)GFfns zPtVQE1RO;y+t}yskog!?z>Q2`ZkvzK%|TciZ#me9jT1DAdq27^EYCUj8eH6g8JWaP zKR!1;j59(6XbkEMZ0rmU0VS)rWy>$y-_v)nD=R0B6b|Q5(`a~PJSVBSncT?4Fjlq@ z?wlhh>LXGJG3O*woIM}N&>%gL9Xury^U0xuH-runtx=x%j^8j7@d~Res%XvK(oJ29EseGe=xP(t+(J7-8?)Td99-hm7cn-rwO@-c$$;w){jL+rH@vtf%3-@~ZAx^^p zgBRRr5CU+2Uc>2rXoWrFAEQiF)3%%4E+REHH45*~W77$sJllkd+ z4m5P2pm#f^#h3zuXCRH;a1&5V+w<6Bvuy+Wb0WVUtp4?R--7-{M+f5s5GCDY$yA3or3$xhZ5Jd(( z`9e{Zq*+nrsK(J%vrz)05GG2u>cX23Bh$0S9a3WR7et#dT?9rQ?<|m@%moyqI1h=E z3v0^34lV)&mE%>6p!5&b~pj?&R7U+orTL(kDDubaRJ92T*J4_2ga?-y#zRk;WKl%*aNc(t-?$fQBkOD&CE&7i1Pyl zrDzekF_TEDvYBL19B{nuHx1&@ucwb`-^vpR1GCVswd`EV27)$FJ z#0**NXH1V=eRXzjZe)0BEa+m6!$is88W@=2wr0Nd&~gGh4ZLSCIvl~cSPhNlj*%f| zZgzymhf!8U@Mh*(mTo`=bD9a9STFR7k?l?d6L!A9{!9FBSGd3qos2nhq25PUzfsE? zK7SU$*=^YwGkc8Uv;sGfD3Le`LZ77r3Ja;pB*LX{xHo3z{$f6cfrXKa_{}kMaY+cl zc3@n7$YJ5gnS#MURBfZWGdP5mVP97_)P6#zNz2$=;VjtO)q@ith#}4uZPYSl_FBw% z=}HlQpb#e_Ru%@iRB*ZXqc!gY^Lr- zRFG4(>3uebu@|}m3pevMI>nr92sL_ShKj1f08_jzK;m#i&w(T7`SCoOXuMrF3?A&V zVGDl%$+{zhInDyBtM@FNtjx&E{ls`P^+4)np!MV-YWGpm$#$Azh!%)4V02{x5i*v? zlQm4-&69ef(y;(Q<&6m{m@0~KYY;`FVbhWjqeqAn=dq&?*FOQT5=Pxhe55B69~k?R zC@b^;W+Yi8BPW+yO|&NK6>6r%J(I^O@7BS47xnDo^dm7*K20YFZ^(8XJaN$2i>%M= z+i8wm70k{;85ri_?jT;#<5`7G%9AT7IlnMFKC&6fW48AnJaXdtzQMlUZoGjvj1Al= zhu}{6>gnq~g?oZ^g3G92-72 zfrBY_+Shl;)a&cL{>b2QNe|-62TpZoMO^Yeq<~4^AWlVjEN>POxbc}axUj&dc9?#8 z`+5)I_Q)}5g&-KWH%>zS<_y-7I5Fk`v$o=%Jj5WE7XJ`68k-e3rLh>5&DFX~+=W)!Et4v0?9c zSu<#!RYIgoii~4~DGpLVj5IaP1Jz-<(7?j$aXXEt_QE?tx?`4K&c@h=^pUua~j0%1X4v8qr^E^$j=$NL7mqiRbLfkwG8Y!vI@ z`*HZei^uF|=(L<|%P(>xJP_6I9Ll8n5fI${Ww&}w$%JmwcM9~_t=q~#7h zwsG*fEG`XC;xfY=uM%VMu;(~4J9fcA1uZac5I3=Lf0_0ozc@F7`e)%0`Pa@d$L3~n z^ErnbduJgp{H4v=2vCp`pR92uhZpHwylcddelvxCm+apHf5tvtr(csV1)xz)zHC9B zbKk{9&5W+<5LB)+s>yK+l6soC5Y~IfCQDWaO*L6zLDEz+m%@7Y+vLk3=rx;k)&$rp zY;tP|>bJ?eLXeOh`=WqENO%^CW43ZBDkOP{jcu%$&>j3WU0IW z%BO+(7uR+O_!axa*lJS$UU!M}_ilgD(bdMU2aN|b8Ergp*~TvijR!RuZ9G`CvC!-GuaHF*lJ3i6*JUUQQcii(UwW#UWEX;Mzs&q%K zbXiRWsX`$vUlfGp%L3>EQkG7X80AxidnwdKO;+HSN%#)~sL2mlkQr&s-4ayn*W?4S zikf>Ss5q+0=PU?Qmb<8#*J7MHYA~^$#ni~%*YVv^y*8_{1dpfMBNfi@j&I?6lHn6BNdp&He z$u}%WT5BdMvw=m;sh}|RYBDOb;x@yuK(*?>2ND|8qzZuI7%U==K@~@|r$XOOJJDX! zb{rYQZM11^y<}Wx-)kaj3O3o5N44AR> ze8JMAMhK6i$&j8=rAN&TwKSJ0)U?abh>na&f+oC0q71UdL zpq*zes{d-A=vR{|s|9GS$-S{zSaUk{7U>3m;+NWFzNL$Kixq+SCI66s7VomKXYJE< zhBWy~k?OBn*gHkabTzipQVLX-v*6(+VG?W_qe~zFg09DuE``;F9W82^!jvB{uWUSJ zs{{0`O)47zy=p;9J*B2%4Tv5IsI`fN^B$xfZFGypbt%BvugN;kRCJx3Cf8Vyu?x*T z5mwaXQ?ZJgQ|AYaQ5y2oO4GvuO#_C^5sZ1 zO}`RW)8sn=Xdq?XcG^B+(_3wFZvYzTu*t&#C&JQ$x5rRC`W)UQb;g-&6Ke~SA=*jkg(rE0jc z)5S5=K$B~1oM6m-iH@AYo(78b6t2j17XWdKCZjzq5u%~{!kz|;^%O3@X99H`)MT`$ z;vt&$@|KkxRkOk(($>X7G&<~zt+yfUSd$wq$a5aLt6+P@b|oU#{*^U|Nt0^W7t% z(k9=uPvY0~+hMhkAd|8s0a(dQ2WZ+B*VuGxfaatoRkqdQ_&?6sp{>Qt4O*n+*W0;a zAoZ_95S4{>epIm^H zyw?H=_G?n9E8+=?5k(mOWS0Dcx@dB102LBOsL3ZR$W+wavtdO|J|C;7 zxwpfLHdXYYl)_tTQd=%HK(LN0Gd=fOhwH- z5@OV(61vpz9JWoeLDPOEU7xl@vRYjU21%M!YX7BZ2U+fA7=Ol+y#(VyQ?0k;NIqL> z1o5VQa<;U|Zw8=~nk=a@wb^a)11QH)jIRdG2Q;Z@T<3%)qZpTp?G)q70mea1DjF=& zH5tWNIOFNC7klb9I%J^9M{PaGPm}6>j0`mQVpvg=FI$kQsJYj|ikf^gR#9^mfzFO< zvMw^}{fn9#4=Y+k@A08b!ry7~;efiFCY3{@YMOf{tf)!l&{Wji>tRJrDu#YqpV0Gs8QIC->97Tp_Q_yH(-$m^ zuEHkY2|+qa`|T(dTMU`nk6CkmGBE3YP5w#%8r0;|7Q`W5%Jo<(f=7S3Nj_kopjeZS z1fZNIH^zF<+}41Ueob}+pqwTTTM%x1TwK&lPf)L4lNSO|PLr3SO*Qj~1sZNO_gL6E z;PJAFLIDgE3Sgv|00tIS06T(C2Q=9pfJQW_JmU~16$qd|s5hX=`2aMcN#$9ZYDQT$ z7OlBZ03(;02J80N=2|~MwRJZHo=Wh^1s`xat+xh+?^&J!qk*s7d}QT>di{HP>dLsHn-&SVhe}99Gn1!?Gww&1EbU z7&SQ_tEjmL!it)FJ62J1Yl7KeOp`qpWSKE^#J&r~J)q)_HeM>KRa_siqct9mnkL@~ zKsg?vFC8T%wGUlj-o z*tUtdRCFkmu@dK@Cq5d`s&Y5bd}<9;>D2)-(0qywG@oVz&8ONx^XbOGc#f;52YL(> z@9lmoi#XnfzzWD)5xgM?-h`MZN#VcH+eRauL4hKkBWq%%PCJA?4uwh{wXl+giJ zoW%wXb4fv45c%du1NG3>2Abcu%tZl)?~u)Wq?&)!GWEQDmO8V}vTuEBRiH{YTNMuq z^7SSt$XAk}K>G@xJr-#J^010Y#pYpv)L7Nm7==-fqo!)0YOt#Q2C62jY#3;vE2qjm zVAWDNGj-K)RdWoq&~+D6TCku|Siou;e@u%1cGxF%NYngVX8h+mfNAka7)BKFa{*^UGeX2$WfXI;>ghJOhv+GW@nzc1X9YL#AvRaTOo3 z$1R!4fvKxQrcA_#;gy*0&|zr5tnUcui&0o%!N3m}pgE;G5<;k+0hCWMK>6eXq$;Dd z0#t<1B7P^LE$*a}XZ6H&CQ58lY4n^=xQi;3SBWy3(*x&X9So}9i4wZd4%O7EEZ^Zj$-Svyy8lVlRPAZ z7lbs9liv?&zp1yw@@1KD6lZ^kd&%0S_4BsoSL`#1*aC-}i~FstyX;fp`J=4xd|EXB zj>Wsx&WJ(4p?c=o4uS$zEtO_akgrWaf%X+X-%_`lk36grPd#RXm|w9^_$p26-2m+H zYw~Sd%Pjpgr^~(KM=ADJbzw&X+R+<9-y@n-)a+FE zFzBOTXVF} z{CoIU$m~ENvm?cr9avOmpA9%0(4=yR(bA-{XEaZ9ZwAbcXj1u;{X@+td#1JKLS{#n z;$L1j?sC(gluo8Jw%8Pue9V=CtNWG#hYlfenUk~?zbvx zDr&AH^l+NID^@X-U6?AA;($sq+W6h}FC9mZYpo&S(XYw=U_u%#6#S@)_~}5zqbkht zU{x`yVtd^R6B9zAfJRjm?SUvpLsm`7>H!QsV*CO1CoGU*ou)?%$zNj$V>L}H(V$F| z?wzGO4tW1*E(>7<+C4ht!zCVSjIyS zesoc3Q97{p0#vC{N(@x#8Mm|;sOp|lW1t0esK>Phk6Ixgw$zYzO)G_vY(9AaDQ!;$ ztKCseD!D|a#Oj$4T53}1XSIClQ7xZzv%{TFuwgU5X9LaesJKX$#EboiB6tBUg15-t zMZ!@*>c&0#FH*0hpk7f0iikr;V~tf>gI9BpStyopnv7@_2*@8f)4Xt?#tR2!JVHf~ zOj|wN7@PnOYRjR(Aq)o9gT#BNByadc97f@6K{L_U?$rLxIA5^NLOp!+hTpP z+AH>`M+Jat`P>tf$2vgyd;_FRpRisJAU(f-D&hz={cKoGlPWG!royTV6k$}8DnC}s zmmWG*vFOvX=;VtDtM;dKjh|0wv@D;xXjwi<(K78{pH}<@beI9pr@%n-`!>-0UW=;? z`PQ-4aW*w|gtX6Zt3CWck@iL06Zvkp!tbz81Q{Q&Nqtk4aYx=iD*GF@T7xylsATi? zF~O6(;c7x)Fe`B)4zzdda$zdaQ%zcpd`ZA*fd?^td?X-DZHsaH_jakQ2b^4zvm zZP!r>?y}Yi+)LJGk1trPuh=JEL3rDG{L)}5F5+$9QzggQYRTAdpFpo3p)-hx3(zM@ z(zb7XCY*<6@&)O7J8Ug|qLyAW4=Nis*ke1}Vf{-~Ir5!Kv@G9~M9YFMB8i7>KaYpZ zDf-*P`7F}FCf`#fYz|o*FNC<1!nwdD7Kqbv-czM0ReGZmcBsimY&o2%CLgmPvx14X zFHEnuAgre~sc5j=)#PKg7BRm2Y9;LDLA#uO$v#21CSMIeIZeJ6fciB#nl{L=KGWoV zD-6hRr@8wr6g_D2u>h3QWM*Zwt>!u`6rE`D!B|DjJr!2eq_ZlDQFCi76c|nMyM3#m z!iD{SCNtHhF%AthsZ5*U(ADo(#$K{Zw4bjsL5|wkmt;~i<(hZNz>q>=9F7_F->akreZz;VO;jQ?L~zR zGtlIYK=sCoNU4ZC3J1S{bM08W4g1Iy_K_>>BUji*aRuY~yFG(H+-TVEu}{xAe{oSW zqZWwU{hE9rT2C_%2K8>#y(p1wght)LsW~5pn2ZZF43~g2NLa7ZF3aD`2 z;5LKZYS6)bz;^F}!9~reK=2~BCUu;oo@P`csHaIKL+WWpc|^V9ECMQY&08OE!9GRh zG;_ZN!qhbRg=oEJZRWYKo+jUn*3(QT7>pa0K(!L-cS%yE;4X{uiJ-SZO+IZw3H%7Q zrj()XQeZP z1)vSDn->-Qq^%~!PY1;celA)Zw$>SH#!4~|c>ztI4_GGjx!k$U@t&!x00rH= zZFNeASGtMgSel9FZO8wAXY5oYU45W@B;CzuKug4V+f5mKDYtxN<(ubmQV@@uqNe!NCk2a|#HR%WyEwI%O(ON%O3ij}QHW2cPj@j24rla`IWk42q zW-N{QEo2z;-pC~c)Ikj7u1FxsKLt$Rlv9(jVwuqqdt~Q4QI^@6yG2FEqKn3Y?>bF5 zzrb|1wIz-_GfXEkc~VIsvh2x5^(*Qt(gT+1mYj8wJ&s(xQ+-*B{)$Kw`Yl)WDy#hQ zh_v#%CN^Td+F&=;7<{@L?G26VyW?P=euzfe4~IVX?W)tQ0PC5dX_+j`ciGub=pv?SM$TP#W-q=JiEJ5+4gjT>8@pC zUbuCTaiCRdVY!JJCt99M@Z!1m;Kg$>FC0KG*1TA-TnoL}o8ZOX_u$1|XB3RxKcxpf z@F03L;QA~#^3phiE>KLLJM&sk=N8w~W3mi{hmZX(!KUK2rZ~1?g2k@HVZT5E<2*q{=mm%Hsk8IyM2OGd0<1Xe+1|CsE5chJ5rY)SUH zt;r(UM;x?|>{dYLt|k`tJGq3-uWnRQgB-G*lVIAEFVwES82=KjlU)AjFsZ)H3^u4n z?iTA@V1ZP?qYm8VT+aL6NV&}q-DdSg_4w9~wfk(?A6{S}uOg5l@Oq1YuXUs1o_DW1 zf$DlXK7RU4Q`#=UzssOHx5%#o+n}BL@B)i#fbTG{e0d?z1A|g=`0)=*h3{LJ+$pQm zoF39pbP5uqwM}BhO>Bt=jMJv64tD?u(-p6^?~pF{VJG-ew-ueuf*lQ^q?Q_6!Ns{g zEERGYg6vHP70GtvGL+t(&bntR=iJ4qSX!H<&cw_&qz8(Yvd&VT?0!I!jIS@Sa3hqX zC!y`6{B*s33N446hU{^$Cqw8WSl%Hd!QgXPTU{TsyTI~Bd660d#LI#LIn!jix>PUp zlj<0dXGc0z*K#cJ%+b??k>U)UPCe|lxNwFKxJ;2Hl_$_-GYoDh*Qcp?IAcd}Bb?^L zqVL17i|Pbf(hl|I!wW1hv*g@4?nCTE*(yzl0e2%@48p!m#`VTde>p~)_TyCL-@^SwWU~hl>bCeIOtAWrV)4rPh~pWs_IPUvxglQ&P;V zpjxuieB^3u1}uF{xZA}{Ymujs^U$Ibn*2pz8|4eBey)VEp?WP#6YPw}tRLZjy{F3$ z?H!BQBYzs0j2GG81|;8@&SF>a44|b@`p0$5elZM#a04oJC&=?&IB}{6Vci0Hhs4D^ z%S-#~1wkKmI8@i1>u#uq!qH=>NU;@T4wlq#IpQh#E5O`Qk-$4)g*_?~AjRR8MY`t{ zalq+h>fx0xldd4b{}oh%NOrsZdZZ*b$u0u26O5&$P>}4o7D1N68&(Qr-)RwKsV@va z9gWhs(<5}6Ez_nf-&X&_u)k5wnztv}N>OweF6x{kpLJc%9soNQLJSO@Nt$w;-n7EI z^|UPcd8aZ@m8St|F@|+LGq!W*VC^!fj566P4%$cd5@KUV*$+=xrq)%bVuUOod6wKE zdn%%JWPzn+Hx31|QS~am6!~H<*%X$R0cE` zO7X=LXF}*4*h?YA*8#7E&`q#guwIDzez1cfvvnO3pYPoujZY>n!C@faTK?l67T7q2{8Ip9Q-VLVmP6eZZ92 zx3^$Mrvdqk&Wr5ZU@wQzJ7BMd&~>nUT2~Ug6ApDb$Ff_%_J+__u-igt7udlN+5iyIkj2@olmuvn`OGp0S2Bw1Jba`m%N!V|n*cq(#qzuZ z4?zyQhat0M-*Ql%>Gi2BV=E4TKAEqb~$k&`$v%KQ1urVScqCrpH)h6 z%VEjw17ykGbWnlp7WXK{6xlAUL7i%D{vRx`wEea^A2&Wi<5VP5jVxc^rvo~&z!EJb z90^PsnB58*qSHD>$v4p_{knPbd|pA4ifkwPsl|NT8f(pP^WH0Srk-SaKTJ-#aE{yn z`@;|-OUts&)AhBCu@ke#Tk4eZyLFd3rq6R8S!`}NLWj~x{5jLpiFB^4KJ>CSnm z)zaiiyX4GM(m+Oo$Q4Mxk2NyF#Mql|TQ?}}q?RcAsB4d@KGgc7ETgN3*d-*BzFpcZ zVsM!C8smVR$3q7i<0}d{$u$=H$P;+fO)B%2s!0WkwTu8;uvhu0+q2A)<-W13Fl3(z zrO569WS4uEMx9`u?12`+hzl`x73Y54UA9Uxk8IOHMY2Z$SqE4;9SV|NY7t~2_20k);~B_mXT>WAfP>gLBGtP?pREzk{8!E!+`X zljtFJFskwp1X+f(HNZ3`g1)779-!!ji=S|j%aW}*C{K%_jeOijp04|p8>{=B!t4RC zg%F~RuZPew*oz_L>(=EJeB0&LmZT@y3)ls+q4FE!^vtgRvPe+Tbtu$_Q}Q=~iE^_2 z;jRg?Z|}%Vows>WtE(aN(G9<)tOCDuCL;tPz|BQHG=RF{sug4@+-fW)IUU8=fqv)h2-))vDv+hiHf2~k?>bN* z8|}cz0!ueSL9%q&YGf(wKq2aEoG-w~s`E8Vw&|c(=qPu;Wm=Mb%enLlz3g3>~ZI2o_p#i9F!%?tdS!KJHz}Ch@A-|p7%Rr z%Zr$d-0zTKCL8Vn<;ikf?9@rtn2c@%Ec(gba8RDC`RXb#^uxC;pwch0eSoYWOT(cc z+0hn3mZm~Mvb7dLmiST?F`e8mi!S33zv_z7OD94>vZq=ES>k0= zS<-IDr#0u(2-*G4RDmqL&_0d0cLU9bf@JB16=W&&DP{3tgm@`aKUxLH{+Dy`C9+hf zjU=CRD@Bc$!scYDMo#0&Mm4^adK!Kcx<2Cioh8daNhUB>42eMTIHcywAarL!8+*VG zhY)RiK7`JJy%0j{jX&#lAhDU!G6Tsr+%(unHr!w>k{!bmWz&_VQ*PlZl0EI9ELpC6 zwk=Bqx11HpHUU{dmcr$0-Bf2+EoFztT<=E64m%Gg$&Lc*P+x0XV1b>~-i$1;#D2=H z?qnC8!V$9n!YORLzQ6(xT4wu*1%|^~VQI<*XOe6gkZH{VV`N*i6h>^aH7dy^#%jNd z)jqNekZdWDWgxW4eFE7D%#V-=;tvvq*=1tU4Ps!&4&GPufhwRERY=zog~W>EZKx4%Yl&Vqb7#U zB=KELluSu^UuR-=$Aw~Hv98gxOz7bcbapgRX6P6)<{g(T;(m`(wVQAzXg7F*_Qdcf zYnLJL6$|9+Oc*G6vlzO2t8OJqCb}4xOf+oc)`q7CR}seRpt2y5y$ML(;UJf^Q0T-W zyiqmfu=Vf)%iX}cEdH3>asz}EHF9~32)`OrS3g>81r=Y&ZUdyxr?M$uhU|mkt8kPK z%bqV;`l>JSy{aA-ABoT-)X2e@2FN=sBZ5a?VBeibVuUIOjTz%1|hFop0p>86!mcHp*8(S3$3XLZc%mAF%DO zfL;YH|Fp#~fObA;%Uz(|pvOSZ5bv{cXF!$rIR<^FKo>zzgL>j>5PF9|he6Zq`t2DP z^}&p(nnnN4rueslIZk>7%?6SU7%_9xzT+q{rnL+-~Uq>=Zm0z{QP+N@$vQT@Wx3Y?mIwz`T3M_ z^xM&|6VQ`3u6*8(ab{dkBF?0KKNxq$c^GlOU4MJ9pSKNkJ1F~2|4+mJB~a!if7FI~ zw*r6P2E7JK|F*%u?Vy^H}c{bruM*YRUqIDU*n z+W2kt#)%ua1>nAae!lqqP1Cmr`i4NcE9|%T<$U|T{6*+n106(O?D6u1@$lQCsz}kbmzprmA{7h@_%cu2+cG(}=y;Xnw zx7XiFo;z7XSjRaI2QVJ&_jcr)@Bb)|dpMr({HhP_`S=$vjg*m(HPFMLM?HE8Wq+LM z2jjwV;Oo~p&PP-7?*RPeE_E5@8YqwBC()ndSZDng#M8e2)^k5Td!VNPx(t16@5}Ri zkoIq-{|5A4!EtpI`suf?{~F}n_;_*WI57Tc?Rn4D4d~+ySH66zT*`d+^WhZyBlY$3 z>fsgW<9oq-FmHW%9t;T_PVJnuS(_@4KUTYmd% zs9yuU4$Aw974o|iv>TLn^Dd&y`E?EDHPGvzyw#V-G2Th+-$m^E=fBXnAMXJ1-&w== z)%4;8*?dp4ukRGbVG)!s-CRMr&}&;z&+WG7D?!=5`vKds2b3=?T|+rd|8dwq1IpK5 zrpfaKmhV8G`q|F+pYMv~TORoyM84F~m*;C4m*Dp$P`2~s`Sz$WyiX==ocIYQqNrVsCgL6Ha3bERPA1|T)N&%eQJuUq zqx?^Yxy7(=I!Vuio}?{ysJ;~Z11b0iQ}7R^;QcB1Lor;hES>6q zzUx=m6)m3s`i!7WddzvzkA`-|-=vnkt?gb@ze!#9aI60wb;8RBi^ubd`jvMnfqKq( zdbWz)q<&FPr>Eypk#AR<6!9%B{ff^ct0z7$2G_NFms;`W9rc{>=Fulo^e{eWJbCuZ zU2=f`&kEK3BEADS<^B0i{pSy5AZdxd_S2>|E8;cOTKW5BU2V;Oi}$Jn-aPsRqbJ09 zB(U=LsQ$$aG+R;-vfeoMd*fIYdEH+he-(Jvlc)bXJpbn)Kkv!^rr>R|KI})o^!(8u zt0%r*y(x8V3G3Lu6YLmvJS;KLri3wRbdb~cgE_o&O?rYF{+jL5H-Z#QOJ<(Y4@PqpIu=3Fzs zfG=A0Za((^yp?CZO+Y>ie5ub!k9#=h0@kDjN*cgb;7e|`kK^M#Bl&jPPF?lzzYF}D zhcj=-emg@~4E>bIua~!%f3sDddAl~zinG5x-hK}4?*AvP^7`Ed>)E|=s#TtLv$a;7 z`d61)@q$`U|2?YrcUt8?XW|yeMNOigB_ki-Ppb>ARD2)rOGZAv&u04--&g!Ck-t}~ z@;?781^;de{_hRGNo{#FV>EFcxGK2xR`EUE{hij3ekwA_?gqIukc8itf`2##-<^Vw z3f^yBX!)-%;V0SckV|&`dfv6$`NBqXDe~VCyhr*wjCo4=f0QEs2ZHPPT*f@Ld8X9& zjQl2bb~NF?Cba|St9u~-dnxjlG~OQHSNwN^C&l4Er|4Nr!S$_!Nq*idxS2;dPvAUy zFh%|`gG;|&&6pkypxV~lMp7#5dzyJAJBM+enc}2_1yyJBrEVt?i^p72|`j1Olf4&TS<)Mrz z-!%V~`Za^25Fy{9p6wZfc4PhdofP@y6#S1<@V|uq`6;WP=TU!?BL6&=vk@Qe#yz4`Fu$J->dh*a6OT?KL0-Cd$1nz`|{g@ z>p1hgOVZwa{zHo0zevILtCy4Fc5e#)XbS%G2AB2iV8-}y$-1LHog#lgaP2>ToQLaY z$>8C>AAS2mik`2h;NOD&UYwUQfBtcb{97sb&;O zSEb6K>cL_#RV>$3e!9?5)mpPutptT)Ggm6>_KoJu#Dqu|iuK}TsnIOfgXVOQFIOwY zhS(}pgUNDrJXa11&1$_7JOa+5{fH&an5HiKHV zT*@DDkdY-eReddxUaL|=dQ_dMG*!KtFCN+%Ej%7AJchzdu~caFK_l>?Ay%cNv}=`e zU}~(l1NmyD(X7?0HHl0!SD%Dru23+36pCd-C(1L8DZ@2lhBN|0rAA;%g`&i>NVHhV zjZ0v3zY3*B$QKWZ$EKHo?xhUzp;ErsfG%611JQ~{!Ymc+A>ykMiFF}pRPzTJX@GSX zat+j~^=4djd}d9E*>hD8K;Vn4Lq)9D$}{fLCMx; zeNr5rl!<~-F}z->IFgNKuGx^$F*=&X{8Uh%9ydNmpjx?_vmLRcXykNwqC;miVeldu zJu#k>yp2}YB@2UmEP5Xc>80V7hUBQmbg*`!_f<2#o;pyl1J|pm_UU)fpb_lgYd-kc|Q^POretI}~ z@spo?>Dkd>^y%Hh&jxC`IGwK@$$V;f@9t-Uodb`3T(5<)v{fsWV!oNtCdmio)M;{WM@Z-Bw ztyr&D>kbh&gT15A%ar1gZuI$Q^l@%fFQQ7T)(iH`<2#*taj4>X6a?c9S(lB$KpL4z zEX}5?h0?^4AV2OJM@FfZYfkZafo|8E(pChTk##w04p7LPpjgN?bEc}^kOWb+>TAx>&L_hl47zSiAF0T(TQw?ixAZz3 zKjP>KRIF5;S{-+NLLm92LszU6BLBDAbdK~ zE|zA&m4&YnZAU@G*$Z&fFp+9X=Z>68 z7F)(7D3oR87aKB|COt~|pjIkkNs<*sY8%z^p`r_ZvtF7G8ns-$D1ou*D1(I6f<|$6 zr$-ZsYvz17Lmqp=DTFMJJZ4gdQzLTDr5Xp-#B23Zv!w$%L1gG8D^1tvfW@L=(koOg zS8o&pIX9Qgb@nAWy!F_M)ny2qb#Yn8bgEDf8(<~{)%v7cC(NSEgHKaVH@xLVD{1vm zw8#_-f|B_9^$_FwnD^;E2 zIsMHl>Zs_qs~m?^!jPZJwS*OONYbUjRhbj8JlSyB=6Nnlm`)FWd6H$T)RZ$YeYB4{ zq8CoR-0RVvh%e(4T3u9L4K$8SH*@1cWv&`JMNXf-*K2B^Qf(FoCMz=o<1?jl;iHlV z7J7R3-jC{Us-|u#*O*cRg(DTwXQ`y4sX0`vHzZswg+S_LCg*emaJ6z%4VYdHG-W|n z1Li<7P_LT9*g$a#-z6ovl`Gj6_DiL0L0%N+rb~ITS`}ULZ@?I^%H-gr zzf9K#^c*UU&ot%x@IawBJ|oLhJy)3wi)L|Tl{v6bPzIt%UIIu~l7%cZnH`Ov?B9dZ zTyF_tTf{woF$h4{M?cs;bkHNh$t5P&ezZL!B_+>m7^1dX;{J1AjDWu09&LZPJ!7g4 zqkX?Ah5!8ad!*`b-hG#^k9N;}ob>F=Wp(r6z9ow41z}{X()qvKo{^H0=R^!qm*qO8 z{%E56&i33F{RP4Fr4NX^=SWV<^#%PIz;zK@vO36X`uFAU-H88u-sBHuzfXUD%@X$p z6xty@DE0p@(w@(y?3aBk{h7DK_^)F}{{gFC5=P_H$LCkBqWu^I{rIu}b7;RCa(vEZ zNcN}nhmTC__V1TJ+GqP;6->t!VRp~MEN>A|K9sX1>nnLpzbb#x_Iz$;747*d8n)>n z1A4-1&;4*d!q@e=)&`l@qO$j!hyL?9oMTNZ2sd0S9qZ_4Q3~3B#-G=17SX=#XQI;j z8ba&mj1;5oPrs2d0;k`wa(vXxmg4dIj#Nb3^ZB3I1>52j#*ytgek?BwqeYnJd`{^6 zkF10*&ob#H5!)PT&*zDjZ?pYnX{&RG_W9h=MYLyNnP0TaIQ|!DtNZWT<2j^@?+PfN ze)B*4$M&RuE>+R?e2(cV+GjYhP{DSjf9193eFodwwN|D0$|X~fe{9F{{{}|?xqm;r z!M0!V5|I67`@a=NOYR^5%J%-X1*_Gz(V`s!==GZ)-Ul!S`@EjWdO!akkoMF`8BGst zwCJ)|=@pfJJDZQ`_I+Iz9r=&C6n=bJeczjpY3b=dv*=eo6t>lzFKh1uZuq-6 zpMAcy&Ts#M02=e-|Ky9d{Z_An?MXk2_N`Ww`g^b2_C4QdtzkQ&`jsR;rt7BPZ!>D% z%O77>m%S9XsvouO#~!l9M}+9P!u;jBt`C#UT`Ot-kLeqU<@0%O{qgO~9g>Od|Kt~K L`?}Y_E2{qwQ-8|_ literal 0 HcmV?d00001 diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcr.8 b/testcases/feature-test/oeaware/smc-tools-main/smcr.8 new file mode 100644 index 000000000..f93a5ad16 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcr.8 @@ -0,0 +1,124 @@ +.\" smcr.8 +.\" +.\" +.\" Copyright IBM Corp. 2020 +.\" Author(s): Guvenc Gulce +.\" ---------------------------------------------------------------------- +.\" +.TH SMCR 8 "June 2020" "smc-tools" "Linux Programmer's Manual" + +.SH NAME + +smcr \- Print information about SMC-R link groups, links and devices + +.SH SYNOPSIS +.B smcr +.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " +.BR help " }" +.sp + +.IR OBJECT " := { " +.BR info " | " linkgroup " | " device " | " stats " | " ueid " }" +.sp + +.IR OPTIONS " := { " +\fB\-v\fR[\fIersion\fR] | +\fB\-a\fR[\fIbsolute\fR] | +\fB\-d\fR[\fIetails\fR] | +\fB\-dd\fR[\fIetails\fR] } + +.SH OPTIONS + +.TP +.BR "\-v" , " -version" +Print the version of the +.B smcr +utility and exit. + +.TP +.BR "\-a", " \-absolute" +Print absolute statistic value (valid only for stats). + +.TP +.BR "\-d", " \-details" +Print detailed information. + +.TP +.BR "\-dd", " \-ddetails" +Print more detailed information. + +.SH SMCR - COMMAND SYNTAX + +.SS +.I OBJECT + +.TP +.B device +One or more SMC-R devices. + +.TP +.B info +Generic SMC information. + +.TP +.B linkgroup +One or more SMC-R link groups or links. + +.TP +.B stats +SMC-R statistics. + +.TP +.B ueid +Work with User defined Enterprise IDs (UEID). + +.PP +The names of all objects can be abbreviated down to +a unique stem. For example +.B device +can be abbreviated to +.B dev +or just +.B d. +For more information about individual objects see the man pages in +.B SEE ALSO +section. + +.SS +.I COMMAND + +Specifies the action to perform on the object. +The set of possible actions depends on the object type. +For most objects you can specify the +.BR " show " or " link-show" +command. Use the +.B help +command for an object to print information about the available actions and the specific syntax for that object. +.sp +If no command is given, a default command +is assumed. + +.SH RETURN CODES +Successful +.IR smcr +commands return 0 and display the +requested link group, link or device information. +If an error occurs, +.IR smcr +writes a message to stderr and completes with a return code other than 0. Possible +error messages to stderr in case of non-zero return code: +.TP +.BR "SMC module not loaded" +Either kernel is not supporting the +.IR smcr +tool or the smc kernel module is not loaded. +.P +.SH SEE ALSO +.BR af_smc (7), +.BR smcd (8), +.BR smcr (8), +.BR smcr-device (8), +.BR smcr-info (8), +.BR smcr-linkgroup (8) +.BR smcr-stats (8), +.BR smcr-ueid (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcss.8 b/testcases/feature-test/oeaware/smc-tools-main/smcss.8 new file mode 100644 index 000000000..49fcc2927 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcss.8 @@ -0,0 +1,407 @@ +.\" smcss.8 +.\" +.\" +.\" Copyright IBM Corp. 2017, 2018 +.\" Author(s): Ursula Braun +.\" ---------------------------------------------------------------------- +.\" + +.TH SMCSS 8 "June 2018" "smc-tools" "Linux Programmer's Manual" + +.SH NAME +smcss \- print information about the AF_SMC sockets and link groups + +.SH SYNOPSIS + +.B smcss +.RB [ \-\-debug | \-d ] +.RB [ \-\-smcd | \-D ] +.RB [ \-\-wide | \-W ] +.P +.B smcss +.RB { \-\-all | -a } +.RB [ \-\-debug | \-d ] +.RB [ \-\-smcd | \-D ] +.RB [ \-\-wide | \-W ] +.P +.B smcss +.RB [ \-\-debug | \-d ] +.RB [ \-\-smcr | \-R ] +.RB [ \-\-wide | \-W ] +.P +.B smcss +.RB { \-\-all | -a } +.RB [ \-\-debug | \-d ] +.RB [ \-\-smcr | \-R ] +.RB [ \-\-wide | \-W ] +.P +.B smcss +.RB { \-\-listening | \-l } +.RB [ \-\-wide | \-W ] +.P +.B smcss +.RB { \-\-version | \-v } +.P +.B smcss +.RB { \-\-help | \-h } + +.SH DESCRIPTION + +.B smcss +prints information about the Linux AF_SMC sockets and link groups. +The type of information printed is controlled by the first argument, as follows: +.TP +.BR (none) +.br +displays a list of connecting, closing, or connected SMC sockets with basic +information. + +.TP +.BR "\-a, \-\-all" +displays all types of SMC sockets: listening, opening, closing, and connected. + +.TP +.BR "\-l, \-\-listening" +shows listening sockets only. These are omitted by default. + +.SH OPTIONS + +.TP +.BR "\-d, \-\-debug" +displays additional debug information, such as shutdown state. + +.TP +.BR "\-D, \-\-smcd +displays additional SMC-D specific information. Shows SMC-D sockets only. + +.TP +.BR "\-h, \-\-help" +displays usage information. + +.TP +.BR "\-R, \-\-smcr +displays additional SMC-R specific information. Shows SMC-R sockets only. + +.TP +.BR "\-v, \-\-version" +displays program version. + +.TP +.BR "\-W, \-\-wide" +do not truncate IP addresses. + +.SH OUTPUT + +.SS "State" +The state of the socket. +The state can be one of these values: +.TP +.I +INIT +The SMC socket is being initialized. It is not connected nor +listening yet. +.TP +.I +CLOSED +The SMC socket is closed. It is not connected nor listening +anymore. +.TP +.I +LISTEN +The SMC socket is a listening socket, waiting for incoming connection requests. +.TP +.I +ACTIVE +The SMC socket has an established connection. +In this state, the TCP connection is fully established, +rendezvous processing has been completed, and SMC peers +can exchange data via RDMA. +.TP +.I +PEERCLW1 +No further data will be sent to the peer. +.TP +.I +PEERCLW2 +No further data will be sent to or received from the peer. +.TP +.I +APPLCLW1 +No further data will be received from the peer. +.TP +.I +APPLCLW2 +No further data will be received from or sent to the peer. +.TP +.I +APPLFINCLW +The peer has closed the socket. +.TP +.I +PEERFINCLW +The socket is closed locally. +.TP +.I +PEERABORTW +The socket was abnormally closed locally. +.TP +.I +PROCESSABORT +The peer has closed the socket abnormally. +.SS "UID" +User ID of the SMC socket. +.SS "Inode" +Inode attribute of the socket. +.SS "Local Address" +Address and port number of the local end of the SMC socket. +The displayed address is truncated when it ends with '..'. +.BR "-W, --wide" +can be used to display addresses untruncated. +.SS "Peer Address" +Address and port number of the remote end of the socket. +Analogous to "Local Address". +.SS "Intf" +When the socket is explicitly bound with setsockopt option SO_BINDTODEVICE then +Intf shows the interface number of the Ethernet device to which the socket is bound. +.SS "Mode" +.TP +.I +SMCD +The SMC socket uses SMC-D for data exchange. +.TP +.I +SMCR +The SMC socket uses SMC-R for data exchange. +.TP +.I +TCP +The SMC socket uses the TCP protocol for data exchange, because an SMC connection +could not be established. +.TP +In case of an error during connection setup, respective error codes will be displayed in the format /. +.HP +Linux error codes: +.TP 13 +.I +0x01010000 +Out of memory +.TP 13 +.I +0x02010000 +Timeout while waiting for confirm link message over RDMA device +.TP +.I +0x02020000 +Timeout while waiting for RDMA device to be added +.TP +.I +0x03000000 +Configuration error +.TP +.I +0x03010000 +Peer does not support SMC +.TP +.I +0x03020000 +Connection uses IPsec +.TP +.I +0x03030000 +No SMC devices found (R and D) +.TP +.I +0x03030001 +No ISM device for SMC-D found +.TP +.I +0x03030002 +No RDMA device for SMC-R found +.TP +.I +0x03030003 +Hardware has no ISMv2 support +.TP +.I +0x03030004 +Peer sent no SMCv2 extension +.TP +.I +0x03030005 +Peer sent no SMC-Dv2 extension +.TP +.I +0x03030006 +Peer sent no ISMv2 SEID +.TP +.I +0x03030007 +No SMC-Dv2 device found, but required +.TP +.I +0x03030008 +Peer sent no UEID +.TP +.I +0x03040000 +SMC modes mismatch (R or D) +.TP +.I +0x03050000 +Peer has eyecatcher in RMBE +.TP +.I +0x03060000 +Fastopen sockopt not supported +.TP +.I +0x03070000 +IP prefix / subnet mismatch +.TP +.I +0x03080000 +Error retrieving VLAN ID of IP device +.TP +.I +0x03090000 +Error while registering VLAN ID on ISM device +.TP +.I +0x030a0000 +No active SMC-R link in link group +.TP +.I +0x030b0000 +SMC-R link from server not found +.TP +.I +0x030c0000 +SMC version mismatch +.TP +.I +.I +0x030d0000 +SMC-D connection limit reached +.TP +.I +.TP +.I +0x030e0000 +SMC-Rv2 connection found no route to peer +.TP +.I +0x030f0000 +SMC-Rv2 connection mismatch direct/indirect with peer +0x04000000 +Synchronization error +.TP +.I +0x05000000 +Peer declined during handshake +.TP +.I +0x09990000 +Internal error +.TP +.I +0x09990001 +rtoken handling failed +.TP +.I +0x09990002 +RDMA link failed +.TP +.I +0x09990003 +RMB registration failed + +.SS "ShutD" +.TP +.I +<-> +The SMC socket has not been shut down. +.TP +.I +R-> +The SMC socket is shut down one-way and cannot receive data. +.TP +.I +<-W +The SMC socket is shut down one-way and cannot send data. +.TP +.I +R-W +The SMC socket is shut down in both ways and cannot receive or send data. +.SS "Token" +Unique ID of the SMC socket connection. +.SS "Sndbuf" +Size of the to-be-sent window of the SMC socket connection. +.SS "Rcvbuf" +Size of the receiving window of the SMC socket connection (filled by peer). +.SS "Peerbuf" +Size of the peer receiving window of the SMC socket connection (to fill +during RDMA-transfer). +.SS "rxprod-Cursor" +Describes the current cursor location of the "Rcvbuf" for data to be received +from the peer. +.SS "rxcons-Cursor" +Describes the current cursor location of the "Peerbuf" for data sent to peer +and confirmed by the peer. +.SS "rxFlags" +SMC socket connection flags set by and received from the peer. +.SS "txprod-Cursor" +Describes the current cursor location of the "Peerbuf" for data sent to peer. +.SS "txcons-Cursor" +Describes the current cursor location of the "Rcvbuf" for data received from +the peer and confirmed to the peer. +.SS "txFlags" +SMC socket connection flags set locally and sent to the peer. +.SS "txprep-Cursor" +Describes the current cursor location of the "Sndbuf" for data to be sent. +The data is to be moved to the "Peerbuf". +.SS "txsent-Cursor" +Describes the current cursor location of the "Sndbuf" for data sent. +The data was moved to the "Peerbuf". +.SS "txfin-Cursor" +Describes the current cursor location of the "Sndbuf" for data sent and +send completion confirmed. +The data was moved to the "Peerbuf" and completion was confirmed. +.SS "Role" +.TP +.I +CLNT +The link group of the SMC socket is used for client connections. +.TP +.I +SERV +The link group of the SMC socket is used for server connections. +.SS "IB-Device" +Name of the RoCE device used by the link group to which the SMC socket belongs. +.SS "Port" +Port of the RoCE device used by the link group to which the SMC socket belongs. +.SS "Linkid" +Unique link ID of the link within the link group to which the SMC socket belongs. +.SS "GID" +Gid of the RoCE port used by the link group to which the SMC socket belongs. +.SS "Peer-GID" +Gid of the Foreign RoCE port used by the link group to which the SMC socket belongs. +.SS "VLAN" +tbd. +.SH RETURN CODES +Successful +.IR smcss +commands return 0 and display the +requested socket state table or link group information. +If an error occurs, +.IR smcss +writes a message to stderr and completes with a return code other than 0. +.P +.SH SEE ALSO +.BR af_smc (7), +.BR smc_chk (8) +.BR smc_rnics (8), +.BR smc_run (8), +.BR smc_pnet (8), +.BR smcd (8), +.BR smcr (8) + diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcss.c b/testcases/feature-test/oeaware/smc-tools-main/smcss.c new file mode 100644 index 000000000..2593b33e5 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smcss.c @@ -0,0 +1,423 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2017, 2018 + * + * Author(s): Ursula Braun + * + * User space program for SMC Socket display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "libnetlink.h" + +#define ADDR_LEN_SHORT 23 + +static char *progname; +int show_debug; +int show_smcr; +int show_smcd; +int show_wide; +int listening = 0; +int all = 0; + +static void print_header(void) +{ + printf("State "); + printf("UID "); + printf("Inode "); + printf("Local Address "); + printf("Peer Address "); + printf("Intf "); + printf("Mode "); + + if (show_debug) { + printf("Shutd "); + printf("Token "); + printf("Sndbuf "); + printf("Rcvbuf "); + printf("Peerbuf "); + printf("rxprod-Cursor "); + printf("rxcons-Cursor "); + printf("rxFlags "); + printf("txprod-Cursor "); + printf("txcons-Cursor "); + printf("txFlags "); + printf("txprep-Cursor "); + printf("txsent-Cursor "); + printf("txfin-Cursor "); + } + + if (show_smcr) { + printf("Role "); + printf("IB-device "); + printf("Port "); + printf("Linkid "); + printf("GID "); + printf("Peer-GID"); + } + + if (show_smcd) { + printf("GID "); + printf("Token "); + printf("Peer-GID "); + printf("Peer-Token "); + printf("Linkid"); + } + + printf("\n"); +} + +static const char *smc_state(unsigned char x) +{ + static char buf[16]; + + switch (x) { + case 1: return "ACTIVE"; + case 2: return "INIT"; + case 7: return "CLOSED"; + case 10: return "LISTEN"; + case 20: return "PEERCLOSEWAIT1"; + case 21: return "PEERCLOSEWAIT2"; + case 22: return "APPCLOSEWAIT1"; + case 23: return "APPCLOSEWAIT2"; + case 24: return "APPFINCLOSEWAIT1"; + case 25: return "PEERFINCLOSEWAIT"; + case 26: return "PEERABORTWAIT"; + case 27: return "PROCESSABORT"; + default: sprintf(buf, "%#x?", x); return buf; + } +} + +/* format one sockaddr / port */ +static void addr_format(char *buf, size_t buf_len, size_t short_len, + __be32 addr[4], int port) +{ + char addr_buf[INET6_ADDRSTRLEN + 1], port_buf[16]; + int addr_len, port_len; + int af; + + /* There was an upstream discussion about the content of the + * diag_family field. Originally it was AF_SMC, but was changed with + * IPv6 support to indicate AF_INET or AF_INET6. Upstream complained + * later that there is no way to separate AF_INET from AF_SMC diag msgs. + * We now change back the value of the diag_family field to be always + * AF_SMC. We now 'parse' the IP address type. + * Note that smc_diag.c in kernel always clears the whole addr field + * before the ip address is copied into and we can rely on that here. + */ + if (addr[1] == 0 && addr[2] == 0 && addr[3] == 0) + af = AF_INET; + else + af = AF_INET6; + + if (buf_len < 20) + return; /* no space for errmsg */ + + if (!inet_ntop(af, addr, addr_buf, sizeof(addr_buf))) { + strcpy(buf, "(inet_ntop error)"); + return; + } + sprintf(port_buf, "%d", port); + addr_len = strlen(addr_buf); + port_len = strlen(port_buf); + if (!show_wide && (addr_len + 1 + port_len > short_len)) { + if (buf_len < short_len + 1) { + strcpy(buf, "(buf to small)"); + return; + } + /* truncate addr string */ + addr_len = short_len - 1 - port_len - 2; + strncpy(buf, addr_buf, addr_len); + buf[addr_len] = '\0'; + strcat(buf, ".."); /* indicate truncation */ + strcat(buf, ":"); + strcat(buf, port_buf); + } else { + if (buf_len < addr_len + 1 + port_len + 1) { + strcpy(buf, "(buf to small)"); + return; + } + snprintf(buf, buf_len, "%s:%s", addr_buf, port_buf); + } +} + +static void show_one_smc_sock(struct nlmsghdr *nlh) +{ + struct smc_diag_msg *r = NLMSG_DATA(nlh); + struct rtattr *tb[SMC_DIAG_MAX + 1]; + unsigned long long inode; + char txtbuf[128]; + + parse_rtattr(tb, SMC_DIAG_MAX, (struct rtattr *)(r+1), + nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*r))); + + if (listening) { + if ( r->diag_state != 10) + return; + } else { + if (!all && (r->diag_state == 10 || r->diag_state == 2)) + return; + } + if (show_smcr && r->diag_mode != SMC_DIAG_MODE_SMCR) + return; /* show only SMC-R sockets */ + if (show_smcd && r->diag_mode != SMC_DIAG_MODE_SMCD) + return; /* show only SMC-D sockets */ + + printf("%-14s ", smc_state(r->diag_state)); + printf("%05d ", r->diag_uid); + inode = r->diag_inode; + printf("%07llu ", inode); + if (r->diag_state == 2) /* INIT state */ + goto newline; + + addr_format(txtbuf, sizeof(txtbuf), ADDR_LEN_SHORT, + r->id.idiag_src, ntohs(r->id.idiag_sport)); + printf("%-*s ", (int)MAX(ADDR_LEN_SHORT, strlen(txtbuf)), txtbuf); + if (r->diag_state == 10) /* LISTEN state */ + goto newline; + + addr_format(txtbuf, sizeof(txtbuf), ADDR_LEN_SHORT, + r->id.idiag_dst, ntohs(r->id.idiag_dport)); + printf("%-*s ", (int)MAX(ADDR_LEN_SHORT, strlen(txtbuf)), txtbuf); + printf("%04x ", r->id.idiag_if); + if (r->diag_state == 7) /* CLOSED state */ + goto newline; + + if (r->diag_mode == SMC_DIAG_MODE_FALLBACK_TCP) { + printf("TCP "); + /* when available print local and peer fallback reason code */ + if (tb[SMC_DIAG_FALLBACK] && + tb[SMC_DIAG_FALLBACK]->rta_len >= sizeof(struct smc_diag_fallback)) + { + struct smc_diag_fallback fallback; + + fallback = *(struct smc_diag_fallback *)RTA_DATA(tb[SMC_DIAG_FALLBACK]); + printf("0x%08x", fallback.reason); + if (fallback.peer_diagnosis) + printf("/0x%08x", fallback.peer_diagnosis); + } + goto newline; + + } else if (r->diag_mode == SMC_DIAG_MODE_SMCD) + printf("%4s ", "SMCD"); + else + printf("%4s ", "SMCR"); + + if (show_debug) { + if (tb[SMC_DIAG_SHUTDOWN] && + tb[SMC_DIAG_SHUTDOWN]->rta_len >= sizeof(__u8)) + { + unsigned char mask; + + mask = *(__u8 *)RTA_DATA(tb[SMC_DIAG_SHUTDOWN]); + printf(" %c-%c ", mask & 1 ? 'R' : '<', mask & 2 ? 'W' : '>'); + } + + if (tb[SMC_DIAG_CONNINFO] && + tb[SMC_DIAG_CONNINFO]->rta_len >= sizeof(struct smc_diag_conninfo)) + { + struct smc_diag_conninfo cinfo; + + cinfo = *(struct smc_diag_conninfo *)RTA_DATA(tb[SMC_DIAG_CONNINFO]); + printf("%08x ", cinfo.token); + printf("%08x ", cinfo.sndbuf_size); + printf("%08x ", cinfo.rmbe_size); + printf("%08x ", cinfo.peer_rmbe_size); + + printf("%04x:%08x ", cinfo.rx_prod.wrap, cinfo.rx_prod.count); + printf("%04x:%08x ", cinfo.rx_cons.wrap, cinfo.rx_cons.count); + printf("%02x:%02x ", cinfo.rx_prod_flags, cinfo.rx_conn_state_flags); + printf("%04x:%08x ", cinfo.tx_prod.wrap, cinfo.tx_prod.count); + printf("%04x:%08x ", cinfo.tx_cons.wrap, cinfo.tx_cons.count); + printf("%02x:%02x ", cinfo.tx_prod_flags, cinfo.tx_conn_state_flags); + printf("%04x:%08x ", cinfo.tx_prep.wrap, cinfo.tx_prep.count); + printf("%04x:%08x ", cinfo.tx_sent.wrap, cinfo.tx_sent.count); + printf("%04x:%08x ", cinfo.tx_fin.wrap, cinfo.tx_fin.count); + } + } + + if (show_smcr) { + if (tb[SMC_DIAG_LGRINFO] && + tb[SMC_DIAG_LGRINFO]->rta_len >= sizeof(struct smc_diag_lgrinfo)) + { + struct smc_diag_lgrinfo linfo; + + linfo = *(struct smc_diag_lgrinfo *)RTA_DATA(tb[SMC_DIAG_LGRINFO]); + printf("%4s ", linfo.role ? "SERV" : "CLNT"); + printf("%-15s ", linfo.lnk[0].ibname); + printf("%02x ", linfo.lnk[0].ibport); + printf("%02x ", linfo.lnk[0].link_id); + printf("%-40s ", linfo.lnk[0].gid); + printf("%s", linfo.lnk[0].peer_gid); + } + } + + if (show_smcd) { + if (tb[SMC_DIAG_DMBINFO] && + tb[SMC_DIAG_DMBINFO]->rta_len >= sizeof(struct smcd_diag_dmbinfo)) + { + struct smcd_diag_dmbinfo dinfo; + + dinfo = *(struct smcd_diag_dmbinfo *)RTA_DATA(tb[SMC_DIAG_DMBINFO]); + printf("%016llx ", dinfo.my_gid); + printf("%016llx ", dinfo.token); + printf("%016llx ", dinfo.peer_gid); + printf("%016llx ", dinfo.peer_token); + printf("%08x ", dinfo.linkid); + } + } + +newline: + printf("\n"); +} + +static int smc_show_netlink() +{ + struct rtnl_handle rth; + unsigned char cmd = 0; + int rc = 0; + + if ((rc = rtnl_open(&rth))) + return EXIT_FAILURE; + + rth.dump = MAGIC_SEQ; + + if (show_debug) + cmd |= (1<<(SMC_DIAG_CONNINFO-1)); + + if (show_smcr) + cmd |= (1<<(SMC_DIAG_LGRINFO-1)); + + if (show_smcd) + cmd |= (1<<(SMC_DIAG_DMBINFO-1)); + + if ((rc = sockdiag_send(rth.fd, cmd))) + goto exit; + + print_header(); + + rc = rtnl_dump(&rth, show_one_smc_sock); + +exit: + rtnl_close(&rth); + return rc; +} + +static const struct option long_opts[] = { + { "all", 0, 0, 'a' }, + { "debug", 0, 0, 'd' }, + { "listening", 0, 0, 'l' }, + { "smcd", 0, 0, 'D' }, + { "smcr", 0, 0, 'R' }, + { "version", 0, 0, 'v' }, + { "wide", 0, 0, 'W' }, + { "help", 0, 0, 'h' }, + { NULL, 0, NULL, 0} +}; + +static void _usage(FILE *dest) +{ + fprintf(dest, +"Usage: %s [ OPTIONS ]\n" +"\t-h, --help this message\n" +"\t-v, --version show version information\n" +"\t-a, --all show all sockets\n" +"\t-l, --listening show listening sockets\n" +"\t-d, --debug show debug socket information\n" +"\t-W, --wide do not truncate IP addresses\n" +"\t-D, --smcd show detailed SMC-D information (shows only SMC-D sockets)\n" +"\t-R, --smcr show detailed SMC-R information (shows only SMC-R sockets)\n" +"\tno OPTIONS show all connected sockets\n", + progname); +} + +static void help(void) __attribute__((noreturn)); +static void help(void) +{ + _usage(stdout); + exit(EXIT_SUCCESS); +} + +static void usage(void) __attribute__((noreturn)); +static void usage(void) +{ + _usage(stderr); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + char *slash; + int ch; + + progname = (slash = strrchr(argv[0], '/')) ? slash + 1 : argv[0]; + + while ((ch = getopt_long(argc, argv, "aldDRhvW", long_opts, NULL)) != EOF) { + switch (ch) { + case 'a': + all++; + break; + case 'l': + listening++; + break; + case 'd': + show_debug++; + break; + case 'D': + show_smcd++; + break; + case 'R': + show_smcr++; + break; + case 'v': + printf("smcss utility, smc-tools-%s\n", RELEASE_STRING); + exit(0); + case 'W': + show_wide++; + break; + case 'h': + help(); + case '?': + default: + usage(); + } + } + + if (show_smcr && show_smcd) { + fprintf(stderr, "--smcd together with --smcr is not supported\n"); + usage(); + } + if (listening && show_debug) { + fprintf(stderr, "--listening together with --debug is not supported\n"); + usage(); + } + if (listening && all) { + fprintf(stderr, "--listening together with --all is not supported\n"); + usage(); + } + if (listening && show_smcr) { + fprintf(stderr, "--listening together with --smcr is not supported\n"); + usage(); + } + if (listening && show_smcd) { + fprintf(stderr, "--listening together with --smcd is not supported\n"); + usage(); + } + return smc_show_netlink(); +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smctools_common.h b/testcases/feature-test/oeaware/smc-tools-main/smctools_common.h new file mode 100644 index 000000000..f1940cc82 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/smctools_common.h @@ -0,0 +1,545 @@ +/* + * smc-tools/smctools_common.h + * + * Copyright IBM Corp. 2017 + * + * Author(s): Ursula Braun (ubraun@linux.ibm.com) + * + * Copyright IBM Corp. 2017 + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef SMCTOOLS_COMMON_H +#define SMCTOOLS_COMMON_H + +#define STRINGIFY_1(x) #x +#define STRINGIFY(x) STRINGIFY_1(x) + +#define RELEASE_STRING "1.8.4" + +#define PF_SMC 43 + +#include + +/*********************************************************** + * Mimic definitions in kernel/include/uapi/linux/smc.h + ***********************************************************/ + +#define SMC_MAX_PNETID_LEN 16 /* Max. length of PNET id */ +#define SMC_LGR_ID_SIZE 4 +#define SMC_MAX_IBNAME 8 +#define SMC_MAX_HOSTNAME_LEN 32 /* Max length of hostname */ +#define SMC_MAX_EID_LEN 32 /* Max length of eid */ +#define SMC_MAX_UEID 8 /* Max number of eids */ +#define SMC_MAX_PORTS 2 /* Max # of ports per ib device */ +#define SMC_PCI_ID_STR_LEN 16 /* Max length of pci id string */ + +/* Netlink SMC_PNETID attributes */ +enum { + SMC_PNETID_UNSPEC, + SMC_PNETID_NAME, + SMC_PNETID_ETHNAME, + SMC_PNETID_IBNAME, + SMC_PNETID_IBPORT, + __SMC_PNETID_MAX, + SMC_PNETID_MAX = __SMC_PNETID_MAX - 1 +}; + +enum { /* SMC PNET Table commands */ + SMC_PNETID_GET = 1, + SMC_PNETID_ADD, + SMC_PNETID_DEL, + SMC_PNETID_FLUSH +}; + +#define SMCR_GENL_FAMILY_NAME "SMC_PNETID" +#define SMCR_GENL_FAMILY_VERSION 1 +/* Use for accessing non-socket information like */ +/* SMC links, linkgroups and devices */ +#define SMC_GENL_FAMILY_NAME "SMC_GEN_NETLINK" +#define SMC_GENL_FAMILY_VERSION 1 + +/* SMC_GENL_FAMILY commands */ +enum { + SMC_NETLINK_GET_SYS_INFO = 1, + SMC_NETLINK_GET_LGR_SMCR, + SMC_NETLINK_GET_LINK_SMCR, + SMC_NETLINK_GET_LGR_SMCD, + SMC_NETLINK_GET_DEV_SMCD, + SMC_NETLINK_GET_DEV_SMCR, + SMC_NETLINK_GET_STATS, + SMC_NETLINK_GET_FBACK_STATS, + SMC_NETLINK_DUMP_UEID, + SMC_NETLINK_ADD_UEID, + SMC_NETLINK_REMOVE_UEID, + SMC_NETLINK_FLUSH_UEID, + SMC_NETLINK_DUMP_SEID, + SMC_NETLINK_ENABLE_SEID, + SMC_NETLINK_DISABLE_SEID, +}; + +/* SMC_GENL_FAMILY top level attributes */ +enum { + SMC_GEN_UNSPEC, + SMC_GEN_SYS_INFO, /* nest */ + SMC_GEN_LGR_SMCR, /* nest */ + SMC_GEN_LINK_SMCR, /* nest */ + SMC_GEN_LGR_SMCD, /* nest */ + SMC_GEN_DEV_SMCD, /* nest */ + SMC_GEN_DEV_SMCR, /* nest */ + SMC_GEN_STATS, /* nest */ + SMC_GEN_FBACK_STATS, /* nest */ + __SMC_GEN_MAX, + SMC_GEN_MAX = __SMC_GEN_MAX - 1 +}; + +/* SMC_GEN_SYS_INFO attributes */ +enum { + SMC_NLA_SYS_UNSPEC, + SMC_NLA_SYS_VER, /* u8 */ + SMC_NLA_SYS_REL, /* u8 */ + SMC_NLA_SYS_IS_ISM_V2, /* u8 */ + SMC_NLA_SYS_LOCAL_HOST, /* string */ + SMC_NLA_SYS_SEID, /* string */ + SMC_NLA_SYS_IS_SMCR_V2, /* u8 */ + __SMC_NLA_SYS_MAX, + SMC_NLA_SYS_MAX = __SMC_NLA_SYS_MAX - 1 +}; + +/* SMC_NLA_LGR_D_V2_COMMON and SMC_NLA_LGR_R_V2_COMMON nested attributes */ +enum { + SMC_NLA_LGR_V2_VER, /* u8 */ + SMC_NLA_LGR_V2_REL, /* u8 */ + SMC_NLA_LGR_V2_OS, /* u8 */ + SMC_NLA_LGR_V2_NEG_EID, /* string */ + SMC_NLA_LGR_V2_PEER_HOST, /* string */ + __SMC_NLA_LGR_V2_MAX, + SMC_NLA_LGR_V2_MAX = __SMC_NLA_LGR_V2_MAX - 1 +}; + +/* SMC_NLA_LGR_R_V2 nested attributes */ +enum { + SMC_NLA_LGR_R_V2_UNSPEC, + SMC_NLA_LGR_R_V2_DIRECT, /* u8 */ + __SMC_NLA_LGR_R_V2_MAX, + SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1 +}; + +/* SMC_GEN_LGR_SMCR attributes */ +enum { + SMC_NLA_LGR_R_UNSPEC, + SMC_NLA_LGR_R_ID, /* u32 */ + SMC_NLA_LGR_R_ROLE, /* u8 */ + SMC_NLA_LGR_R_TYPE, /* u8 */ + SMC_NLA_LGR_R_PNETID, /* string */ + SMC_NLA_LGR_R_VLAN_ID, /* u8 */ + SMC_NLA_LGR_R_CONNS_NUM, /* u32 */ + SMC_NLA_LGR_R_V2_COMMON, /* nest */ + SMC_NLA_LGR_R_V2, /* nest */ + SMC_NLA_LGR_R_NET_COOKIE, /* u64 */ + SMC_NLA_LGR_R_PAD, /* flag */ + SMC_NLA_LGR_R_BUF_TYPE, /* u8 */ + SMC_NLA_LGR_R_SNDBUF_ALLOC, /* uint */ + SMC_NLA_LGR_R_RMB_ALLOC, /* uint */ + __SMC_NLA_LGR_R_MAX, + SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1 +}; + +/* SMC_GEN_LINK_SMCR attributes */ +enum { + SMC_NLA_LINK_UNSPEC, + SMC_NLA_LINK_ID, /* u8 */ + SMC_NLA_LINK_IB_DEV, /* string */ + SMC_NLA_LINK_IB_PORT, /* u8 */ + SMC_NLA_LINK_GID, /* string */ + SMC_NLA_LINK_PEER_GID, /* string */ + SMC_NLA_LINK_CONN_CNT, /* u32 */ + SMC_NLA_LINK_NET_DEV, /* string */ + SMC_NLA_LINK_UID, /* u32 */ + SMC_NLA_LINK_PEER_UID, /* u32 */ + SMC_NLA_LINK_STATE, /* u32 */ + __SMC_NLA_LINK_MAX, + SMC_NLA_LINK_MAX = __SMC_NLA_LINK_MAX - 1 +}; + +/* SMC_GEN_LGR_SMCD attributes */ +enum { + SMC_NLA_LGR_D_UNSPEC, + SMC_NLA_LGR_D_ID, /* u32 */ + SMC_NLA_LGR_D_GID, /* u64 */ + SMC_NLA_LGR_D_PEER_GID, /* u64 */ + SMC_NLA_LGR_D_VLAN_ID, /* u8 */ + SMC_NLA_LGR_D_CONNS_NUM, /* u32 */ + SMC_NLA_LGR_D_PNETID, /* string */ + SMC_NLA_LGR_D_CHID, /* u16 */ + SMC_NLA_LGR_D_PAD, /* flag */ + SMC_NLA_LGR_D_V2_COMMON, /* nest */ + SMC_NLA_LGR_D_EXT_GID, /* u64 */ + SMC_NLA_LGR_D_PEER_EXT_GID, /* u64 */ + SMC_NLA_LGR_D_SNDBUF_ALLOC, /* uint */ + SMC_NLA_LGR_D_DMB_ALLOC, /* uint */ + __SMC_NLA_LGR_D_MAX, + SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1 +}; + +/* SMC_NLA_DEV_PORT nested attributes */ +enum { + SMC_NLA_DEV_PORT_UNSPEC, + SMC_NLA_DEV_PORT_PNET_USR, /* u8 */ + SMC_NLA_DEV_PORT_PNETID, /* string */ + SMC_NLA_DEV_PORT_NETDEV, /* string */ + SMC_NLA_DEV_PORT_STATE, /* u8 */ + SMC_NLA_DEV_PORT_VALID, /* u8 */ + SMC_NLA_DEV_PORT_LNK_CNT, /* u32 */ + __SMC_NLA_DEV_PORT_MAX, + SMC_NLA_DEV_PORT_MAX = __SMC_NLA_DEV_PORT_MAX - 1 +}; + +/* SMC_GEN_DEV_SMCD and SMC_GEN_DEV_SMCR attributes */ +enum { + SMC_NLA_DEV_UNSPEC, + SMC_NLA_DEV_USE_CNT, /* u32 */ + SMC_NLA_DEV_IS_CRIT, /* u8 */ + SMC_NLA_DEV_PCI_FID, /* u32 */ + SMC_NLA_DEV_PCI_CHID, /* u16 */ + SMC_NLA_DEV_PCI_VENDOR, /* u16 */ + SMC_NLA_DEV_PCI_DEVICE, /* u16 */ + SMC_NLA_DEV_PCI_ID, /* string */ + SMC_NLA_DEV_PORT, /* nest */ + SMC_NLA_DEV_PORT2, /* nest */ + SMC_NLA_DEV_IB_NAME, /* string */ + __SMC_NLA_DEV_MAX, + SMC_NLA_DEV_MAX = __SMC_NLA_DEV_MAX - 1 +}; + +/* SMC_NLA_STATS_T_TX(RX)_RMB_SIZE nested attributes */ +/* SMC_NLA_STATS_TX(RX)PLOAD_SIZE nested attributes */ +enum { + SMC_NLA_STATS_PLOAD_PAD, + SMC_NLA_STATS_PLOAD_8K, /* u64 */ + SMC_NLA_STATS_PLOAD_16K, /* u64 */ + SMC_NLA_STATS_PLOAD_32K, /* u64 */ + SMC_NLA_STATS_PLOAD_64K, /* u64 */ + SMC_NLA_STATS_PLOAD_128K, /* u64 */ + SMC_NLA_STATS_PLOAD_256K, /* u64 */ + SMC_NLA_STATS_PLOAD_512K, /* u64 */ + SMC_NLA_STATS_PLOAD_1024K, /* u64 */ + SMC_NLA_STATS_PLOAD_G_1024K, /* u64 */ + __SMC_NLA_STATS_PLOAD_MAX, + SMC_NLA_STATS_PLOAD_MAX = __SMC_NLA_STATS_PLOAD_MAX - 1 +}; + +/* SMC_NLA_STATS_T_TX(RX)_RMB_STATS nested attributes */ +enum { + SMC_NLA_STATS_RMB_PAD, + SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT, /* u64 */ + SMC_NLA_STATS_RMB_SIZE_SM_CNT, /* u64 */ + SMC_NLA_STATS_RMB_FULL_PEER_CNT, /* u64 */ + SMC_NLA_STATS_RMB_FULL_CNT, /* u64 */ + SMC_NLA_STATS_RMB_REUSE_CNT, /* u64 */ + SMC_NLA_STATS_RMB_ALLOC_CNT, /* u64 */ + SMC_NLA_STATS_RMB_DGRADE_CNT, /* u64 */ + __SMC_NLA_STATS_RMB_MAX, + SMC_NLA_STATS_RMB_MAX = __SMC_NLA_STATS_RMB_MAX - 1 +}; + +/* SMC_NLA_STATS_SMCD_TECH and _SMCR_TECH nested attributes */ +enum { + SMC_NLA_STATS_T_PAD, + SMC_NLA_STATS_T_TX_RMB_SIZE, /* nest */ + SMC_NLA_STATS_T_RX_RMB_SIZE, /* nest */ + SMC_NLA_STATS_T_TXPLOAD_SIZE, /* nest */ + SMC_NLA_STATS_T_RXPLOAD_SIZE, /* nest */ + SMC_NLA_STATS_T_TX_RMB_STATS, /* nest */ + SMC_NLA_STATS_T_RX_RMB_STATS, /* nest */ + SMC_NLA_STATS_T_CLNT_V1_SUCC, /* u64 */ + SMC_NLA_STATS_T_CLNT_V2_SUCC, /* u64 */ + SMC_NLA_STATS_T_SRV_V1_SUCC, /* u64 */ + SMC_NLA_STATS_T_SRV_V2_SUCC, /* u64 */ + SMC_NLA_STATS_T_SENDPAGE_CNT, /* u64 */ + SMC_NLA_STATS_T_SPLICE_CNT, /* u64 */ + SMC_NLA_STATS_T_CORK_CNT, /* u64 */ + SMC_NLA_STATS_T_NDLY_CNT, /* u64 */ + SMC_NLA_STATS_T_URG_DATA_CNT, /* u64 */ + SMC_NLA_STATS_T_RX_BYTES, /* u64 */ + SMC_NLA_STATS_T_TX_BYTES, /* u64 */ + SMC_NLA_STATS_T_RX_CNT, /* u64 */ + SMC_NLA_STATS_T_TX_CNT, /* u64 */ + SMC_NLA_STATS_T_RX_RMB_USAGE, /* uint */ + SMC_NLA_STATS_T_TX_RMB_USAGE, /* uint */ + __SMC_NLA_STATS_T_MAX, + SMC_NLA_STATS_T_MAX = __SMC_NLA_STATS_T_MAX - 1 +}; + +/* SMC_GEN_STATS attributes */ +enum { + SMC_NLA_STATS_PAD, + SMC_NLA_STATS_SMCD_TECH, /* nest */ + SMC_NLA_STATS_SMCR_TECH, /* nest */ + SMC_NLA_STATS_CLNT_HS_ERR_CNT, /* u64 */ + SMC_NLA_STATS_SRV_HS_ERR_CNT, /* u64 */ + __SMC_NLA_STATS_MAX, + SMC_NLA_STATS_MAX = __SMC_NLA_STATS_MAX - 1 +}; + +/* SMC_GEN_FBACK_STATS attributes */ +enum { + SMC_NLA_FBACK_STATS_PAD, + SMC_NLA_FBACK_STATS_TYPE, /* u8 */ + SMC_NLA_FBACK_STATS_SRV_CNT, /* u64 */ + SMC_NLA_FBACK_STATS_CLNT_CNT, /* u64 */ + SMC_NLA_FBACK_STATS_RSN_CODE, /* u32 */ + SMC_NLA_FBACK_STATS_RSN_CNT, /* u16 */ + __SMC_NLA_FBACK_STATS_MAX, + SMC_NLA_FBACK_STATS_MAX = __SMC_NLA_FBACK_STATS_MAX - 1 +}; + +/* SMC_NETLINK_UEID attributes */ +enum { + SMC_NLA_EID_TABLE_UNSPEC, + SMC_NLA_EID_TABLE_ENTRY, /* string */ + __SMC_NLA_EID_TABLE_MAX, + SMC_NLA_EID_TABLE_MAX = __SMC_NLA_EID_TABLE_MAX - 1 +}; + +/* SMC_NETLINK_SEID attributes */ +enum { + SMC_NLA_SEID_UNSPEC, + SMC_NLA_SEID_ENTRY, /* string */ + SMC_NLA_SEID_ENABLED, /* u8 */ + __SMC_NLA_SEID_TABLE_MAX, + SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1 +}; + +/*********************************************************** + * Mimic definitions in kernel/include/uapi/linux/smc_diag.h + ***********************************************************/ +#include +#include +#include + +#define SMC_DIAG_EXTS_PER_CMD 16 +/* Sequence numbers */ +enum { + MAGIC_SEQ = 123456, + MAGIC_SEQ_V2, + MAGIC_SEQ_V2_ACK, +}; + +/* Request structure */ +struct smc_diag_req { + __u8 diag_family; + __u8 pad[2]; + __u8 diag_ext; /* Query extended information */ + struct inet_diag_sockid id; +}; + +/* Request structure v2 */ +struct smc_diag_req_v2 { + __u8 diag_family; + __u8 pad[2]; + __u8 diag_ext; /* Query extended information */ + struct inet_diag_sockid id; + __u32 cmd; + __u32 cmd_ext; + __u8 cmd_val[8]; +}; + +/* Base info structure. It contains socket identity (addrs/ports/cookie) based + * on the internal clcsock, and more SMC-related socket data + */ +struct smc_diag_msg { + __u8 diag_family; + __u8 diag_state; + __u8 diag_mode; + __u8 diag_shutdown; + struct inet_diag_sockid id; + + __u32 diag_uid; + __u64 diag_inode; +}; + +/* Mode of a connection */ +enum { + SMC_DIAG_MODE_SMCR, + SMC_DIAG_MODE_FALLBACK_TCP, + SMC_DIAG_MODE_SMCD, +}; + +/* GET_SOCK_DIAG command extensions */ + +enum { + SMC_DIAG_NONE, + SMC_DIAG_CONNINFO, + SMC_DIAG_LGRINFO, + SMC_DIAG_SHUTDOWN, + SMC_DIAG_DMBINFO, + SMC_DIAG_FALLBACK, + __SMC_DIAG_MAX, +}; + +/* V2 Commands */ +enum { + SMC_DIAG_GET_LGR_INFO = SMC_DIAG_EXTS_PER_CMD, + SMC_DIAG_GET_DEV_INFO, + SMC_DIAG_GET_SYS_INFO, + __SMC_DIAG_EXT_MAX, +}; + +/* SMC_DIAG_GET_LGR_INFO command extensions */ +enum { + SMC_DIAG_LGR_INFO_SMCR = 1, + SMC_DIAG_LGR_INFO_SMCR_LINK, + SMC_DIAG_LGR_INFO_SMCD, +}; + +/* SMC_DIAG_GET_DEV_INFO command extensions */ +enum { + SMC_DIAG_DEV_INFO_SMCD = 1, + SMC_DIAG_DEV_INFO_SMCR, +}; + +/* SMC_DIAG_GET_SYS_INFO command extensions */ +enum { + SMC_DIAG_SYS_INFO = 1, +}; + +#define SMC_DIAG_MAX (__SMC_DIAG_MAX - 1) +#define SMC_DIAG_EXT_MAX (__SMC_DIAG_EXT_MAX - 1) + +/* SMC_DIAG_CONNINFO */ +#define IB_DEVICE_NAME_MAX 64 + +struct smc_diag_cursor { + __u16 reserved; + __u16 wrap; + __u32 count; +}; + +struct smc_diag_conninfo { + __u32 token; /* unique connection id */ + __u32 sndbuf_size; /* size of send buffer */ + __u32 rmbe_size; /* size of RMB element */ + __u32 peer_rmbe_size; /* size of peer RMB element */ + /* local RMB element cursors */ + struct smc_diag_cursor rx_prod; /* received producer cursor */ + struct smc_diag_cursor rx_cons; /* received consumer cursor */ + /* peer RMB element cursors */ + struct smc_diag_cursor tx_prod; /* sent producer cursor */ + struct smc_diag_cursor tx_cons; /* sent consumer cursor */ + __u8 rx_prod_flags; /* received producer flags */ + __u8 rx_conn_state_flags; /* recvd connection flags*/ + __u8 tx_prod_flags; /* sent producer flags */ + __u8 tx_conn_state_flags; /* sent connection flags*/ + /* send buffer cursors */ + struct smc_diag_cursor tx_prep; /* prepared to be sent cursor */ + struct smc_diag_cursor tx_sent; /* sent cursor */ + struct smc_diag_cursor tx_fin; /* confirmed sent cursor */ +}; + +struct smc_v2_lgr_info { + __u8 v2_lgr_info_received; + __u8 smc_version; + __u8 peer_smc_release; + __u8 peer_os; /* peer operating system */ + __u8 negotiated_eid[SMC_MAX_EID_LEN + 1]; + __u8 peer_hostname[SMC_MAX_HOSTNAME_LEN + 1]; + /* SMC-R v2 specific */ + __u8 smcr_direct; +}; + +/* unused +struct smc_system_info { + __u8 smc_version; + __u8 smc_release; + __u8 ueid_count; + __u8 smc_ism_is_v2; + __u32 reserved; + __u8 local_hostname[SMC_MAX_HOSTNAME_LEN]; + __u8 seid[SMC_MAX_EID_LEN]; + __u8 ueid[SMC_MAX_UEID][SMC_MAX_EID_LEN]; +}; +*/ + +/* SMC_DIAG_LINKINFO */ + +struct smc_diag_linkinfo { + __u8 link_id; /* link identifier */ + __u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */ + __u8 ibport; /* RDMA device port number */ + __u8 gid[40]; /* local GID */ + __u8 peer_gid[40]; /* peer GID */ +}; + +struct smc_diag_linkinfo_v2 { + struct smc_diag_linkinfo v1; + __u32 conn_cnt; + __u8 netdev[IFNAMSIZ]; + __u8 link_uid[4]; + __u8 peer_link_uid[4]; + __u32 link_state; +}; + +struct smc_diag_lgrinfo { + struct smc_diag_linkinfo lnk[1]; + __u8 role; +}; + +struct smc_diag_fallback { + __u32 reason; + __u32 peer_diagnosis; +}; + +struct smcd_diag_dmbinfo { /* SMC-D Socket internals */ + __u32 linkid; /* Link identifier */ + __u64 peer_gid; /* Peer GID */ + __u64 my_gid; /* My GID */ + __u64 token; /* Token of DMB */ + __u64 peer_token; /* Token of remote DMBE */ +}; + +struct smcd_diag_dmbinfo_v2 { + struct smcd_diag_dmbinfo v1; + __u8 pnet_id[SMC_MAX_PNETID_LEN]; + __u32 conns_num; + __u16 chid; + __u8 vlan_id; + __u64 sndbuf_alloc; + __u64 dmb_alloc; + struct smc_v2_lgr_info v2_lgr_info; +}; + +struct smc_diag_dev_info { + __u8 pnet_id[SMC_MAX_PORTS][SMC_MAX_PNETID_LEN]; + __u8 pnetid_by_user[SMC_MAX_PORTS]; + __u32 use_cnt; + __u8 is_critical; + __u32 pci_fid; + __u16 pci_pchid; + __u16 pci_vendor; + __u16 pci_device; + __u8 pci_id[SMC_PCI_ID_STR_LEN]; + __u8 dev_name[IB_DEVICE_NAME_MAX]; + __u8 netdev[SMC_MAX_PORTS][IFNAMSIZ]; + __u8 port_state[SMC_MAX_PORTS]; + __u8 port_valid[SMC_MAX_PORTS]; + __u32 lnk_cnt_by_port[SMC_MAX_PORTS]; /* # lnks per port */ +}; + + +struct smc_diag_lgr { + __u8 lgr_id[SMC_LGR_ID_SIZE]; + __u8 lgr_role; + __u8 lgr_type; + __u8 pnet_id[SMC_MAX_PNETID_LEN]; + __u8 vlan_id; + __u32 conns_num; + __u64 sndbuf_alloc; + __u64 rmb_alloc; + struct smc_v2_lgr_info v2_lgr_info; +}; +#endif /* SMCTOOLS_COMMON_H */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/stats.c b/testcases/feature-test/oeaware/smc-tools-main/stats.c new file mode 100644 index 000000000..dcf4ad0e8 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/stats.c @@ -0,0 +1,1071 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2021 + * + * Author(s): Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "util.h" +#include "libnetlink.h" +#include "stats.h" + +#if defined(SMCD) +static int is_smcd = 1; +#else +static int is_smcd = 0; +#endif +static int d_level = 0; +static int is_abs = 0; + +static int show_cmd = 0; +static int reset_cmd = 0; +static int json_cmd = 0; +static int cache_file_exists = 0; + +struct smc_stats smc_stat; /* kernel values, might contain merged values */ +struct smc_stats smc_stat_c; /* cache file values */ +struct smc_stats smc_stat_org; /* original kernel values */ +struct smc_stats_rsn smc_rsn; +struct smc_stats_rsn smc_rsn_c; +struct smc_stats_rsn smc_rsn_org; +FILE *cache_fp = NULL; +char *cache_file_path = NULL; + +static char* j_output[65] = {"SMC_INT_TX_BUF_8K", "SMC_INT_TX_BUF_16K", "SMC_INT_TX_BUF_32K", "SMC_INT_TX_BUF_64K", "SMC_INT_TX_BUF_128K", + "SMC_INT_TX_BUF_256K", "SMC_INT_TX_BUF_512K", "SMC_INT_TX_BUF_1024K", "SMC_INT_TX_BUF_G_1024K", + "SMC_INT_RX_BUF_8K", "SMC_INT_RX_BUF_16K", "SMC_INT_RX_BUF_32K", "SMC_INT_RX_BUF_64K", "SMC_INT_RX_BUF_128K", + "SMC_INT_RX_BUF_256K", "SMC_INT_RX_BUF_512K", "SMC_INT_RX_BUF_1024K", "SMC_INT_RX_BUF_G_1024K", + "SMC_USR_TX_BUF_8K", "SMC_USR_TX_BUF_16K", "SMC_USR_TX_BUF_32K", "SMC_USR_TX_BUF_64K", "SMC_USR_TX_BUF_128K", + "SMC_USR_TX_BUF_256K", "SMC_USR_TX_BUF_512K", "SMC_USR_TX_BUF_1024K", "SMC_USR_TX_BUF_G_1024K", + "SMC_USR_RX_BUF_8K", "SMC_USR_RX_BUF_16K", "SMC_USR_RX_BUF_32K", "SMC_USR_RX_BUF_64K", "SMC_USR_RX_BUF_128K", + "SMC_USR_RX_BUF_256K", "SMC_USR_RX_BUF_512K", "SMC_USR_RX_BUF_1024K", "SMC_USR_RX_BUF_G_1024K", + "SMC_INT_TX_BUF_SIZE_SM_PEER_CNT", "SMC_INT_TX_BUF_SIZE_SM_CNT", "SMC_INT_TX_BUF_FULL_PEER_CNT", + "SMC_INT_TX_BUF_FULL_CNT", "SMC_INT_TX_BUF_REUSE_CNT", "SMC_INT_TX_BUF_ALLOC_CNT", "SMC_INT_TX_BUF_DGRADE_CNT", + "SMC_INT_RX_BUF_SIZE_SM_PEER_CNT", "SMC_INT_RX_BUF_SIZE_SM_CNT", "SMC_INT_RX_BUF_FULL_PEER_CNT", + "SMC_INT_RX_BUF_FULL_CNT", "SMC_INT_RX_BUF_REUSE_CNT", "SMC_INT_RX_BUF_ALLOC_CNT", "SMC_INT_RX_BUF_DGRADE_CNT", + "SMC_CLNT_V1_SUCC_CNT", "SMC_CLNT_V2_SUCC_CNT", "SMC_SRV_V1_SUCC_CNT", "SMC_SRV_V2_SUCC_CNT", + "SMC_SENDPAGE_CNT", "SMC_URG_DATA_CNT", "SMC_SPLICE_CNT", "SMC_CORK_CNT", "SMC_NDLY_CNT", + "SMC_RX_BYTES", "SMC_TX_BYTES", "SMC_RX_CNT", "SMC_TX_CNT", "SMC_RX_RMB_USAGE", "SMC_TX_RMB_USAGE" +}; + +static struct nla_policy smc_gen_stats_policy[SMC_NLA_STATS_MAX + 1] = { + [SMC_NLA_STATS_PAD] = { .type = NLA_UNSPEC }, + [SMC_NLA_STATS_SMCD_TECH] = { .type = NLA_NESTED }, + [SMC_NLA_STATS_SMCR_TECH] = { .type = NLA_NESTED }, + [SMC_NLA_STATS_CLNT_HS_ERR_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_SRV_HS_ERR_CNT] = { .type = NLA_U64 }, +}; + +static struct nla_policy smc_gen_stats_fback_policy[SMC_NLA_FBACK_STATS_MAX + 1] = { + [SMC_NLA_FBACK_STATS_PAD] = { .type = NLA_UNSPEC }, + [SMC_NLA_FBACK_STATS_TYPE] = { .type = NLA_U8 }, + [SMC_NLA_FBACK_STATS_SRV_CNT] = { .type = NLA_U64 }, + [SMC_NLA_FBACK_STATS_CLNT_CNT] = { .type = NLA_U64 }, + [SMC_NLA_FBACK_STATS_RSN_CODE] = { .type = NLA_U32 }, + [SMC_NLA_FBACK_STATS_RSN_CNT] = { .type = NLA_U16 }, +}; + +static struct nla_policy smc_gen_stats_tech_policy[SMC_NLA_STATS_T_MAX + 1] = { + [SMC_NLA_STATS_T_PAD] = { .type = NLA_UNSPEC }, + [SMC_NLA_STATS_T_TX_RMB_SIZE] = { .type = NLA_NESTED }, + [SMC_NLA_STATS_T_RX_RMB_SIZE] = { .type = NLA_NESTED }, + [SMC_NLA_STATS_T_TXPLOAD_SIZE] = { .type = NLA_NESTED }, + [SMC_NLA_STATS_T_RXPLOAD_SIZE] = { .type = NLA_NESTED }, + [SMC_NLA_STATS_T_CLNT_V1_SUCC] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_CLNT_V2_SUCC] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_SRV_V1_SUCC] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_SRV_V2_SUCC] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_SENDPAGE_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_SPLICE_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_CORK_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_URG_DATA_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_NDLY_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_RX_BYTES] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_TX_BYTES] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_RX_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_T_TX_CNT] = { .type = NLA_U64 }, +}; + +static struct nla_policy smc_gen_stats_rmb_policy[SMC_NLA_STATS_RMB_MAX + 1] = { + [SMC_NLA_STATS_RMB_PAD] = { .type = NLA_UNSPEC }, + [SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_RMB_SIZE_SM_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_RMB_FULL_PEER_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_RMB_FULL_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_RMB_REUSE_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_RMB_ALLOC_CNT] = { .type = NLA_U64 }, + [SMC_NLA_STATS_RMB_DGRADE_CNT] = { .type = NLA_U64 }, +}; + +static struct nla_policy smc_gen_stats_pload_policy[SMC_NLA_STATS_PLOAD_MAX + 1] = { + [SMC_NLA_STATS_PLOAD_PAD] = { .type = NLA_UNSPEC }, + [SMC_NLA_STATS_PLOAD_8K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_16K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_32K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_64K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_128K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_256K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_512K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_1024K] = { .type = NLA_U64 }, + [SMC_NLA_STATS_PLOAD_G_1024K] = { .type = NLA_U64 }, +}; + +static void usage(void) +{ + fprintf(stderr, +#if defined(SMCD) + "Usage: smcd stats [show | reset]\n" +#elif defined(SMCR) + "Usage: smcr stats [show | reset]\n" +#else + "Usage: smc stats [show | reset]\n" +#endif + ); + exit(-1); +} + +static char* get_fbackstr(int code) +{ + char* str; + + switch (code) { + case SMC_CLC_DECL_PEERNOSMC: + str = "PEER_NO_SMC"; + break; + case SMC_CLC_DECL_MEM: + str = "MEMORY"; + break; + case SMC_CLC_DECL_TIMEOUT_CL: + str = "TIMEOUT_CL"; + break; + case SMC_CLC_DECL_TIMEOUT_AL: + str = "TIMEOUT_AL"; + break; + case SMC_CLC_DECL_CNFERR: + str = "CNF_ERR"; + break; + case SMC_CLC_DECL_IPSEC: + str = "IPSEC"; + break; + case SMC_CLC_DECL_NOSMCDEV: + str = "NOSMCDEV"; + break; + case SMC_CLC_DECL_NOSMCDDEV: + str = "NOSMCDDEV"; + break; + case SMC_CLC_DECL_NOSMCRDEV: + str = "NOSMCRDEV"; + break; + case SMC_CLC_DECL_NOISM2SUPP: + str = "NOISM2SUPP"; + break; + case SMC_CLC_DECL_NOV2EXT: + str = "NOV2EXT"; + break; + case SMC_CLC_DECL_PEERDECL: + str = "PEERDECL"; + break; + case SMC_CLC_DECL_SYNCERR: + str = "SYNCERR"; + break; + case SMC_CLC_DECL_MAX_DMB: + str = "MAX_DMB"; + break; + case SMC_CLC_DECL_VERSMISMAT: + str = "VERSMISMAT"; + break; + case SMC_CLC_DECL_NOSRVLINK: + str = "NOSRVLINK"; + break; + case SMC_CLC_DECL_NOSEID: + str = "NOSEID"; + break; + case SMC_CLC_DECL_NOSMCD2DEV: + str = "NOSMCD2DEV"; + break; + case SMC_CLC_DECL_MODEUNSUPP: + str = "MODEUNSUPP"; + break; + case SMC_CLC_DECL_RMBE_EC: + str = "RMBE_EC"; + break; + case SMC_CLC_DECL_OPTUNSUPP: + str = "OPTUNSUPP"; + break; + case SMC_CLC_DECL_DIFFPREFIX: + str = "DIFFPREFIX"; + break; + case SMC_CLC_DECL_GETVLANERR: + str = "GETVLANERR"; + break; + case SMC_CLC_DECL_ISMVLANERR: + str = "ISMVLANERR"; + break; + case SMC_CLC_DECL_NOACTLINK: + str = "NOACTLINK"; + break; + case SMC_CLC_DECL_NOV2DEXT: + str = "NOV2DEXT"; + break; + default: + str = "[unknown]"; + break; + } + return str; +} + +static void bubble_sort(struct smc_stats_fback *fback) +{ + struct smc_stats_fback temp; + int i, j; + + for (i = 0; i < SMC_MAX_FBACK_RSN_CNT; i++) { + for (j = 0; j < SMC_MAX_FBACK_RSN_CNT - 1; j++) { + if (fback[j + 1].count > fback[j].count) { + temp = fback[j]; + fback[j] = fback[j + 1]; + fback[j + 1] = temp; + } + } + } +} + +static void print_fback_details(struct smc_stats_fback *fback, int is_srv) +{ + int caption_printed = 0; + char *fback_str = NULL; + int i, count = 0; + + bubble_sort(fback); + for (i = 0; i < SMC_MAX_FBACK_RSN_CNT; i++) { + if (fback[i].fback_code != 0) { + if (!caption_printed) { + caption_printed = 1; + if (is_srv) + printf(" Server\n"); + else + printf(" Client\n"); + } + fback_str = get_fbackstr(fback[i].fback_code); + printf(" %-12s %12d\n", fback_str, fback[i].count); + count++; + if (count == 3) + break; + } + } +} + +static void print_fbackstr() +{ + struct smc_stats_fback *server, *client; + + server = smc_rsn.srv; + client = smc_rsn.clnt; + + print_fback_details(server, 1); + print_fback_details(client, 0); +} + +static void fillbuffer(struct smc_stats_memsize *mem, char buf[][7]) +{ + get_abbreviated(mem->buf[SMC_BUF_8K], 6, buf[SMC_BUF_8K]); + get_abbreviated(mem->buf[SMC_BUF_16K], 6, buf[SMC_BUF_16K]); + get_abbreviated(mem->buf[SMC_BUF_32K], 6, buf[SMC_BUF_32K]); + get_abbreviated(mem->buf[SMC_BUF_64K], 6, buf[SMC_BUF_64K]); + get_abbreviated(mem->buf[SMC_BUF_128K], 6, buf[SMC_BUF_128K]); + get_abbreviated(mem->buf[SMC_BUF_256K], 6, buf[SMC_BUF_256K]); + get_abbreviated(mem->buf[SMC_BUF_512K], 6, buf[SMC_BUF_512K]); + get_abbreviated(mem->buf[SMC_BUF_G_1024K] + mem->buf[SMC_BUF_1024K], 6, + buf[SMC_BUF_1024K]); +} + +static void print_as_json() +{ + int size, i; + __u64 *src; + + size = sizeof(struct smc_stats_tech) / sizeof(__u64); + if (is_smcd) { + src = (__u64 *)&smc_stat.smc[SMC_TYPE_D]; + printf("{\"SMCD\": {"); + } else { + src = (__u64 *)&smc_stat.smc[SMC_TYPE_R]; + printf("{\"SMCR\": {"); + } + for (i = 0; i < size; i++) { + printf("\"%s\":%llu",j_output[i] ,*src); + if (i != size - 1) + printf(","); + src++; + } + printf("}}\n"); +} + +static void print_as_text() +{ + __u64 smc_conn_cnt = 0, special_calls = 0, total_req_cn = 0; + __u64 total_conn = 0, fback_count = 0, hshake_err_cnt = 0; + float buf_small = 0, buf_small_r = 0, buf_rx_full = 0; + __u64 smc_c_cnt_v1 = 0, smc_c_cnt_v2 = 0; + float buf_full = 0, buf_full_r = 0; + struct smc_stats_tech *tech; + float avg_req_p_conn = 0; + char buf[SMC_BUF_MAX][7]; + char temp_str[7]; + int tech_type; + + if (is_smcd) { + printf("SMC-D Connections Summary\n"); + tech_type = SMC_TYPE_D; + } else { + printf("SMC-R Connections Summary\n"); + tech_type = SMC_TYPE_R; + } + tech = &smc_stat.smc[tech_type]; + + smc_c_cnt_v1 = tech->clnt_v1_succ_cnt + tech->srv_v1_succ_cnt; + smc_c_cnt_v2 = tech->clnt_v2_succ_cnt + tech->srv_v2_succ_cnt; + smc_conn_cnt += tech->clnt_v1_succ_cnt; + smc_conn_cnt += tech->clnt_v2_succ_cnt; + smc_conn_cnt += tech->srv_v1_succ_cnt; + smc_conn_cnt += tech->srv_v2_succ_cnt; + total_conn += smc_conn_cnt; + hshake_err_cnt += smc_stat.clnt_hshake_err_cnt; + hshake_err_cnt += smc_stat.srv_hshake_err_cnt; + total_conn += hshake_err_cnt; + fback_count += smc_rsn.clnt_fback_cnt; + fback_count += smc_rsn.srv_fback_cnt; + total_conn += fback_count; + total_req_cn = tech->rx_cnt + tech->tx_cnt; + if (smc_conn_cnt) + avg_req_p_conn = total_req_cn / (double)smc_conn_cnt; + special_calls += tech->cork_cnt; + special_calls += tech->ndly_cnt; + special_calls += tech->sendpage_cnt; + special_calls += tech->splice_cnt; + special_calls += tech->urg_data_cnt; + if (tech->tx_cnt) { + buf_full = tech->rmb_tx.buf_full_cnt / (double)tech->tx_cnt * 100; + buf_full_r = tech->rmb_tx.buf_full_peer_cnt / (double)tech->tx_cnt * 100; + buf_small = tech->rmb_tx.buf_size_small_cnt / (double)tech->tx_cnt * 100; + buf_small_r = tech->rmb_tx.buf_size_small_peer_cnt / (double)tech->tx_cnt * 100; + } + if (tech->rx_cnt) + buf_rx_full = tech->rmb_rx.buf_full_cnt / (double)tech->rx_cnt * 100; + + printf(" Total connections handled %12llu\n", total_conn); + if (d_level) { + printf(" SMC connections %12llu (client %llu, server %llu)\n", + smc_conn_cnt, tech->clnt_v1_succ_cnt + tech->clnt_v2_succ_cnt, + tech->srv_v1_succ_cnt + tech->srv_v2_succ_cnt); + printf(" v1 %12llu\n", smc_c_cnt_v1); + printf(" v2 %12llu\n", smc_c_cnt_v2); + } else { + printf(" SMC connections %12llu\n", smc_conn_cnt); + } + if (d_level) { + printf(" Handshake errors %12llu (client %llu, server %llu)\n", + hshake_err_cnt, smc_stat.clnt_hshake_err_cnt, smc_stat.srv_hshake_err_cnt); + } else { + printf(" Handshake errors %12llu\n", hshake_err_cnt); + } + printf(" Avg requests per SMC conn %14.1f\n", avg_req_p_conn); + if (d_level) { + printf(" TCP fallback %12llu (client %llu, server %llu)\n", + fback_count, smc_rsn.clnt_fback_cnt, smc_rsn.srv_fback_cnt); + print_fbackstr(); + } else { + printf(" TCP fallback %12llu\n", fback_count); + } + printf("\n"); + printf("RX Stats\n"); + get_abbreviated(smc_stat.smc[tech_type].rx_bytes, 6, temp_str); + printf(" Data transmitted (Bytes) %14llu (%s)\n", + smc_stat.smc[tech_type].rx_bytes, temp_str); + printf(" Total requests %12llu\n", tech->rx_cnt); + get_abbreviated(smc_stat.smc[tech_type].rx_rmbuse, 6, temp_str); + printf(" Buffer usage (Bytes) %12llu (%s)\n", tech->rx_rmbuse, temp_str); + printf(" Buffer full %12llu (%.2f%%)\n", tech->rmb_rx.buf_full_cnt, + buf_rx_full); + if (d_level) { + printf(" Buffer downgrades %12llu\n", tech->rmb_rx.dgrade_cnt); + printf(" Buffer reuses %12llu\n", tech->rmb_rx.reuse_cnt); + } + fillbuffer(&tech->rx_rmbsize, buf); + printf(" 8KB 16KB 32KB 64KB 128KB 256KB 512KB >512KB\n"); + printf(" Bufs %6s %6s %6s %6s %6s %6s %6s %6s\n", + buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], + buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); + fillbuffer(&tech->rx_pd, buf); + printf(" Reqs %6s %6s %6s %6s %6s %6s %6s %6s\n", + buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], + buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); + printf("\n"); + printf("TX Stats\n"); + get_abbreviated(smc_stat.smc[tech_type].tx_bytes, 6, temp_str); + printf(" Data transmitted (Bytes) %14llu (%s)\n", + smc_stat.smc[tech_type].tx_bytes, temp_str); + printf(" Total requests %12llu\n", tech->tx_cnt); + get_abbreviated(smc_stat.smc[tech_type].tx_rmbuse, 6, temp_str); + printf(" Buffer usage (Bytes) %12llu (%s)\n", tech->tx_rmbuse, temp_str); + printf(" Buffer full %12llu (%.2f%%)\n", tech->rmb_tx.buf_full_cnt, + buf_full); + printf(" Buffer full (remote) %12llu (%.2f%%)\n", tech->rmb_tx.buf_full_peer_cnt, + buf_full_r); + printf(" Buffer too small %12llu (%.2f%%)\n", tech->rmb_tx.buf_size_small_cnt, + buf_small); + printf(" Buffer too small (remote) %12llu (%.2f%%)\n", tech->rmb_tx.buf_size_small_peer_cnt, + buf_small_r); + if (d_level) { + printf(" Buffer downgrades %12llu\n", tech->rmb_tx.dgrade_cnt); + printf(" Buffer reuses %12llu\n", tech->rmb_tx.reuse_cnt); + } + fillbuffer(&tech->tx_rmbsize, buf); + printf(" 8KB 16KB 32KB 64KB 128KB 256KB 512KB >512KB\n"); + printf(" Bufs %6s %6s %6s %6s %6s %6s %6s %6s\n", + buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], + buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); + fillbuffer(&tech->tx_pd, buf); + printf(" Reqs %6s %6s %6s %6s %6s %6s %6s %6s\n", + buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], + buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); + printf("\n"); + printf("Extras\n"); + printf(" Special socket calls %12llu\n", special_calls); + if (d_level) { + printf(" cork %12llu\n", tech->cork_cnt); + printf(" nodelay %12llu\n", tech->ndly_cnt); + printf(" sendpage %12llu\n", tech->sendpage_cnt); + printf(" splice %12llu\n", tech->splice_cnt); + printf(" urgent data %12llu\n", tech->urg_data_cnt); + } +} + +static int show_tech_pload_info(struct nlattr **attr, int type, int direction) +{ + struct nlattr *tech_pload_attrs[SMC_NLA_STATS_PLOAD_MAX + 1]; + struct smc_stats_memsize *tmp_memsize; + uint64_t trgt = 0; + int rc = NL_OK; + int tech_type; + + if (type == SMC_NLA_STATS_SMCD_TECH) + tech_type = SMC_TYPE_D; + else + tech_type = SMC_TYPE_R; + + if (direction == SMC_NLA_STATS_T_TXPLOAD_SIZE) + tmp_memsize = &smc_stat.smc[tech_type].tx_pd; + else if (direction == SMC_NLA_STATS_T_RXPLOAD_SIZE) + tmp_memsize = &smc_stat.smc[tech_type].rx_pd; + else if (direction == SMC_NLA_STATS_T_TX_RMB_SIZE) + tmp_memsize = &smc_stat.smc[tech_type].tx_rmbsize; + else if (direction == SMC_NLA_STATS_T_RX_RMB_SIZE) + tmp_memsize = &smc_stat.smc[tech_type].rx_rmbsize; + else + return NL_STOP; + + if (nla_parse_nested(tech_pload_attrs, SMC_NLA_STATS_PLOAD_MAX, + attr[direction], + smc_gen_stats_pload_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_stats_pload_policy\n"); + return NL_STOP; + } + + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_8K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_8K]); + tmp_memsize->buf[SMC_BUF_8K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_16K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_16K]); + tmp_memsize->buf[SMC_BUF_16K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_32K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_32K]); + tmp_memsize->buf[SMC_BUF_32K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_64K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_64K]); + tmp_memsize->buf[SMC_BUF_64K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_128K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_128K]); + tmp_memsize->buf[SMC_BUF_128K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_256K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_256K]); + tmp_memsize->buf[SMC_BUF_256K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_512K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_512K]); + tmp_memsize->buf[SMC_BUF_512K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_1024K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_1024K]); + tmp_memsize->buf[SMC_BUF_1024K] = trgt; + } + if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_G_1024K]) { + trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_G_1024K]); + tmp_memsize->buf[SMC_BUF_G_1024K] = trgt; + } + return rc; +} + +static int show_tech_rmb_info(struct nlattr **attr, int type, int direction) +{ + struct nlattr *tech_rmb_attrs[SMC_NLA_STATS_RMB_MAX + 1]; + struct smc_stats_rmbcnt *tmp_rmb_stats; + uint64_t trgt = 0; + int rc = NL_OK; + int tech_type; + + if (type == SMC_NLA_STATS_SMCD_TECH) + tech_type = SMC_TYPE_D; + else + tech_type = SMC_TYPE_R; + + if (direction == SMC_NLA_STATS_T_TX_RMB_STATS) + tmp_rmb_stats = &smc_stat.smc[tech_type].rmb_tx; + else + tmp_rmb_stats = &smc_stat.smc[tech_type].rmb_rx; + + if (nla_parse_nested(tech_rmb_attrs, SMC_NLA_STATS_RMB_MAX, + attr[direction], + smc_gen_stats_rmb_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_stats_rmb_policy\n"); + return NL_STOP; + } + + if (tech_rmb_attrs[SMC_NLA_STATS_RMB_REUSE_CNT]) { + trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_REUSE_CNT]); + tmp_rmb_stats->reuse_cnt = trgt; + } + if (tech_rmb_attrs[SMC_NLA_STATS_RMB_ALLOC_CNT]) { + trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_ALLOC_CNT]); + tmp_rmb_stats->alloc_cnt = trgt; + } + if (tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT]) { + trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT]); + tmp_rmb_stats->buf_size_small_peer_cnt = trgt; + } + if (tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_CNT]) { + trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_CNT]); + tmp_rmb_stats->buf_size_small_cnt = trgt; + } + if (tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_PEER_CNT]) { + trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_PEER_CNT]); + tmp_rmb_stats->buf_full_peer_cnt = trgt; + } + if (tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_CNT]) { + trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_CNT]); + tmp_rmb_stats->buf_full_cnt = trgt; + } + if (tech_rmb_attrs[SMC_NLA_STATS_RMB_DGRADE_CNT]) { + trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_DGRADE_CNT]); + tmp_rmb_stats->dgrade_cnt = trgt; + } + + return rc; +} + +static int fill_tech_info(struct nlattr **attr, int type) +{ + struct nlattr *tech_attrs[SMC_NLA_STATS_T_MAX + 1]; + uint64_t trgt = 0; + int tech_type; + + if (type == SMC_NLA_STATS_SMCD_TECH) + tech_type = SMC_TYPE_D; + else + tech_type = SMC_TYPE_R; + + if (nla_parse_nested(tech_attrs, SMC_NLA_STATS_T_MAX, + attr[type], + smc_gen_stats_tech_policy)) { + fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_stats_fback_policy\n"); + return NL_STOP; + } + + if (tech_attrs[SMC_NLA_STATS_T_SRV_V1_SUCC]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SRV_V1_SUCC]); + smc_stat.smc[tech_type].srv_v1_succ_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_SRV_V2_SUCC]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SRV_V2_SUCC]); + smc_stat.smc[tech_type].srv_v2_succ_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_CLNT_V1_SUCC]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_CLNT_V1_SUCC]); + smc_stat.smc[tech_type].clnt_v1_succ_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_CLNT_V2_SUCC]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_CLNT_V2_SUCC]); + smc_stat.smc[tech_type].clnt_v2_succ_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_RX_BYTES]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_RX_BYTES]); + smc_stat.smc[tech_type].rx_bytes = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_TX_BYTES]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_TX_BYTES]); + smc_stat.smc[tech_type].tx_bytes = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_RX_RMB_USAGE]) { + trgt = nl_attr_get_uint(tech_attrs[SMC_NLA_STATS_T_RX_RMB_USAGE]); + smc_stat.smc[tech_type].rx_rmbuse = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_TX_RMB_USAGE]) { + trgt = nl_attr_get_uint(tech_attrs[SMC_NLA_STATS_T_TX_RMB_USAGE]); + smc_stat.smc[tech_type].tx_rmbuse = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_RX_CNT]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_RX_CNT]); + smc_stat.smc[tech_type].rx_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_TX_CNT]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_TX_CNT]); + smc_stat.smc[tech_type].tx_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_SENDPAGE_CNT]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SENDPAGE_CNT]); + smc_stat.smc[tech_type].sendpage_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_SPLICE_CNT]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SPLICE_CNT]); + smc_stat.smc[tech_type].splice_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_CORK_CNT]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_CORK_CNT]); + smc_stat.smc[tech_type].cork_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_NDLY_CNT]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_NDLY_CNT]); + smc_stat.smc[tech_type].ndly_cnt = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_URG_DATA_CNT]) { + trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_URG_DATA_CNT]); + smc_stat.smc[tech_type].urg_data_cnt = trgt; + } + + if (show_tech_rmb_info(tech_attrs, type, SMC_NLA_STATS_T_TX_RMB_STATS) != NL_OK) + goto errout; + if (show_tech_rmb_info(tech_attrs, type, SMC_NLA_STATS_T_RX_RMB_STATS) != NL_OK) + goto errout; + if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_TXPLOAD_SIZE) != NL_OK) + goto errout; + if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_RXPLOAD_SIZE) != NL_OK) + goto errout; + if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_TX_RMB_SIZE) != NL_OK) + goto errout; + if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_RX_RMB_SIZE) != NL_OK) + goto errout; + + return NL_OK; +errout: + return NL_STOP; +} + +static int handle_gen_stats_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *stats_attrs[SMC_NLA_STATS_MAX + 1]; + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + uint64_t trgt = 0; + int rc = NL_OK; + + if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, + (struct nla_policy *)smc_gen_net_policy) < 0) { + fprintf(stderr, "%s: invalid data returned\n", "smc"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + if (!attrs[SMC_GEN_STATS]) + return NL_STOP; + + if (nla_parse_nested(stats_attrs, SMC_NLA_STATS_MAX, + attrs[SMC_GEN_STATS], + smc_gen_stats_policy)) { + fprintf(stderr, "failed to parse nested attributes!\n"); + return NL_STOP; + } + memset(&smc_stat, 0, sizeof(smc_stat)); + if (stats_attrs[SMC_NLA_STATS_CLNT_HS_ERR_CNT]) { + trgt = nla_get_u64(stats_attrs[SMC_NLA_STATS_CLNT_HS_ERR_CNT]); + smc_stat.clnt_hshake_err_cnt = trgt; + } + + if (stats_attrs[SMC_NLA_STATS_SRV_HS_ERR_CNT]) { + trgt = nla_get_u64(stats_attrs[SMC_NLA_STATS_SRV_HS_ERR_CNT]); + smc_stat.srv_hshake_err_cnt = trgt; + } + + if (stats_attrs[SMC_NLA_STATS_SMCR_TECH]) + rc = fill_tech_info(&stats_attrs[0], SMC_NLA_STATS_SMCR_TECH); + if (stats_attrs[SMC_NLA_STATS_SMCD_TECH]) + rc = fill_tech_info(&stats_attrs[0], SMC_NLA_STATS_SMCD_TECH); + return rc; +} + +static int fback_array_last_pos(struct smc_stats_fback *fback) +{ + int k; + + for (k = 0; k < SMC_MAX_FBACK_RSN_CNT; k++) + if (fback[k].fback_code == 0) + return k; + + return SMC_MAX_FBACK_RSN_CNT - 1; +} + +static int handle_gen_fback_stats_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *stats_fback_attrs[SMC_NLA_FBACK_STATS_MAX + 1]; + struct nlattr *attrs[SMC_GEN_MAX + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + struct smc_stats_fback *smc_fback; + unsigned short type = 0, last_pos; + uint64_t trgt64 = 0; + int rc = NL_OK; + int trgt = 0; + + if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, + (struct nla_policy *)smc_gen_net_policy) < 0) { + fprintf(stderr, "%s: invalid data returned\n", "smc"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + if (!attrs[SMC_GEN_FBACK_STATS]) + return NL_STOP; + + if (nla_parse_nested(stats_fback_attrs, SMC_NLA_FBACK_STATS_MAX, + attrs[SMC_GEN_FBACK_STATS], + smc_gen_stats_fback_policy)) { + fprintf(stderr, "failed to parse nested attributes!\n"); + return NL_STOP; + } + + if (stats_fback_attrs[SMC_NLA_FBACK_STATS_SRV_CNT]) { + trgt64 = nla_get_u64(stats_fback_attrs[SMC_NLA_FBACK_STATS_SRV_CNT]); + smc_rsn.srv_fback_cnt = trgt64; + } + if (stats_fback_attrs[SMC_NLA_FBACK_STATS_SRV_CNT]) { + trgt64 = nla_get_u64(stats_fback_attrs[SMC_NLA_FBACK_STATS_CLNT_CNT]); + smc_rsn.clnt_fback_cnt = trgt64; + } + if (stats_fback_attrs[SMC_NLA_FBACK_STATS_TYPE]) { + type = nla_get_u8(stats_fback_attrs[SMC_NLA_FBACK_STATS_TYPE]); + if (type) + smc_fback = smc_rsn.srv; + else + smc_fback = smc_rsn.clnt; + + last_pos = fback_array_last_pos(smc_fback); + if (stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CODE]) { + trgt = nla_get_u32(stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CODE]); + smc_fback[last_pos].fback_code = trgt; + } + + if (stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CNT]) { + trgt = nla_get_u16(stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CNT]); + smc_fback[last_pos].count = trgt; + } + } + + return rc; +} + +static void handle_cmd_params(int argc, char **argv) +{ + + memset(&smc_rsn, 0, sizeof(smc_rsn)); + if (argc == 0) { + show_cmd = 1; /* no object given, so use the default "show" */ + return; + } + + while (1) { + if (contains(argv[0], "help") == 0) { + usage(); + } else if (contains(argv[0], "show") == 0) { + show_cmd = 1; + break; + } else if (contains(argv[0], "reset") == 0) { + reset_cmd = 1; + break; + } else if (contains(argv[0], "json") == 0) { + json_cmd = 1; + break; + }else { + usage(); + } + if (!NEXT_ARG_OK()) + break; + NEXT_ARG(); + } + /* Too many parameters or wrong sequence of parameters */ + if (NEXT_ARG_OK()) + usage(); +} + +static void read_cache_file(FILE *fp) +{ + int count = 0, idx = 0, rc, size_fback = 0; + int size, val_err, val_cnt; + unsigned long long val; + __u64 *trgt, *fbck_cnt; + char buf[4096]; + int *trgt_fbck; + + /* size without fallback reasons */ + size = sizeof(smc_stat_c) / sizeof(__u64); + trgt = (__u64 *)&smc_stat_c; + size_fback = size + 2*SMC_MAX_FBACK_RSN_CNT; + trgt_fbck = (int *)&smc_rsn_c; + fbck_cnt = (__u64 *)&smc_rsn_c.srv_fback_cnt; + + while (fgets(buf, sizeof(buf), fp) != NULL) { + if (count < size) { + rc = sscanf(buf, "%d%llu", &idx, &val); + if (rc < 2) { + perror("Error: parsing cache file(stats)"); + exit(-1); + } + if (idx != count) { + perror("Error: unexpected value in cache file"); + exit(-1); + } + *trgt = val; + trgt++; + } else if (count < size_fback) { + rc = sscanf(buf, "%d%d%d", &idx, &val_err, &val_cnt); + if (rc < 3) { + perror("Error: parsing cache file (fback stats)"); + exit(-1); + } + if (idx > SMC_MAX_FBACK_RSN_CNT * 2) { + perror("Error: unexpected value in cache file (fback stats)"); + exit(-1); + } + *trgt_fbck = val_err; + trgt_fbck++; + *trgt_fbck = val_cnt; + trgt_fbck++; + } else if (count < size_fback + 2) { + rc = sscanf(buf, "%llu", &val); + if (rc < 1) { + perror("Error: parsing cache file(fback counters)"); + exit(-1); + } + *fbck_cnt = val; + fbck_cnt++; + } else { + perror("Error: cache file corrupt"); + exit(-1); + } + cache_file_exists = 1; + count++; + } +} + +static int get_fback_err_cache_count(struct smc_stats_fback *fback, int trgt) +{ + int i; + + for (i = 0; i < SMC_MAX_FBACK_RSN_CNT; i++) { + if (fback[i].fback_code == trgt) + return fback[i].count; + } + + return 0; +} + +/* Check whether there were wrap arounds or really old data in the cache */ +static int is_data_consistent () +{ + int size, i, size_fback, val_err, val_cnt, cache_cnt; + struct smc_stats_fback *kern_fbck; + __u64 *kernel, *cache; + + size = sizeof(smc_stat) / sizeof(__u64); + kernel = (__u64 *)&smc_stat; + cache = (__u64 *)&smc_stat_c; + for (i = 0; i < size; i++) { + if (*kernel < *cache) + return 0; + kernel++; + cache++; + } + + size_fback = 2 * SMC_MAX_FBACK_RSN_CNT; + kern_fbck = (struct smc_stats_fback *)&smc_rsn; + for (i = 0; i < size_fback; i++) { + val_err = kern_fbck->fback_code; + if (i < SMC_MAX_FBACK_RSN_CNT) + cache_cnt = get_fback_err_cache_count(smc_rsn_c.srv, val_err); + else + cache_cnt = get_fback_err_cache_count(smc_rsn_c.clnt, val_err); + val_cnt = kern_fbck->count; + kern_fbck++; + if (val_cnt < cache_cnt) + return 0; + } + + if ((smc_rsn.srv_fback_cnt < smc_rsn_c.srv_fback_cnt) || + (smc_rsn.clnt_fback_cnt < smc_rsn_c.clnt_fback_cnt)) + return 0; + + return 1; +} + +static void merge_cache () +{ + int size, i, size_fback, val_err, cache_cnt; + struct smc_stats_fback *kern_fbck; + __u64 *kernel, *cache; + + if (!is_data_consistent()) { + unlink(cache_file_path); + return; + } + + size = sizeof(smc_stat) / sizeof(__u64); + kernel = (__u64 *)&smc_stat; + cache = (__u64 *)&smc_stat_c; + for (i = 0; i < size; i++) + *(kernel++) -= *(cache++); + + size_fback = 2 * SMC_MAX_FBACK_RSN_CNT; + kern_fbck = (struct smc_stats_fback *)&smc_rsn; + for (i = 0; i < size_fback; i++) { + val_err = kern_fbck->fback_code; + if (i < SMC_MAX_FBACK_RSN_CNT) + cache_cnt = get_fback_err_cache_count(smc_rsn_c.srv, val_err); + else + cache_cnt = get_fback_err_cache_count(smc_rsn_c.clnt, val_err); + kern_fbck->count -= cache_cnt; + kern_fbck++; + } + + smc_rsn.srv_fback_cnt -= smc_rsn_c.srv_fback_cnt; + smc_rsn.clnt_fback_cnt -= smc_rsn_c.clnt_fback_cnt; +} + +static void open_cache_file() +{ + int fd; + + cache_file_path = malloc(128); + sprintf(cache_file_path, "/tmp/.smcstats.u%d", getuid()); + + fd = open(cache_file_path, O_RDWR|O_CREAT|O_NOFOLLOW, 0600); + + if (fd < 0) { + perror("Error: open cache file"); + exit(-1); + } + + if ((cache_fp = fdopen(fd, "r+")) == NULL) { + perror("Error: cache file r+"); + exit(-1); + } + if (flock(fileno(cache_fp), LOCK_EX)) { + perror("Error: cache file lock"); + exit(-1); + } +} + +static void init_cache_file() +{ + open_cache_file(); + read_cache_file(cache_fp); +} + + +static void fill_cache_file() +{ + int size, i, val_err, val_cnt; + int *fback_src; + __u64 *src; + + if (ftruncate(fileno(cache_fp), 0) < 0) + perror("Error: ftruncate"); + + size = sizeof(smc_stat) / sizeof(__u64); + src = (__u64 *)&smc_stat_org; + for (i = 0; i < size; i++) { + fprintf(cache_fp, "%-12d%-16llu\n",i ,*src); + src++; + } + + fback_src = (int*)&smc_rsn_org; + size = 2 * SMC_MAX_FBACK_RSN_CNT; + for (i = 0; i < size; i++) { + val_err = *(fback_src++); + val_cnt = *(fback_src++); + fprintf(cache_fp, "%-12d%-16d%-16d\n",i , val_err, val_cnt); + } + + fprintf(cache_fp, "%16llu\n", smc_rsn_org.srv_fback_cnt); + fprintf(cache_fp, "%16llu\n", smc_rsn_org.clnt_fback_cnt); +} + +int invoke_stats(int argc, char **argv, int option_details) +{ + if (option_details == SMC_DETAIL_LEVEL_V || option_details == SMC_DETAIL_LEVEL_VV) { + d_level = 1; + } else if (option_details == SMC_OPTION_ABS) { + is_abs = 1; + } else if (option_details == SMC_OPTION_DETAIL_ABS) { + is_abs = 1; + d_level = 1; + } + + handle_cmd_params(argc, argv); + if (!is_abs) + init_cache_file(); + if (gen_nl_handle_dump(SMC_NETLINK_GET_FBACK_STATS, handle_gen_fback_stats_reply, NULL)) + goto errout; + if (gen_nl_handle_dump(SMC_NETLINK_GET_STATS, handle_gen_stats_reply, NULL)) + goto errout; + memcpy(&smc_stat_org, &smc_stat, sizeof(smc_stat_org)); + memcpy(&smc_rsn_org, &smc_rsn, sizeof(smc_rsn_org)); + + if (!is_abs && cache_file_exists) + merge_cache(); + if (!json_cmd) + print_as_text(); + else + print_as_json(); + if (reset_cmd) { + unlink(cache_file_path); + if (cache_fp) { + fclose(cache_fp); + cache_fp = NULL; + } + free(cache_file_path); + cache_file_path = NULL; + open_cache_file(); + fill_cache_file(); + } +errout: + if (cache_fp) + fclose(cache_fp); + free(cache_file_path); + return 0; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/stats.h b/testcases/feature-test/oeaware/smc-tools-main/stats.h new file mode 100644 index 000000000..a728596b1 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/stats.h @@ -0,0 +1,128 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2021 + * + * Author(s): Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef SMC_SYSTEM_H_ +#define SMC_SYSTEM_H_ + +#define SMC_CLC_DECL_MEM 0x01010000 /* insufficient memory resources */ +#define SMC_CLC_DECL_TIMEOUT_CL 0x02010000 /* timeout w4 QP confirm link */ +#define SMC_CLC_DECL_TIMEOUT_AL 0x02020000 /* timeout w4 QP add link */ +#define SMC_CLC_DECL_CNFERR 0x03000000 /* configuration error */ +#define SMC_CLC_DECL_PEERNOSMC 0x03010000 /* peer did not indicate SMC */ +#define SMC_CLC_DECL_IPSEC 0x03020000 /* IPsec usage */ +#define SMC_CLC_DECL_NOSMCDEV 0x03030000 /* no SMC device found (R or D) */ +#define SMC_CLC_DECL_NOSMCDDEV 0x03030001 /* no SMC-D device found */ +#define SMC_CLC_DECL_NOSMCRDEV 0x03030002 /* no SMC-R device found */ +#define SMC_CLC_DECL_NOISM2SUPP 0x03030003 /* hardware has no ISMv2 support */ +#define SMC_CLC_DECL_NOV2EXT 0x03030004 /* peer sent no clc v2 extension */ +#define SMC_CLC_DECL_NOV2DEXT 0x03030005 /* peer sent no clc SMC-Dv2 ext. */ +#define SMC_CLC_DECL_NOSEID 0x03030006 /* peer sent no SEID */ +#define SMC_CLC_DECL_NOSMCD2DEV 0x03030007 /* no SMC-Dv2 device found */ +#define SMC_CLC_DECL_MODEUNSUPP 0x03040000 /* smc modes do not match (R or D)*/ +#define SMC_CLC_DECL_RMBE_EC 0x03050000 /* peer has eyecatcher in RMBE */ +#define SMC_CLC_DECL_OPTUNSUPP 0x03060000 /* fastopen sockopt not supported */ +#define SMC_CLC_DECL_DIFFPREFIX 0x03070000 /* IP prefix / subnet mismatch */ +#define SMC_CLC_DECL_GETVLANERR 0x03080000 /* err to get vlan id of ip device*/ +#define SMC_CLC_DECL_ISMVLANERR 0x03090000 /* err to reg vlan id on ism dev */ +#define SMC_CLC_DECL_NOACTLINK 0x030a0000 /* no active smc-r link in lgr */ +#define SMC_CLC_DECL_NOSRVLINK 0x030b0000 /* SMC-R link from srv not found */ +#define SMC_CLC_DECL_VERSMISMAT 0x030c0000 /* SMC version mismatch */ +#define SMC_CLC_DECL_MAX_DMB 0x030d0000 /* SMC-D DMB limit exceeded */ +#define SMC_CLC_DECL_SYNCERR 0x04000000 /* synchronization error */ +#define SMC_CLC_DECL_PEERDECL 0x05000000 /* peer declined during handshake */ +#define SMC_CLC_DECL_INTERR 0x09990000 /* internal error */ +#define SMC_CLC_DECL_ERR_RTOK 0x09990001 /* rtoken handling failed */ +#define SMC_CLC_DECL_ERR_RDYLNK 0x09990002 /* ib ready link failed */ +#define SMC_CLC_DECL_ERR_REGRMB 0x09990003 /* reg rmb failed */ + +#define SMC_TYPE_R 0 +#define SMC_TYPE_D 1 +#define SMC_SERVER 1 +#define SMC_CLIENT 0 + +#define SMC_MAX_FBACK_RSN_CNT 30 + +enum { + SMC_BUF_8K, + SMC_BUF_16K, + SMC_BUF_32K, + SMC_BUF_64K, + SMC_BUF_128K, + SMC_BUF_256K, + SMC_BUF_512K, + SMC_BUF_1024K, + SMC_BUF_G_1024K, + SMC_BUF_MAX, +}; + +struct smc_stats_fback { + int fback_code; + int count; +}; + +struct smc_stats_rsn { + struct smc_stats_fback srv[SMC_MAX_FBACK_RSN_CNT]; + struct smc_stats_fback clnt[SMC_MAX_FBACK_RSN_CNT]; + __u64 srv_fback_cnt; + __u64 clnt_fback_cnt; +}; + +struct smc_stats_rmbcnt { + __u64 buf_size_small_peer_cnt; + __u64 buf_size_small_cnt; + __u64 buf_full_peer_cnt; + __u64 buf_full_cnt; + __u64 reuse_cnt; + __u64 alloc_cnt; + __u64 dgrade_cnt; +}; + +struct smc_stats_memsize { + __u64 buf[SMC_BUF_MAX]; +}; + +struct smc_stats_tech { + struct smc_stats_memsize tx_rmbsize; + struct smc_stats_memsize rx_rmbsize; + struct smc_stats_memsize tx_pd; + struct smc_stats_memsize rx_pd; + struct smc_stats_rmbcnt rmb_tx; + struct smc_stats_rmbcnt rmb_rx; + __u64 clnt_v1_succ_cnt; + __u64 clnt_v2_succ_cnt; + __u64 srv_v1_succ_cnt; + __u64 srv_v2_succ_cnt; + __u64 sendpage_cnt; + __u64 urg_data_cnt; + __u64 splice_cnt; + __u64 cork_cnt; + __u64 ndly_cnt; + __u64 rx_bytes; + __u64 tx_bytes; + __u64 rx_cnt; + __u64 tx_cnt; + __u64 rx_rmbuse; + __u64 tx_rmbuse; +}; + +struct smc_stats { + struct smc_stats_tech smc[2]; + __u64 clnt_hshake_err_cnt; + __u64 srv_hshake_err_cnt; +}; + +int invoke_stats(int argc, char **argv, int detail_level); + +#endif /* SMC_SYSTEM_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/ueid.c b/testcases/feature-test/oeaware/smc-tools-main/ueid.c new file mode 100644 index 000000000..4215b061c --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/ueid.c @@ -0,0 +1,266 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include +#include +#include + +#include "smctools_common.h" +#include "util.h" +#include "libnetlink.h" +#include "ueid.h" + +static int add_cmd = 0; +static int del_cmd = 0; +static int flush_cmd = 0; +static int show_cmd = 0; + +static char target_eid[SMC_MAX_EID_LEN + 1] = {0}; + +extern int smc_id; +extern struct nl_sock *sk; + +const struct nla_policy +smc_gen_ueid_policy[SMC_NLA_EID_TABLE_MAX + 1] = { + [SMC_NLA_EID_TABLE_UNSPEC] = { .type = NLA_UNSPEC }, + [SMC_NLA_EID_TABLE_ENTRY] = { .type = NLA_NUL_STRING }, +}; + +static void usage(void) +{ + fprintf(stderr, + "Usage: smcd ueid [show]\n" + " smcd ueid add \n" + " smcd ueid del \n" + " smcd ueid flush\n" + ); + exit(-1); +} + +static int gen_nl_ueid_handle(int cmd, char *ueid, int (*cb_handler)(struct nl_msg *msg, void *arg)) +{ + int rc = EXIT_FAILURE, nlmsg_flags = 0; + struct nl_msg *msg; + + nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, NULL); + + /* Allocate a netlink message and set header information. */ + msg = nlmsg_alloc(); + if (!msg) { + nl_perror(NLE_NOMEM, "Error"); + rc = EXIT_FAILURE; + goto err; + } + + if (cmd == SMC_NETLINK_DUMP_UEID) + nlmsg_flags = NLM_F_DUMP; + + if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, smc_id, 0, nlmsg_flags, + cmd, SMC_GENL_FAMILY_VERSION)) { + nl_perror(rc, "Error"); + rc = EXIT_FAILURE; + goto err; + } + + if (ueid && ueid[0]) { + rc = nla_put_string(msg, SMC_NLA_EID_TABLE_ENTRY, ueid); + if (rc < 0) { + nl_perror(rc, "Error"); + rc = EXIT_FAILURE; + goto err; + } + + } + + /* Send message */ + rc = nl_send_auto(sk, msg); + if (rc < 0) { + nl_perror(rc, "Error"); + rc = EXIT_FAILURE; + goto err; + } + + /* Receive reply message, returns number of cb invocations. */ + rc = nl_recvmsgs_default(sk); + + if (rc < 0) { + /* For cmd "UEID remove" the kernel might return ENOENT when + * the specified UEID is not in the list. + * This is mapped to NLE_OBJ_NOTFOUND in libnl, lib/error.c. + */ + if (rc == -NLE_OPNOTSUPP) { + fprintf(stderr, "Error: operation not supported by kernel\n"); + } else if (cmd == SMC_NETLINK_REMOVE_UEID) { + if (rc == -NLE_OBJ_NOTFOUND) { + fprintf(stderr, "Error: specified User EID is not defined\n"); + } else if (rc == -NLE_AGAIN) { + fprintf(stderr, "Info: the System EID was activated because the last User EID was removed\n"); + } else { + fprintf(stderr, "Error: specified User EID is not defined\n"); + } + } else if (cmd == SMC_NETLINK_ADD_UEID) { + if (rc == -NLE_INVAL) { + fprintf(stderr, "Error: specified User EID was rejected by the kernel\n"); + } else if (rc == -NLE_NOMEM) { + fprintf(stderr, "Error: kernel reported an out of memory condition\n"); + } else if (rc == -NLE_RANGE) { + fprintf(stderr, "Error: specified User EID was rejected because the maximum number of User EIDs is reached\n"); + } else if (rc == -NLE_EXIST) { + fprintf(stderr, "Error: specified User EID is already defined\n"); + } else { + nl_perror(rc, "Error"); + } + } else { + nl_perror(rc, "Error"); + } + rc = EXIT_FAILURE; + goto err; + } + + nlmsg_free(msg); + return EXIT_SUCCESS; +err: + nlmsg_free(msg); + return rc; +} + +static int handle_gen_ueid_reply(struct nl_msg *msg, void *arg) +{ + struct nlattr *attrs[SMC_NLA_EID_TABLE_ENTRY + 1]; + struct nlmsghdr *hdr = nlmsg_hdr(msg); + int rc = NL_OK; + + if (genlmsg_parse(hdr, 0, attrs, SMC_NLA_EID_TABLE_ENTRY, + (struct nla_policy *)smc_gen_ueid_policy) < 0) { + fprintf(stderr, "Error: invalid data returned: smc_gen_ueid_policy\n"); + nl_msg_dump(msg, stderr); + return NL_STOP; + } + + if (!attrs[SMC_NLA_EID_TABLE_ENTRY]) + return NL_STOP; + + printf("%s\n", nla_get_string(attrs[SMC_NLA_EID_TABLE_ENTRY])); + return rc; +} + +static char ueid_valid(char *ueid) +{ + char *end = ueid + SMC_MAX_EID_LEN; + + while (--end >= ueid && isspace(*end)) + ; + if (end < ueid) { + fprintf(stderr, "Error: Invalid User EID specified: EID is empty\n"); + return 0; + } + if (!isalnum(*ueid)) { + fprintf(stderr, "Error: Invalid User EID specified: first character must be alphanumeric\n"); + return 0; + } + if (strstr(ueid, "..")) { + fprintf(stderr, "Error: Invalid User EID specified: consecutive dots not allowed\n"); + return 0; + } + while (ueid <= end) { + if ((!isalnum(*ueid) || islower(*ueid)) && *ueid != '.' && *ueid != '-') { + fprintf(stderr, "Error: Invalid User EID specified: unsupported character: '%c'\n", *ueid); + fprintf(stderr, " Supported characters are: A-Z, 0-9, '.' and '-'\n"); + return 0; + } + ueid++; + } + return 1; +} + +static void set_eid(char *eid) +{ + if (strlen(eid) > SMC_MAX_EID_LEN) { + fprintf(stderr, "Error: Invalid User EID specified: EID is longer than 32 characters\n"); + exit(-1); + } + /* pad to 32 byte using blanks */ + sprintf(target_eid, "%-32s", eid); + + if (!ueid_valid(target_eid)) + exit(-1); +} + +static void handle_cmd_params(int argc, char **argv) +{ + if (argc == 0) { + show_cmd = 1; /* no object given, so use the default "show" */ + return; + } + + while (1) { + if (add_cmd) { + set_eid(argv[0]); + break; + } else if (del_cmd) { + set_eid(argv[0]); + break; + } else if (contains(argv[0], "help") == 0) { + usage(); + } else if (contains(argv[0], "add") == 0) { + add_cmd = 1; + } else if (contains(argv[0], "del") == 0) { + del_cmd = 1; + } else if (contains(argv[0], "flush") == 0) { + flush_cmd = 1; + break; + } else if (contains(argv[0], "show") == 0) { + show_cmd = 1; + break; + } else { + usage(); + } + if (!NEXT_ARG_OK()) + break; + NEXT_ARG(); + } + /* Too many parameters or wrong sequence of parameters */ + if (NEXT_ARG_OK()) + usage(); + + /* Only single cmd expected */ + if ((add_cmd + del_cmd + flush_cmd + show_cmd) != 1) + usage(); + + /* eid required for command */ + if (!target_eid[0] && (add_cmd || del_cmd)) + usage(); +} + +int invoke_ueid(int argc, char **argv, int detail_level) +{ + int rc = EXIT_SUCCESS; + + handle_cmd_params(argc, argv); + + if (add_cmd) { + rc = gen_nl_ueid_handle(SMC_NETLINK_ADD_UEID, target_eid, handle_gen_ueid_reply); + } else if (del_cmd) { + rc = gen_nl_ueid_handle(SMC_NETLINK_REMOVE_UEID, target_eid, handle_gen_ueid_reply); + } else if (flush_cmd) { + rc = gen_nl_ueid_handle(SMC_NETLINK_FLUSH_UEID, NULL, handle_gen_ueid_reply); + } else if (show_cmd) { + rc = gen_nl_ueid_handle(SMC_NETLINK_DUMP_UEID, NULL, handle_gen_ueid_reply); + } else { + printf("Error: Unknown command\n"); /* we should never come here ... */ + } + + return rc; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/ueid.h b/testcases/feature-test/oeaware/smc-tools-main/ueid.h new file mode 100644 index 000000000..f9b9d9da4 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/ueid.h @@ -0,0 +1,21 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +#ifndef UEID_H_ +#define UEID_H_ + +extern struct rtnl_handle rth; + +int invoke_ueid(int argc, char **argv, int detail_level); + +#endif /* UEID_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/util.c b/testcases/feature-test/oeaware/smc-tools-main/util.c new file mode 100644 index 000000000..236cd5115 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/util.c @@ -0,0 +1,145 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#include +#include +#include +#include + +#include "util.h" + +void print_unsup_msg(void) +{ + fprintf(stderr, "Error: Kernel does not support this parameter !\n"); + exit(-1); +} + +void print_type_error(void) { + fprintf(stderr, "Error: You entered an invalid type. Possible values are smcd and smcr !\n"); + exit(-1); +} + +char* trim_space(char *str) +{ + char *end; + + while (isspace(*str)) { + str = str + 1; + } + /* remove trailing whitespace */ + end = str + strlen((const char*)str) - 1; + while (end > str && isspace(*end)) { + end = end - 1; + } + *(end+1) = '\0'; + return str; +} + +int contains(const char *prfx, const char *str) +{ + if (!*prfx) + return 1; + while (*str && *prfx == *str) { + prfx++; + str++; + } + + return !!*prfx; +} + +static void determine_mag_factor(int leading_places, char *magnitude, + double *factor) +{ + if (leading_places < 7) { + *magnitude = 'K'; + *factor = 1000; + } + else if (leading_places < 10) { + *magnitude = 'M'; + *factor = 1000000; + } + else if (leading_places < 13) { + *magnitude = 'G'; + *factor = 1000000000; + } + else { + // this is quite expensive, hence we avoid if possible + *factor = pow(1000, leading_places/3); + if (leading_places < 16) + *magnitude = 'T'; + else if (leading_places < 19) + *magnitude = 'P'; + else + *magnitude = '?'; + } +} + + +static void determine_digs(int leading_places, int max_digs, + int *num_full_digs, int *num_places) +{ + *num_full_digs = leading_places % 3; + if (*num_full_digs == 0) + *num_full_digs = 3; + *num_places = max_digs - *num_full_digs - 2; + if (*num_places <= 0) { + *num_places = 0; + *num_full_digs = max_digs - 1; + } +} + + +int get_abbreviated(uint64_t num, int max_digs, char *res) +{ + int num_full_digs, leading_places; + char magnitude; + int num_places; + double factor; + char tmp[128]; + + if (num == 0) { + snprintf(res, max_digs + 1, "0"); + return 1; + } + + leading_places = sprintf(tmp, "%lld", (long long int)num); + if (leading_places < 4) { + snprintf(res, max_digs + 1, "%lu", num); + return leading_places; + } + + determine_digs(leading_places, max_digs, &num_full_digs, &num_places); + determine_mag_factor(leading_places, &magnitude, &factor); + + double tmpnum = num / factor; + if (tmpnum + 5 * pow(10, -1 - num_places) >= pow(10, num_full_digs)) { + if (num_places > 0) + // just strip down one decimal place, + // e.g. 9.96... with 1.1 format would result in + // 10.0 otherwise + num_places--; + else { + // indicate that we need one more leading place + // e.g. 999.872 with 3.0 format digits would result + // in 1.000K otherwise + leading_places++; + determine_digs(leading_places, max_digs, &num_full_digs, &num_places); + determine_mag_factor(leading_places, &magnitude, &factor); + tmpnum = num / factor; + } + } + + snprintf(res, max_digs + 1, "%*.*lf%c", max_digs - 1, num_places, num / factor, magnitude); + return 0; +} diff --git a/testcases/feature-test/oeaware/smc-tools-main/util.h b/testcases/feature-test/oeaware/smc-tools-main/util.h new file mode 100644 index 000000000..065b778c2 --- /dev/null +++ b/testcases/feature-test/oeaware/smc-tools-main/util.h @@ -0,0 +1,44 @@ +/* + * SMC Tools - Shared Memory Communication Tools + * + * Copyright IBM Corp. 2020 + * + * Author(s): Guvenc Gulce + * + * Userspace program for SMC Information display + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +#ifndef UTIL_H_ +#define UTIL_H_ +#include +#include +#define SMC_DETAIL_LEVEL_V 1 +#define SMC_DETAIL_LEVEL_VV 2 +#define SMC_OPTION_ABS -1 +#define SMC_OPTION_DETAIL_ABS -2 +#define SMC_TYPE_STR_MAX 5 + + +#define NEXT_ARG() do { argv++; argc--; } while(0) +#define NEXT_ARG_OK() (argc - 1 > 0) +#define PREV_ARG() do { argv--; argc++; } while(0) + +void print_unsup_msg(void); +void print_type_error(void); +char* trim_space(char *str); +int get_abbreviated(uint64_t num, int max_digs, char *res); +int contains(const char *prfx, const char *str); + +static inline int is_str_empty(char *str) +{ + if (str && str[0] == '\0') + return 1; + else + return 0; +} + +#endif /* UTIL_H_ */ -- Gitee From ec65cd8f0d3fd70d27ffe4a879da23e10650f799 Mon Sep 17 00:00:00 2001 From: 13906515865 Date: Thu, 24 Jul 2025 19:41:38 +0800 Subject: [PATCH 5/7] edited --- .../oeaware/.oe_test_oeAware_73.sh.swp | Bin 12288 -> 0 bytes .../feature-test/oeaware/UnixBench/.cproject | 245 - .../feature-test/oeaware/UnixBench/.project | 82 - .../feature-test/oeaware/UnixBench/Makefile | 253 - .../feature-test/oeaware/UnixBench/README | 418 - testcases/feature-test/oeaware/UnixBench/Run | 1836 --- .../feature-test/oeaware/UnixBench/USAGE | 394 - .../oeaware/UnixBench/WRITING_TESTS | 133 - .../oeaware/UnixBench/pgms/arithoh | Bin 72872 -> 0 bytes .../oeaware/UnixBench/pgms/context1 | Bin 73200 -> 0 bytes .../feature-test/oeaware/UnixBench/pgms/dhry2 | Bin 73808 -> 0 bytes .../oeaware/UnixBench/pgms/dhry2reg | Bin 73816 -> 0 bytes .../oeaware/UnixBench/pgms/double | Bin 72872 -> 0 bytes .../feature-test/oeaware/UnixBench/pgms/execl | Bin 74784 -> 0 bytes .../feature-test/oeaware/UnixBench/pgms/float | Bin 72872 -> 0 bytes .../oeaware/UnixBench/pgms/fstime | Bin 74064 -> 0 bytes .../oeaware/UnixBench/pgms/gfx-x11 | 476 - .../feature-test/oeaware/UnixBench/pgms/hanoi | Bin 72888 -> 0 bytes .../oeaware/UnixBench/pgms/index.base | 46 - .../feature-test/oeaware/UnixBench/pgms/int | Bin 72872 -> 0 bytes .../feature-test/oeaware/UnixBench/pgms/long | Bin 72872 -> 0 bytes .../oeaware/UnixBench/pgms/looper | Bin 73120 -> 0 bytes .../oeaware/UnixBench/pgms/multi.sh | 23 - .../feature-test/oeaware/UnixBench/pgms/pipe | Bin 73008 -> 0 bytes .../oeaware/UnixBench/pgms/register | Bin 72872 -> 0 bytes .../feature-test/oeaware/UnixBench/pgms/short | Bin 72872 -> 0 bytes .../feature-test/oeaware/UnixBench/pgms/spawn | Bin 72952 -> 0 bytes .../oeaware/UnixBench/pgms/syscall | Bin 73256 -> 0 bytes .../oeaware/UnixBench/pgms/tst.sh | 20 - .../oeaware/UnixBench/pgms/unixbench.logo | 14 - .../oeaware/UnixBench/pgms/whetstone-double | Bin 73368 -> 0 bytes .../localhost.localdomain-2025-07-24-01 | 8 - .../localhost.localdomain-2025-07-24-01.html | 51 - .../oeaware/UnixBench/src/arith.c | 110 - .../feature-test/oeaware/UnixBench/src/big.c | 597 - .../oeaware/UnixBench/src/context1.c | 111 - .../feature-test/oeaware/UnixBench/src/dhry.h | 435 - .../oeaware/UnixBench/src/dhry_1.c | 431 - .../oeaware/UnixBench/src/dhry_2.c | 209 - .../oeaware/UnixBench/src/dummy.c | 319 - .../oeaware/UnixBench/src/execl.c | 97 - .../oeaware/UnixBench/src/fstime.c | 469 - .../oeaware/UnixBench/src/hanoi.c | 77 - .../oeaware/UnixBench/src/looper.c | 105 - .../feature-test/oeaware/UnixBench/src/pipe.c | 68 - .../oeaware/UnixBench/src/spawn.c | 80 - .../oeaware/UnixBench/src/syscall.c | 109 - .../oeaware/UnixBench/src/time-polling.c | 573 - .../oeaware/UnixBench/src/timeit.c | 41 - .../oeaware/UnixBench/src/ubgears.c | 650 - .../oeaware/UnixBench/src/whets.c | 1289 -- .../oeaware/UnixBench/testdir/cctest.c | 156 - .../oeaware/UnixBench/testdir/dc.dat | 8 - .../oeaware/UnixBench/testdir/large.txt | 10000 ---------------- .../oeaware/UnixBench/testdir/sort.src | 362 - .../oeaware/UnixBench/tmp/kill_run | 1 - testcases/feature-test/oeaware/server.crt | 19 - testcases/feature-test/oeaware/server.csr | 16 - testcases/feature-test/oeaware/server.key | 27 - .../oeaware/smc-tools-main/.gitignore | 5 - .../oeaware/smc-tools-main/CONTRIBUTING.md | 62 - .../oeaware/smc-tools-main/LICENSE | 222 - .../oeaware/smc-tools-main/Makefile | 212 - .../oeaware/smc-tools-main/README.md | 217 - .../oeaware/smc-tools-main/af_smc.7 | 147 - .../feature-test/oeaware/smc-tools-main/dev.c | 545 - .../feature-test/oeaware/smc-tools-main/dev.h | 25 - .../oeaware/smc-tools-main/info.c | 199 - .../oeaware/smc-tools-main/info.h | 21 - .../oeaware/smc-tools-main/libnetlink.c | 311 - .../oeaware/smc-tools-main/libnetlink.h | 69 - .../oeaware/smc-tools-main/linkgroup.c | 636 - .../oeaware/smc-tools-main/linkgroup.h | 22 - .../oeaware/smc-tools-main/seid.c | 227 - .../oeaware/smc-tools-main/seid.h | 21 - .../oeaware/smc-tools-main/smc-device.8 | 162 - .../oeaware/smc-tools-main/smc-linkgroup.8 | 216 - .../oeaware/smc-tools-main/smc-preload.c | 153 - .../smc-tools-main/smc-tools.autocomplete | 140 - .../feature-test/oeaware/smc-tools-main/smc.8 | 110 - .../feature-test/oeaware/smc-tools-main/smc.c | 157 - .../oeaware/smc-tools-main/smc_chk | 572 - .../oeaware/smc-tools-main/smc_chk.8 | 115 - .../oeaware/smc-tools-main/smc_dbg | 113 - .../oeaware/smc-tools-main/smc_pnet.8 | 177 - .../oeaware/smc-tools-main/smc_pnet.c | 369 - .../oeaware/smc-tools-main/smc_rnics | 301 - .../oeaware/smc-tools-main/smc_rnics.8 | 123 - .../oeaware/smc-tools-main/smc_run | 85 - .../oeaware/smc-tools-main/smc_run.8 | 112 - .../feature-test/oeaware/smc-tools-main/smcd | Bin 221344 -> 0 bytes .../oeaware/smc-tools-main/smcd-device.8 | 166 - .../oeaware/smc-tools-main/smcd-info.8 | 71 - .../oeaware/smc-tools-main/smcd-linkgroup.8 | 222 - .../oeaware/smc-tools-main/smcd-seid.8 | 59 - .../oeaware/smc-tools-main/smcd-stats.8 | 201 - .../oeaware/smc-tools-main/smcd-ueid.8 | 90 - .../oeaware/smc-tools-main/smcd.8 | 123 - .../feature-test/oeaware/smc-tools-main/smcr | Bin 222608 -> 0 bytes .../oeaware/smc-tools-main/smcr.8 | 124 - .../oeaware/smc-tools-main/smcss.8 | 407 - .../oeaware/smc-tools-main/smcss.c | 423 - .../oeaware/smc-tools-main/smctools_common.h | 545 - .../oeaware/smc-tools-main/stats.c | 1071 -- .../oeaware/smc-tools-main/stats.h | 128 - .../oeaware/smc-tools-main/ueid.c | 266 - .../oeaware/smc-tools-main/ueid.h | 21 - .../oeaware/smc-tools-main/util.c | 145 - .../oeaware/smc-tools-main/util.h | 44 - testcases/feature-test/oeaware/test | 0 110 files changed, 30310 deletions(-) delete mode 100644 testcases/feature-test/oeaware/.oe_test_oeAware_73.sh.swp delete mode 100644 testcases/feature-test/oeaware/UnixBench/.cproject delete mode 100644 testcases/feature-test/oeaware/UnixBench/.project delete mode 100644 testcases/feature-test/oeaware/UnixBench/Makefile delete mode 100644 testcases/feature-test/oeaware/UnixBench/README delete mode 100755 testcases/feature-test/oeaware/UnixBench/Run delete mode 100644 testcases/feature-test/oeaware/UnixBench/USAGE delete mode 100644 testcases/feature-test/oeaware/UnixBench/WRITING_TESTS delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/arithoh delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/context1 delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/dhry2 delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/dhry2reg delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/double delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/execl delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/float delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/fstime delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/hanoi delete mode 100644 testcases/feature-test/oeaware/UnixBench/pgms/index.base delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/int delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/long delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/looper delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/multi.sh delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/pipe delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/register delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/short delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/spawn delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/syscall delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/tst.sh delete mode 100644 testcases/feature-test/oeaware/UnixBench/pgms/unixbench.logo delete mode 100755 testcases/feature-test/oeaware/UnixBench/pgms/whetstone-double delete mode 100644 testcases/feature-test/oeaware/UnixBench/results/localhost.localdomain-2025-07-24-01 delete mode 100644 testcases/feature-test/oeaware/UnixBench/results/localhost.localdomain-2025-07-24-01.html delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/arith.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/big.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/context1.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/dhry.h delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/dhry_1.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/dhry_2.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/dummy.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/execl.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/fstime.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/hanoi.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/looper.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/pipe.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/spawn.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/syscall.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/time-polling.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/timeit.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/ubgears.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/src/whets.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/cctest.c delete mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/dc.dat delete mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/large.txt delete mode 100644 testcases/feature-test/oeaware/UnixBench/testdir/sort.src delete mode 100755 testcases/feature-test/oeaware/UnixBench/tmp/kill_run delete mode 100644 testcases/feature-test/oeaware/server.crt delete mode 100644 testcases/feature-test/oeaware/server.csr delete mode 100644 testcases/feature-test/oeaware/server.key delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/.gitignore delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/LICENSE delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/Makefile delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/README.md delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/af_smc.7 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/dev.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/dev.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/info.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/info.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/libnetlink.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/libnetlink.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/linkgroup.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/linkgroup.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/seid.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/seid.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-device.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-preload.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc.c delete mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_chk delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 delete mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_dbg delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c delete mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_rnics delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 delete mode 100755 testcases/feature-test/oeaware/smc-tools-main/smc_run delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smc_run.8 delete mode 100755 testcases/feature-test/oeaware/smc-tools-main/smcd delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-device.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcd.8 delete mode 100755 testcases/feature-test/oeaware/smc-tools-main/smcr delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcr.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcss.8 delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smcss.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/smctools_common.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/stats.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/stats.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/ueid.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/ueid.h delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/util.c delete mode 100644 testcases/feature-test/oeaware/smc-tools-main/util.h delete mode 100644 testcases/feature-test/oeaware/test diff --git a/testcases/feature-test/oeaware/.oe_test_oeAware_73.sh.swp b/testcases/feature-test/oeaware/.oe_test_oeAware_73.sh.swp deleted file mode 100644 index a3e30fe14bcd47d490f3ece4d55c4f511077f79a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&u<$=6vw9=5CRIQ94c{um#x*C`{3i&Wr+BDo%q*9*96E^v=N`)VB z!~L`v28x_%l^!t`f^Ae z5g-CYfCvx)B0vO)01+SpM1Tko0V41pB)}uayk{Bv4rTxUfBgIZ;fsv@iuxS&8R}!y zF6uJs_ZJv@fchErCF&E@Hfjd-8tPTlGpJwAGWIFzBh)$6_s`=Pm7v~5d8h}^G4>7W zYt&b$FHj@YCDeJ;PiWVVs2@rjzqNK!BLYN#2oM1xKm>>Y5g-D8AYcnn!K=LCF*as^ zt+V-7u(ok?6TG&Jz$nPEuvFy&OpL;75b|D2Zl~Se3hu0|_27#0RvW~w>v90~dYBbZ zsa64dgjYy2S2Z!-jxR0N{P|`RYBl$WCR}uT|7v;j-?Lnc2t&j#8x$oT6b$ZJ1w2@P_%Y;=NfZ9U{F~{>`kbQCWEoR1Y>V{SU6u@8FhKe^0nr% zxg%Q3mFiGihUFWmAHeMD)^=+aC-}iW%#N}=kp?OY9R-4jp1K84=VtH5=~UWHag9twQsXtUi5wpMz##@@6F`cS2* YlK!M~#q$?t{6gpcULyTHj@9&!0L#Vc{{R30 diff --git a/testcases/feature-test/oeaware/UnixBench/.cproject b/testcases/feature-test/oeaware/UnixBench/.cproject deleted file mode 100644 index 90ad35054..000000000 --- a/testcases/feature-test/oeaware/UnixBench/.cproject +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/testcases/feature-test/oeaware/UnixBench/.project b/testcases/feature-test/oeaware/UnixBench/.project deleted file mode 100644 index 7945d2b1d..000000000 --- a/testcases/feature-test/oeaware/UnixBench/.project +++ /dev/null @@ -1,82 +0,0 @@ - - - UnixBench - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/UnixBench/Debug} - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/testcases/feature-test/oeaware/UnixBench/Makefile b/testcases/feature-test/oeaware/UnixBench/Makefile deleted file mode 100644 index 62f36e10b..000000000 --- a/testcases/feature-test/oeaware/UnixBench/Makefile +++ /dev/null @@ -1,253 +0,0 @@ -############################################################################## -# UnixBench v5.1.3 -# Based on The BYTE UNIX Benchmarks - Release 3 -# Module: Makefile SID: 3.9 5/15/91 19:30:15 -# -############################################################################## -# Bug reports, patches, comments, suggestions should be sent to: -# David C Niemi -# -# Original Contacts at Byte Magazine: -# Ben Smith or Tom Yager at BYTE Magazine -# bensmith@bytepb.byte.com tyager@bytepb.byte.com -# -############################################################################## -# Modification Log: 7/28/89 cleaned out workload files -# 4/17/90 added routines for installing from shar mess -# 7/23/90 added compile for dhrystone version 2.1 -# (this is not part of Run file. still use old) -# removed HZ from everything but dhry. -# HZ is read from the environment, if not -# there, you must define it in this file -# 10/30/90 moved new dhrystone into standard set -# new pgms (dhry included) run for a specified -# time rather than specified number of loops -# 4/5/91 cleaned out files not needed for -# release 3 -- added release 3 files -ben -# 10/22/97 added compiler options for strict ANSI C -# checking for gcc and DEC's cc on -# Digital Unix 4.x (kahn@zk3.dec.com) -# 09/26/07 changes for UnixBench 5.0 -# 09/30/07 adding ubgears, GRAPHIC_TESTS switch -# 10/14/07 adding large.txt -# 01/13/11 added support for parallel compilation -############################################################################## - -############################################################################## -# CONFIGURATION -############################################################################## - -SHELL = /bin/sh - -# GRAPHICS TESTS: Uncomment the definition of "GRAPHIC_TESTS" to enable -# the building of the graphics benchmarks. This will require the -# X11 libraries on your system. -# -# Comment the line out to disable these tests. -# GRAPHIC_TESTS = defined - -# Set "GL_LIBS" to the libraries needed to link a GL program. -GL_LIBS = -lGL -lXext -lX11 - - -# COMPILER CONFIGURATION: Set "CC" to the name of the compiler to use -# to build the binary benchmarks. You should also set "$cCompiler" in the -# Run script to the name of the compiler you want to test. -CC=gcc - -# OPTIMISATION SETTINGS: - -## Very generic -#OPTON = -O - -## For Linux 486/Pentium, GCC 2.7.x and 2.8.x -#OPTON = -O2 -fomit-frame-pointer -fforce-addr -fforce-mem -ffast-math \ -# -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 - -## For Linux, GCC previous to 2.7.0 -#OPTON = -O2 -fomit-frame-pointer -fforce-addr -fforce-mem -ffast-math -m486 - -#OPTON = -O2 -fomit-frame-pointer -fforce-addr -fforce-mem -ffast-math \ -# -m386 -malign-loops=1 -malign-jumps=1 -malign-functions=1 - -## For Solaris 2, or general-purpose GCC 2.7.x -OPTON = -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall - -## For Digital Unix v4.x, with DEC cc v5.x -#OPTON = -O4 -#CFLAGS = -DTIME -std1 -verbose -w0 - -## generic gcc CFLAGS. -DTIME must be included. -CFLAGS = -DTIME -Wall -pedantic -ansi - - -############################################################################## -# END CONFIGURATION -############################################################################## - - -# local directories -PROGDIR = ./pgms -SRCDIR = ./src -TESTDIR = ./testdir -RESULTDIR = ./results -TMPDIR = ./tmp -# other directories -INCLDIR = /usr/include -LIBDIR = /lib -SCRIPTS = unixbench.logo multi.sh tst.sh index.base -SOURCES = arith.c big.c context1.c \ - dummy.c execl.c \ - fstime.c hanoi.c \ - pipe.c spawn.c \ - syscall.c looper.c timeit.c time-polling.c \ - dhry_1.c dhry_2.c dhry.h whets.c ubgears.c -TESTS = sort.src cctest.c dc.dat large.txt - -ifdef GRAPHIC_TESTS -GRAPHIC_BINS = $(PROGDIR)/ubgears -else -GRAPHIC_BINS = -endif - -# Program binaries. -BINS = $(PROGDIR)/arithoh $(PROGDIR)/register $(PROGDIR)/short \ - $(PROGDIR)/int $(PROGDIR)/long $(PROGDIR)/float $(PROGDIR)/double \ - $(PROGDIR)/hanoi $(PROGDIR)/syscall $(PROGDIR)/context1 \ - $(PROGDIR)/pipe $(PROGDIR)/spawn $(PROGDIR)/execl \ - $(PROGDIR)/dhry2 $(PROGDIR)/dhry2reg $(PROGDIR)/looper \ - $(PROGDIR)/fstime $(PROGDIR)/whetstone-double $(GRAPHIC_BINS) -## These compile only on some platforms... -# $(PROGDIR)/poll $(PROGDIR)/poll2 $(PROGDIR)/select - -# Required non-binary files. -REQD = $(BINS) $(PROGDIR)/unixbench.logo \ - $(PROGDIR)/multi.sh $(PROGDIR)/tst.sh $(PROGDIR)/index.base \ - $(PROGDIR)/gfx-x11 \ - $(TESTDIR)/sort.src $(TESTDIR)/cctest.c $(TESTDIR)/dc.dat \ - $(TESTDIR)/large.txt - -# ######################### the big ALL ############################ -all: distr programs -## Ick!!! What is this about??? How about let's not chmod everything bogusly. -# @chmod 744 * $(SRCDIR)/* $(PROGDIR)/* $(TESTDIR)/* $(DOCDIR)/* - -# ####################### a check for Run ###################### -check: $(REQD) - make all -# ############################################################## -# distribute the files out to subdirectories if they are in this one -distr: - @echo "Checking distribution of files" -# scripts - @if test ! -d $(PROGDIR) \ - ; then \ - mkdir $(PROGDIR) \ - ; mv $(SCRIPTS) $(PROGDIR) \ - ; else \ - echo "$(PROGDIR) exists" \ - ; fi -# C sources - @if test ! -d $(SRCDIR) \ - ; then \ - mkdir $(SRCDIR) \ - ; mv $(SOURCES) $(SRCDIR) \ - ; else \ - echo "$(SRCDIR) exists" \ - ; fi -# test data - @if test ! -d $(TESTDIR) \ - ; then \ - mkdir $(TESTDIR) \ - ; mv $(TESTS) $(TESTDIR) \ - ; else \ - echo "$(TESTDIR) exists" \ - ; fi -# temporary work directory - @if test ! -d $(TMPDIR) \ - ; then \ - mkdir $(TMPDIR) \ - ; else \ - echo "$(TMPDIR) exists" \ - ; fi -# directory for results - @if test ! -d $(RESULTDIR) \ - ; then \ - mkdir $(RESULTDIR) \ - ; else \ - echo "$(RESULTDIR) exists" \ - ; fi - -programs: $(BINS) - -# Individual programs -$(PROGDIR)/arithoh: $(SRCDIR)/arith.c - $(CC) -o $(PROGDIR)/arithoh ${CFLAGS} ${OPTON} -Darithoh $(SRCDIR)/arith.c -$(PROGDIR)/register: $(SRCDIR)/arith.c - $(CC) -o $(PROGDIR)/register ${CFLAGS} ${OPTON} -Ddatum='register int' $(SRCDIR)/arith.c -$(PROGDIR)/short: $(SRCDIR)/arith.c - $(CC) -o $(PROGDIR)/short ${CFLAGS} ${OPTON} -Ddatum=short $(SRCDIR)/arith.c -$(PROGDIR)/int: $(SRCDIR)/arith.c - $(CC) -o $(PROGDIR)/int ${CFLAGS} ${OPTON} -Ddatum=int $(SRCDIR)/arith.c -$(PROGDIR)/long: $(SRCDIR)/arith.c - $(CC) -o $(PROGDIR)/long ${CFLAGS} ${OPTON} -Ddatum=long $(SRCDIR)/arith.c -$(PROGDIR)/float: $(SRCDIR)/arith.c - $(CC) -o $(PROGDIR)/float ${CFLAGS} ${OPTON} -Ddatum=float $(SRCDIR)/arith.c -$(PROGDIR)/double: $(SRCDIR)/arith.c - $(CC) -o $(PROGDIR)/double ${CFLAGS} ${OPTON} -Ddatum=double $(SRCDIR)/arith.c -$(PROGDIR)/whetstone-double: $(SRCDIR)/whets.c - $(CC) -o $(PROGDIR)/whetstone-double ${CFLAGS} ${OPTON} -DDP -DUNIX -DUNIXBENCH $(SRCDIR)/whets.c -lm -$(PROGDIR)/hanoi: $(SRCDIR)/hanoi.c - $(CC) -o $(PROGDIR)/hanoi ${CFLAGS} ${OPTON} $(SRCDIR)/hanoi.c - -$(PROGDIR)/poll: $(SRCDIR)/time-polling.c - $(CC) -DHAS_POLL -DUNIXBENCH -o $(PROGDIR)/poll ${CFLAGS} ${OPTON} $(SRCDIR)/time-polling.c - -$(PROGDIR)/poll2: $(SRCDIR)/time-polling.c - $(CC) -DHAS_POLL2 -DUNIXBENCH -o $(PROGDIR)/poll2 ${CFLAGS} ${OPTON} $(SRCDIR)/time-polling.c - -$(PROGDIR)/select: $(SRCDIR)/time-polling.c - $(CC) -DHAS_SELECT -DUNIXBENCH -o $(PROGDIR)/select ${CFLAGS} ${OPTON} $(SRCDIR)/time-polling.c - -$(PROGDIR)/fstime: $(SRCDIR)/fstime.c - $(CC) -o $(PROGDIR)/fstime ${CFLAGS} ${OPTON} $(SRCDIR)/fstime.c - -$(PROGDIR)/syscall: $(SRCDIR)/syscall.c - $(CC) -o $(PROGDIR)/syscall ${CFLAGS} ${OPTON} $(SRCDIR)/syscall.c -$(PROGDIR)/context1: $(SRCDIR)/context1.c - $(CC) -o $(PROGDIR)/context1 ${CFLAGS} ${OPTON} $(SRCDIR)/context1.c -$(PROGDIR)/pipe: $(SRCDIR)/pipe.c - $(CC) -o $(PROGDIR)/pipe ${CFLAGS} ${OPTON} $(SRCDIR)/pipe.c -$(PROGDIR)/spawn: $(SRCDIR)/spawn.c - $(CC) -o $(PROGDIR)/spawn ${CFLAGS} ${OPTON} $(SRCDIR)/spawn.c -$(PROGDIR)/execl: $(SRCDIR)/execl.c $(SRCDIR)/big.c - $(CC) -o $(PROGDIR)/execl ${CFLAGS} ${OPTON} $(SRCDIR)/execl.c - -$(PROGDIR)/dhry2: $(SRCDIR)/dhry_1.c $(SRCDIR)/dhry_2.c $(SRCDIR)/dhry.h - cd $(SRCDIR); $(CC) -c ${CFLAGS} -DHZ=${HZ} ${OPTON} dhry_1.c - cd $(SRCDIR); $(CC) -c ${CFLAGS} -DHZ=${HZ} ${OPTON} dhry_2.c - $(CC) -o $(PROGDIR)/dhry2 ${CFLAGS} ${OPTON} $(SRCDIR)/dhry_1.o $(SRCDIR)/dhry_2.o - cd $(SRCDIR); rm -f dhry_1.o dhry_2.o -$(PROGDIR)/dhry2reg: $(SRCDIR)/dhry_1.c $(SRCDIR)/dhry_2.c $(SRCDIR)/dhry.h - cd $(SRCDIR); $(CC) -c ${CFLAGS} -DREG=register -DHZ=${HZ} ${OPTON} dhry_1.c -o dhry_1_reg.o - cd $(SRCDIR); $(CC) -c ${CFLAGS} -DREG=register -DHZ=${HZ} ${OPTON} dhry_2.c -o dhry_2_reg.o - $(CC) -o $(PROGDIR)/dhry2reg ${CFLAGS} ${OPTON} $(SRCDIR)/dhry_1_reg.o $(SRCDIR)/dhry_2_reg.o - cd $(SRCDIR); rm -f dhry_1_reg.o dhry_2_reg.o - -$(PROGDIR)/looper: $(SRCDIR)/looper.c - $(CC) -o $(PROGDIR)/looper ${CFLAGS} ${OPTON} $(SRCDIR)/looper.c - -$(PROGDIR)/ubgears: $(SRCDIR)/ubgears.c - $(CC) -o $(PROGDIR)/ubgears ${CFLAGS} ${OPTON} $(SRCDIR)/ubgears.c $(GL_LIBS) - -# Run the benchmarks and create the reports -run: - sh ./Run - -clean: - rm -f $(BINS) core *~ */*~ - -spotless: clean - rm -f $(RESULTDIR)/* $(TMPDIR)/* - -## END ## diff --git a/testcases/feature-test/oeaware/UnixBench/README b/testcases/feature-test/oeaware/UnixBench/README deleted file mode 100644 index 67cad92f5..000000000 --- a/testcases/feature-test/oeaware/UnixBench/README +++ /dev/null @@ -1,418 +0,0 @@ -Version 5.1.3 -- 2011-01-13 - -================================================================ -To use Unixbench: - -1. UnixBench from version 5.1 on has both system and graphics tests. - If you want to use the graphic tests, edit the Makefile and make sure - that the line "GRAPHIC_TESTS = defined" is not commented out; then check - that the "GL_LIBS" definition is OK for your system. Also make sure - that the "x11perf" command is on your search path. - - If you don't want the graphics tests, then comment out the - "GRAPHIC_TESTS = defined" line. Note: comment it out, don't - set it to anything. - -2. Do "make". - -3. Do "Run" to run the system test; "Run graphics" to run the graphics - tests; "Run gindex" to run both. - -You will need perl, as Run is written in perl. - -For more information on using the tests, read "USAGE". - -For information on adding tests into the benchmark, see "WRITING_TESTS". - - -===================== RELEASE NOTES ===================================== - -======================== Jan 13 ========================== - -v5.1.3 - -Fixed issue that would cause a race condition if you attempted to compile in -parallel with more than 3 parallel jobs. - - -Kelly Lucas, Jan 13, 2011 -kdlucas at gmail period com - - -======================== Dec 07 ========================== - -v5.1.2 - -One big fix: if unixbench is installed in a directory whose pathname contains -a space, it should now run (previously it failed). - -To avoid possible clashes, the environment variables unixbench uses are now -prefixed with "UB_". These are all optional, and for most people will be -completely unnecessary, but if you want you can set these: - - UB_BINDIR Directory where the test programs live. - UB_TMPDIR Temp directory, for temp files. - UB_RESULTDIR Directory to put results in. - UB_TESTDIR Directory where the tests are executed. - -And a couple of tiny fixes: -* In pgms/tst.sh, changed "sort -n +1" to "sort -n -k 1" -* In Makefile, made it clearer that GRAPHIC_TESTS should be commented - out (not set to 0) to disable graphics -Thanks to nordi for pointing these out. - - -Ian Smith, December 26, 2007 -johantheghost at yahoo period com - - -======================== Oct 07 ========================== - -v5.1.1 - -It turns out that the setting of LANG is crucial to the results. This -explains why people in different regions were seeing odd results, and also -why runlevel 1 produced odd results -- runlevel 1 doesn't set LANG, and -hence reverts to ASCII, whereas most people use a UTF-8 encoding, which is -much slower in some tests (eg. shell tests). - -So now we manually set LANG to "en_US.utf8", which is configured with the -variable "$language". Don't change this if you want to share your results. -We also report the language settings in use. - -See "The Language Setting" in USAGE for more info. Thanks to nordi for -pointing out the LANG issue. - -I also added the "grep" and "sysexec" tests. These are non-index tests, -and "grep" uses the system's grep, so it's not much use for comparing -different systems. But some folks on the OpenSuSE list have been finding -these useful. They aren't in any of the main test groups; do "Run grep -sysexec" to run them. - -Index Changes -------------- - -The setting of LANG will affect consistency with systems where this is -not the default value. However, it should produce more consistent results -in future. - - -Ian Smith, October 15, 2007 -johantheghost at yahoo period com - - -======================== Oct 07 ========================== - -v5.1 - -The major new feature in this version is the addition of graphical -benchmarks. Since these may not compile on all systems, you can enable/ -disable them with the GRAPHIC_TESTS variable in the Makefile. - -As before, each test is run for 3 or 10 iterations. However, we now discard -the worst 1/3 of the scores before averaging the remainder. The logic is -that a glitch in the system (background process waking up, for example) may -make one or two runs go slow, so let's discard those. Hopefully this will -produce more consistent and repeatable results. Check the log file -for a test run to see the discarded scores. - -Made the tests compile and run on x86-64/Linux (fixed an execl bug passing -int instead of pointer). - -Also fixed some general bugs. - -Thanks to Stefan Esser for help and testing / bug reporting. - -Index Changes -------------- - -The tests are now divided into categories, and each category generates -its own index. This keeps the graphics test results separate from -the system tests. - -The "graphics" test and corresponding index are new. - -The "discard the worst scores" strategy should produce slightly higher -test scores, but at least they should (hopefully!) be more consistent. -The scores should not be higher than the best scores you would have got -with 5.0, so this should not be a huge consistency issue. - -Ian Smith, October 11, 2007 -johantheghost at yahoo period com - - -======================== Sep 07 ========================== - -v5.0 - -All the work I've done on this release is Linux-based, because that's -the only Unix I have access to. I've tried to make it more OS-agnostic -if anything; for example, it no longer has to figure out the format reported -by /usr/bin/time. However, it's possible that portability has been damaged. -If anyone wants to fix this, please feel free to mail me patches. - -In particular, the analysis of the system's CPUs is done via /proc/cpuinfo. -For systems which don't have this, please make appropriate changes in -getCpuInfo() and getSystemInfo(). - -The big change has been to make the tests multi-CPU aware. See the -"Multiple CPUs" section in "USAGE" for details. Other changes: - -* Completely rewrote Run in Perl; drastically simplified the way data is - processed. The confusing system of interlocking shell and awk scripts is - now just one script. Various intermediate files used to store and process - results are now replaced by Perl data structures internal to the script. - -* Removed from the index runs file system read and write tests which were - ignored for the index and wasted about 10 minutes per run (see fstime.c). - The read and write tests can now be selected individually. Made fstime.c - take parameters, so we no longer need to build 3 versions of it. - -* Made the output file names unique; they are built from - hostname-date-sequence. - -* Worked on result reporting, error handling, and logging. See TESTS. - We now generate both text and HTML reports. - -* Removed some obsolete files. - -Index Changes -------------- - -The index is still based on David Niemi's SPARCstation 20-61 (rated at 10.0), -and the intention in the changes I've made has been to keep the tests -unchanged, in order to maintain consistency with old result sets. - -However, the following changes have been made to the index: - -* The Pipe-based Context Switching test (context1) was being dropped - from the index report in v4.1.0 due to a bug; I've put it back in. - -* I've added shell1 to the index, to get a measure of how the shell tests - scale with multiple CPUs (shell8 already exercises all the CPUs, even - in single-copy mode). I made up the baseline score for this by - extrapolation. - -Both of these test can be dropped, if you wish, by editing the "TEST -SPECIFICATIONS" section of Run. - -Ian Smith, September 20, 2007 -johantheghost at yahoo period com - -======================== Aug 97 ========================== - -v4.1.0 - -Double precision Whetstone put in place instead of the old "double" benchmark. - -Removal of some obsolete files. - -"system" suite adds shell8. - -perlbench and poll added as "exhibition" (non-index) benchmarks. - -Incorporates several suggestions by Andre Derrick Balsa - -Code cleanups to reduce compiler warnings by David C Niemi -and Andy Kahn ; Digital Unix options by Andy Kahn. - -======================== Jun 97 ========================== - -v4.0.1 - -Minor change to fstime.c to fix overflow problems on fast machines. Counting -is now done in units of 256 (smallest BUFSIZE) and unsigned longs are used, -giving another 23 dB or so of headroom ;^) Results should be virtually -identical aside from very small rounding errors. - -======================== Dec 95 ========================== - -v4.0 - -Byte no longer seems to have anything to do with this benchmark, and I was -unable to reach any of the original authors; so I have taken it upon myself -to clean it up. - -This is version 4. Major assumptions made in these benchmarks have changed -since they were written, but they are nonetheless popular (particularly for -measuring hardware for Linux). Some changes made: - -- The biggest change is to put a lot more operating system-oriented - tests into the index. I experimented for a while with a decibel-like - logarithmic scale, but finally settled on using a geometric mean for - the final index (the individual scores are a normalized, and their - logs are averaged; the resulting value is exponentiated). - - "George", certain SPARCstation 20-61 with 128 MB RAM, a SPARC Storage - Array, and Solaris 2.3 is my new baseline; it is rated at 10.0 in each - of the index scores for a final score of 10.0. - - Overall I find the geometric averaging is a big improvement for - avoiding the skew that was once possible (e.g. a Pentium-75 which got - 40 on the buggy version of fstime, such that fstime accounted for over - half of its total score and hence wildly skewed its average). - - I also expect that the new numbers look different enough from the old - ones that no one is too likely to casually mistake them for each other. - - I am finding new SPARCs running Solaris 2.4 getting about 15-20, and - my 486 DX2-66 Compaq running Linux 1.3.45 got a 9.1. It got - understandably poor scores on CPU and FPU benchmarks (a horrible - 1.8 on "double" and 1.3 on "fsdisk"); but made up for it by averaging - over 20 on the OS-oriented benchmarks. The Pentium-75 running - Linux gets about 20 (and it *still* runs Windows 3.1 slowly. Oh well). - -- It is difficult to get a modern compiler to even consider making - dhry2 without registers, short of turning off *all* optimizations. - This is also not a terribly meaningful test, even if it were possible, - as noone compiles without registers nowadays. Replaced this benchmark - with dhry2reg in the index, and dropped it out of usage in general as - it is so hard to make a legitimate one. - -- fstime: this had some bugs when compiled on modern systems which return - the number of bytes read/written for read(2)/write(2) calls. The code - assumed that a negative return code was given for EOF, but most modern - systems return 0 (certainly on SunOS 4, Solaris2, and Linux, which is - what counts for me). The old code yielded wildly inflated read scores, - would eat up tens of MB of disk space on fast systems, and yielded - roughly 50% lower than normal copy scores than it should have. - - Also, it counted partial blocks *fully*; made it count the proportional - part of the block which was actually finished. - - Made bigger and smaller variants of fstime which are designed to beat - up the disk I/O and the buffer cache, respectively. Adjusted the - sleeps so that they are short for short benchmarks. - -- Instead of 1,2,4, and 8-shell benchmarks, went to 1, 8, and 16 to - give a broader range of information (and to run 1 fewer test). - The only real problem with this is that not many iterations get - done with 16 at a time on slow systems, so there are some significant - rounding errors; 8 therefore still used for the benchmark. There is - also the problem that the last (uncompleted) loop is counted as a full - loop, so it is impossible to score below 1.0 lpm (which gave my laptop - a break). Probably redesigning Shell to do each loop a bit more - quickly (but with less intensity) would be a good idea. - - This benchmark appears to be very heavily influenced by the speed - of the loader, by which shell is being used as /bin/sh, and by how - well-compiled some of the common shell utilities like grep, sed, and - sort are. With a consistent tool set it is also a good indicator of - the bandwidth between main memory and the CPU (e.g. Pentia score about - twice as high as 486es due to their 64-bit bus). Small, sometimes - broken shells like "ash-linux" do particularly well here, while big, - robust shells like bash do not. - -- "dc" is a somewhat iffy benchmark, because there are two versions of - it floating around, one being small, very fast, and buggy, and one - being more correct but slow. It was never in the index anyway. - -- Execl is a somewhat troubling benchmark in that it yields much higher - scores if compiled statically. I frown on this practice because it - distorts the scores away from reflecting how programs are really used - (i.e. dynamically linked). - -- Arithoh is really more an indicator of the compiler quality than of - the computer itself. For example, GCC 2.7.x with -O2 and a few extra - options optimizes much of it away, resulting in about a 1200% boost - to the score. Clearly not a good one for the index. - -I am still a bit unhappy with the variance in some of the benchmarks, most -notably the fstime suite; and with how long it takes to run. But I think -it gets significantly more reliable results than the older version in less -time. - -If anyone has ideas on how to make these benchmarks faster, lower-variance, -or more meaningful; or has nice, new, portable benchmarks to add, don't -hesitate to e-mail me. - -David C Niemi 7 Dec 1995 - -======================== May 91 ========================== -This is version 3. This set of programs should be able to determine if -your system is BSD or SysV. (It uses the output format of time (1) -to see. If you have any problems, contact me (by email, -preferably): ben@bytepb.byte.com - ---- - -The document doc/bench.doc describes the basic flow of the -benchmark system. The document doc/bench3.doc describes the major -changes in design of this version. As a user of the benchmarks, -you should understand some of the methods that have been -implemented to generate loop counts: - -Tests that are compiled C code: - The function wake_me(second, func) is included (from the file -timeit.c). This function uses signal and alarm to set a countdown -for the time request by the benchmark administration script -(Run). As soon as the clock is started, the test is run with a -counter keeping track of the number of loops that the test makes. -When alarm sends its signal, the loop counter value is sent to stderr -and the program terminates. Since the time resolution, signal -trapping and other factors don't insure that the test is for the -precise time that was requested, the test program is also run -from the time (1) command. The real time value returned from time -(1) is what is used in calculating the number of loops per second -(or minute, depending on the test). As is obvious, there is some -overhead time that is not taken into account, therefore the -number of loops per second is not absolute. The overhead of the -test starting and stopping and the signal and alarm calls is -common to the overhead of real applications. If a program loads -quickly, the number of loops per second increases; a phenomenon -that favors systems that can load programs quickly. (Setting the -sticky bit of the test programs is not considered fair play.) - -Test that use existing UNIX programs or shell scripts: - The concept is the same as that of compiled tests, except the -alarm and signal are contained in separate compiled program, -looper (source is looper.c). Looper uses an execvp to invoke the -test with its arguments. Here, the overhead includes the -invocation and execution of looper. - --- - -The index numbers are generated from a baseline file that is in -pgms/index.base. You can put tests that you wish in this file. -All you need to do is take the results/log file from your -baseline machine, edit out the comment and blank lines, and sort -the result (vi/ex command: 1,$!sort). The sort in necessary -because the process of generating the index report uses join (1). -You can regenerate the reports by running "make report." - --- - -========================= Jan 90 ============================= -Tom Yager has joined the effort here at BYTE; he is responsible -for many refinements in the UNIX benchmarks. - -The memory access tests have been deleted from the benchmarks. -The file access tests have been reversed so that the test is run -for a fixed time. The amount of data transfered (written, read, -and copied) is the variable. !WARNING! This test can eat up a -large hunk of disk space. - -The initial line of all shell scripts has been changed from the -SCO and XENIX form (:) to the more standard form "#! /bin/sh". -But different systems handle shell switching differently. Check -the documentation on your system and find out how you are -supposed to do it. Or, simpler yet, just run the benchmarks from -the Bourne shell. (You may need to set SHELL=/bin/sh as well.) - -The options to Run have not been checked in a while. They may no -longer function. Next time, I'll get back on them. There needs to -be another option added (next time) that halts testing between -each test. !WARNING! Some systems have caches that are not getting flushed -before the next test or iteration is run. This can cause -erroneous values. - -========================= Sept 89 ============================= -The database (db) programs now have a tuneable message queue space. -queue space. The default set in the Run script is 1024 bytes. -Other major changes are in the format of the times. We now show -Arithmetic and Geometric mean and standard deviation for User -Time, System Time, and Real Time. Generally, in reporting, we -plan on using the Real Time values with the benchs run with one -active user (the bench user). Comments and arguments are requested. - -contact: BIX bensmith or rick_g diff --git a/testcases/feature-test/oeaware/UnixBench/Run b/testcases/feature-test/oeaware/UnixBench/Run deleted file mode 100755 index d6159355e..000000000 --- a/testcases/feature-test/oeaware/UnixBench/Run +++ /dev/null @@ -1,1836 +0,0 @@ -#!/usr/bin/perl -w - -use strict; - -use POSIX qw(strftime); -use Time::HiRes; -use IO::Handle; - - -############################################################################ -# UnixBench - Release 5.1.3, based on: -# The BYTE UNIX Benchmarks - Release 3 -# Module: Run SID: 3.11 5/15/91 19:30:14 -# Original Byte benchmarks written by: -# Ben Smith, Tom Yager at BYTE Magazine -# ben@bytepb.byte.com tyager@bytepb.byte.com -# BIX: bensmith tyager -# -####################################################################### -# General Purpose Benchmark -# based on the work by Ken McDonell, Computer Science, Monash University -# -# You will need ... -# perl Time::HiRes IO::Handlecat cc chmod comm cp date dc df echo -# kill ls make mkdir rm sed test time touch tty umask who -############################################################################### -# Modification Log: -# $Header: run,v 5.2 88/01/12 06:23:43 kenj Exp $ -# Ken McDonell, Computer Science, Monash University -# August 1, 1983 -# 3/89 - Ben Smith - BYTE: globalized many variables, modernized syntax -# 5/89 - commented and modernized. Removed workload items till they -# have been modernized. Added database server test. -# 11/14/89 - Made modifications to reflect new version of fstime -# and elimination of mem tests. -# 10/22/90 - Many tests have been flipped so that they run for -# a specified length of time and loops are counted. -# 4/3/91 - Cleaned up and debugged several test parameters - Ben -# 4/9/91 - Added structure for creating index and determing flavor of UNIX -# 4/26/91 - Made changes and corrections suggested by Tin Le of Sony -# 5/15/91 - Removed db from distribution -# 4/4/92 Jon Tombs fixed for GNU time to look like -# BSD (don't know the format of sysV!) -# 12/95 - Massive changes for portability, speed, and more meaningful index -# DCN David C Niemi -# 1997.06.20 DCN Fixed overflow condition in fstime.c on fast machines -# 1997.08.24 DCN Modified "system", replaced double with -# whetstone-double in "index" -# 1997.09.10 DCN Added perlbench as an Exhibition benchmark -# 1997.09.23 DCN Added rgooch's select as an Exhibition benchmark -# 1999.07.28 DCN "select" not compiled or run by default, because it -# does not compile on many platforms. PerlBench also -# not run by default. -# 2007.09.26 IS Huge rewrite -- see release notes in README. -# 2007.10.12 IS Added graphics tests, categories feature. -# 2007.10.14 IS Set and report LANG. Added "grep" and "sysexec". -# 2007.12.22 IS Tiny fixes; see README. -# 2011.01.13 KDL Fix for parallel compilation. - - -############################################################################ -# CONFIGURATION -############################################################################ - -# Version number of the script. -my $version = "5.1.3"; - -# The setting of LANG makes a huge difference to some of the scores, -# particularly depending on whether UTF-8 is used. So we always set -# it to the same value, which is configured here. -# -# If you want your results to be meaningful when compared to other peoples' -# results, you should not change this. Change it if you want to measure the -# effect of different languages. -my $language = "en_US.utf8"; - -# The number of iterations per test. -my $longIterCount = 10; -my $shortIterCount = 3; - -# C compiler to use in compilation tests. -my $cCompiler = 'gcc'; - -# Establish full paths to directories. These need to be full pathnames -# (or do they, any more?). They can be set in env. -# variables whose names are the first parameter to getDir() below. -my $BASEDIR = `pwd`; -chomp($BASEDIR); - -# Directory where the test programs live. -my $BINDIR = getDir('UB_BINDIR', $BASEDIR . "/pgms"); - -# Temp directory, for temp files. -my $TMPDIR = getDir('UB_TMPDIR', $BASEDIR . "/tmp"); - -# Directory to put results in. -my $RESULTDIR = getDir('UB_RESULTDIR', $BASEDIR . "/results"); - -# Directory where the tests are executed. -my $TESTDIR = getDir('UB_TESTDIR', $BASEDIR . "/testdir"); - - -############################################################################ -# TEST SPECIFICATIONS -############################################################################ - -# Configure the categories to which tests can belong. -my $testCats = { - 'system' => { 'name' => "System Benchmarks", 'maxCopies' => 16 }, - '2d' => { 'name' => "2D Graphics Benchmarks", 'maxCopies' => 1 }, - '3d' => { 'name' => "3D Graphics Benchmarks", 'maxCopies' => 1 }, - 'misc' => { 'name' => "Non-Index Benchmarks", 'maxCopies' => 16 }, -}; - - -my $arithmetic = [ - "arithoh", "short", "int", "long", "float", "double", "whetstone-double" -]; - -my $fs = [ - "fstime-w", "fstime-r", "fstime", - "fsbuffer-w", "fsbuffer-r", "fsbuffer", - "fsdisk-w", "fsdisk-r", "fsdisk" -]; - -my $oldsystem = [ - "execl", "fstime", "fsbuffer", "fsdisk", "pipe", "context1", "spawn", - "syscall" -]; - -my $system = [ - @$oldsystem, "shell1", "shell8", "shell16" -]; - -my $index = [ - "dhry2reg", "whetstone-double", @$oldsystem, "shell1", "shell8" -]; - -my $graphics = [ - "2d-rects", "2d-ellipse", "2d-aashapes", "2d-text", "2d-blit", - "2d-window", "ubgears" -]; - - -# List of all supported test names. -my $testList = { - # Individual tests. - "dhry2reg" => undef, - "whetstone-double" => undef, - "syscall" => undef, - "pipe" => undef, - "context1" => undef, - "spawn" => undef, - "execl" => undef, - "fstime-w" => undef, - "fstime-r" => undef, - "fstime" => undef, - "fsbuffer-w" => undef, - "fsbuffer-r" => undef, - "fsbuffer" => undef, - "fsdisk-w" => undef, - "fsdisk-r" => undef, - "fsdisk" => undef, - "shell1" => undef, - "shell8" => undef, - "shell16" => undef, - "short" => undef, - "int" => undef, - "long" => undef, - "float" => undef, - "double" => undef, - "arithoh" => undef, - "C" => undef, - "dc" => undef, - "hanoi" => undef, - "grep" => undef, - "sysexec" => undef, - - "2d-rects" => undef, - "2d-lines" => undef, - "2d-circle" => undef, - "2d-ellipse" => undef, - "2d-shapes" => undef, - "2d-aashapes" => undef, - "2d-polys" => undef, - "2d-text" => undef, - "2d-blit" => undef, - "2d-window" => undef, - - "ubgears" => undef, - - # Named combos and shorthands. - "arithmetic" => $arithmetic, - "dhry" => [ "dhry2reg" ], - "dhrystone" => [ "dhry2reg" ], - "whets" => [ "whetstone-double" ], - "whetstone" => [ "whetstone-double" ], - "load" => [ "shell" ], - "misc" => [ "C", "dc", "hanoi" ], - "speed" => [ @$arithmetic, @$system ], - "oldsystem" => $oldsystem, - "system" => $system, - "fs" => $fs, - "shell" => [ "shell1", "shell8", "shell16" ], - "graphics" => $graphics, - - # The tests which constitute the official index. - "index" => $index, - - # The tests which constitute the official index plus the graphics - # index. - "gindex" => [ @$index, @$graphics ], -}; - - -# Default parameters for benchmarks. Note that if "prog" is used, -# it must contain just the program name, as it will be quoted (this -# is necessary if BINDIR contains spaces). Put any options in "options". -my $baseParams = { - "prog" => undef, - "options" => "", - "repeat" => 'short', - "stdout" => 1, # Non-0 to keep stdout. - "stdin" => "", - "logmsg" => "", -}; - - -# Individual parameters for all benchmarks. -my $testParams = { - - ########################## - ## System Benchmarks ## - ########################## - - "dhry2reg" => { - "logmsg" => "Dhrystone 2 using register variables", - "cat" => 'system', - "options" => "10", - "repeat" => 'long', - }, - "whetstone-double" => { - "logmsg" => "Double-Precision Whetstone", - "cat" => 'system', - "repeat" => 'long', - }, - "syscall" => { - "logmsg" => "System Call Overhead", - "cat" => 'system', - "repeat" => 'long', - "options" => "10", - }, - "context1" => { - "logmsg" => "Pipe-based Context Switching", - "cat" => 'system', - "repeat" => 'long', - "options" => "10", - }, - "pipe" => { - "logmsg" => "Pipe Throughput", - "cat" => 'system', - "repeat" => 'long', - "options" => "10", - }, - "spawn" => { - "logmsg" => "Process Creation", - "cat" => 'system', - "options" => "30", - }, - "execl" => { - "logmsg" => "Execl Throughput", - "cat" => 'system', - "options" => "30", - }, - "fstime-w" => { - "logmsg" => "File Write 1024 bufsize 2000 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-w -t 30 -d \"${TMPDIR}\" -b 1024 -m 2000", - }, - "fstime-r" => { - "logmsg" => "File Read 1024 bufsize 2000 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-r -t 30 -d \"${TMPDIR}\" -b 1024 -m 2000", - }, - "fstime" => { - "logmsg" => "File Copy 1024 bufsize 2000 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-c -t 30 -d \"${TMPDIR}\" -b 1024 -m 2000", - }, - "fsbuffer-w" => { - "logmsg" => "File Write 256 bufsize 500 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-w -t 30 -d \"${TMPDIR}\" -b 256 -m 500", - }, - "fsbuffer-r" => { - "logmsg" => "File Read 256 bufsize 500 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-r -t 30 -d \"${TMPDIR}\" -b 256 -m 500", - }, - "fsbuffer" => { - "logmsg" => "File Copy 256 bufsize 500 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-c -t 30 -d \"${TMPDIR}\" -b 256 -m 500", - }, - "fsdisk-w" => { - "logmsg" => "File Write 4096 bufsize 8000 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-w -t 30 -d \"${TMPDIR}\" -b 4096 -m 8000", - }, - "fsdisk-r" => { - "logmsg" => "File Read 4096 bufsize 8000 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-r -t 30 -d \"${TMPDIR}\" -b 4096 -m 8000", - }, - "fsdisk" => { - "logmsg" => "File Copy 4096 bufsize 8000 maxblocks", - "cat" => 'system', - "prog" => "${BINDIR}/fstime", - "options" => "-c -t 30 -d \"${TMPDIR}\" -b 4096 -m 8000", - }, - "shell1" => { - "logmsg" => "Shell Scripts (1 concurrent)", - "cat" => 'system', - "prog" => "${BINDIR}/looper", - "options" => "60 \"${BINDIR}/multi.sh\" 1", - }, - "shell8" => { - "logmsg" => "Shell Scripts (8 concurrent)", - "cat" => 'system', - "prog" => "${BINDIR}/looper", - "options" => "60 \"${BINDIR}/multi.sh\" 8", - }, - "shell16" => { - "logmsg" => "Shell Scripts (16 concurrent)", - "cat" => 'system', - "prog" => "${BINDIR}/looper", - "options" => "60 \"${BINDIR}/multi.sh\" 16", - }, - - ########################## - ## Graphics Benchmarks ## - ########################## - - "2d-rects" => { - "logmsg" => "2D graphics: rectangles", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "rects 3 2", - }, - - "2d-lines" => { - "logmsg" => "2D graphics: lines", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "lines 3 2", - }, - - "2d-circle" => { - "logmsg" => "2D graphics: circles", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "circle 3 2", - }, - - "2d-ellipse" => { - "logmsg" => "2D graphics: ellipses", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "ellipse 3 2", - }, - - "2d-shapes" => { - "logmsg" => "2D graphics: polygons", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "shapes 3 2", - }, - - "2d-aashapes" => { - "logmsg" => "2D graphics: aa polygons", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "aashapes 3 2", - }, - - "2d-polys" => { - "logmsg" => "2D graphics: complex polygons", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "polys 3 2", - }, - - "2d-text" => { - "logmsg" => "2D graphics: text", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "text 3 2", - }, - - "2d-blit" => { - "logmsg" => "2D graphics: images and blits", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "blit 3 2", - }, - - "2d-window" => { - "logmsg" => "2D graphics: windows", - "cat" => '2d', - "prog" => "${BINDIR}/gfx-x11", - "options" => "window 3 2", - }, - - "ubgears" => { - "logmsg" => "3D graphics: gears", - "cat" => '3d', - "options" => "-time 20 -v", - }, - - - ########################## - ## Non-Index Benchmarks ## - ########################## - - "C" => { - "logmsg" => "C Compiler Throughput ($cCompiler)", - "cat" => 'misc', - "prog" => "${BINDIR}/looper", - "options" => "60 $cCompiler cctest.c", - }, - "arithoh" => { - "logmsg" => "Arithoh", - "cat" => 'misc', - "options" => "10", - }, - "short" => { - "logmsg" => "Arithmetic Test (short)", - "cat" => 'misc', - "options" => "10", - }, - "int" => { - "logmsg" => "Arithmetic Test (int)", - "cat" => 'misc', - "options" => "10", - }, - "long" => { - "logmsg" => "Arithmetic Test (long)", - "cat" => 'misc', - "options" => "10", - }, - "float" => { - "logmsg" => "Arithmetic Test (float)", - "cat" => 'misc', - "options" => "10", - }, - "double" => { - "logmsg" => "Arithmetic Test (double)", - "cat" => 'misc', - "options" => "10", - }, - "dc" => { - "logmsg" => "Dc: sqrt(2) to 99 decimal places", - "cat" => 'misc', - "prog" => "${BINDIR}/looper", - "options" => "30 dc", - "stdin" => "dc.dat", - }, - "hanoi" => { - "logmsg" => "Recursion Test -- Tower of Hanoi", - "cat" => 'misc', - "options" => "20", - }, - "grep" => { - "logmsg" => "Grep a large file (system's grep)", - "cat" => 'misc', - "prog" => "${BINDIR}/looper", - "options" => "30 grep -c gimp large.txt", - }, - "sysexec" => { - "logmsg" => "Exec System Call Overhead", - "cat" => 'misc', - "repeat" => 'long', - "prog" => "${BINDIR}/syscall", - "options" => "10 exec", - }, -}; - - -# CPU flags of interest. -my $x86CpuFlags = { - 'pae' => "Physical Address Ext", - 'sep' => "SYSENTER/SYSEXIT", - 'syscall' => "SYSCALL/SYSRET", - 'mmx' => "MMX", - 'mmxext' => "AMD MMX", - 'cxmmx' => "Cyrix MMX", - 'xmm' => "Streaming SIMD", - 'xmm2' => "Streaming SIMD-2", - 'xmm3' => "Streaming SIMD-3", - 'ht' => "Hyper-Threading", - 'ia64' => "IA-64 processor", - 'lm' => "x86-64", - 'vmx' => "Intel virtualization", - 'svm' => "AMD virtualization", -}; - - -############################################################################ -# UTILITIES -############################################################################ - -# Exec the given command, and catch its standard output. -# We return an array containing the PID and the filehandle on the -# process' standard output. It's up to the caller to wait for the command -# to terminate. -sub command { - my ( $cmd ) = @_; - - my $pid = open(my $childFd, "-|"); - if (!defined($pid)) { - die("Run: fork() failed (undef)\n"); - } elsif ($pid == 0) { - exec($cmd); - die("Run: exec() failed (returned)\n"); - } - - return ( $pid, $childFd ); -} - - -# Get data from running a system command. Used for things like getting -# the host OS from `uname -o` etc. -# -# Ignores initial blank lines from the command and returns the first -# non-blank line, with white space trimmed off. Returns a blank string -# if there is no output; undef if the command fails. -sub getCmdOutput { - my ( $cmd ) = @_; - - my ( $pid, $fd ) = command($cmd . " 2>/dev/null"); - my $result = ""; - while (<$fd>) { - chomp; - next if /^[ \t]*$/; - - $result = $_; - $result =~ s/^[ \t]+//; - $result =~ s/[ \t]+$//; - last; - } - - # Close the command and wait for it to die. - waitpid($pid, 0); - my $status = $?; - - return $status == 0 ? $result : undef; -} - - -# Get a directory pathname from an environment variable, or the given -# default. Canonicalise and return the value. -sub getDir { - my ( $var, $def ) = @_; - - my $val = $ENV{$var} || $def; - - # Canonicalise the value. - my $wd; - chomp($wd = `pwd`); - chdir($val); - chomp($val = `pwd`); - chdir($wd); - $ENV{$var} = $val; - - $val; -} - - -# Get the name of the file we're going to log to. The name uses the hostname -# and date, plus a sequence number to make it unique. -sub logFile { - my ( $sysInfo ) = @_; - - my $count = 1; - - # Use the date in the base file name. - my $ymd = strftime "%Y-%m-%d", localtime; - - while (1) { - my $log = sprintf "%s/%s-%s-%02d", - ${RESULTDIR}, $sysInfo->{'name'}, $ymd, $count; - return $log if (! -e $log); - ++$count; - } -} - - -# Print a message to the named log file. We use this method rather than -# keeping the FD open because we use shell redirection to send command -# output to the same file. -sub printLog { - my ( $logFile, @args ) = @_; - - open(my $fd, ">>", $logFile) || abortRun("can't append to $logFile"); - printf $fd @args; - close($fd); -} - - -# Display a number of something, auto-selecting the plural form -# if appropriate. We are given the number, the singular, and the -# plural; if the plural is omitted, it defaults to singular + "s". -sub number { - my ( $n, $what, $plural ) = @_; - - $plural = $what . "s" if !defined($plural); - - if (!defined($n)) { - return sprintf "unknown %s", $plural; - } else { - return sprintf "%d %s", $n, $n == 1 ? $what : $plural; - } -} - - -# Merge two sets of test parameters -- defaults and actual parameters. -# Return the merged parameter hash. -sub mergeParams { - my ( $def, $vals ) = @_; - - my $params = { }; - foreach my $k (keys(%$def)) { - $params->{$k} = $def->{$k}; - } - foreach my $k (keys(%$vals)) { - $params->{$k} = $vals->{$k}; - } - - $params; -} - - -############################################################################ -# SYSTEM ANALYSIS -############################################################################ - -# Extract interesting flags from the given processor flags string and -# convert them to descriptive names. -sub processCpuFlags { - my ( $flagStr ) = @_; - - my @names; - foreach my $f (sort split(/\s+/, $flagStr)) { - my $name = $x86CpuFlags->{$f}; - push(@names, $name) if $name; - } - - join(", ", @names); -} - - -# Get information on the CPUs in the system. Returns a reference to an -# array of N entries, one per CPU, where each entry is a hash containing -# these fields: -# describing the model etc. Returns undef if the information can't be got. -sub getCpuInfo { - open(my $fd, "<", "/proc/cpuinfo") || return undef; - - my $cpus = [ ]; - my $cpu = 0; - while (<$fd>) { - chomp; - my ( $field, $val ) = split(/[ \t]*:[ \t]*/); - next if (!$field || !$val); - if ($field eq "processor") { - $cpu = $val; - } elsif ($field eq "model name") { - my $model = $val; - $model =~ s/ +/ /g; - $cpus->[$cpu]{'model'} = $model; - } elsif ($field eq "bogomips") { - $cpus->[$cpu]{'bogo'} = $val; - } elsif ($field eq "flags") { - $cpus->[$cpu]{'flags'} = processCpuFlags($val); - } - } - - close($fd); - - $cpus; -} - - -# Get information on the host system. Returns a reference to a hash -# with the following fields: -# name Host name -# os Host OS name -# osRel Host OS release -# osVer Host OS version -# mach Host machine name (eg. "SparcStation 20", but on -# PC/Linux usually "i686" etc.) -# platform Hardware platform; on Linux, the base CPU type? -# system System name (eg. hostname and Linux distro, like -# "hostname: openSUSE 10.2 (i586)"). -# cpus Value returned by getCpuInfo(), undef if not avail. -# numCpus Number of CPUs if known, else undef. -# load System load message as per "uptime". -# numUsers Number of users and/or open shell sessions. -sub getSystemInfo { - my $info = { }; - - # Get host system data. - $info->{'name'} = getCmdOutput("hostname"); - $info->{'os'} = getCmdOutput("uname -o") || getCmdOutput("uname -s"); - $info->{'osRel'} = getCmdOutput("uname -r"); - $info->{'osVer'} = getCmdOutput("uname -v"); - $info->{'mach'} = getCmdOutput("uname -m"); - $info->{'platform'} = getCmdOutput("uname -i"); - - # Get the system name (SUSE, Red Hat, etc.) if possible. - $info->{'system'} = $info->{'os'}; - if ( -r "/etc/SuSE-release" ) { - $info->{'system'} = getCmdOutput("cat /etc/SuSE-release"); - } elsif ( -r "/etc/release" ) { - $info->{'system'} = getCmdOutput("cat /etc/release"); - } - - # Get the language info. - my $lang = getCmdOutput("printenv LANG"); - my $map = getCmdOutput("locale -k LC_CTYPE | grep charmap"); - $map =~ s/.*=//; - my $coll = getCmdOutput("locale -k LC_COLLATE | grep collate-codeset"); - $coll =~ s/.*=//; - $info->{'language'} = sprintf "%s (charmap=%s, collate=%s)", - $lang, $map, $coll; - - # Get details on the CPUs, if possible. - my $cpus = getCpuInfo(); - if (defined($cpus)) { - $info->{'cpus'} = $cpus; - $info->{'numCpus'} = scalar(@$cpus); - } - - # Get graphics hardware info. - $info->{'graphics'} = getCmdOutput("3dinfo | cut -f1 -d\'(\'"); - - # Get system run state, load and usage info. - $info->{'runlevel'} = getCmdOutput("runlevel | cut -f2 -d\" \""); - $info->{'load'} = getCmdOutput("uptime"); - $info->{'numUsers'} = getCmdOutput("who | wc -l"); - - $info; -} - - -############################################################################ -# ERROR HANDLING -############################################################################ - -# Abort the benchmarking run with an error message. -sub abortRun { - my ( $err ) = @_; - - printf STDERR "\n**********************************************\n"; - printf STDERR "Run: %s; aborting\n", $err; - exit(1); -} - - -############################################################################ -# TEST SETUP -############################################################################ - -# Do checks that everything's ready for testing. -sub preChecks { - # Set the language. - $ENV{'LANG'} = $language; - - # Check that the required files are in the proper places. - system("make check"); - if ($? != 0) { - system("make all"); - if ($? != 0) { - abortRun("\"make all\" failed"); - } - } - - # Create a script to kill this run. - system("echo \"kill -9 $$\" > \"${TMPDIR}/kill_run\""); - chmod(0755, $TMPDIR . "/kill_run"); -} - - -# Parse the command arguments. -sub parseArgs { - my @words = @_; - - # The accumulator for the bench units to be run. - my $tests = [ ]; - my $params = { 'tests' => $tests }; - - # Generate the requested list of bench programs. - my $opt; - my $word; - while ($word = shift(@words)) { - if ($word !~ m/^-/) { # A test name. - if ($word eq "all") { - foreach my $t (keys(%$testList)) { - push(@$tests, $t) if (!defined($testList->{$t})); - } - } elsif (exists($testList->{$word})) { - my $val = $testList->{$word} || [ $word ]; - push(@$tests, @$val); - } else { - die("Run: unknown test \"$word\"\n"); - } - } elsif ($word eq "-q") { - $params->{'verbose'} = 0; - } elsif ($word eq "-v") { - $params->{'verbose'} = 2; - } elsif ($word eq "-i") { - $params->{'iterations'} = shift(@words); - } elsif ($word eq "-c") { - if (!defined($params->{'copies'})) { - $params->{'copies'} = [ ]; - } - push(@{$params->{'copies'}}, shift(@words)); - } else { - die("Run: unknown option $word\n"); - } - } - - $params; -} - - -############################################################################ -# RESULTS INPUT / OUTPUT -############################################################################ - -# Read a set of benchmarking results from the given file. -# Returns results in the form returned by runTests(), but without the -# individual pass results. -sub readResultsFromFile { - my ( $file ) = @_; - - # Attempt to get the baseline data file; if we can't, just return undef. - open(my $fd, "<", $file) || return undef; - - my $results = { }; - while (<$fd>) { - chomp; - - # Dump comments, ignore blank lines. - s/#.*//; - next if /^\s*$/; - - my ( $name, $time, $slab, $sum, $score, $iters ) = split(/\|/); - my $bresult = { }; - $bresult->{'score'} = $score; - $bresult->{'scorelabel'} = $slab; - $bresult->{'time'} = $time; - $bresult->{'iterations'} = $iters; - - $results->{$name} = $bresult; - } - - close($fd); - - $results; -} - - -############################################################################ -# RESULTS PROCESSING -############################################################################ - -# Process a set of results from a single test by averaging the individal -# pass results into a single final value. -# First, though, dump the worst 1/3 of the scores. The logic is that a -# glitch in the system (background process waking up, for example) may -# make one or two runs go slow, so let's discard those. -# -# $bresult is a hashed array representing the results of a single test; -# $bresult->{'passes'} is an array of the output from the individual -# passes. -sub combinePassResults { - my ( $bench, $tdata, $bresult, $logFile ) = @_; - - $bresult->{'cat'} = $tdata->{'cat'}; - - # Computed results. - my $iterations = 0; - my $totalTime = 0; - my $sum = 0; - my $product = 0; - my $label; - - my $pres = $bresult->{'passes'}; - - # We're going to throw away the worst 1/3 of the pass results. - # Figure out how many to keep. - my $npasses = scalar(@$pres); - my $ndump = int($npasses / 3); - - foreach my $presult (sort { $a->{'COUNT0'} <=> $b->{'COUNT0'} } @$pres) { - my $count = $presult->{'COUNT0'}; - my $timebase = $presult->{'COUNT1'}; - $label = $presult->{'COUNT2'}; - my $time = $presult->{'TIME'} || $presult->{'elapsed'}; - - # Skip this result if it's one of the worst ones. - if ($ndump > 0) { - printLog($logFile, "*Dump score: %12.1f\n", $count); - --$ndump; - next; - } - - # Count this result. - ++$iterations; - printLog($logFile, "Count score: %12.1f\n", $count); - - # If $timebase is 0 the figure is a rate; else compute - # counts per $timebase. $time is always seconds. - if ($timebase > 0) { - $sum += $count / ($time / $timebase); - $product += log($count) - log($time / $timebase); - } else { - $sum += $count; - $product += log($count); - } - $totalTime += $time; - } - - # Save the results for the benchmark. - if ($iterations > 0) { - $bresult->{'score'} = exp($product / $iterations); - $bresult->{'scorelabel'} = $label; - $bresult->{'time'} = $totalTime / $iterations; - $bresult->{'iterations'} = $iterations; - } else { - $bresult->{'error'} = "No measured results"; - } -} - - -# Index the given full benchmark results against the baseline results. -# $results is a hashed array of test names to test results. -# -# Adds the following fields to each benchmark result: -# iscore The baseline score for this test -# index The index of this test against the baseline -# Adds the following fields to $results: -# indexed The number of tests for which index values were -# generated -# fullindex Non-0 if all the index tests were indexed -# index The computed overall index for the run -# Note that the index values are computed as -# result / baseline * 10 -# so an index of 523 indicates that a test ran 52.3 times faster than -# the baseline. -sub indexResults { - my ( $results ) = @_; - - # Read in the baseline result data. If we can't get it, just return - # without making indexed results. - my $index = readResultsFromFile($BINDIR . "/index.base"); - if (!defined($index)) { - return; - } - - # Count the number of results we have (indexed or not) in - # each category. - my $numCat = { }; - foreach my $bench (@{$results->{'list'}}) { - my $bresult = $results->{$bench}; - ++$numCat->{$bresult->{'cat'}}; - } - $results->{'numCat'} = $numCat; - - my $numIndex = { }; - my $indexed = { }; - my $sum = { }; - foreach my $bench (sort(keys(%$index))) { - # Get the test data for this benchmark. - my $tdata = $testParams->{$bench}; - if (!defined($tdata)) { - abortRun("unknown benchmark \"$bench\" in $BINDIR/index.base"); - } - - # Get the test category. Count the total tests in this cat. - my $cat = $tdata->{'cat'}; - ++$numIndex->{$cat}; - - # If we don't have a result for this test, skip. - next if (!defined($results->{$bench})); - - # Get the index and actual results. Calcluate the score. - my $iresult = $index->{$bench}; - my $bresult = $results->{$bench}; - my $ratio = $bresult->{'score'} / $iresult->{'score'}; - - # Save the indexed score. - $bresult->{'iscore'} = $iresult->{'score'}; - $bresult->{'index'} = $ratio * 10; - - # Sun the scores, and count this test for this category. - $sum->{$cat} += log($ratio); - ++$indexed->{$cat}; - } - - # Calculate the index scores per category. - $results->{'indexed'} = $indexed; - $results->{'numIndex'} = $numIndex; - foreach my $c (keys(%$indexed)) { - if ($indexed->{$c} > 0) { - $results->{'index'}{$c} = exp($sum->{$c} / $indexed->{$c}) * 10; - } - } -} - - -############################################################################ -# TEST EXECUTION -############################################################################ - -# Exec the given command in a sub-process. -# -# In the child process, we run the command and store its standard output. -# We also time its execution, and catch its exit status. We then write -# the command's output, plus lines containing the execution time and status, -# to a pipe. -# -# In the parent process, we immediately return an array containing the -# child PID and the filehandle to the pipe. This allows the caller to -# kick off multiple commands in parallel, then gather their output. -sub commandBuffered { - my ( $cmd ) = @_; - - # Create a pipe for parent-child communication. - my $childReader; - my $parentWriter; - pipe($childReader, $parentWriter) || abortRun("pipe() failed"); - $parentWriter->autoflush(1); - - # Fork off the child process. - my $pid = fork(); - if (!defined($pid)) { - abortRun("fork() failed (undef)"); - } elsif ($pid == 0) { - # Close the other end of the pipe. - close $childReader; - - # Start the clock and spawn the command. - my $benchStart = Time::HiRes::time(); - my ( $cmdPid, $cmdFd ) = command($cmd); - - # Read and buffer all the command's output. - my $output = [ ]; - while (<$cmdFd>) { - push(@$output, $_); - } - - # Stop the clock and save the time. - my $elTime = Time::HiRes::time() - $benchStart; - push(@$output, sprintf "elapsed|%f\n", $elTime); - - # Wait for the child to die so we can get its status. - # close($cmdFd); Doesn't work??? - waitpid($cmdPid, 0); - my $status = $?; - push(@$output, sprintf "status|%d\n", $status); - - # Now that we've got the time, play back all the output to the pipe. - # The parent can read this at its leisure. - foreach my $line (@$output) { - print $parentWriter $line; - } - - # Terminate this child. - close $parentWriter; - exit(0); - } - - # Close the other end of the pipe. - close $parentWriter; - - return ( $pid, $childReader ); -} - - -# Read the results of a benchmark execution from a child process, given -# its process ID and its filehandle. Create a results hash structure -# containing the fields returned by the child, plus: -# pid The child's process ID -# status The child's exit status -# ERROR Any stderr output from the child that isn't result data -# Note that ay result fields with ultiple values are split; so eg. -# COUNT|x|y|x -# becomes -# COUNT0 = x -# COUNT1 = y -# COUNT2 = z -sub readResults { - my ( $pid, $fd ) = @_; - - my $presult = { 'pid' => $pid }; - - # Read all the result lines from the child. - while (<$fd>) { - chomp; - - my ( $field, @params ) = split(/\|/); - if (scalar(@params) == 0) { # Error message. - $presult->{'ERROR'} .= "\n" if ($presult->{'ERROR'}); - $presult->{'ERROR'} .= $field; - } elsif (scalar(@params) == 1) { # Simple data. - $presult->{$field} = $params[0]; - } else { # Compound data. - # Store the values in separate fields, named "FIELD$i". - for (my $x = 0; $x < scalar(@params); ++$x) { - $presult->{$field . $x} = $params[$x]; - } - } - } - - # If the command had an error, make an appropriate message if we - # don't have one. - if ($presult->{'status'} != 0 && !defined($presult->{'ERROR'})) { - $presult->{'ERROR'} = "command returned status " . $presult->{'status'}; - } - - # Wait for the child to die. - close($fd); - waitpid($pid, 0); - - $presult; -} - - -# Execute a benchmark command. We set off a given number of copies in -# parallel to exercise multiple CPUs. -# -# We return an array of results hashes, one per copy; each one is as -# returned by readResults(). -sub executeBenchmark { - my ( $command, $copies ) = @_; - - # Array of contexts for all the copies we're running. - my $ctxt = [ ]; - - # Kick off all the commands at once. - for (my $i = 0; $i < $copies; ++$i) { - my ( $cmdPid, $cmdFd ) = commandBuffered($command); - $ctxt->[$i] = { - 'pid' => $cmdPid, - 'fd' => $cmdFd, - }; - } - - # Now, we can simply read back the command results in order. Because - # the child processes read and buffer the results and time the commands, - # there's no need to use select() to read the results as they appear. - my $pres = [ ]; - for (my $i = 0; $i < $copies; ++$i) { - my $presult = readResults($ctxt->[$i]{'pid'}, $ctxt->[$i]{'fd'}); - push(@$pres, $presult); - } - - $pres; -} - - -# Run one iteration of a benchmark, as specified by the given -# benchmark parameters. We run multiple parallel copies as -# specified by $copies. -sub runOnePass { - my ( $params, $verbose, $logFile, $copies ) = @_; - - # Get the command to run. - my $command = $params->{'command'}; - if ($verbose > 1) { - printf "\n"; - printf "COMMAND: \"%s\"\n", $command; - printf "COPIES: \"%d\"\n", $copies; - } - - # Remember where we are, and move to the test directory. - my $pwd = `pwd`; - chdir($TESTDIR); - - # Execute N copies of the benchmark in parallel. - my $copyResults = executeBenchmark($command, $copies); - printLog($logFile, "\n"); - - # Move back home. - chdir($pwd); - - # Sum up the scores of the copies. - my $count = 0; - my $time = 0; - my $elap = 0; - foreach my $res (@$copyResults) { - # Log the result data for each copy. - foreach my $k (sort(keys(%$res))) { - printLog($logFile, "# %s: %s\n", $k, $res->{$k}); - } - printLog($logFile, "\n"); - - # If it failed, bomb out. - if (defined($res->{'ERROR'})) { - my $name = $params->{'logmsg'}; - abortRun("\"$name\": " . $res->{'ERROR'}); - } - - # Count up the score. - $count += $res->{'COUNT0'}; - $time += $res->{'TIME'} || $res->{'elapsed'}; - $elap += $res->{'elapsed'}; - } - - # Make up a combined result. - my $passResult = $copyResults->[0]; - $passResult->{'COUNT0'} = $count; - $passResult->{'TIME'} = $time / $copies; - $passResult->{'elapsed'} = $elap / $copies; - - $passResult; -} - - -sub runBenchmark { - my ( $bench, $tparams, $verbose, $logFile, $copies ) = @_; - - # Make up the actual benchmark parameters. - my $params = mergeParams($baseParams, $tparams); - - # Make up the command string based on the parameters. - my $prog = $params->{'prog'} || $BINDIR . "/" . $bench; - my $command = sprintf "\"%s\" %s", $prog, $params->{'options'}; - $command .= " < \"" . $params->{'stdin'} . "\"" if ($params->{'stdin'}); - $command .= " 2>&1"; - $command .= $params->{'stdout'} ? (" >> \"" . $logFile . "\"") : " > /dev/null"; - $params->{'command'} = $command; - - # Set up the benchmark results structure. - my $bresult = { 'name' => $bench, 'msg' => $params->{'logmsg'} }; - - if ($verbose > 0) { - printf "\n%d x %s ", $copies, $params->{'logmsg'}; - } - - printLog($logFile, - "\n########################################################\n"); - printLog($logFile, "%s -- %s\n", - $params->{'logmsg'}, number($copies, "copy", "copies")); - printLog($logFile, "==> %s\n\n", $command); - - # Run the test iterations, as given by the "repeat" parameter. - my $repeats = $shortIterCount; - $repeats = $longIterCount if $params->{'repeat'} eq 'long'; - $repeats = 1 if $params->{'repeat'} eq 'single'; - my $pres = [ ]; - for (my $i = 1; $i <= $repeats; ++$i) { - printLog($logFile, "#### Pass %d\n\n", $i); - - # make an attempt to flush buffers - system("sync; sleep 1; sync; sleep 2"); - # display heartbeat - if ($verbose > 0) { - printf " %d", $i; - } - - # Execute one pass of the benchmark. - my $presult = runOnePass($params, $verbose, $logFile, $copies); - push(@$pres, $presult); - } - $bresult->{'passes'} = $pres; - - # Calculate the averaged results for this benchmark. - combinePassResults($bench, $tparams, $bresult, $logFile); - - # Log the results. - if ($copies == 1) { - printLog($logFile, "\n>>>> Results of 1 copy\n"); - } else { - printLog($logFile, "\n>>>> Sum of %d copies\n", $copies); - } - foreach my $k ( 'score', 'time', 'iterations' ) { - printLog($logFile, ">>>> %s: %s\n", $k, $bresult->{$k}); - } - printLog($logFile, "\n"); - - # Some specific cleanup routines. - if ($bench eq "C") { - unlink(${TESTDIR} . "/cctest.o"); - unlink(${TESTDIR} . "/a.out"); - } - - if ($verbose > 0) { - printf "\n"; - } - - $bresult; -} - - -# Run the named benchmarks. -sub runTests { - my ( $tests, $verbose, $logFile, $copies ) = @_; - - # Run all the requested tests and gather the results. - my $results = { 'start' => time(), 'copies' => $copies }; - foreach my $bench (@$tests) { - # Get the parameters for this benchmark. - my $params = $testParams->{$bench}; - if (!defined($params)) { - abortRun("unknown benchmark \"$bench\""); - } - - # If the benchmark doesn't want to run with this many copies, skip it. - my $cat = $params->{'cat'}; - my $maxCopies = $testCats->{$cat}{'maxCopies'}; - next if ($copies > $maxCopies); - - # Run the benchmark. - my $bresult = runBenchmark($bench, $params, $verbose, $logFile, $copies); - $results->{$bench} = $bresult; - } - $results->{'end'} = time(); - - # Generate a sorted list of benchmarks for which we have results. - my @benches = grep { - ref($results->{$_}) eq "HASH" && defined($results->{$_}{'msg'}) - } keys(%$results); - @benches = sort { - $results->{$a}{'msg'} cmp $results->{$b}{'msg'} - } @benches; - $results->{'list'} = \@benches; - - # Generate index scores for the results relative to the baseline data. - indexResults($results); - - $results; -} - - -############################################################################ -# TEXT REPORTS -############################################################################ - -# Display a banner indicating the configuration of the system under test -# to the given file desc. -sub displaySystem { - my ( $info, $fd ) = @_; - - # Display basic system info. - printf $fd " System: %s: %s\n", $info->{'name'}, $info->{'system'}; - printf $fd " OS: %s -- %s -- %s\n", - $info->{'os'}, $info->{'osRel'}, $info->{'osVer'}; - printf $fd " Machine: %s (%s)\n", $info->{'mach'}, $info->{'platform'}; - printf $fd " Language: %s\n", $info->{'language'}; - - # Get and display details on the CPUs, if possible. - my $cpus = $info->{'cpus'}; - if (!defined($cpus)) { - printf $fd " CPU: no details available\n"; - } else { - for (my $i = 0; $i <= $#$cpus; ++$i) { - printf $fd " CPU %d: %s (%.1f bogomips)\n", - $i, $cpus->[$i]{'model'}, $cpus->[$i]{'bogo'}; - printf $fd " %s\n", $cpus->[$i]{'flags'}; - } - } - - if ($info->{'graphics'}) { - printf $fd " Graphics: %s\n", $info->{'graphics'}; - } - - # Display system load and usage info. - printf $fd " %s; runlevel %s\n\n", $info->{'load'}, $info->{'runlevel'}; -} - - -# Display the test scores from the given set of test results. -sub logResults { - my ( $results, $outFd ) = @_; - - # Display the individual test scores. - foreach my $bench (@{$results->{'list'}}) { - my $bresult = $results->{$bench}; - - printf $outFd "%-40s %12.1f %-5s (%.1f s, %d samples)\n", - $bresult->{'msg'}, - $bresult->{'score'}, - $bresult->{'scorelabel'}, - $bresult->{'time'}, - $bresult->{'iterations'}; - } - - printf $outFd "\n"; -} - - -# Display index scores, if any, for the given run results. -sub logIndexCat { - my ( $results, $cat, $outFd ) = @_; - - my $total = $results->{'numIndex'}{$cat}; - my $indexed = $results->{'indexed'}{$cat}; - my $iscore = $results->{'index'}{$cat}; - my $full = $total == $indexed; - - # If there are no indexed scores, just say so. - if (!defined($indexed) || $indexed == 0) { - printf $outFd "No index results available for %s\n\n", - $testCats->{$cat}{'name'}; - return; - } - - # Display the header, depending on whether we have a full set of index - # scores, or a partial set. - my $head = $testCats->{$cat}{'name'} . - ($full ? " Index Values" : " Partial Index"); - printf $outFd "%-40s %12s %12s %8s\n", - $head, "BASELINE", "RESULT", "INDEX"; - - # Display the individual test scores. - foreach my $bench (@{$results->{'list'}}) { - my $bresult = $results->{$bench}; - next if $bresult->{'cat'} ne $cat; - - if (defined($bresult->{'iscore'}) && defined($bresult->{'index'})) { - printf $outFd "%-40s %12.1f %12.1f %8.1f\n", - $bresult->{'msg'}, $bresult->{'iscore'}, - $bresult->{'score'}, $bresult->{'index'}; - } else { - printf $outFd "%-40s %12s %12.1f %8s\n", - $bresult->{'msg'}, "---", - $bresult->{'score'}, "---"; - } - } - - # Display the overall score. - my $title = $testCats->{$cat}{'name'} . " Index Score"; - if (!$full) { - $title .= " (Partial Only)"; - } - printf $outFd "%-40s %12s %12s %8s\n", "", "", "", "========"; - printf $outFd "%-66s %8.1f\n", $title, $iscore; - - printf $outFd "\n"; -} - - -# Display index scores, if any, for the given run results. -sub logIndex { - my ( $results, $outFd ) = @_; - - my $count = $results->{'indexed'}; - foreach my $cat (keys(%$count)) { - logIndexCat($results, $cat, $outFd); - } -} - - -# Dump the given run results into the given report file. -sub summarizeRun { - my ( $systemInfo, $results, $verbose, $reportFd ) = @_; - - # Display information about this test run. - printf $reportFd "------------------------------------------------------------------------\n"; - printf $reportFd "Benchmark Run: %s %s - %s\n", - strftime("%a %b %d %Y", localtime($results->{'start'})), - strftime("%H:%M:%S", localtime($results->{'start'})), - strftime("%H:%M:%S", localtime($results->{'end'})); - printf $reportFd "%s in system; running %s of tests\n", - number($systemInfo->{'numCpus'}, "CPU"), - number($results->{'copies'}, "parallel copy", "parallel copies"); - printf $reportFd "\n"; - - # Display the run scores. - logResults($results, $reportFd); - - # Display the indexed scores, if any. - logIndex($results, $reportFd); -} - - -############################################################################ -# HTML REPORTS -############################################################################ - -# Dump the given run results into the given report file. -sub runHeaderHtml { - my ( $systemInfo, $reportFd ) = @_; - - # Display information about this test run. - my $title = sprintf "Benchmark of %s / %s on %s", - $systemInfo->{'name'}, $systemInfo->{'system'}, - strftime("%a %b %d %Y", localtime()); - - print $reportFd < - - - - - $title - - - -EOF - - # Display information about this test run. - printf $reportFd "

%s

\n", $title; - printf $reportFd "

BYTE UNIX Benchmarks (Version %s)

\n\n", - $version; -} - - -# Display a banner indicating the configuration of the system under test -# to the given file desc. -sub displaySystemHtml { - my ( $info, $fd ) = @_; - - printf $fd "

Test System Information

\n"; - printf $fd "

\n"; - - # Display basic system info. - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n", - $info->{'name'}, $info->{'system'}; - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n", - $info->{'os'}, $info->{'osRel'}, $info->{'osVer'}; - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n", - $info->{'mach'}, $info->{'platform'}; - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n", $info->{'language'}; - printf $fd "\n"; - - # Get and display details on the CPUs, if possible. - my $cpus = $info->{'cpus'}; - if (!defined($cpus)) { - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n"; - printf $fd "\n"; - } else { - for (my $i = 0; $i <= $#$cpus; ++$i) { - printf $fd "\n"; - if ($i == 0) { - printf $fd " \n", $#$cpus + 1; - } - printf $fd " \n", $i; - printf $fd " \n", $cpus->[$i]{'flags'}; - printf $fd "\n"; - } - } - - # Display graphics hardware info. - if ($info->{'graphics'}) { - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n", $info->{'graphics'}; - printf $fd "\n"; - } - - # Display system runlevel, load and usage info. - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n", - $info->{'load'}, $info->{'runlevel'}; - printf $fd "\n"; - - printf $fd "
System:%s: %s
OS:%s -- %s -- %s
Machine:%s: %s
Language:%s
CPUs:no details available
CPUs:%d:%s (%.1f bogomips)
\n", - $cpus->[$i]{'model'}, $cpus->[$i]{'bogo'}; - printf $fd " %s
Graphics:%s
Uptime:%s; runlevel %s

\n\n"; -} - - -# Display the test scores from the given set of test results -# for a given category of tests. -sub logCatResultsHtml { - my ( $results, $cat, $fd ) = @_; - - my $numIndex = $results->{'numIndex'}{$cat}; - my $indexed = $results->{'indexed'}{$cat}; - my $iscore = $results->{'index'}{$cat}; - my $full = defined($indexed) && $indexed == $numIndex; - - # If there are no results in this category, just ignore it. - if (!defined($results->{'numCat'}{$cat}) || - $results->{'numCat'}{$cat} == 0) { - return; - } - - # Say the category. If there are no indexed scores, just say so. - my $warn = ""; - if (!defined($indexed) || $indexed == 0) { - $warn = " — no index results available"; - } elsif (!$full) { - $warn = " — not all index tests were run;" . - " only a partial index score is available"; - } - printf $fd "

%s%s

\n", $testCats->{$cat}{'name'}, $warn; - - printf $fd "

\n"; - - printf $fd "\n"; - printf $fd " \n"; - printf $fd " \n"; - printf $fd " \n"; - printf $fd " \n"; - printf $fd " \n"; - printf $fd " \n"; - printf $fd " \n"; - printf $fd "\n"; - - # Display the individual test scores. - foreach my $bench (@{$results->{'list'}}) { - my $bresult = $results->{$bench}; - next if $bresult->{'cat'} ne $cat; - - printf $fd "\n"; - printf $fd " \n", $bresult->{'msg'}; - printf $fd " \n", - $bresult->{'score'}; - printf $fd " \n", - $bresult->{'scorelabel'}; - printf $fd " \n", - $bresult->{'time'}; - printf $fd " \n", - $bresult->{'iterations'}; - - if (defined($bresult->{'index'})) { - printf $fd " \n", - $bresult->{'iscore'}; - printf $fd " \n", - $bresult->{'index'}; - } - printf $fd "\n"; - } - - # Display the overall score. - if (defined($indexed) && $indexed > 0) { - my $title = $testCats->{$cat}{'name'} . " Index Score"; - if (!$full) { - $title .= " (Partial Only)"; - } - printf $fd "\n"; - printf $fd " \n", $title; - printf $fd " \n", $iscore; - printf $fd "\n"; - } - - printf $fd "
TestScoreUnitTimeIters.BaselineIndex
%s%.1f%s%.1f s%d%.1f%.1f
%s:%.1f

\n\n"; -} - - -# Display index scores, if any, for the given run results. -sub logResultsHtml { - my ( $results, $fd ) = @_; - - foreach my $cat (keys(%$testCats)) { - logCatResultsHtml($results, $cat, $fd); - } -} - - -# Dump the given run results into the given report file. -sub summarizeRunHtml { - my ( $systemInfo, $results, $verbose, $reportFd ) = @_; - - # Display information about this test run. - my $time = $results->{'end'} - $results->{'start'}; - printf $reportFd "


\n"; - printf $reportFd "

Benchmark Run: %s; %s

\n", - number($systemInfo->{'numCpus'}, "CPU"), - number($results->{'copies'}, "parallel process", "parallel processes"); - printf $reportFd "

Time: %s - %s; %dm %02ds

\n", - strftime("%H:%M:%S", localtime($results->{'start'})), - strftime("%H:%M:%S", localtime($results->{'end'})), - int($time / 60), $time % 60; - printf $reportFd "\n"; - - # Display the run scores. - logResultsHtml($results, $reportFd); -} - - -sub runFooterHtml { - my ( $reportFd ) = @_; - - print $reportFd <

-
No Warranties: This information is provided free of charge and "as -is" without any warranty, condition, or representation of any kind, -either express or implied, including but not limited to, any warranty -respecting non-infringement, and the implied warranties of conditions -of merchantability and fitness for a particular purpose. All logos or -trademarks on this site are the property of their respective owner. In -no event shall the author be liable for any -direct, indirect, special, incidental, consequential or other damages -howsoever caused whether arising in contract, tort, or otherwise, -arising out of or in connection with the use or performance of the -information contained on this web site.
- - -EOF -} - - -############################################################################ -# MAIN -############################################################################ - -sub main { - my @args = @_; - - my $params = parseArgs(@args); - my $verbose = $params->{'verbose'} || 1; - if ($params->{'iterations'}) { - $longIterCount = $params->{'iterations'}; - $shortIterCount = int(($params->{'iterations'} + 1) / 3); - $shortIterCount = 1 if ($shortIterCount < 1); - } - - # If no benchmark units have be specified, do "index". - my $tests = $params->{'tests'}; - if ($#$tests < 0) { - $tests = $index; - } - - preChecks(); - my $systemInfo = getSystemInfo(); - - # If the number of copies to run was not set, set it to 1 - # and the number of CPUs in the system (if > 1). - my $copies = $params->{'copies'}; - if (!$copies || scalar(@$copies) == 0) { - push(@$copies, 1); - if (defined($systemInfo->{'numCpus'}) && $systemInfo->{'numCpus'} > 1) { - push(@$copies, $systemInfo->{'numCpus'}); - } - } - - # Display the program banner. - system("cat \"${BINDIR}/unixbench.logo\""); - - if ($verbose > 1) { - printf "\n", join(", ", @$tests); - printf "Tests to run: %s\n", join(", ", @$tests); - } - - # Generate unique file names for the report and log file. - my $reportFile = logFile($systemInfo); - my $reportHtml = $reportFile . ".html"; - my $logFile = $reportFile . ".log"; - - # Open the log file for writing. - open(my $reportFd, ">", $reportFile) || - die("Run: can't write to $reportFile\n"); - open(my $reportFd2, ">", $reportHtml) || - die("Run: can't write to $reportHtml\n"); - printf $reportFd " BYTE UNIX Benchmarks (Version %s)\n\n", $version; - runHeaderHtml($systemInfo, $reportFd2); - - # Dump information about the system under test. - displaySystem($systemInfo, $reportFd); - displaySystemHtml($systemInfo, $reportFd2); - - # Run the tests! Do a test run once for each desired number of copies; - # for example, on a 2-CPU system, we may do a single-processing run - # followed by a dual-processing run. - foreach my $c (@$copies) { - if ($verbose > 1) { - printf "Run with %s\n", number($c, "copy", "copies"); - } - my $results = runTests($tests, $verbose, $logFile, $c); - - summarizeRun($systemInfo, $results, $verbose, $reportFd); - summarizeRunHtml($systemInfo, $results, $verbose, $reportFd2); - } - - runFooterHtml($reportFd2); - - # Finish the report. - close($reportFd); - close($reportFd2); - - # Display the report, if not in quiet mode. - if ($verbose > 0) { - printf "\n"; - printf "========================================================================\n"; - system("cat \"$reportFile\""); - } - - 0; -} - - -exit(main(@ARGV)); - diff --git a/testcases/feature-test/oeaware/UnixBench/USAGE b/testcases/feature-test/oeaware/UnixBench/USAGE deleted file mode 100644 index 903a83f7f..000000000 --- a/testcases/feature-test/oeaware/UnixBench/USAGE +++ /dev/null @@ -1,394 +0,0 @@ -Running the Tests -================= - -All the tests are executed using the "Run" script in the top-level directory. - -The simplest way to generate results is with the commmand: - ./Run - -This will run a standard "index" test (see "The BYTE Index" below), and -save the report in the "results" directory, with a filename like - hostname-2007-09-23-01 -An HTML version is also saved. - -If you want to generate both the basic system index and the graphics index, -then do: - ./Run gindex - -If your system has more than one CPU, the tests will be run twice -- once -with a single copy of each test running at once, and once with N copies, -where N is the number of CPUs. Some categories of tests, however (currently -the graphics tests) will only run with a single copy. - -Since the tests are based on constant time (variable work), a "system" -run usually takes about 29 minutes; the "graphics" part about 18 minutes. -A "gindex" run on a dual-core machine will do 2 "system" passes (single- -and dual-processing) and one "graphics" run, for a total around one and -a quarter hours. - -============================================================================ - -Detailed Usage -============== - -The Run script takes a number of options which you can use to customise a -test, and you can specify the names of the tests to run. The full usage -is: - - Run [ -q | -v ] [-i ] [-c [-c ...]] [test ...] - -The option flags are: - - -q Run in quiet mode. - -v Run in verbose mode. - -i Run iterations for each test -- slower tests - use / 3, but at least 1. Defaults to 10 (3 for - slow tests). - -c Run copies of each test in parallel. - -The -c option can be given multiple times; for example: - - ./Run -c 1 -c 4 - -will run a single-streamed pass, then a 4-streamed pass. Note that some -tests (currently the graphics tests) will only run in a single-streamed pass. - -The remaining non-flag arguments are taken to be the names of tests to run. -The default is to run "index". See "Tests" below. - -When running the tests, I do *not* recommend switching to single-user mode -("init 1"). This seems to change the results in ways I don't understand, -and it's not realistic (unless your system will actually be running in this -mode, of course). However, if using a windowing system, you may want to -switch to a minimal window setup (for example, log in to a "twm" session), -so that randomly-churning background processes don't randomise the results -too much. This is particularly true for the graphics tests. - - -============================================================================ - -Tests -===== - -The available tests are organised into categories; when generating index -scores (see "The BYTE Index" below) the results for each category are -produced separately. The categories are: - - system The original Unix system tests (not all are actually - in the index) - 2d 2D graphics tests (not all are actually in the index) - 3d 3D graphics tests - misc Various non-indexed tests - -The following individual tests are available: - - system: - dhry2reg Dhrystone 2 using register variables - whetstone-double Double-Precision Whetstone - syscall System Call Overhead - pipe Pipe Throughput - context1 Pipe-based Context Switching - spawn Process Creation - execl Execl Throughput - fstime-w File Write 1024 bufsize 2000 maxblocks - fstime-r File Read 1024 bufsize 2000 maxblocks - fstime File Copy 1024 bufsize 2000 maxblocks - fsbuffer-w File Write 256 bufsize 500 maxblocks - fsbuffer-r File Read 256 bufsize 500 maxblocks - fsbuffer File Copy 256 bufsize 500 maxblocks - fsdisk-w File Write 4096 bufsize 8000 maxblocks - fsdisk-r File Read 4096 bufsize 8000 maxblocks - fsdisk File Copy 4096 bufsize 8000 maxblocks - shell1 Shell Scripts (1 concurrent) (runs "looper 60 multi.sh 1") - shell8 Shell Scripts (8 concurrent) (runs "looper 60 multi.sh 8") - shell16 Shell Scripts (8 concurrent) (runs "looper 60 multi.sh 16") - - 2d: - 2d-rects 2D graphics: rectangles - 2d-lines 2D graphics: lines - 2d-circle 2D graphics: circles - 2d-ellipse 2D graphics: ellipses - 2d-shapes 2D graphics: polygons - 2d-aashapes 2D graphics: aa polygons - 2d-polys 2D graphics: complex polygons - 2d-text 2D graphics: text - 2d-blit 2D graphics: images and blits - 2d-window 2D graphics: windows - - 3d: - ubgears 3D graphics: gears - - misc: - C C Compiler Throughput ("looper 60 $cCompiler cctest.c") - arithoh Arithoh (huh?) - short Arithmetic Test (short) (this is arith.c configured for - "short" variables; ditto for the ones below) - int Arithmetic Test (int) - long Arithmetic Test (long) - float Arithmetic Test (float) - double Arithmetic Test (double) - dc Dc: sqrt(2) to 99 decimal places (runs - "looper 30 dc < dc.dat", using your system's copy of "dc") - hanoi Recursion Test -- Tower of Hanoi - grep Grep for a string in a large file, using your system's - copy of "grep" - sysexec Exercise fork() and exec(). - -The following pseudo-test names are aliases for combinations of other -tests: - - arithmetic Runs arithoh, short, int, long, float, double, - and whetstone-double - dhry Alias for dhry2reg - dhrystone Alias for dhry2reg - whets Alias for whetstone-double - whetstone Alias for whetstone-double - load Runs shell1, shell8, and shell16 - misc Runs C, dc, and hanoi - speed Runs the arithmetic and system groups - oldsystem Runs execl, fstime, fsbuffer, fsdisk, pipe, context1, - spawn, and syscall - system Runs oldsystem plus shell1, shell8, and shell16 - fs Runs fstime-w, fstime-r, fstime, fsbuffer-w, - fsbuffer-r, fsbuffer, fsdisk-w, fsdisk-r, and fsdisk - shell Runs shell1, shell8, and shell16 - - index Runs the tests which constitute the official index: - the oldsystem group, plus dhry2reg, whetstone-double, - shell1, and shell8 - See "The BYTE Index" below for more information. - graphics Runs the tests which constitute the graphics index: - 2d-rects, 2d-ellipse, 2d-aashapes, 2d-text, 2d-blit, - 2d-window, and ubgears - gindex Runs the index and graphics groups, to generate both - sets of index results - - all Runs all tests - - -============================================================================ - -The BYTE Index -============== - -The purpose of this test is to provide a basic indicator of the performance -of a Unix-like system; hence, multiple tests are used to test various -aspects of the system's performance. These test results are then compared -to the scores from a baseline system to produce an index value, which is -generally easier to handle than the raw sores. The entire set of index -values is then combined to make an overall index for the system. - -Since 1995, the baseline system has been "George", a SPARCstation 20-61 -with 128 MB RAM, a SPARC Storage Array, and Solaris 2.3, whose ratings -were set at 10.0. (So a system which scores 520 is 52 times faster than -this machine.) Since the numbers are really only useful in a relative -sense, there's no particular reason to update the base system, so for the -sake of consistency it's probably best to leave it alone. George's scores -are in the file "pgms/index.base"; this file is used to calculate the -index scores for any particular run. - -Over the years, various changes have been made to the set of tests in the -index. Although there is a desire for a consistent baseline, various tests -have been determined to be misleading, and have been removed; and a few -alternatives have been added. These changes are detailed in the README, -and should be born in mind when looking at old scores. - -A number of tests are included in the benchmark suite which are not part of -the index, for various reasons; these tests can of course be run manually. -See "Tests" above. - - -============================================================================ - -Graphics Tests -============== - -As of version 5.1, UnixBench now contains some graphics benchmarks. These -are intended to give a rough idea of the general graphics performance of -a system. - -The graphics tests are in categories "2d" and "3d", so the index scores -for these tests are separate from the basic system index. This seems -like a sensible division, since the graphics performance of a system -depends largely on the graphics adaptor. - -The tests currently consist of some 2D "x11perf" tests and "ubgears". - -* The 2D tests are a selection of the x11perf tests, using the host - system's x11perf command (which must be installed and in the search - path). Only a few of the x11perf tests are used, in the interests - of completing a test run in a reasonable time; if you want to do - detailed diagnosis of an X server or graphics chip, then use x11perf - directly. - -* The 3D test is "ubgears", a modified version of the familiar "glxgears". - This version runs for 5 seconds to "warm up", then performs a timed - run and displays the average frames-per-second. - -On multi-CPU systems, the graphics tests will only run in single-processing -mode. This is because the meaning of running two copies of a test at once -is dubious; and the test windows tend to overlay each other, meaning that -the window behind isn't actually doing any work. - - -============================================================================ - -Multiple CPUs -============= - -If your system has multiple CPUs, the default behaviour is to run the selected -tests twice -- once with one copy of each test program running at a time, -and once with N copies, where N is the number of CPUs. (You can override -this with the "-c" option; see "Detailed Usage" above.) This is designed to -allow you to assess: - - - the performance of your system when running a single task - - the performance of your system when running multiple tasks - - the gain from your system's implementation of parallel processing - -The results, however, need to be handled with care. Here are the results -of two runs on a dual-processor system, one in single-processing mode, one -dual-processing: - - Test Single Dual Gain - -------------------- ------ ------ ---- - Dhrystone 2 562.5 1110.3 97% - Double Whetstone 320.0 640.4 100% - Execl Throughput 450.4 880.3 95% - File Copy 1024 759.4 595.9 -22% - File Copy 256 535.8 438.8 -18% - File Copy 4096 1261.8 1043.4 -17% - Pipe Throughput 481.0 979.3 104% - Pipe-based Switching 326.8 1229.0 276% - Process Creation 917.2 1714.1 87% - Shell Scripts (1) 1064.9 1566.3 47% - Shell Scripts (8) 1567.7 1709.9 9% - System Call Overhead 944.2 1445.5 53% - -------------------- ------ ------ ---- - Index Score: 678.2 1026.2 51% - -As expected, the heavily CPU-dependent tasks -- dhrystone, whetstone, -execl, pipe throughput, process creation -- show close to 100% gain when -running 2 copies in parallel. - -The Pipe-based Context Switching test measures context switching overhead -by sending messages back and forth between 2 processes. I don't know why -it shows such a huge gain with 2 copies (ie. 4 processes total) running, -but it seems to be consistent on my system. I think this may be an issue -with the SMP implementation. - -The System Call Overhead shows a lesser gain, presumably because it uses a -lot of CPU time in single-threaded kernel code. The shell scripts test with -8 concurrent processes shows no gain -- because the test itself runs 8 -scripts in parallel, it's already using both CPUs, even when the benchmark -is run in single-stream mode. The same test with one process per copy -shows a real gain. - -The filesystem throughput tests show a loss, instead of a gain, when -multi-processing. That there's no gain is to be expected, since the tests -are presumably constrained by the throughput of the I/O subsystem and the -disk drive itself; the drop in performance is presumably down to the -increased contention for resources, and perhaps greater disk head movement. - -So what tests should you use, how many copies should you run, and how should -you interpret the results? Well, that's up to you, since it depends on -what it is you're trying to measure. - -Implementation --------------- - -The multi-processing mode is implemented at the level of test iterations. -During each iteration of a test, N slave processes are started using fork(). -Each of these slaves executes the test program using fork() and exec(), -reads and stores the entire output, times the run, and prints all the -results to a pipe. The Run script reads the pipes for each of the slaves -in turn to get the results and times. The scores are added, and the times -averaged. - -The result is that each test program has N copies running at once. They -should all finish at around the same time, since they run for constant time. - -If a test program itself starts off K multiple processes (as with the shell8 -test), then the effect will be that there are N * K processes running at -once. This is probably not very useful for testing multi-CPU performance. - - -============================================================================ - -The Language Setting -==================== - -The $LANG environment variable determines how programs abnd library -routines interpret text. This can have a big impact on the test results. - -If $LANG is set to POSIX, or is left unset, text is treated as ASCII; if -it is set to en_US.UTF-8, foir example, then text is treated as being -encoded in UTF-8, which is more complex and therefore slower. Setting -it to other languages can have varying results. - -To ensure consistency between test runs, the Run script now (as of version -5.1.1) sets $LANG to "en_US.utf8". - -This setting which is configured with the variable "$language". You -should not change this if you want to share your results to allow -comparisons between systems; however, you may want to change it to see -how different language settings affect performance. - -Each test report now includes the language settings in use. The reported -language is what is set in $LANG, and is not necessarily supported by the -system; but we also report the character mapping and collation order which -are actually in use (as reported by "locale"). - - -============================================================================ - -Interpreting the Results -======================== - -Interpreting the results of these tests is tricky, and totally depends on -what you're trying to measure. - -For example, are you trying to measure how fast your CPU is? Or how good -your compiler is? Because these tests are all recompiled using your host -system's compiler, the performance of the compiler will inevitably impact -the performance of the tests. Is this a problem? If you're choosing a -system, you probably care about its overall speed, which may well depend -on how good its compiler is; so including that in the test results may be -the right answer. But you may want to ensure that the right compiler is -used to build the tests. - -On the other hand, with the vast majority of Unix systems being x86 / PC -compatibles, running Linux and the GNU C compiler, the results will tend -to be more dependent on the hardware; but the versions of the compiler and -OS can make a big difference. (I measured a 50% gain between SUSE 10.1 -and OpenSUSE 10.2 on the same machine.) So you may want to make sure that -all your test systems are running the same version of the OS; or at least -publish the OS and compuiler versions with your results. Then again, it may -be compiler performance that you're interested in. - -The C test is very dubious -- it tests the speed of compilation. If you're -running the exact same compiler on each system, OK; but otherwise, the -results should probably be discarded. A slower compilation doesn't say -anything about the speed of your system, since the compiler may simply be -spending more time to super-optimise the code, which would actually make it -faster. - -This will be particularly true on architectures like IA-64 (Itanium etc.) -where the compiler spends huge amounts of effort scheduling instructions -to run in parallel, with a resultant significant gain in execution speed. - -Some tests are even more dubious in terms of host-dependency -- for example, -the "dc" test uses the host's version of dc (a calculator program). The -version of this which is available can make a huge difference to the score, -which is why it's not in the index group. Read through the release notes -for more on these kinds of issues. - -Another age-old issue is that of the benchmarks being too trivial to be -meaningful. With compilers getting ever smarter, and performing more -wide-ranging flow path analyses, the danger of parts of the benchmarks -simply being optimised out of existance is always present. - -All in all, the "index" and "gindex" tests (see above) are designed to -give a reasonable measure of overall system performance; but the results -of any test run should always be used with care. - diff --git a/testcases/feature-test/oeaware/UnixBench/WRITING_TESTS b/testcases/feature-test/oeaware/UnixBench/WRITING_TESTS deleted file mode 100644 index 28cd968dd..000000000 --- a/testcases/feature-test/oeaware/UnixBench/WRITING_TESTS +++ /dev/null @@ -1,133 +0,0 @@ -Writing a Test -============== - -Writing a test program is pretty easy. Basically, a test is configured via -a monster array in the Run script, which specifics (among other things) the -program to execute and the parameters to pass it. - -The test itself is simply a program which is given the optional parameters -on the command line, and produces logging data on stdout and its results on -stderr. - - -============================================================================ - -Test Configuration -================== - -In Run, all tests are named in the "$testList" array. This names the -individual tests, and also sets up aliases for groups of tests, eg. "index". - -The test specifications are in the "$testParams" array. This contains the -details of each individual test as a hash. The fields in the hash are: - - * "logmsg": the full name to display for this test. - * "cat": the category this test belongs to; must be configured - in $testCats. - * "prog": the name of the program to execute; defaults to the name of - the benchmark. - * "repeat": number of passes to run; either 'short' (the default), - 'long', or 'single'. For 'short' and 'long', the actual numbers of - passes are given by $shortIterCount and $longIterCount, which are - configured at the top of the script or by the "-i" flag. 'single' - means just run one pass; this should be used for test which do their - own multi-pass handling internally. - * "stdout": non-0 to add the test's stdout to the log file; defaults to 1. - Set to 0 for tests that are too wordy. - * "stdin": name of a file to send to the program's stdin; default null. - * "options": options to be put on the program's command line; default null. - - -============================================================================ - -Output Format -============= - -The results on stderr take the form of a line header and fields, separated -by "|" characters. A result line can be one of: - - COUNT|score|timebase|label - TIME|seconds - ERROR|message - -Any other text on stderr is treated as if it were: - - ERROR|text - -Any output to stdout is placed in a log file, and can be used for debugging. - -COUNT ------ - -The COUNT line is the line used to report a test score. - - * "score" is the result, typically the number of loops performed during - the run - * "timebase" is the time base used for the final report to the user. A - value of 1 reports the score as is; a value of 60, for example, divides - the time taken by 60 to get loops per minute. Atimebase of zero indicates - that the score is already a rate, ie. a count of things per second. - * "label" is the label to use for the score; like "lps" (loops per - second), etc. - -TIME ----- - -The TIME line is optionally used to report the time taken. The Run script -normally measures this, but if your test has signifant overhead outside the -actual test loop, you should use TIME to report the time taken for the actual -test. The argument is the time in seconds in floating-point. - -ERROR ------ - -The argument is an error message; this will abort the benchmarking run and -display the message. - -Any output to stderr which is not a formatted line will be treated as an -error message, so use of ERROR is optional. - - -============================================================================ - -Test Examples -============= - -Iteration Count ---------------- - -The simplest thing is to count the number of loops executed in a given time; -see eg. arith.c. The utlilty functions in timeit.c can be used to implement -the fixed time interval, which is generally passed in on the command line. - -The result is reported simply as the number of iterations completed: - - fprintf(stderr,"COUNT|%lu|1|lps\n", iterations); - -The bnenchmark framework will measure the time taken itself. If the test -code has significant overhead (eg. a "pump-priming" pass), then you should -explicitly report the time taken for the test by adding a line like this: - - fprintf(stderr, "TIME|%.1f\n", seconds); - -If you want results reported as loops per minute, then set timebase to 60: - - fprintf(stderr,"COUNT|%lu|60|lpm\n", iterations); - -Note that this only affects the final report; all times passed to or -from the test are still in seconds. - -Rate ----- - -The other technique is to calculate the rate (things per second) in the test, -and report that directly. To do this, just set timebase to 0: - - fprintf(stderr, "COUNT|%ld|0|KBps\n", kbytes_per_sec); - -Again, you can use TIME to explicitly report the time taken: - - fprintf(stderr, "TIME|%.1f\n", end - start); - -but this isn't so important since you've already calculated the rate. - diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/arithoh b/testcases/feature-test/oeaware/UnixBench/pgms/arithoh deleted file mode 100755 index 7bed0da8cfc3906be9617eee974fce094022c42c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72872 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 P@sDixJ+q;JkP80=H-%tM diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/context1 b/testcases/feature-test/oeaware/UnixBench/pgms/context1 deleted file mode 100755 index 9e2750baed4f099fa69cd9fdd2ebc6385f3f85d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73200 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 dUO4tfDx>XpU_``4<@m~g{gpY^{{{=8a*}?z- diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/dhry2 b/testcases/feature-test/oeaware/UnixBench/pgms/dhry2 deleted file mode 100755 index ef9c8b42e513607b4bb1195b407be3b280e7094f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73808 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 diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/dhry2reg b/testcases/feature-test/oeaware/UnixBench/pgms/dhry2reg deleted file mode 100755 index 8c5b6868f99216e0423ad3b9215f8c273b7ee1a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73816 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

23TCMD>4GH!S6|uKv~Efz*45 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 Lo|#ZUNQM6f`rBwk diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/execl b/testcases/feature-test/oeaware/UnixBench/pgms/execl deleted file mode 100755 index afda26410ba8663df7ffc4cbb31de161c16f89c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74784 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 RXR&{l69ZRkhCzl%{};!zaS{Lk diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/float b/testcases/feature-test/oeaware/UnixBench/pgms/float deleted file mode 100755 index c0e0abf21ed54452f85731c1eb61eed458812322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72872 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 IKtzTA21qSo`2YX_ diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/fstime b/testcases/feature-test/oeaware/UnixBench/pgms/fstime deleted file mode 100755 index a2a30661f380a2fd45f636235df0c54bc72dc47e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74064 zcmeHMeQ*@Vm4CY{34uU-gZMBS34CB;34y@|;tQh>Kq7!`Av?~c;?-(*ByF@GVs~XE zn>*HaF6RsR(8k1I$03AEQii%zId^t~?tB*+yK-FORJb_7*sk~lv0WG^7aW2?iG}X> zdb*|2Xcs4`x<9U}2WDTtU%&Ud``52~W?FkTZr$Ydct~Ad`W~^?Uu+7<{w2D-WYor_ zwKS1TT0)Dd09JXpm7OU|N?ws}N*2PFFCT99TkB>$yX?+85hW`EmEy?~3%hBK?#+DLba58Xu31?#gP41 zQq9APNVsK1BvcUz$GW;J0)a%Z{pQt`$#~^Td)%`SpDEqE{Z3l)i(^0d>dd>M$4>v< zFVn~S-uU86PbInE+y{=wHhi)D1W_X5X6NJPdND4$VbL4L*Zp>{oM|XouKmDfWWh^v z;Cpi5Cx9Ec-IpIgw)jms@I(&$<2mr{Iq)}t8@S!qVF20sW97g%=fIifY;m5*fqy** z&hwZp&Z->vMc@W*_w^wF+2VXA2R=CmZsx$3=fJtmZ0&XcpH3xYcxq50QtO?9?V)gj z5>_BYfk+?`r69^F^82w+g8pPGkVyHXfpCmkI}_npsueZKp5(p$WVkIBh)`DyE2)E$ zsYEIsp#jsNWfAv=m+8&4d22&Wt$$VJO{+(WD{moxL(?`t;#+Ou zWXei3ZL5vMV^&k3C1N3ZTQnY%WAWRjSq;I97pvKe)$1Mk=PcW(8(}^fdlFLZPfuqa z#q#&jKS^xA(7p6;Y>eyVaJ7&gY$$3kWZ<*|pCl~op8*Fx(}An`{=LkBt38neRXOmH+ylPWflm}I+CQcPck)p0 zz>6IAw>xlNOX|AYflpB&WU~V=cHr#}e5wQQbl_@^xw_kdPj}d-9k_EnKJ38xS);CA z2R>VYkOv(290z{LfzNf|PdadZW~l2a2QDAcqN>#J{e0;D?;jcRQ6}P{eM9#@_hi4% zf9e9T3q%*DU)?-7?d*n(;VnJIw(6edq2B3Ub8woMM4iwJpqD%JNziK?dNK4Chdu-P zgARQT^urE)KJ?=beG&At4!s<@*E8DwUqCN+=*ywkIP^;BEe?GZ^amaK&Cm}!^!3n> zJM@o0KkLwIpnJWe?Qeo!?$EbDuW{(xp|?2nM(7VZ^t+%RcIbZv{kW~Gc~tV^j%SZt z`h@4m<)HV-;QhWMrFpdT#}lb(4(8>OkCtEYd5)ec_hnX7y0K?+y76P4bffpR)Rl++ z=C2`4G2! zV*00Ll>RCD@KmtZ9Hjoz%y)-}_nT;AH{_n5O5fK#JDO8#L%hV2G?B}ezL z%?#V-5Zc%Po#Rv^c9p}w8Fg&W_;RPu1Zu)3QtyKpOPP_MA#jPkeHOKst;O>q!(;nL z%mtngy#}~0OK-?*fj`d?$J~Q?>_-gFi2=+Z9wfbIF^{l+s;qx;hL8h|u zFYt7EhV6XEA86$Ia?~}zrWx`gY`9L?QCY_4JtSA#BdeIBZweZ`=G2=7@8S z(xn-$HxO%pV=-nf&b%qH*A$jsoZ))5I|XS%rik{j{5|A=Z|?Hl*z3|nt6QP7-HWgb zqD(0NC(3No2K_SHX1|d1I}geENe22}x8UczSE@bnPnFkUJ{IAA(?>_o_{_nxiz)LK z_F;^xmri~-<3n8@?jz_A_mAUy(KbtNcL4h{{c7`|N%ZuySBK|1`@;NDIxoZXUk15> z=$(G7$usaNJGXf-0G|ukBMAFC`?>AQh<;T5{+^erCqJ;a?EUITo`d~a_|{z5JlG<9 zy(7NdpP~EzT|7fB7SZ5LwAp;PZe5ya&Fh#~=C}E9-nxrL=HSr%$HnvI4LJ_QnV4_b zd8#~p+@GscORtca^97k_F!rkxs%`zyg3Na?){8s(j$Fh(zVQEDrfuS&l%S86Lh+W^Ty*_bRl3eE%Y_0p#;zEFbb@c(1t!<^EOGedm^LiVjSs zHJ1_l6xQ=)>`$~y+ej9t`@4V^0*}(DsF)QiyX7(T! zk=a+Wc*ow-X|&UWbv{s#?t7+yGOv2Eu4(o=zs4Tij~HitvycPxj&6q!$HCZ+e$7ko zJU2Al)IZ7gDe=)>_GdqgNBDV}Gqkyk`|UOR(tj9UeSRqoP4Wc~4tCTYQRCwJfuc=O zaN1k=O5mOwaQhyv8^ZU?g__fWdkFXOVzciI_7S!rT9~On6fCW#mPLg(G%s5A_1e<1 z!uCZ}-MpxJUSLrs=<7jn6Hh|i#z^9uWq zOJVLfNBEg2a%2Gwo-d`Lb4&B0KJNy=ml!`Tp?g6W-uKygSe0wmDBvmG9Vl0CBE>yP1Ud4IVS{lX13H z~@A4Qq-fOFiKN^3YDlbi!HX^``Q zbAk7Z7Dq0$!iRN{2YAPL9&^TdK$v%D9vFB&`wC?q7>hDX;CFc@-pP;)yl$?}dib;Ztgvbx#k$E{|k65a;}|w#u?x2 zqiWCK`TrfpBIbHv(deGBtbNR$u?6#8gZXYLrolCco0fY<3%&_>zD;1fXDFQaj1M!$ z^S#*4ZTFbc$lvqtBi0POo57CP=v%CVv*t_K2QgkXrXL{>*pAoSCD;VO@dm6l=Jh!2 z{owdHl!IR~kMOe(U-}vLH+K8J5~RGnWr+U(c%#DSnXkRf*V7!6_hziEU!u(O%k#-| z%)XP5hu;QnuY*OIe?_}IKg{ud;P!LV{`OMeU3`wfSEwr*?WvM-B~fdV4^7q^_Gt*w z$M{sl2;q!ly>WdcWQ1eJ^_8nzZ#0s@c*0`H{%Wqh?au8@yP@u`+Wpa*&ZLdvMWA8Z z#@*Lfu56WniZ2d=(0(Hhg#L)|BmD}-J9`Y}41X0*;HuNWYuWCDyFKbJj;Dz3Oa|I8 zR6DHkiHhLvip1`UU7tj;#kjSlt2G(E&-w_fQRCKVpxfVqv!srsKvKr7Nh=tSg`leO ztNy{W)k+xbZA810DWk<=E)#)R8(0igTrYW4_6Tj*p|5E^(tn<{9F~Ucl<1O*Z=b%6 z@+Z#H9DH`gI%4r%F(YN6uS>5FE|mlN{I8!mbomEQeZ;fC_u&-m`K;sIyTil%NT>Eo z!^7twpM?AzAddR}T;o;Me zC4T^Jrz_5n?8|dsBjt53@+_EKDzFm3v(VnHTwOh3(JY7?aht%L=U(hzhr1p)(q3GQ z-Hkh>{82V=M{xHlyXs=&t9b`~HII1fU;o8R;wXpxdT~GDXoInD;64D1%Y1R)j^W-1 z%z&io;%NuHb+2;}=ILj+*?u99vAVePk>Y(*YQ8-A(W1KjlMYNgSdd?zm*3#~*y9r( zEBsXcmi(GmU$F|dZ2Z|vufKfy=cfwl3mS@*7dx@fV}*}TP=1?VeWmtVw#sfJLgVi% z=t2mbFT)4PWV=7jk4)ZIRQu&gk51gUzwiLZ-I8y2sb`W3yhV1S=)Uog;OH1)zJUk- zK6lL8gA?-W3-TNCKe@l~u9taKqhk^+bHn=!l~qmtmb`|SG5)#_vTT?H)0&s7i?(s0 zzNq%)ItKO^g1eV#3C6hGy|Fe z&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55pc&8%Xa+O` zngPv#WGy|Fe&46Y=GoTsJ3}^;41DXNNfM!55 zpc&8%Xa+O`ngPv#WGy|Fe&46Y=GoTsJ3}^;4 z1DXNNfM!55pc&8%Xa+O`ngPv#WGy|Fe&46Y= zGoTsJ3}^=24D?Sm1(YtfWv|pd((p+sCrepB(YBi+^%v&Y`aG!*3{{KL0;x}va=w%o zWc@;^7fN~Q>TsNk2fQW=$``*x_4%eK6-d3`Yl_k&@k=yCcC<+9B~s3oQVE|doEx_L z=au?0S(qjD2~y6L(wJb1lEV87Y+d!cS=16ulv1^Sb=V$Hue2YQy5jYM)bEn@(*6HT zT#>y0sSPyC`TqYV$Bi?O=p-gl@$Z&g$CtTm@eKz5v?f#Gs8tzUe^cceqoTrCvts3% z73)?SE7z^RscQYob+oy*cD=D|^Y%M$FjiJo-c-4gI44BDBlza(C7zoCE2&?utM{eM zW|Jq^T#1y~Y}C5DTh2!|8?_cs$~Ac{8)ci#Mzx{lJe!SbXR5XxkuMCO=%J4Nj<;D;*&@{=f>hir1qV$ z_+(Oh!&n?|1x2P45@jD1liF{bl|GtEYX2CEPot7~rV|onA5Ev;toRI4?;TDjAI&87 zzA+Y`McJN*KAKG@u=@`{GAyM{G2^pSjxOz((>*AyNR9}|OUcE)R z?bX|p8^3NWAT=K?%7K^Wz>RS@Z9KeUN&Xqxv1jV z?@d$acdm75$DdB$aLv1okIx?!pX9St#aD5Tx#BE=LAG(JIO^G~;(Q1NFHIqZ&yp3k z{rL4_t4T#=V>n9YvkC$rA`Xg}dDu3UVoII~>*UxAkg`?(wEVArVafo|>8xCC+tHDFIenvUIcliL+49bao?`~g>dQ^dDzoWG4Z@D_njp{iM?FyANp6V74(AaKr;bFy7E zFP~=|`KI;<)%Ih+4W&3_J{+^ zJYMy_p~hR9!=As|S60SpNr?P@eBt_2fi_yw4P{p%(1|bOaEwjDFbM`C5&teL(BW?t zSPYmt{c(N#kNvWSe=^n8+KN+wkd?67!pW4C@Ta2wU?d*1l4vUw_qRpjErEzXgfHf# zKhV`p!FaSYVx_E5WmR?ye``1v_6HJ)K#$*wr4l{Vng~QKf2b=O?SYF!^TRSV#?(V>-d-3E|jCA1h*B~I`>{c+P#_hcNYb)8#sp_#WEh-YV0`gTYqUdX zJ{YkAF@IMlMFZXb7EDc&+N=~G|$)pv+*yEl4 zV7x1qLNSqwN5(XQF;cKS6dp@XDB@38k$5n`K~sTLIOy*TTf`?SPHz#_j~QYfK$=Zh z!U}|BSCFYZM8~WkH9LD`ZL8?DGa$P<^`P=k_9XB1V>)AjG2ItafPQxHLO>#@l;jLi zi^Y{6$b(qiFUE!wpD~RwM`AP`B+|xNDOLe>#c(t>CSO`R6X95@)oBVYlHvO-ENd$; zW|F8f*%QSP6eK1>$aYmi5G&D1l`))rRpR8WQk*wcATeyHx~2iAS8XKf+Hq_}m7$&( z;@L8luxswM5=jhejN(TfW;4JJveX$#Q6;Zys!Unk_!U`SnTU%;QE9cy4WK;)U!~a| z_D*1Xs4@ZvqTwJ~jUyI*Dn$c!Ff2%_#D)~bK4bSw46QPdN+rTAT}TiN!D{JhL$pAw zZBz}%TH_;CEiDP_UZr6YEL8@9swmwZPo6)oxBzZ=1;96seXaGHqQLJXd~v<=Vq536 z7z!WtD}Qxv*Cc@@PGgkSb4I~8qu})K_L`!qTlyP98~t(n*P-e?{Ow1zf52-B;{&et z)!)C=`=2nv&vx8=wxay|y(TomxuFpBu$27wG9J6~FR`nMzn}5w9r0IxU#pi5s=ud6 za}h(8S>A)2|CXiNSLcs+af7&+AHG!om7S6usN=tlDP5gY_DcUM;Z5Z3zl7;N6qr-x z-(O&gs($I;EVR+~-Q)i>>e;_W+NpC-L;n3o{XLNTKL@wlpZ`|DyvpWA&PVIz9{?54 zFcBBG<-GnLiql`6qc%(bURT1Z_jwg#pUYppkBX!~-3y!?j>~kExoDp=jP_rh%f7&a z#ih=(Y;Ao0A3_CpQSqPX;g6TD1UVh zeMS18l=H9hOZlmOoq;c#D1UWceL|kh8mMz#%3sO1Q0eqn=i29_|4FAa%F0j4-?;qM z`S&pqm8d0$zk)Bxn5zHkJ7vE3a~#n!Ls{BVwX4wIqrm;IQh=1o-~BDawtOk+LqRTe zfvfM}8)f_N3v~3yoqzM-uVRf_q2Kt+A7Ac%xowx_@V{I7*Exft?Dk)s!~Y5Cf8z)E z*W~a&A^jsC;J;n^yT`ejiN*DVEk>d!RmqQ|pvoggD4fi*QNszM?6zgywZ#aJ3)24t wKGFFq$9*Sml|O1<=51Ex9*QH^u^DztRjvtlw?7>o+5FGVu`SzN4lb4c7ZJH{!~g&Q diff --git a/testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 b/testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 deleted file mode 100755 index ef8a69122..000000000 --- a/testcases/feature-test/oeaware/UnixBench/pgms/gfx-x11 +++ /dev/null @@ -1,476 +0,0 @@ -#!/usr/bin/perl -w - -use strict; - - -############################################################################ -# gfx-x11: a front-end for x11perf. Runs a selected x11perf test, and -# produces output in the format needed by UnixBench. -############################################################################ -# Modification Log: -# 2007.09.26 Ian Smith Created -############################################################################ - -# This program runs sets of x11perf tests, indexes the results against -# a common base reference system (see $testData below), and reports the -# final score. -# -# Usage: -# gfx-x11

Benchmark of localhost.localdomain / GNU/Linux on Thu Jul 24 2025

-

BYTE UNIX Benchmarks (Version 5.1.3)

- -

Test System Information

-

- - - - - - - - - - - - - - - - - -
System:localhost.localdomain: GNU/Linux
OS:GNU/Linux -- 5.10.0-273.0.0.176.oe2203sp4.aarch64 -- #1 SMP Wed Jul 16 15:24:56 CST 2025
Machine:aarch64: aarch64
Language:en_US.utf8 (charmap="UTF-8", collate="UTF-8")
Uptime:18:29:19 up 2 days, 2:08, 6 users, load average: 0.34, 0.17, 1.21; runlevel 3

- diff --git a/testcases/feature-test/oeaware/UnixBench/src/arith.c b/testcases/feature-test/oeaware/UnixBench/src/arith.c deleted file mode 100644 index bbacb0824..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/arith.c +++ /dev/null @@ -1,110 +0,0 @@ - -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: arith.c SID: 3.3 5/15/91 19:30:19 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * May 12, 1989 - modified empty loops to avoid nullifying by optimizing - * compilers - * August 28, 1990 - changed timing relationship--now returns total number - * of iterations (ty) - * November 9, 1990 - made changes suggested by Keith Cantrell - * (digi!kcantrel) to defeat optimization - * to non-existence - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ - -char SCCSid[] = "@(#) @(#)arith.c:3.3 -- 5/15/91 19:30:19"; -/* - * arithmetic test - * - */ - -#include -#include -#include "timeit.c" - -int dumb_stuff(int); - -unsigned long iter; - -/* this function is called when the alarm expires */ -void report() -{ - fprintf(stderr,"COUNT|%ld|1|lps\n", iter); - exit(0); -} - -int main(argc, argv) -int argc; -char *argv[]; -{ - int duration; - int result = 0; - - if (argc != 2) { - printf("Usage: %s duration\n", argv[0]); - exit(1); - } - - duration = atoi(argv[1]); - - /* set up alarm call */ - iter = 0; /* init iteration count */ - wake_me(duration, report); - - /* this loop will be interrupted by the alarm call */ - while (1) - { - /* in switching to time-based (instead of iteration-based), - the following statement was added. It should not skew - the timings too much--there was an increment and test - in the "while" expression above. The only difference is - that now we're incrementing a long instead of an int. (ty) */ - ++iter; - /* the loop calls a function to insure that something is done - the results of the function are fed back in (just so they - they won't be thrown away. A loop with - unused assignments may get optimized out of existence */ - result = dumb_stuff(result); - } -} - - -/************************** dumb_stuff *******************/ -int dumb_stuff(i) -int i; -{ -#ifndef arithoh - datum x, y, z; - z = 0; -#endif - /* - * 101 - * sum i*i/(i*i-1) - * i=2 - */ - /* notice that the i value is always reset by the loop */ - for (i=2; i<=101; i++) - { -#ifndef arithoh - x = i; - y = x*x; - z += y/(y-1); - } -return(x+y+z); -#else -} -return(0); -#endif -} - diff --git a/testcases/feature-test/oeaware/UnixBench/src/big.c b/testcases/feature-test/oeaware/UnixBench/src/big.c deleted file mode 100644 index e7c233667..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/big.c +++ /dev/null @@ -1,597 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: big.c SID: 3.3 5/15/91 19:30:18 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * 10/22/97 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -/* - * dummy code for execl test [ old version of makework.c ] - * - * makework [ -r rate ] [ -c copyfile ] nusers - * - * job streams are specified on standard input with lines of the form - * full_path_name_for_command [ options ] [ -#include -#include -#include -#include -#include -#include -#include -#include - - -#define DEF_RATE 5.0 -#define GRANULE 5 -#define CHUNK 60 -#define MAXCHILD 12 -#define MAXWORK 10 - -/* Can't seem to get this declared in the headers... */ -extern int kill(pid_t pid, int sig); - -void wrapup(char *); -void onalarm(int); -void pipeerr(); -void grunt(); -void getwork(void); -#if debug -void dumpwork(void); -#endif -void fatal(char *s); - -float thres; -float est_rate = DEF_RATE; -int nusers; /* number of concurrent users to be simulated by - * this process */ -int firstuser; /* ordinal identification of first user for this - * process */ -int nwork = 0; /* number of job streams */ -int exit_status = 0; /* returned to parent */ -int sigpipe; /* pipe write error flag */ - -struct st_work { - char *cmd; /* name of command to run */ - char **av; /* arguments to command */ - char *input; /* standard input buffer */ - int inpsize; /* size of standard input buffer */ - char *outf; /* standard output (filename) */ -} work[MAXWORK]; - -struct { - int xmit; /* # characters sent */ - char *bp; /* std input buffer pointer */ - int blen; /* std input buffer length */ - int fd; /* stdin to command */ - int pid; /* child PID */ - char *line; /* start of input line */ - int firstjob; /* inital piece of work */ - int thisjob; /* current piece of work */ -} child[MAXCHILD], *cp; - -int main(argc, argv) -int argc; -char *argv[]; -{ - int i; - int l; - int fcopy = 0; /* fd for copy output */ - int master = 1; /* the REAL master, == 0 for clones */ - int nchild; /* no. of children for a clone to run */ - int done; /* count of children finished */ - int output; /* aggregate output char count for all - children */ - int c; - int thiswork = 0; /* next job stream to allocate */ - int nch; /* # characters to write */ - int written; /* # characters actully written */ - char logname[15]; /* name of the log file(s) */ - int pvec[2]; /* for pipes */ - char *p; - char *prog; /* my name */ - -#if ! debug - freopen("masterlog.00", "a", stderr); -#endif - prog = argv[0]; - while (argc > 1 && argv[1][0] == '-') { - p = &argv[1][1]; - argc--; - argv++; - while (*p) { - switch (*p) { - case 'r': - est_rate = atoi(argv[1]); - sscanf(argv[1], "%f", &est_rate); - if (est_rate <= 0) { - fprintf(stderr, "%s: bad rate, reset to %.2f chars/sec\n", prog, DEF_RATE); - est_rate = DEF_RATE; - } - argc--; - argv++; - break; - - case 'c': - fcopy = open(argv[1], 1); - if (fcopy < 0) - fcopy = creat(argv[1], 0600); - if (fcopy < 0) { - fprintf(stderr, "%s: cannot open copy file '%s'\n", - prog, argv[1]); - exit(2); - } - lseek(fcopy, 0L, 2); /* append at end of file */ - argc--; - argv++; - break; - - default: - fprintf(stderr, "%s: bad flag '%c'\n", prog, *p); - exit(4); - } - p++; - } - } - - if (argc < 2) { - fprintf(stderr, "%s: missing nusers\n", prog); - exit(4); - } - - nusers = atoi(argv[1]); - if (nusers < 1) { - fprintf(stderr, "%s: impossible nusers (%d<-%s)\n", prog, nusers, argv[1]); - exit(4); - } - fprintf(stderr, "%d Users\n", nusers); - argc--; - argv++; - - /* build job streams */ - getwork(); -#if debug - dumpwork(); -#endif - - /* clone copies of myself to run up to MAXCHILD jobs each */ - firstuser = MAXCHILD; - fprintf(stderr, "master pid %d\n", getpid()); - fflush(stderr); - while (nusers > MAXCHILD) { - fflush(stderr); - if (nusers >= 2*MAXCHILD) - /* the next clone must run MAXCHILD jobs */ - nchild = MAXCHILD; - else - /* the next clone must run the leftover jobs */ - nchild = nusers - MAXCHILD; - if ((l = fork()) == -1) { - /* fork failed */ - fatal("** clone fork failed **\n"); - goto bepatient; - } else if (l > 0) { - fprintf(stderr, "master clone pid %d\n", l); - /* I am the master with nchild fewer jobs to run */ - nusers -= nchild; - firstuser += MAXCHILD; - continue; - } else { - /* I am a clone, run MAXCHILD jobs */ -#if ! debug - sprintf(logname, "masterlog.%02d", firstuser/MAXCHILD); - freopen(logname, "w", stderr); -#endif - master = 0; - nusers = nchild; - break; - } - } - if (master) - firstuser = 0; - - close(0); - for (i = 0; i < nusers; i++ ) { - fprintf(stderr, "user %d job %d ", firstuser+i, thiswork); - if (pipe(pvec) == -1) { - /* this is fatal */ - fatal("** pipe failed **\n"); - goto bepatient; - } - fflush(stderr); - if ((child[i].pid = fork()) == 0) { - int fd; - /* the command */ - if (pvec[0] != 0) { - close(0); - dup(pvec[0]); - } -#if ! debug - sprintf(logname, "userlog.%02d", firstuser+i); - freopen(logname, "w", stderr); -#endif - for (fd = 3; fd < 24; fd++) - close(fd); - if (work[thiswork].outf[0] != '\0') { - /* redirect std output */ - char *q; - for (q = work[thiswork].outf; *q != '\n'; q++) ; - *q = '\0'; - if (freopen(work[thiswork].outf, "w", stdout) == NULL) { - fprintf(stderr, "makework: cannot open %s for std output\n", - work[thiswork].outf); - fflush(stderr); - } - *q = '\n'; - } - execv(work[thiswork].cmd, work[thiswork].av); - /* don't expect to get here! */ - fatal("** exec failed **\n"); - goto bepatient; - } - else if (child[i].pid == -1) { - fatal("** fork failed **\n"); - goto bepatient; - } - else { - close(pvec[0]); - child[i].fd = pvec[1]; - child[i].line = child[i].bp = work[thiswork].input; - child[i].blen = work[thiswork].inpsize; - child[i].thisjob = thiswork; - child[i].firstjob = thiswork; - fprintf(stderr, "pid %d pipe fd %d", child[i].pid, child[i].fd); - if (work[thiswork].outf[0] != '\0') { - char *q; - fprintf(stderr, " > "); - for (q=work[thiswork].outf; *q != '\n'; q++) - fputc(*q, stderr); - } - fputc('\n', stderr); - thiswork++; - if (thiswork >= nwork) - thiswork = 0; - } - } - fflush(stderr); - - srand(time(0)); - thres = 0; - done = output = 0; - for (i = 0; i < nusers; i++) { - if (child[i].blen == 0) - done++; - else - thres += est_rate * GRANULE; - } - est_rate = thres; - - signal(SIGALRM, onalarm); - signal(SIGPIPE, pipeerr); - alarm(GRANULE); - while (done < nusers) { - for (i = 0; i < nusers; i++) { - cp = &child[i]; - if (cp->xmit >= cp->blen) continue; - l = rand() % CHUNK + 1; /* 1-CHUNK chars */ - if (l == 0) continue; - if (cp->xmit + l > cp->blen) - l = cp->blen - cp->xmit; - p = cp->bp; - cp->bp += l; - cp->xmit += l; -#if debug - fprintf(stderr, "child %d, %d processed, %d to go\n", i, cp->xmit, cp->blen - cp->xmit); -#endif - while (p < cp->bp) { - if (*p == '\n' || (p == &cp->bp[-1] && cp->xmit >= cp->blen)) { - /* write it out */ - nch = p - cp->line + 1; - if ((written = write(cp->fd, cp->line, nch)) != nch) { - /* argh! */ - cp->line[nch] = '\0'; - fprintf(stderr, "user %d job %d cmd %s ", - firstuser+i, cp->thisjob, cp->line); - fprintf(stderr, "write(,,%d) returns %d\n", nch, written); - if (sigpipe) - fatal("** SIGPIPE error **\n"); - else - fatal("** write error **\n"); - goto bepatient; - - } - if (fcopy) - write(fcopy, cp->line, p - cp->line + 1); -#if debug - fprintf(stderr, "child %d gets \"", i); - { - char *q = cp->line; - while (q <= p) { - if (*q >= ' ' && *q <= '~') - fputc(*q, stderr); - else - fprintf(stderr, "\\%03o", *q); - q++; - } - } - fputc('"', stderr); -#endif - cp->line = &p[1]; - } - p++; - } - if (cp->xmit >= cp->blen) { - done++; - close(cp->fd); -#if debug - fprintf(stderr, "child %d, close std input\n", i); -#endif - } - output += l; - } - while (output > thres) { - pause(); -#if debug - fprintf(stderr, "after pause: output, thres, done %d %.2f %d\n", output, thres, done); -#endif - } - } - -bepatient: - alarm(0); -/**** - * If everything is going OK, we should simply be able to keep - * looping unitil 'wait' fails, however some descendent process may - * be in a state from which it can never exit, and so a timeout - * is used. - * 5 minutes should be ample, since the time to run all jobs is of - * the order of 5-10 minutes, however some machines are painfully slow, - * so the timeout has been set at 20 minutes (1200 seconds). - ****/ - signal(SIGALRM, grunt); - alarm(1200); - while ((c = wait(&l)) != -1) { - for (i = 0; i < nusers; i++) { - if (c == child[i].pid) { - fprintf(stderr, "user %d job %d pid %d done", firstuser+i, child[i].thisjob, c); - if (l != 0) { - if (l & 0x7f) - fprintf(stderr, " status %d", l & 0x7f); - if (l & 0xff00) - fprintf(stderr, " exit code %d", (l>>8) & 0xff); - exit_status = 4; - } - fputc('\n', stderr); - c = child[i].pid = -1; - break; - } - } - if (c != -1) { - fprintf(stderr, "master clone done, pid %d ", c); - if (l != 0) { - if (l & 0x7f) - fprintf(stderr, " status %d", l & 0x7f); - if (l & 0xff00) - fprintf(stderr, " exit code %d", (l>>8) & 0xff); - exit_status = 4; - } - fputc('\n', stderr); - } - } - alarm(0); - wrapup("Finished waiting ..."); - - exit(0); -} - -void onalarm(int foo) -{ - thres += est_rate; - signal(SIGALRM, onalarm); - alarm(GRANULE); -} - -void grunt() -{ - /* timeout after label "bepatient" in main */ - exit_status = 4; - wrapup("Timed out waiting for jobs to finish ..."); -} - -void pipeerr() -{ - sigpipe++; -} - -void wrapup(char *reason) -{ - int i; - int killed = 0; - fflush(stderr); - for (i = 0; i < nusers; i++) { - if (child[i].pid > 0 && kill(child[i].pid, SIGKILL) != -1) { - if (!killed) { - killed++; - fprintf(stderr, "%s\n", reason); - fflush(stderr); - } - fprintf(stderr, "user %d job %d pid %d killed off\n", firstuser+i, child[i].thisjob, child[i].pid); - fflush(stderr); - } - } - exit(exit_status); -} - -#define MAXLINE 512 -void getwork(void) -{ - int i; - int f; - int ac=0; - char *lp = (void *)0; - char *q = (void *)0; - struct st_work *w = (void *)0; - char line[MAXLINE]; - char c; - - while (fgets(line, MAXLINE, stdin) != NULL) { - if (nwork >= MAXWORK) { - fprintf(stderr, "Too many jobs specified, .. increase MAXWORK\n"); - exit(4); - } - w = &work[nwork]; - lp = line; - i = 1; - while (*lp && *lp != ' ') { - i++; - lp++; - } - w->cmd = (char *)malloc(i); - strncpy(w->cmd, line, i-1); - w->cmd[i-1] = '\0'; - w->inpsize = 0; - w->input = ""; - /* start to build arg list */ - ac = 2; - w->av = (char **)malloc(2*sizeof(char *)); - q = w->cmd; - while (*q) q++; - q--; - while (q >= w->cmd) { - if (*q == '/') { - q++; - break; - } - q--; - } - w->av[0] = q; - while (*lp) { - if (*lp == ' ') { - /* space */ - lp++; - continue; - } - else if (*lp == '<') { - /* standard input for this job */ - q = ++lp; - while (*lp && *lp != ' ') lp++; - c = *lp; - *lp = '\0'; - if ((f = open(q, 0)) == -1) { - fprintf(stderr, "cannot open input file (%s) for job %d\n", - q, nwork); - exit(4); - } - /* gobble input */ - w->input = (char *)malloc(512); - while ((i = read(f, &w->input[w->inpsize], 512)) > 0) { - w->inpsize += i; - w->input = (char *)realloc(w->input, w->inpsize+512); - } - w->input = (char *)realloc(w->input, w->inpsize); - close(f); - /* extract stdout file name from line beginning "C=" */ - w->outf = ""; - for (q = w->input; q < &w->input[w->inpsize-10]; q++) { - if (*q == '\n' && strncmp(&q[1], "C=", 2) == 0) { - w->outf = &q[3]; - break; - } - } -#if debug - if (*w->outf) { - fprintf(stderr, "stdout->"); - for (q=w->outf; *q != '\n'; q++) - fputc(*q, stderr); - fputc('\n', stderr); - } -#endif - } - else { - /* a command option */ - ac++; - w->av = (char **)realloc(w->av, ac*sizeof(char *)); - q = lp; - i = 1; - while (*lp && *lp != ' ') { - lp++; - i++; - } - w->av[ac-2] = (char *)malloc(i); - strncpy(w->av[ac-2], q, i-1); - w->av[ac-2][i-1] = '\0'; - } - } - w->av[ac-1] = (char *)0; - nwork++; - } -} - -#if debug -void dumpwork(void) -{ - int i; - int j; - - for (i = 0; i < nwork; i++) { - fprintf(stderr, "job %d: cmd: %s\n", i, work[i].cmd); - j = 0; - while (work[i].av[j]) { - fprintf(stderr, "argv[%d]: %s\n", j, work[i].av[j]); - j++; - } - fprintf(stderr, "input: %d chars text: ", work[i].inpsize); - if (work[i].input == (char *)0) - fprintf(stderr, "\n"); - else { - register char *pend; - char *p; - char c; - p = work[i].input; - while (*p) { - pend = p; - while (*pend && *pend != '\n') - pend++; - c = *pend; - *pend = '\0'; - fprintf(stderr, "%s\n", p); - *pend = c; - p = &pend[1]; - } - } - } -} -#endif - -void fatal(char *s) -{ - int i; - fprintf(stderr, s); - fflush(stderr); - perror("Reason?"); - fflush(stderr); - for (i = 0; i < nusers; i++) { - if (child[i].pid > 0 && kill(child[i].pid, SIGKILL) != -1) { - fprintf(stderr, "pid %d killed off\n", child[i].pid); - fflush(stderr); - } - } - exit_status = 4; -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/context1.c b/testcases/feature-test/oeaware/UnixBench/src/context1.c deleted file mode 100644 index d01abee04..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/context1.c +++ /dev/null @@ -1,111 +0,0 @@ - -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: context1.c SID: 3.3 5/15/91 19:30:18 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * $Header: context1.c,v 3.4 87/06/22 14:22:59 kjmcdonell Beta $ - * August 28, 1990 - changed timing routines--now returns total number of - * iterations in specified time period - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -char SCCSid[] = "@(#) @(#)context1.c:3.3 -- 5/15/91 19:30:18"; -/* - * Context switching via synchronized unbuffered pipe i/o - * - */ - -#include -#include -#include -#include "timeit.c" - -unsigned long iter; - -void report() -{ - fprintf(stderr, "COUNT|%lu|1|lps\n", iter); - exit(0); -} - -int main(argc, argv) -int argc; -char *argv[]; -{ - int duration; - unsigned long check; - int p1[2], p2[2]; - - if (argc != 2) { - fprintf(stderr, "Usage: context duration\n"); - exit(1); - } - - duration = atoi(argv[1]); - - /* set up alarm call */ - iter = 0; - wake_me(duration, report); - - if (pipe(p1) || pipe(p2)) { - perror("pipe create failed"); - exit(1); - } - - if (fork()) { /* parent process */ - /* master, write p1 & read p2 */ - close(p1[0]); close(p2[1]); - while (1) { - if (write(p1[1], (char *)&iter, sizeof(iter)) != sizeof(iter)) { - if ((errno != 0) && (errno != EINTR)) - perror("master write failed"); - exit(1); - } - if (read(p2[0], (char *)&check, sizeof(check)) != sizeof(check)) { - if ((errno != 0) && (errno != EINTR)) - perror("master read failed"); - exit(1); - } - if (check != iter) { - fprintf(stderr, "Master sync error: expect %lu, got %lu\n", - iter, check); - exit(2); - } - iter++; - } - } - else { /* child process */ - unsigned long iter1; - - iter1 = 0; - /* slave, read p1 & write p2 */ - close(p1[1]); close(p2[0]); - while (1) { - if (read(p1[0], (char *)&check, sizeof(check)) != sizeof(check)) { - if ((errno != 0) && (errno != EINTR)) - perror("slave read failed"); - exit(1); - } - if (check != iter1) { - fprintf(stderr, "Slave sync error: expect %lu, got %lu\n", - iter, check); - exit(2); - } - if (write(p2[1], (char *)&iter1, sizeof(iter1)) != sizeof(check)) { - if ((errno != 0) && (errno != EINTR)) - perror("slave write failed"); - exit(1); - } - iter1++; - } - } -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/dhry.h b/testcases/feature-test/oeaware/UnixBench/src/dhry.h deleted file mode 100644 index 34a4ada6a..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/dhry.h +++ /dev/null @@ -1,435 +0,0 @@ -/***************************************************************************** - * The BYTE UNIX Benchmarks - Release 3 - * Module: dhry.h SID: 3.4 5/15/91 19:30:21 - * - ***************************************************************************** - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ***************************************************************************** - * Modification Log: - * addapted from: - * - * - * "DHRYSTONE" Benchmark Program - * ----------------------------- - * - * Version: C, Version 2.1 - * - * File: dhry.h (part 1 of 3) - * - * Date: May 25, 1988 - * - * Author: Reinhold P. Weicker - * Siemens AG, AUT E 51 - * Postfach 3220 - * 8520 Erlangen - * Germany (West) - * Phone: [+49]-9131-7-20330 - * (8-17 Central European Time) - * Usenet: ..!mcvax!unido!estevax!weicker - * - * Original Version (in Ada) published in - * "Communications of the ACM" vol. 27., no. 10 (Oct. 1984), - * pp. 1013 - 1030, together with the statistics - * on which the distribution of statements etc. is based. - * - * In this C version, the following C library functions are used: - * - strcpy, strcmp (inside the measurement loop) - * - printf, scanf (outside the measurement loop) - * In addition, Berkeley UNIX system calls "times ()" or "time ()" - * are used for execution time measurement. For measurements - * on other systems, these calls have to be changed. - * - * Collection of Results: - * Reinhold Weicker (address see above) and - * - * Rick Richardson - * PC Research. Inc. - * 94 Apple Orchard Drive - * Tinton Falls, NJ 07724 - * Phone: (201) 834-1378 (9-17 EST) - * Usenet: ...!seismo!uunet!pcrat!rick - * - * Please send results to Rick Richardson and/or Reinhold Weicker. - * Complete information should be given on hardware and software used. - * Hardware information includes: Machine type, CPU, type and size - * of caches; for microprocessors: clock frequency, memory speed - * (number of wait states). - * Software information includes: Compiler (and runtime library) - * manufacturer and version, compilation switches, OS version. - * The Operating System version may give an indication about the - * compiler; Dhrystone itself performs no OS calls in the measurement loop. - * - * The complete output generated by the program should be mailed - * such that at least some checks for correctness can be made. - * - *************************************************************************** - * - * History: This version C/2.1 has been made for two reasons: - * - * 1) There is an obvious need for a common C version of - * Dhrystone, since C is at present the most popular system - * programming language for the class of processors - * (microcomputers, minicomputers) where Dhrystone is used most. - * There should be, as far as possible, only one C version of - * Dhrystone such that results can be compared without - * restrictions. In the past, the C versions distributed - * by Rick Richardson (Version 1.1) and by Reinhold Weicker - * had small (though not significant) differences. - * - * 2) As far as it is possible without changes to the Dhrystone - * statistics, optimizing compilers should be prevented from - * removing significant statements. - * - * This C version has been developed in cooperation with - * Rick Richardson (Tinton Falls, NJ), it incorporates many - * ideas from the "Version 1.1" distributed previously by - * him over the UNIX network Usenet. - * I also thank Chaim Benedelac (National Semiconductor), - * David Ditzel (SUN), Earl Killian and John Mashey (MIPS), - * Alan Smith and Rafael Saavedra-Barrera (UC at Berkeley) - * for their help with comments on earlier versions of the - * benchmark. - * - * Changes: In the initialization part, this version follows mostly - * Rick Richardson's version distributed via Usenet, not the - * version distributed earlier via floppy disk by Reinhold Weicker. - * As a concession to older compilers, names have been made - * unique within the first 8 characters. - * Inside the measurement loop, this version follows the - * version previously distributed by Reinhold Weicker. - * - * At several places in the benchmark, code has been added, - * but within the measurement loop only in branches that - * are not executed. The intention is that optimizing compilers - * should be prevented from moving code out of the measurement - * loop, or from removing code altogether. Since the statements - * that are executed within the measurement loop have NOT been - * changed, the numbers defining the "Dhrystone distribution" - * (distribution of statements, operand types and locality) - * still hold. Except for sophisticated optimizing compilers, - * execution times for this version should be the same as - * for previous versions. - * - * Since it has proven difficult to subtract the time for the - * measurement loop overhead in a correct way, the loop check - * has been made a part of the benchmark. This does have - * an impact - though a very minor one - on the distribution - * statistics which have been updated for this version. - * - * All changes within the measurement loop are described - * and discussed in the companion paper "Rationale for - * Dhrystone version 2". - * - * Because of the self-imposed limitation that the order and - * distribution of the executed statements should not be - * changed, there are still cases where optimizing compilers - * may not generate code for some statements. To a certain - * degree, this is unavoidable for small synthetic benchmarks. - * Users of the benchmark are advised to check code listings - * whether code is generated for all statements of Dhrystone. - * - * Version 2.1 is identical to version 2.0 distributed via - * the UNIX network Usenet in March 1988 except that it corrects - * some minor deficiencies that were found by users of version 2.0. - * The only change within the measurement loop is that a - * non-executed "else" part was added to the "if" statement in - * Func_3, and a non-executed "else" part removed from Proc_3. - * - *************************************************************************** - * - * Defines: The following "Defines" are possible: - * -DREG=register (default: Not defined) - * As an approximation to what an average C programmer - * might do, the "register" storage class is applied - * (if enabled by -DREG=register) - * - for local variables, if they are used (dynamically) - * five or more times - * - for parameters if they are used (dynamically) - * six or more times - * Note that an optimal "register" strategy is - * compiler-dependent, and that "register" declarations - * do not necessarily lead to faster execution. - * -DNOSTRUCTASSIGN (default: Not defined) - * Define if the C compiler does not support - * assignment of structures. - * -DNOENUMS (default: Not defined) - * Define if the C compiler does not support - * enumeration types. - * -DTIMES (default) - * -DTIME - * The "times" function of UNIX (returning process times) - * or the "time" function (returning wallclock time) - * is used for measurement. - * For single user machines, "time ()" is adequate. For - * multi-user machines where you cannot get single-user - * access, use the "times ()" function. If you have - * neither, use a stopwatch in the dead of night. - * "printf"s are provided marking the points "Start Timer" - * and "Stop Timer". DO NOT use the UNIX "time(1)" - * command, as this will measure the total time to - * run this program, which will (erroneously) include - * the time to allocate storage (malloc) and to perform - * the initialization. - * -DHZ=nnn - * In Berkeley UNIX, the function "times" returns process - * time in 1/HZ seconds, with HZ = 60 for most systems. - * CHECK YOUR SYSTEM DESCRIPTION BEFORE YOU JUST APPLY - * A VALUE. - * - *************************************************************************** - * - * Compilation model and measurement (IMPORTANT): - * - * This C version of Dhrystone consists of three files: - * - dhry.h (this file, containing global definitions and comments) - * - dhry_1.c (containing the code corresponding to Ada package Pack_1) - * - dhry_2.c (containing the code corresponding to Ada package Pack_2) - * - * The following "ground rules" apply for measurements: - * - Separate compilation - * - No procedure merging - * - Otherwise, compiler optimizations are allowed but should be indicated - * - Default results are those without register declarations - * See the companion paper "Rationale for Dhrystone Version 2" for a more - * detailed discussion of these ground rules. - * - * For 16-Bit processors (e.g. 80186, 80286), times for all compilation - * models ("small", "medium", "large" etc.) should be given if possible, - * together with a definition of these models for the compiler system used. - * - ************************************************************************** - * - * Dhrystone (C version) statistics: - * - * [Comment from the first distribution, updated for version 2. - * Note that because of language differences, the numbers are slightly - * different from the Ada version.] - * - * The following program contains statements of a high level programming - * language (here: C) in a distribution considered representative: - * - * assignments 52 (51.0 %) - * control statements 33 (32.4 %) - * procedure, function calls 17 (16.7 %) - * - * 103 statements are dynamically executed. The program is balanced with - * respect to the three aspects: - * - * - statement type - * - operand type - * - operand locality - * operand global, local, parameter, or constant. - * - * The combination of these three aspects is balanced only approximately. - * - * 1. Statement Type: - * ----------------- number - * - * V1 = V2 9 - * (incl. V1 = F(..) - * V = Constant 12 - * Assignment, 7 - * with array element - * Assignment, 6 - * with record component - * -- - * 34 34 - * - * X = Y +|-|"&&"|"|" Z 5 - * X = Y +|-|"==" Constant 6 - * X = X +|- 1 3 - * X = Y *|/ Z 2 - * X = Expression, 1 - * two operators - * X = Expression, 1 - * three operators - * -- - * 18 18 - * - * if .... 14 - * with "else" 7 - * without "else" 7 - * executed 3 - * not executed 4 - * for ... 7 | counted every time - * while ... 4 | the loop condition - * do ... while 1 | is evaluated - * switch ... 1 - * break 1 - * declaration with 1 - * initialization - * -- - * 34 34 - * - * P (...) procedure call 11 - * user procedure 10 - * library procedure 1 - * X = F (...) - * function call 6 - * user function 5 - * library function 1 - * -- - * 17 17 - * --- - * 103 - * - * The average number of parameters in procedure or function calls - * is 1.82 (not counting the function values as implicit parameters). - * - * - * 2. Operators - * ------------ - * number approximate - * percentage - * - * Arithmetic 32 50.8 - * - * + 21 33.3 - * - 7 11.1 - * * 3 4.8 - * / (int div) 1 1.6 - * - * Comparison 27 42.8 - * - * == 9 14.3 - * /= 4 6.3 - * > 1 1.6 - * < 3 4.8 - * >= 1 1.6 - * <= 9 14.3 - * - * Logic 4 6.3 - * - * && (AND-THEN) 1 1.6 - * | (OR) 1 1.6 - * ! (NOT) 2 3.2 - * - * -- ----- - * 63 100.1 - * - * - * 3. Operand Type (counted once per operand reference): - * --------------- - * number approximate - * percentage - * - * Integer 175 72.3 % - * Character 45 18.6 % - * Pointer 12 5.0 % - * String30 6 2.5 % - * Array 2 0.8 % - * Record 2 0.8 % - * --- ------- - * 242 100.0 % - * - * When there is an access path leading to the final operand (e.g. a record - * component), only the final data type on the access path is counted. - * - * - * 4. Operand Locality: - * ------------------- - * number approximate - * percentage - * - * local variable 114 47.1 % - * global variable 22 9.1 % - * parameter 45 18.6 % - * value 23 9.5 % - * reference 22 9.1 % - * function result 6 2.5 % - * constant 55 22.7 % - * --- ------- - * 242 100.0 % - * - * - * The program does not compute anything meaningful, but it is syntactically - * and semantically correct. All variables have a value assigned to them - * before they are used as a source operand. - * - * There has been no explicit effort to account for the effects of a - * cache, or to balance the use of long or short displacements for code or - * data. - * - *************************************************************************** - */ - - -/* Compiler and system dependent definitions: */ - -#ifndef TIME -#define TIMES -#endif - /* Use times(2) time function unless */ - /* explicitly defined otherwise */ - -#ifdef TIMES -#include -#include - /* for "times" */ -#endif - -#define Mic_secs_Per_Second 1000000.0 - /* Berkeley UNIX C returns process times in seconds/HZ */ - -#ifdef NOSTRUCTASSIGN -#define structassign(d, s) memcpy(&(d), &(s), sizeof(d)) -#else -#define structassign(d, s) d = s -#endif - -#ifdef NOENUM -#define Ident_1 0 -#define Ident_2 1 -#define Ident_3 2 -#define Ident_4 3 -#define Ident_5 4 - typedef int Enumeration; -#else - typedef enum {Ident_1, Ident_2, Ident_3, Ident_4, Ident_5} - Enumeration; -#endif - /* for boolean and enumeration types in Ada, Pascal */ - -/* General definitions: */ - -#include - /* for strcpy, strcmp */ - -#define Null 0 - /* Value of a Null pointer */ -#define true 1 -#define false 0 - -typedef int One_Thirty; -typedef int One_Fifty; -typedef char Capital_Letter; -typedef int Boolean; -typedef char Str_30 [31]; -typedef int Arr_1_Dim [50]; -typedef int Arr_2_Dim [50] [50]; - -typedef struct record - { - struct record *Ptr_Comp; - Enumeration Discr; - union { - struct { - Enumeration Enum_Comp; - int Int_Comp; - char Str_Comp [31]; - } var_1; - struct { - Enumeration E_Comp_2; - char Str_2_Comp [31]; - } var_2; - struct { - char Ch_1_Comp; - char Ch_2_Comp; - } var_3; - } variant; - } Rec_Type, *Rec_Pointer; - diff --git a/testcases/feature-test/oeaware/UnixBench/src/dhry_1.c b/testcases/feature-test/oeaware/UnixBench/src/dhry_1.c deleted file mode 100644 index 99c846920..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/dhry_1.c +++ /dev/null @@ -1,431 +0,0 @@ -/***************************************************************************** - * The BYTE UNIX Benchmarks - Release 3 - * Module: dhry_1.c SID: 3.4 5/15/91 19:30:21 - * - ***************************************************************************** - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ***************************************************************************** - * - * *** WARNING **** With BYTE's modifications applied, results obtained with - * ******* this version of the Dhrystone program may not be applicable - * to other versions. - * - * Modification Log: - * 10/22/97 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - * Adapted from: - * - * "DHRYSTONE" Benchmark Program - * ----------------------------- - * - * Version: C, Version 2.1 - * - * File: dhry_1.c (part 2 of 3) - * - * Date: May 25, 1988 - * - * Author: Reinhold P. Weicker - * - ***************************************************************************/ -char SCCSid[] = "@(#) @(#)dhry_1.c:3.4 -- 5/15/91 19:30:21"; - -#include -#include -#include -#include "dhry.h" -#include "timeit.c" - -unsigned long Run_Index; - -void report() -{ - fprintf(stderr,"COUNT|%ld|1|lps\n", Run_Index); - exit(0); -} - -/* Global Variables: */ - -Rec_Pointer Ptr_Glob, - Next_Ptr_Glob; -int Int_Glob; -Boolean Bool_Glob; -char Ch_1_Glob, - Ch_2_Glob; -int Arr_1_Glob [50]; -int Arr_2_Glob [50] [50]; - -Enumeration Func_1 (); - /* forward declaration necessary since Enumeration may not simply be int */ - -#ifndef REG - Boolean Reg = false; -#define REG - /* REG becomes defined as empty */ - /* i.e. no register variables */ -#else - Boolean Reg = true; -#endif - -/* variables for time measurement: */ - -#ifdef TIMES -struct tms time_info; -extern int times (); - /* see library function "times" */ -#define Too_Small_Time 120 - /* Measurements should last at least about 2 seconds */ -#endif -#ifdef TIME -extern long time(); - /* see library function "time" */ -#define Too_Small_Time 2 - /* Measurements should last at least 2 seconds */ -#endif - -long Begin_Time, - End_Time, - User_Time; -float Microseconds, - Dhrystones_Per_Second; - -/* end of variables for time measurement */ - -void Proc_1 (REG Rec_Pointer Ptr_Val_Par); -void Proc_2 (One_Fifty *Int_Par_Ref); -void Proc_3 (Rec_Pointer *Ptr_Ref_Par); -void Proc_4 (void); -void Proc_5 (void); - - -extern Boolean Func_2(Str_30, Str_30); -extern void Proc_6(Enumeration, Enumeration *); -extern void Proc_7(One_Fifty, One_Fifty, One_Fifty *); -extern void Proc_8(Arr_1_Dim, Arr_2_Dim, int, int); - -int main (argc, argv) -int argc; -char *argv[]; - /* main program, corresponds to procedures */ - /* Main and Proc_0 in the Ada version */ -{ - int duration; - One_Fifty Int_1_Loc; - REG One_Fifty Int_2_Loc; - One_Fifty Int_3_Loc; - REG char Ch_Index; - Enumeration Enum_Loc; - Str_30 Str_1_Loc; - Str_30 Str_2_Loc; - - /* Initializations */ - - Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type)); - Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type)); - - Ptr_Glob->Ptr_Comp = Next_Ptr_Glob; - Ptr_Glob->Discr = Ident_1; - Ptr_Glob->variant.var_1.Enum_Comp = Ident_3; - Ptr_Glob->variant.var_1.Int_Comp = 40; - strcpy (Ptr_Glob->variant.var_1.Str_Comp, - "DHRYSTONE PROGRAM, SOME STRING"); - strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING"); - - Arr_2_Glob [8][7] = 10; - /* Was missing in published program. Without this statement, */ - /* Arr_2_Glob [8][7] would have an undefined value. */ - /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */ - /* overflow may occur for this array element. */ - -#ifdef PRATTLE - printf ("\n"); - printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n"); - printf ("\n"); - if (Reg) - { - printf ("Program compiled with 'register' attribute\n"); - printf ("\n"); - } - else - { - printf ("Program compiled without 'register' attribute\n"); - printf ("\n"); - } - printf ("Please give the number of runs through the benchmark: "); - { - int n; - scanf ("%d", &n); - Number_Of_Runs = n; - } - printf ("\n"); - - printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs); -#endif /* PRATTLE */ - - if (argc != 2) { - fprintf(stderr, "Usage: %s duration\n", argv[0]); - exit(1); - } - - duration = atoi(argv[1]); - Run_Index = 0; - wake_me(duration, report); - - /***************/ - /* Start timer */ - /***************/ - -#ifdef SELF_TIMED -#ifdef TIMES - times (&time_info); - Begin_Time = (long) time_info.tms_utime; -#endif -#ifdef TIME - Begin_Time = time ( (long *) 0); -#endif -#endif /* SELF_TIMED */ - - for (Run_Index = 1; ; ++Run_Index) - { - - Proc_5(); - Proc_4(); - /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */ - Int_1_Loc = 2; - Int_2_Loc = 3; - strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING"); - Enum_Loc = Ident_2; - Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc); - /* Bool_Glob == 1 */ - while (Int_1_Loc < Int_2_Loc) /* loop body executed once */ - { - Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc; - /* Int_3_Loc == 7 */ - Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc); - /* Int_3_Loc == 7 */ - Int_1_Loc += 1; - } /* while */ - /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */ - Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc); - /* Int_Glob == 5 */ - Proc_1 (Ptr_Glob); - for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index) - /* loop body executed twice */ - { - if (Enum_Loc == Func_1 (Ch_Index, 'C')) - /* then, not executed */ - { - Proc_6 (Ident_1, &Enum_Loc); - strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING"); - Int_2_Loc = Run_Index; - Int_Glob = Run_Index; - } - } - /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */ - Int_2_Loc = Int_2_Loc * Int_1_Loc; - Int_1_Loc = Int_2_Loc / Int_3_Loc; - Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc; - /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */ - Proc_2 (&Int_1_Loc); - /* Int_1_Loc == 5 */ - - } /* loop "for Run_Index" */ - - /**************/ - /* Stop timer */ - /**************/ -#ifdef SELF_TIMED -#ifdef TIMES - times (&time_info); - End_Time = (long) time_info.tms_utime; -#endif -#ifdef TIME - End_Time = time ( (long *) 0); -#endif -#endif /* SELF_TIMED */ - - /* BYTE version never executes this stuff */ -#ifdef SELF_TIMED - printf ("Execution ends\n"); - printf ("\n"); - printf ("Final values of the variables used in the benchmark:\n"); - printf ("\n"); - printf ("Int_Glob: %d\n", Int_Glob); - printf (" should be: %d\n", 5); - printf ("Bool_Glob: %d\n", Bool_Glob); - printf (" should be: %d\n", 1); - printf ("Ch_1_Glob: %c\n", Ch_1_Glob); - printf (" should be: %c\n", 'A'); - printf ("Ch_2_Glob: %c\n", Ch_2_Glob); - printf (" should be: %c\n", 'B'); - printf ("Arr_1_Glob[8]: %d\n", Arr_1_Glob[8]); - printf (" should be: %d\n", 7); - printf ("Arr_2_Glob[8][7]: %d\n", Arr_2_Glob[8][7]); - printf (" should be: Number_Of_Runs + 10\n"); - printf ("Ptr_Glob->\n"); - printf (" Ptr_Comp: %d\n", (int) Ptr_Glob->Ptr_Comp); - printf (" should be: (implementation-dependent)\n"); - printf (" Discr: %d\n", Ptr_Glob->Discr); - printf (" should be: %d\n", 0); - printf (" Enum_Comp: %d\n", Ptr_Glob->variant.var_1.Enum_Comp); - printf (" should be: %d\n", 2); - printf (" Int_Comp: %d\n", Ptr_Glob->variant.var_1.Int_Comp); - printf (" should be: %d\n", 17); - printf (" Str_Comp: %s\n", Ptr_Glob->variant.var_1.Str_Comp); - printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n"); - printf ("Next_Ptr_Glob->\n"); - printf (" Ptr_Comp: %d\n", (int) Next_Ptr_Glob->Ptr_Comp); - printf (" should be: (implementation-dependent), same as above\n"); - printf (" Discr: %d\n", Next_Ptr_Glob->Discr); - printf (" should be: %d\n", 0); - printf (" Enum_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp); - printf (" should be: %d\n", 1); - printf (" Int_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp); - printf (" should be: %d\n", 18); - printf (" Str_Comp: %s\n", - Next_Ptr_Glob->variant.var_1.Str_Comp); - printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n"); - printf ("Int_1_Loc: %d\n", Int_1_Loc); - printf (" should be: %d\n", 5); - printf ("Int_2_Loc: %d\n", Int_2_Loc); - printf (" should be: %d\n", 13); - printf ("Int_3_Loc: %d\n", Int_3_Loc); - printf (" should be: %d\n", 7); - printf ("Enum_Loc: %d\n", Enum_Loc); - printf (" should be: %d\n", 1); - printf ("Str_1_Loc: %s\n", Str_1_Loc); - printf (" should be: DHRYSTONE PROGRAM, 1'ST STRING\n"); - printf ("Str_2_Loc: %s\n", Str_2_Loc); - printf (" should be: DHRYSTONE PROGRAM, 2'ND STRING\n"); - printf ("\n"); - - User_Time = End_Time - Begin_Time; - - if (User_Time < Too_Small_Time) - { - printf ("Measured time too small to obtain meaningful results\n"); - printf ("Please increase number of runs\n"); - printf ("\n"); - } - else - { -#ifdef TIME - Microseconds = (float) User_Time * Mic_secs_Per_Second - / (float) Number_Of_Runs; - Dhrystones_Per_Second = (float) Number_Of_Runs / (float) User_Time; -#else - Microseconds = (float) User_Time * Mic_secs_Per_Second - / ((float) HZ * ((float) Number_Of_Runs)); - Dhrystones_Per_Second = ((float) HZ * (float) Number_Of_Runs) - / (float) User_Time; -#endif - printf ("Microseconds for one run through Dhrystone: "); - printf ("%6.1f \n", Microseconds); - printf ("Dhrystones per Second: "); - printf ("%6.1f \n", Dhrystones_Per_Second); - printf ("\n"); - } -#endif /* SELF_TIMED */ -} - - -void Proc_1 (REG Rec_Pointer Ptr_Val_Par) - /* executed once */ -{ - REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; - /* == Ptr_Glob_Next */ - /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */ - /* corresponds to "rename" in Ada, "with" in Pascal */ - - structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); - Ptr_Val_Par->variant.var_1.Int_Comp = 5; - Next_Record->variant.var_1.Int_Comp - = Ptr_Val_Par->variant.var_1.Int_Comp; - Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp; - Proc_3 (&Next_Record->Ptr_Comp); - /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp - == Ptr_Glob->Ptr_Comp */ - if (Next_Record->Discr == Ident_1) - /* then, executed */ - { - Next_Record->variant.var_1.Int_Comp = 6; - Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, - &Next_Record->variant.var_1.Enum_Comp); - Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp; - Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, - &Next_Record->variant.var_1.Int_Comp); - } - else /* not executed */ - structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp); -} /* Proc_1 */ - - -void Proc_2 (One_Fifty *Int_Par_Ref) - /* executed once */ - /* *Int_Par_Ref == 1, becomes 4 */ -{ - One_Fifty Int_Loc; - Enumeration Enum_Loc; - - Enum_Loc = 0; - - Int_Loc = *Int_Par_Ref + 10; - do /* executed once */ - if (Ch_1_Glob == 'A') - /* then, executed */ - { - Int_Loc -= 1; - *Int_Par_Ref = Int_Loc - Int_Glob; - Enum_Loc = Ident_1; - } /* if */ - while (Enum_Loc != Ident_1); /* true */ -} /* Proc_2 */ - - -void Proc_3 (Rec_Pointer *Ptr_Ref_Par) - /* executed once */ - /* Ptr_Ref_Par becomes Ptr_Glob */ -{ - if (Ptr_Glob != Null) - /* then, executed */ - *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp; - Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp); -} /* Proc_3 */ - - -void Proc_4 (void) /* without parameters */ - /* executed once */ -{ - Boolean Bool_Loc; - - Bool_Loc = Ch_1_Glob == 'A'; - Bool_Glob = Bool_Loc | Bool_Glob; - Ch_2_Glob = 'B'; -} /* Proc_4 */ - -void Proc_5 (void) /* without parameters */ -/*******/ - /* executed once */ -{ - Ch_1_Glob = 'A'; - Bool_Glob = false; -} /* Proc_5 */ - - - /* Procedure for the assignment of structures, */ - /* if the C compiler doesn't support this feature */ -#ifdef NOSTRUCTASSIGN -memcpy (d, s, l) -register char *d; -register char *s; -register int l; -{ - while (l--) *d++ = *s++; -} -#endif - - diff --git a/testcases/feature-test/oeaware/UnixBench/src/dhry_2.c b/testcases/feature-test/oeaware/UnixBench/src/dhry_2.c deleted file mode 100644 index 140161f04..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/dhry_2.c +++ /dev/null @@ -1,209 +0,0 @@ -/***************************************************************************** - * The BYTE UNIX Benchmarks - Release 3 - * Module: dhry_2.c SID: 3.4 5/15/91 19:30:22 - * - ***************************************************************************** - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ***************************************************************************** - * Modification Log: - * 10/22/97 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - * Adapted from: - * - * "DHRYSTONE" Benchmark Program - * ----------------------------- - * - * **** WARNING **** See warning in n.dhry_1.c - * - * Version: C, Version 2.1 - * - * File: dhry_2.c (part 3 of 3) - * - * Date: May 25, 1988 - * - * Author: Reinhold P. Weicker - * - ****************************************************************************/ -/* SCCSid is defined in dhry_1.c */ - -#include -#include "dhry.h" - -#ifndef REG -#define REG - /* REG becomes defined as empty */ - /* i.e. no register variables */ -#endif - -extern int Int_Glob; -extern char Ch_1_Glob; - -void Proc_6(Enumeration, Enumeration *); -void Proc_7(One_Fifty, One_Fifty, One_Fifty *); -void Proc_8(Arr_1_Dim, Arr_2_Dim, int, int); -Enumeration Func_1(Capital_Letter, Capital_Letter); -Boolean Func_2(Str_30, Str_30); -Boolean Func_3(Enumeration); - -void Proc_6 (Enumeration Enum_Val_Par, Enumeration *Enum_Ref_Par) - /* executed once */ - /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */ -{ - *Enum_Ref_Par = Enum_Val_Par; - if (! Func_3 (Enum_Val_Par)) - /* then, not executed */ - *Enum_Ref_Par = Ident_4; - switch (Enum_Val_Par) - { - case Ident_1: - *Enum_Ref_Par = Ident_1; - break; - case Ident_2: - if (Int_Glob > 100) - /* then */ - *Enum_Ref_Par = Ident_1; - else *Enum_Ref_Par = Ident_4; - break; - case Ident_3: /* executed */ - *Enum_Ref_Par = Ident_2; - break; - case Ident_4: break; - case Ident_5: - *Enum_Ref_Par = Ident_3; - break; - } /* switch */ -} /* Proc_6 */ - -void Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref) -One_Fifty Int_1_Par_Val; -One_Fifty Int_2_Par_Val; -One_Fifty *Int_Par_Ref; -/**********************************************/ - /* executed three times */ - /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */ - /* Int_Par_Ref becomes 7 */ - /* second call: Int_1_Par_Val == 10, Int_2_Par_Val == 5, */ - /* Int_Par_Ref becomes 17 */ - /* third call: Int_1_Par_Val == 6, Int_2_Par_Val == 10, */ - /* Int_Par_Ref becomes 18 */ -{ - One_Fifty Int_Loc; - - Int_Loc = Int_1_Par_Val + 2; - *Int_Par_Ref = Int_2_Par_Val + Int_Loc; -} /* Proc_7 */ - - -void Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val) -/*********************************************************************/ - /* executed once */ - /* Int_Par_Val_1 == 3 */ - /* Int_Par_Val_2 == 7 */ -Arr_1_Dim Arr_1_Par_Ref; -Arr_2_Dim Arr_2_Par_Ref; -int Int_1_Par_Val; -int Int_2_Par_Val; -{ - REG One_Fifty Int_Index; - REG One_Fifty Int_Loc; - - Int_Loc = Int_1_Par_Val + 5; - Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val; - Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc]; - Arr_1_Par_Ref [Int_Loc+30] = Int_Loc; - for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index) - Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc; - Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1; - Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc]; - Int_Glob = 5; -} /* Proc_8 */ - - -Enumeration Func_1 (Capital_Letter Ch_1_Par_Val, Capital_Letter Ch_2_Par_Val) -/*************************************************/ - /* executed three times */ - /* first call: Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R' */ - /* second call: Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C' */ - /* third call: Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C' */ -{ - Capital_Letter Ch_1_Loc; - Capital_Letter Ch_2_Loc; - - Ch_1_Loc = Ch_1_Par_Val; - Ch_2_Loc = Ch_1_Loc; - if (Ch_2_Loc != Ch_2_Par_Val) - /* then, executed */ - return (Ident_1); - else /* not executed */ - { - Ch_1_Glob = Ch_1_Loc; - return (Ident_2); - } -} /* Func_1 */ - - - -Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref) -/*************************************************/ - /* executed once */ - /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */ - /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */ - -Str_30 Str_1_Par_Ref; -Str_30 Str_2_Par_Ref; -{ - REG One_Thirty Int_Loc; - Capital_Letter Ch_Loc; - - Ch_Loc = 'A'; - Int_Loc = 2; - while (Int_Loc <= 2) /* loop body executed once */ - if (Func_1 (Str_1_Par_Ref[Int_Loc], - Str_2_Par_Ref[Int_Loc+1]) == Ident_1) - /* then, executed */ - { - Ch_Loc = 'A'; - Int_Loc += 1; - } /* if, while */ - if (Ch_Loc >= 'W' && Ch_Loc < 'Z') - /* then, not executed */ - Int_Loc = 7; - if (Ch_Loc == 'R') - /* then, not executed */ - return (true); - else /* executed */ - { - if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0) - /* then, not executed */ - { - Int_Loc += 7; - Int_Glob = Int_Loc; - return (true); - } - else /* executed */ - return (false); - } /* if Ch_Loc */ -} /* Func_2 */ - - -Boolean Func_3 (Enum_Par_Val) -/***************************/ - /* executed once */ - /* Enum_Par_Val == Ident_3 */ -Enumeration Enum_Par_Val; -{ - Enumeration Enum_Loc; - - Enum_Loc = Enum_Par_Val; - if (Enum_Loc == Ident_3) - /* then, executed */ - return (true); - else /* not executed */ - return (false); -} /* Func_3 */ - diff --git a/testcases/feature-test/oeaware/UnixBench/src/dummy.c b/testcases/feature-test/oeaware/UnixBench/src/dummy.c deleted file mode 100644 index 1fbc936c8..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/dummy.c +++ /dev/null @@ -1,319 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: dummy.c SID: 3.3 5/15/91 19:30:19 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * 10/22/97 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -/* - * Hacked up C program for use in the standard shell.? scripts of - * the multiuser test. This is based upon makework.c, and is typically - * edited using edscript.2 before compilation. - * - * $Header: dummy.c,v 3.4 87/06/23 15:54:53 kjmcdonell Beta $ - */ -char SCCSid[] = "@(#) @(#)dummy.c:3.3 -- 5/15/91 19:30:19"; - -#include -#include - -#define DEF_RATE 5.0 -#define GRANULE 5 -#define CHUNK 60 -#define MAXCHILD 12 -#define MAXWORK 10 - -float thres; -float est_rate = DEF_RATE; -int nusers; /* number of concurrent users to be simulated by - * this process */ -int firstuser; /* ordinal identification of first user for this - * process */ -int nwork = 0; /* number of job streams */ -int exit_status = 0; /* returned to parent */ -int sigpipe; /* pipe write error flag */ - -struct st_work { - char *cmd; /* name of command to run */ - char **av; /* arguments to command */ - char *input; /* standard input buffer */ - int inpsize; /* size of standard input buffer */ -} work[MAXWORK]; - -struct { - int xmit; /* # characters sent */ - char *bp; /* std input buffer pointer */ - int blen; /* std input buffer length */ - int fd; /* stdin to command */ - int pid; /* child PID */ - char *line; /* start of input line */ - int firstjob; /* inital piece of work */ - int thisjob; /* current piece of work */ -} child[MAXCHILD], *cp; - -main(argc, argv) -int argc; -char *argv[]; -{ - int i; - int l; - int fcopy = 0; /* fd for copy output */ - int master = 1; /* the REAL master, == 0 for clones */ - int nchild; /* no. of children for a clone to run */ - int done; /* count of children finished */ - int output; /* aggregate output char count for all - children */ - int c; - int thiswork = 0; /* next job stream to allocate */ - int nch; /* # characters to write */ - int written; /* # characters actully written */ - char logname[15]; /* name of the log file(s) */ - void onalarm(void); - void pipeerr(void); - void wrapup(void); - void grunt(void); - char *malloc(); - int pvec[2]; /* for pipes */ - char *p; - char *prog; /* my name */ - -#if ! debug - freopen("masterlog.00", "a", stderr); -#endif - fprintf(stderr, "*** New Run *** "); - prog = argv[0]; - while (argc > 1 && argv[1][0] == '-') { - p = &argv[1][1]; - argc--; - argv++; - while (*p) { - switch (*p) { - case 'r': - /* code DELETED here */ - argc--; - argv++; - break; - - case 'c': - /* code DELETED here */ - lseek(fcopy, 0L, 2); /* append at end of file */ - break; - - default: - fprintf(stderr, "%s: bad flag '%c'\n", prog, *p); - exit(4); - } - p++; - } - } - - if (argc < 2) { - fprintf(stderr, "%s: missing nusers\n", prog); - exit(4); - } - - nusers = atoi(argv[1]); - if (nusers < 1) { - fprintf(stderr, "%s: impossible nusers (%d<-%s)\n", prog, nusers, argv[1]); - exit(4); - } - fprintf(stderr, "%d Users\n", nusers); - argc--; - argv++; - - /* build job streams */ - getwork(); -#if debug - dumpwork(); -#endif - - /* clone copies of myself to run up to MAXCHILD jobs each */ - firstuser = MAXCHILD; - fprintf(stderr, "master pid %d\n", getpid()); - fflush(stderr); - while (nusers > MAXCHILD) { - fflush(stderr); - if (nusers >= 2*MAXCHILD) - /* the next clone must run MAXCHILD jobs */ - nchild = MAXCHILD; - else - /* the next clone must run the leftover jobs */ - nchild = nusers - MAXCHILD; - if ((l = fork()) == -1) { - /* fork failed */ - fatal("** clone fork failed **\n"); - goto bepatient; - } else if (l > 0) { - fprintf(stderr, "master clone pid %d\n", l); - /* I am the master with nchild fewer jobs to run */ - nusers -= nchild; - firstuser += MAXCHILD; - continue; - } else { - /* I am a clone, run MAXCHILD jobs */ -#if ! debug - sprintf(logname, "masterlog.%02d", firstuser/MAXCHILD); - freopen(logname, "w", stderr); -#endif - master = 0; - nusers = nchild; - break; - } - } - if (master) - firstuser = 0; - - close(0); - - /* code DELETED here */ - - fflush(stderr); - - srand(time(0)); - thres = 0; - done = output = 0; - for (i = 0; i < nusers; i++) { - if (child[i].blen == 0) - done++; - else - thres += est_rate * GRANULE; - } - est_rate = thres; - - signal(SIGALRM, onalarm); - signal(SIGPIPE, pipeerr); - alarm(GRANULE); - while (done < nusers) { - for (i = 0; i < nusers; i++) { - cp = &child[i]; - if (cp->xmit >= cp->blen) continue; - l = rand() % CHUNK + 1; /* 1-CHUNK chars */ - if (l == 0) continue; - if (cp->xmit + l > cp->blen) - l = cp->blen - cp->xmit; - p = cp->bp; - cp->bp += l; - cp->xmit += l; -#if debug - fprintf(stderr, "child %d, %d processed, %d to go\n", i, cp->xmit, cp->blen - cp->xmit); -#endif - while (p < cp->bp) { - if (*p == '\n' || (p == &cp->bp[-1] && cp->xmit >= cp->blen)) { - /* write it out */ - nch = p - cp->line + 1; - if ((written = write(cp->fd, cp->line, nch)) != nch) { - - /* code DELETED here */ - - } - if (fcopy) - write(fcopy, cp->line, p - cp->line + 1); -#if debug - fprintf(stderr, "child %d gets \"", i); - { - char *q = cp->line; - while (q <= p) { - if (*q >= ' ' && *q <= '~') - fputc(*q, stderr); - else - fprintf(stderr, "\\%03o", *q); - q++; - } - } - fputc('"', stderr); -#endif - cp->line = &p[1]; - } - p++; - } - if (cp->xmit >= cp->blen) { - done++; - close(cp->fd); -#if debug - fprintf(stderr, "child %d, close std input\n", i); -#endif - } - output += l; - } - while (output > thres) { - pause(); -#if debug - fprintf(stderr, "after pause: output, thres, done %d %.2f %d\n", output, thres, done); -#endif - } - } - -bepatient: - alarm(0); -/**** - * If everything is going OK, we should simply be able to keep - * looping unitil 'wait' fails, however some descendent process may - * be in a state from which it can never exit, and so a timeout - * is used. - * 5 minutes should be ample, since the time to run all jobs is of - * the order of 5-10 minutes, however some machines are painfully slow, - * so the timeout has been set at 20 minutes (1200 seconds). - ****/ - - /* code DELETED here */ - -} - -onalarm() -{ - thres += est_rate; - signal(SIGALRM, onalarm); - alarm(GRANULE); -} - -grunt() -{ - /* timeout after label "bepatient" in main */ - exit_status = 4; - wrapup(); -} - -pipeerr() -{ - sigpipe++; -} - -wrapup() -{ - /* DUMMY, real code dropped */ -} - -getwork() -{ - - /* DUMMY, real code dropped */ - gets(); - strncpy(); - malloc(); realloc(); - open(); close(); -} - -fatal(s) -char *s; -{ - int i; - fprintf(stderr, s); - fflush(stderr); - perror("Reason?"); - for (i = 0; i < nusers; i++) { - if (child[i].pid > 0 && kill(child[i].pid, SIGKILL) != -1) - fprintf(stderr, "pid %d killed off\n", child[i].pid); - } - fflush(stderr); - exit_status = 4; - return; -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/execl.c b/testcases/feature-test/oeaware/UnixBench/src/execl.c deleted file mode 100644 index 98f03dc2d..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/execl.c +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: execl.c SID: 3.3 5/15/91 19:30:19 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * $Header: execl.c,v 3.5 87/06/22 15:37:08 kjmcdonell Beta $ - * August 28, 1990 - Modified timing routines - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -/* - * Execing - * - */ -char SCCSid[] = "@(#) @(#)execl.c:3.3 -- 5/15/91 19:30:19"; - -#include -#include -#include -#include - -char bss[8*1024]; /* something worthwhile */ - -#define main dummy - -#include "big.c" /* some real code */ - -#undef main - -/* added by BYTE */ -char *getenv(); - - -int main(argc, argv) /* the real program */ -int argc; -char *argv[]; -{ - unsigned long iter = 0; - char *ptr; - char *fullpath; - int duration; - char count_str[12], start_str[24], path_str[256], *dur_str; - time_t start_time, this_time; - -#ifdef DEBUG - int count; - for(count = 0; count < argc; ++ count) - printf("%s ",argv[count]); - printf("\n"); -#endif - if (argc < 2) - { - fprintf(stderr, "Usage: %s duration\n", argv[0]); - exit(1); - } - - - duration = atoi(argv[1]); - if (duration > 0) - /* the first invocation */ - { - dur_str = argv[1]; - if((ptr = getenv("UB_BINDIR")) != NULL) - sprintf(path_str,"%s/execl",ptr); - fullpath=path_str; - time(&start_time); - } - else /* one of those execl'd invocations */ - { - /* real duration follow the phoney null duration */ - duration = atoi(argv[2]); - dur_str = argv[2]; - iter = (unsigned long)atoi(argv[3]); /* where are we now ? */ - sscanf(argv[4], "%lu", (unsigned long *) &start_time); - fullpath = argv[0]; - } - - sprintf(count_str, "%lu", ++iter); /* increment the execl counter */ - sprintf(start_str, "%lu", (unsigned long) start_time); - time(&this_time); - if (this_time - start_time >= duration) { /* time has run out */ - fprintf(stderr, "COUNT|%lu|1|lps\n", iter); - exit(0); - } - execl(fullpath, fullpath, "0", dur_str, count_str, start_str, (void *) 0); - fprintf(stderr, "Exec failed at iteration %lu\n", iter); - perror("Reason"); - exit(1); -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/fstime.c b/testcases/feature-test/oeaware/UnixBench/src/fstime.c deleted file mode 100644 index 37b369bc6..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/fstime.c +++ /dev/null @@ -1,469 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: fstime.c SID: 3.5 5/15/91 19:30:19 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * $Header: fstime.c,v 3.4 87/06/22 14:23:05 kjmcdonell Beta $ - * 10/19/89 - rewrote timing calcs and added clock check (Ben Smith) - * 10/26/90 - simplify timing, change defaults (Tom Yager) - * 11/16/90 - added better error handling and changed output format (Ben Smith) - * 11/17/90 - changed the whole thing around (Ben Smith) - * 2/22/91 - change a few style elements and improved error handling (Ben Smith) - * 4/17/91 - incorporated suggestions from Seckin Unlu (seckin@sumac.intel.com) - * 4/17/91 - limited size of file, will rewind when reaches end of file - * 7/95 - fixed mishandling of read() and write() return codes - * Carl Emilio Prelz - * 12/95 - Massive changes. Made sleep time proportional increase with run - * time; added fsbuffer and fsdisk variants; added partial counting - * of partial reads/writes (was *full* credit); added dual syncs. - * David C Niemi - * 10/22/97 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * 9/24/07 - Separate out the read and write tests; - * output the actual time used in the results. - * Ian Smith - ******************************************************************************/ -char SCCSid[] = "@(#) @(#)fstime.c:3.5 -- 5/15/91 19:30:19"; - -#include -#include -#include -#include -#include -#include -#include - -#define SECONDS 10 - -#define MAX_BUFSIZE 8192 - -/* This must be set to the smallest BUFSIZE or 1024, whichever is smaller */ -#define COUNTSIZE 256 -#define HALFCOUNT (COUNTSIZE/2) /* Half of COUNTSIZE */ - -#define FNAME0 "dummy0" -#define FNAME1 "dummy1" - -extern void sync(void); - -int w_test(int timeSecs); -int r_test(int timeSecs); -int c_test(int timeSecs); - -long read_score = 1, write_score = 1, copy_score = 1; - -/****************** GLOBALS ***************************/ - -/* The buffer size for the tests. */ -int bufsize = 1024; - -/* - * The max number of 1024-byte blocks in the file. - * Don't limit it much, so that memory buffering - * can be overcome. - */ -int max_blocks = 2000; - -/* The max number of BUFSIZE blocks in the file. */ -int max_buffs = 2000; - -/* Countable units per 1024 bytes */ -int count_per_k; - -/* Countable units per bufsize */ -int count_per_buf; - -/* The actual buffer. */ -/* char *buf = 0; */ -/* Let's carry on using a static buffer for this, like older versions - * of the code did. It turns out that if you use a malloc buffer, - * it goes 50% slower on reads, when using a 4k buffer -- at least on - * my OpenSUSE 10.2 system. - * What up wit dat? - */ -char buf[MAX_BUFSIZE]; - -int f; -int g; -int i; -void stop_count(); -void clean_up(); -int sigalarm = 0; - -/******************** MAIN ****************************/ - -int main(argc, argv) -int argc; -char *argv[]; -{ - /* The number of seconds to run for. */ - int seconds = SECONDS; - - /* The type of test to run. */ - char test = 'c'; - - int status; - int i; - - for (i = 1; i < argc; ++i) { - if (argv[i][0] == '-') { - switch (argv[i][1]) { - case 'c': - case 'r': - case 'w': - test = argv[i][1]; - break; - case 'b': - bufsize = atoi(argv[++i]); - break; - case 'm': - max_blocks = atoi(argv[++i]); - break; - case 't': - seconds = atoi(argv[++i]); - break; - case 'd': - if (chdir(argv[++i]) < 0) { - perror("fstime: chdir"); - exit(1); - } - break; - default: - fprintf(stderr, "Usage: fstime [-c|-r|-w] [-b ] [-m ] [-t ]\n"); - exit(2); - } - } else { - fprintf(stderr, "Usage: fstime [-c|-r|-w] [-b ] [-m ] [-t ]\n"); - exit(2); - } - } - - if (bufsize < COUNTSIZE || bufsize > MAX_BUFSIZE) { - fprintf(stderr, "fstime: buffer size must be in range %d-%d\n", - COUNTSIZE, 1024*1024); - exit(3); - } - if (max_blocks < 1 || max_blocks > 1024*1024) { - fprintf(stderr, "fstime: max blocks must be in range %d-%d\n", - 1, 1024*1024); - exit(3); - } - if (seconds < 1 || seconds > 3600) { - fprintf(stderr, "fstime: time must be in range %d-%d seconds\n", - 1, 3600); - exit(3); - } - - max_buffs = max_blocks * 1024 / bufsize; - count_per_k = 1024 / COUNTSIZE; - count_per_buf = bufsize / COUNTSIZE; - - /* - if ((buf = malloc(bufsize)) == 0) { - fprintf(stderr, "fstime: failed to malloc %d bytes\n", bufsize); - exit(4); - } - */ - - if((f = creat(FNAME0, 0600)) == -1) { - perror("fstime: creat"); - exit(1); - } - close(f); - - if((g = creat(FNAME1, 0600)) == -1) { - perror("fstime: creat"); - exit(1); - } - close(g); - - if( (f = open(FNAME0, 2)) == -1) { - perror("fstime: open"); - exit(1); - } - if( ( g = open(FNAME1, 2)) == -1 ) { - perror("fstime: open"); - exit(1); - } - - /* fill buffer */ - for (i=0; i < bufsize; ++i) - buf[i] = i & 0xff; - - signal(SIGKILL,clean_up); - - /* - * Run the selected test. - * When I got here, this program ran full 30-second tests for - * write, read, and copy, outputting the results for each. BUT - * only the copy results are actually used in the benchmark index. - * With multiple iterations and three sets of FS tests, that amounted - * to about 10 minutes of wasted time per run. - * - * So, I've made the test selectable. Except that the read and write - * passes are used to create the test file and calibrate the rates used - * to tweak the results of the copy test. So, for copy tests, we do - * a few seconds of write and read to prime the pump. - * - * Note that this will also pull the file into the FS cache on any - * modern system prior to the copy test. Whether this is good or - * bad is a matter of perspective, but it's how it was when I got - * here. - * - * Ian Smith 21 Sep 2007 - */ - switch (test) { - case 'w': - status = w_test(seconds); - break; - case 'r': - w_test(2); - status = r_test(seconds); - break; - case 'c': - w_test(2); - r_test(2); - status = c_test(seconds); - break; - default: - fprintf(stderr, "fstime: unknown test \'%c\'\n", test); - exit(6); - } - if (status) { - clean_up(); - exit(1); - } - - clean_up(); - exit(0); -} - - -static double getFloatTime() -{ - struct timeval t; - - gettimeofday(&t, 0); - return (double) t.tv_sec + (double) t.tv_usec / 1000000.0; -} - - -/* - * Run the write test for the time given in seconds. - */ -int w_test(int timeSecs) -{ - unsigned long counted = 0L; - unsigned long tmp; - long f_blocks; - double start, end; - extern int sigalarm; - - /* Sync and let it settle */ - sync(); - sleep(2); - sync(); - sleep(2); - - /* Set an alarm. */ - sigalarm = 0; - signal(SIGALRM, stop_count); - alarm(timeSecs); - - start = getFloatTime(); - - while (!sigalarm) { - for(f_blocks=0; f_blocks < max_buffs; ++f_blocks) { - if ((tmp=write(f, buf, bufsize)) != bufsize) { - if (errno != EINTR) { - perror("fstime: write"); - return(-1); - } - stop_count(); - counted += ((tmp+HALFCOUNT)/COUNTSIZE); - } else - counted += count_per_buf; - } - lseek(f, 0L, 0); /* rewind */ - } - - /* stop clock */ - end = getFloatTime(); - write_score = (long) ((double) counted / ((end - start) * count_per_k)); - printf("Write done: %ld in %.4f, score %ld\n", - counted, end - start, write_score); - - /* - * Output the test results. Use the true time. - */ - fprintf(stderr, "COUNT|%ld|0|KBps\n", write_score); - fprintf(stderr, "TIME|%.1f\n", end - start); - - return(0); -} - -/* - * Run the read test for the time given in seconds. - */ -int r_test(int timeSecs) -{ - unsigned long counted = 0L; - unsigned long tmp; - double start, end; - extern int sigalarm; - extern int errno; - - /* Sync and let it settle */ - sync(); - sleep(2); - sync(); - sleep(2); - - /* rewind */ - errno = 0; - lseek(f, 0L, 0); - - /* Set an alarm. */ - sigalarm = 0; - signal(SIGALRM, stop_count); - alarm(timeSecs); - - start = getFloatTime(); - - while (!sigalarm) { - /* read while checking for an error */ - if ((tmp=read(f, buf, bufsize)) != bufsize) { - switch(errno) { - case 0: - case EINVAL: - lseek(f, 0L, 0); /* rewind at end of file */ - counted += (tmp+HALFCOUNT)/COUNTSIZE; - continue; - case EINTR: - stop_count(); - counted += (tmp+HALFCOUNT)/COUNTSIZE; - break; - default: - perror("fstime: read"); - return(-1); - break; - } - } else - counted += count_per_buf; - } - - /* stop clock */ - end = getFloatTime(); - read_score = (long) ((double) counted / ((end - start) * count_per_k)); - printf("Read done: %ld in %.4f, score %ld\n", - counted, end - start, read_score); - - /* - * Output the test results. Use the true time. - */ - fprintf(stderr, "COUNT|%ld|0|KBps\n", read_score); - fprintf(stderr, "TIME|%.1f\n", end - start); - - return(0); -} - - -/* - * Run the copy test for the time given in seconds. - */ -int c_test(int timeSecs) -{ - unsigned long counted = 0L; - unsigned long tmp; - double start, end; - extern int sigalarm; - - sync(); - sleep(2); - sync(); - sleep(1); - - /* rewind */ - errno = 0; - lseek(f, 0L, 0); - - /* Set an alarm. */ - sigalarm = 0; - signal(SIGALRM, stop_count); - alarm(timeSecs); - - start = getFloatTime(); - - while (!sigalarm) { - if ((tmp=read(f, buf, bufsize)) != bufsize) { - switch(errno) { - case 0: - case EINVAL: - lseek(f, 0L, 0); /* rewind at end of file */ - lseek(g, 0L, 0); /* rewind the output too */ - continue; - case EINTR: - /* part credit for leftover bytes read */ - counted += ( (tmp * write_score) / - (read_score + write_score) - + HALFCOUNT) / COUNTSIZE; - stop_count(); - break; - default: - perror("fstime: copy read"); - return(-1); - break; - } - } else { - if ((tmp=write(g, buf, bufsize)) != bufsize) { - if (errno != EINTR) { - perror("fstime: copy write"); - return(-1); - } - counted += ( - /* Full credit for part of buffer written */ - tmp + - - /* Plus part credit having read full buffer */ - ( ((bufsize - tmp) * write_score) / - (read_score + write_score) ) - + HALFCOUNT) / COUNTSIZE; - stop_count(); - } else - counted += count_per_buf; - } - } - - /* stop clock */ - end = getFloatTime(); - copy_score = (long) ((double) counted / ((end - start) * count_per_k)); - printf("Copy done: %ld in %.4f, score %ld\n", - counted, end - start, copy_score); - - /* - * Output the test results. Use the true time. - */ - fprintf(stderr, "COUNT|%ld|0|KBps\n", copy_score); - fprintf(stderr, "TIME|%.1f\n", end - start); - - return(0); -} - -void stop_count(void) -{ - extern int sigalarm; - sigalarm = 1; -} - -void clean_up(void) -{ - unlink(FNAME0); - unlink(FNAME1); -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/hanoi.c b/testcases/feature-test/oeaware/UnixBench/src/hanoi.c deleted file mode 100644 index eaf523de4..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/hanoi.c +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: hanoi.c SID: 3.3 5/15/91 19:30:20 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * $Header: hanoi.c,v 3.5 87/08/06 08:11:14 kenj Exp $ - * August 28, 1990 - Modified timing routines (ty) - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -char SCCSid[] = "@(#) @(#)hanoi.c:3.3 -- 5/15/91 19:30:20"; - -#define other(i,j) (6-(i+j)) - -#include -#include -#include "timeit.c" - -void mov(int n, int f, int t); - -unsigned long iter = 0; -int num[4]; -long cnt; - -void report() -{ - fprintf(stderr,"COUNT|%ld|1|lps\n", iter); - exit(0); -} - - -int main(argc, argv) -int argc; -char *argv[]; -{ - int disk=10, /* default number of disks */ - duration; - - if (argc < 2) { - fprintf(stderr,"Usage: %s duration [disks]\n", argv[0]); - exit(1); - } - duration = atoi(argv[1]); - if(argc > 2) disk = atoi(argv[2]); - num[1] = disk; - - wake_me(duration, report); - - while(1) { - mov(disk,1,3); - iter++; - } - - exit(0); -} - -void mov(int n, int f, int t) -{ - int o; - if(n == 1) { - num[f]--; - num[t]++; - return; - } - o = other(f,t); - mov(n-1,f,o); - mov(1,f,t); - mov(n-1,o,t); -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/looper.c b/testcases/feature-test/oeaware/UnixBench/src/looper.c deleted file mode 100644 index 01e64cc77..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/looper.c +++ /dev/null @@ -1,105 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 1 - * Module: looper.c SID: 1.4 5/15/91 19:30:22 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith or Tom Yager at BYTE Magazine - * ben@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * - * February 25, 1991 -- created (Ben S.) - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -char SCCSid[] = "@(#) @(#)looper.c:1.4 -- 5/15/91 19:30:22"; -/* - * Shell Process creation - * - */ - -#include -#include -#include -#include "timeit.c" - -unsigned long iter; -char *cmd_argv[28]; -int cmd_argc; - -void report(void) -{ - fprintf(stderr,"COUNT|%lu|60|lpm\n", iter); - exit(0); -} - -int main(argc, argv) -int argc; -char *argv[]; -{ -int slave, count, duration; -int status; - -if (argc < 2) - { - fprintf(stderr,"Usage: %s duration command [args..]\n", argv[0]); - fprintf(stderr," duration in seconds\n"); - exit(1); - } - -if((duration = atoi(argv[1])) < 1) - { - fprintf(stderr,"Usage: %s duration command [arg..]\n", argv[0]); - fprintf(stderr," duration in seconds\n"); - exit(1); - } - -/* get command */ -cmd_argc=argc-2; -for( count=2;count < argc; ++count) - cmd_argv[count-2]=argv[count]; -#ifdef DEBUG -printf("<<%s>>",cmd_argv[0]); -for(count=1;count < cmd_argc; ++count) - printf(" <%s>", cmd_argv[count]); -putchar('\n'); -exit(0); -#endif - -iter = 0; -wake_me(duration, report); - -while (1) - { - if ((slave = fork()) == 0) - { /* execute command */ - execvp(cmd_argv[0],cmd_argv); - exit(99); - } - else if (slave < 0) - { - /* woops ... */ - fprintf(stderr,"Fork failed at iteration %lu\n", iter); - perror("Reason"); - exit(2); - } - else - /* master */ - wait(&status); - if (status == 99 << 8) - { - fprintf(stderr, "Command \"%s\" didn't exec\n", cmd_argv[0]); - exit(2); - } - else if (status != 0) - { - fprintf(stderr,"Bad wait status: 0x%x\n", status); - exit(2); - } - iter++; - } -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/pipe.c b/testcases/feature-test/oeaware/UnixBench/src/pipe.c deleted file mode 100644 index 23a5cbf0e..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/pipe.c +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: pipe.c SID: 3.3 5/15/91 19:30:20 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * $Header: pipe.c,v 3.5 87/06/22 14:32:36 kjmcdonell Beta $ - * August 29, 1990 - modified timing routines (ty) - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -char SCCSid[] = "@(#) @(#)pipe.c:3.3 -- 5/15/91 19:30:20"; -/* - * pipe -- test single process pipe throughput (no context switching) - * - */ - -#include -#include -#include -#include "timeit.c" - -unsigned long iter; - -void report() -{ - fprintf(stderr,"COUNT|%ld|1|lps\n", iter); - exit(0); -} - -int main(argc, argv) -int argc; -char *argv[]; -{ - char buf[512]; - int pvec[2], duration; - - if (argc != 2) { - fprintf(stderr,"Usage: %s duration\n", argv[0]); - exit(1); - } - - duration = atoi(argv[1]); - - pipe(pvec); - - wake_me(duration, report); - iter = 0; - - while (1) { - if (write(pvec[1], buf, sizeof(buf)) != sizeof(buf)) { - if ((errno != EINTR) && (errno != 0)) - fprintf(stderr,"write failed, error %d\n", errno); - } - if (read(pvec[0], buf, sizeof(buf)) != sizeof(buf)) { - if ((errno != EINTR) && (errno != 0)) - fprintf(stderr,"read failed, error %d\n", errno); - } - iter++; - } -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/spawn.c b/testcases/feature-test/oeaware/UnixBench/src/spawn.c deleted file mode 100644 index b053a234d..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/spawn.c +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: spawn.c SID: 3.3 5/15/91 19:30:20 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yagerat BYTE Magazine - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * $Header: spawn.c,v 3.4 87/06/22 14:32:48 kjmcdonell Beta $ - * August 29, 1990 - Modified timing routines (ty) - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -char SCCSid[] = "@(#) @(#)spawn.c:3.3 -- 5/15/91 19:30:20"; -/* - * Process creation - * - */ - -#include -#include -#include -#include "timeit.c" - -unsigned long iter; - -void report() -{ - fprintf(stderr,"COUNT|%lu|1|lps\n", iter); - exit(0); -} - -int main(argc, argv) -int argc; -char *argv[]; -{ - int slave, duration; - int status; - - if (argc != 2) { - fprintf(stderr,"Usage: %s duration \n", argv[0]); - exit(1); - } - - duration = atoi(argv[1]); - - iter = 0; - wake_me(duration, report); - - while (1) { - if ((slave = fork()) == 0) { - /* slave .. boring */ -#if debug - printf("fork OK\n"); -#endif - /* kill it right away */ - exit(0); - } else if (slave < 0) { - /* woops ... */ - fprintf(stderr,"Fork failed at iteration %lu\n", iter); - perror("Reason"); - exit(2); - } else - /* master */ - wait(&status); - if (status != 0) { - fprintf(stderr,"Bad wait status: 0x%x\n", status); - exit(2); - } - iter++; -#if debug - printf("Child %d done.\n", slave); -#endif - } -} diff --git a/testcases/feature-test/oeaware/UnixBench/src/syscall.c b/testcases/feature-test/oeaware/UnixBench/src/syscall.c deleted file mode 100644 index 4de437296..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/syscall.c +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 3 - * Module: syscall.c SID: 3.3 5/15/91 19:30:21 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager at BYTE Magazine - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * $Header: syscall.c,v 3.4 87/06/22 14:32:54 kjmcdonell Beta $ - * August 29, 1990 - Modified timing routines - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ -/* - * syscall -- sit in a loop calling the system - * - */ -char SCCSid[] = "@(#) @(#)syscall.c:3.3 -- 5/15/91 19:30:21"; - -#include -#include -#include -#include -#include -#include -#include "timeit.c" - -unsigned long iter; - -void report() -{ - fprintf(stderr,"COUNT|%ld|1|lps\n", iter); - exit(0); -} - -int main(argc, argv) -int argc; -char *argv[]; -{ - char *test; - int duration; - - if (argc < 2) { - fprintf(stderr,"Usage: %s duration [ test ]\n", argv[0]); - fprintf(stderr,"test is one of:\n"); - fprintf(stderr," \"mix\" (default), \"close\", \"getpid\", \"exec\"\n"); - exit(1); - } - if (argc > 2) - test = argv[2]; - else - test = "mix"; - - duration = atoi(argv[1]); - - iter = 0; - wake_me(duration, report); - - switch (test[0]) { - case 'm': - while (1) { - close(dup(0)); - getpid(); - getuid(); - umask(022); - iter++; - } - /* NOTREACHED */ - case 'c': - while (1) { - close(dup(0)); - iter++; - } - /* NOTREACHED */ - case 'g': - while (1) { - getpid(); - iter++; - } - /* NOTREACHED */ - case 'e': - while (1) { - pid_t pid = fork(); - if (pid < 0) { - fprintf(stderr,"%s: fork failed\n", argv[0]); - exit(1); - } else if (pid == 0) { - execl("/bin/true", (char *) 0); - fprintf(stderr,"%s: exec /bin/true failed\n", argv[0]); - exit(1); - } else { - if (waitpid(pid, NULL, 0) < 0) { - fprintf(stderr,"%s: waitpid failed\n", argv[0]); - exit(1); - } - } - iter++; - } - /* NOTREACHED */ - } - - exit(9); -} - diff --git a/testcases/feature-test/oeaware/UnixBench/src/time-polling.c b/testcases/feature-test/oeaware/UnixBench/src/time-polling.c deleted file mode 100644 index 21fa8b220..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/time-polling.c +++ /dev/null @@ -1,573 +0,0 @@ -/* Programme to test how long it takes to select(2), poll(2) and poll2(2) a - large number of file descriptors. - - Copyright 1997 Richard Gooch rgooch@atnf.csiro.au - Distributed under the GNU General Public License. - - To compile this programme, use gcc -O2 -o time-polling time-polling.c - - Extra compile flags: - - Add -DHAS_SELECT if your operating system has the select(2) system call - Add -DHAS_POLL if your operating system has the poll(2) system call - Add -DHAS_POLL2 if your operating system has the poll2(2) system call - - Usage: time-polling [num_iter] [num_to_test] [num_active] [-v] - - NOTE: on many systems the default limit on file descriptors is less than - 1024. You should try to increase this limit to 1024 before doing the test. - Something like "limit descriptors 1024" or "limit openfiles 1024" should do - the trick. On some systems (like IRIX), doing the test on a smaller number - gives a *much* smaller time per descriptor, which shows that time taken - does not scale linearly with number of descriptors, which is non-optimal. - In the tests I've done, I try to use 1024 descriptors. - The benchmark results are available at: - http://www.atnf.csiro.au/~rgooch/benchmarks.html - If you want to contribute results, please email them to me. Please specify - if you want to be acknowledged. - - - 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - Richard Gooch may be reached by email at rgooch@atnf.csiro.au - The postal address is: - Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia. - -*/ - -#ifdef UNIXBENCH - #define OUT stdout -#else - #define OUT stderr -#endif -#include -#include -#include -#include -#ifdef HAS_POLL -# include -#endif -#ifdef HAS_POLL2 -# include -#endif -#include -#include -#include - -#define TRUE 1 -#define FALSE 0 -#ifdef UNIXBENCH - #define MAX_ITERATIONS 1000 -#else - #define MAX_ITERATIONS 30 -#endif -#define MAX_FDS 40960 -#define CONST const -#define ERRSTRING strerror (errno) - -typedef int flag; - - -/* -static inline int find_first_set_bit (CONST void *array, int size) -*/ -static int find_first_set_bit (CONST void *array, int size) -/* [SUMMARY] Find the first bit set in a bitfield. - A pointer to the bitfield. This must be aligned on a long boundary. - The number of bits in the bitfield. - [RETURNS] The index of the first set bit. If no bits are set, <> + 1 - is returned. -*/ -{ - int index; - unsigned long word; - unsigned int ul_size = 8 * sizeof (unsigned long); - CONST unsigned long *ul_array = array; - - /* Find first word with any bit set */ - for (index = 0; (*ul_array == 0) && (index < size); - index += ul_size, ++ul_array); - /* Find first bit set in word */ - for (word = *ul_array; !(word & 1) && (index < size); - ++index, word = word >> 1); - return (index); -} /* End Function find_first_set_bit */ - -/* -static inline int find_next_set_bit (CONST void *array, int size, int offset) -*/ -static int find_next_set_bit (CONST void *array, int size, int offset) -/* [SUMMARY] Find the next bit set in a bitfield. - A pointer to the bitfield. This must be aligned on a long boundary. - The number of bits in the bitfield. - The offset of the current bit in the bitfield. The current bit is - ignored. - [RETURNS] The index of the next set bit. If no more bits are set, - <> + 1 is returned. -*/ -{ - int index, tmp; - unsigned long word; - unsigned int ul_size = 8 * sizeof (unsigned long); - CONST unsigned long *ul_array = array; - - if (++offset >= size) return (offset); - index = offset; - /* Jump to the long word containing the next bit */ - tmp = offset / ul_size; - ul_array += tmp; - offset -= tmp * ul_size; - if ( (offset == 0) || (*ul_array == 0) ) - return (find_first_set_bit (ul_array, size - index) + index); - /* There is a bit set somewhere in this word */ - if ( ( (word = *ul_array) != 0 ) && ( (word = word >> offset) != 0 ) ) - { - /* There is a bit set somewhere in this word at or after the offset - position */ - for (; (word & 1) == 0; word = word >> 1, ++index); - return (index); - } - /* Have to go to subsequent word(s) */ - index += ul_size - offset; - return (find_first_set_bit (++ul_array, size - index) + index); -} /* End Function find_next_set_bit */ - - -struct callback_struct -{ - void (*input_func) (void *info); - void (*output_func) (void *info); - void (*exception_func) (void *info); - void *info; -}; - -static int total_bits = 0; -struct callback_struct callbacks[MAX_FDS]; - - -static void test_func (void *info) -{ - ++total_bits; -} - -#ifdef HAS_SELECT -static void time_select (fd_set *input_fds, fd_set *output_fds, - fd_set *exception_fds, int max_fd, int num_iter, - long *times) -/* [SUMMARY] Time how long it takes to select(2) file descriptors. - The input masks. - The output masks. - The exception masks. - The highest file descriptor in the fd_sets. - The number of iterations. - The time taken (in microseconds) for each iteration. - [RETURNS] Nothing. -*/ -{ - int fd, count, nready; - fd_set i_fds, o_fds, e_fds; - struct timeval time1, time2, tv; - - /* Warm the cache a bit */ - memcpy (&i_fds, input_fds, sizeof i_fds); - memcpy (&o_fds, output_fds, sizeof i_fds); - memcpy (&e_fds, exception_fds, sizeof i_fds); - tv.tv_sec = 0; - tv.tv_usec = 0; - select (max_fd + 1, &i_fds, &o_fds, &e_fds, &tv); - for (count = 0; count < num_iter; ++count) - { - total_bits = 0; - gettimeofday (&time1, NULL); - memcpy (&i_fds, input_fds, sizeof i_fds); - memcpy (&o_fds, output_fds, sizeof i_fds); - memcpy (&e_fds, exception_fds, sizeof i_fds); - tv.tv_sec = 0; - tv.tv_usec = 0; - nready = select (max_fd + 1, &i_fds, &o_fds, &e_fds, &tv); - if (nready == -1) - { - fprintf (stderr, "Error selecting\t%s\n", ERRSTRING); - exit (2); - } - if (nready < 1) - { - fprintf (stderr, "Error: nready: %d\n", nready); - exit (1); - } - /* Scan the output */ - for (fd = find_first_set_bit (&e_fds, sizeof e_fds * 8); fd <= max_fd; - fd = find_next_set_bit (&e_fds, sizeof e_fds * 8, fd) ) - { - (*callbacks[fd].exception_func) (callbacks[fd].info); - } - for (fd = find_first_set_bit (&i_fds, sizeof i_fds * 8); fd <= max_fd; - fd = find_next_set_bit (&i_fds, sizeof i_fds * 8, fd) ) - { - (*callbacks[fd].input_func) (callbacks[fd].info); - } - for (fd = find_first_set_bit (&o_fds, sizeof o_fds * 8); fd <= max_fd; - fd = find_next_set_bit (&o_fds, sizeof o_fds * 8, fd) ) - { - (*callbacks[fd].output_func) (callbacks[fd].info); - } - gettimeofday (&time2, NULL); - times[count] = (time2.tv_sec - time1.tv_sec) * 1000000; - times[count] += time2.tv_usec - time1.tv_usec; - } -} /* End Function time_select */ -#endif /* HAS_SELECT */ - -#ifdef HAS_POLL -static void time_poll (struct pollfd *pollfd_array, int start_index, - int num_to_test, int num_iter, long *times) -/* [SUMMARY] Time how long it takes to poll(2) file descriptors. - The array of pollfd structures. - The start index in the array of pollfd structures. - The number of file descriptors to test. - The number of iterations. - The time taken (in microseconds) for each iteration. - [RETURNS] Nothing. -*/ -{ - short revents; - int fd, count, nready; - struct timeval time1, time2; - struct pollfd *pollfd_ptr, *stop_pollfd; - - /* Warm the cache a bit */ - poll (pollfd_array + start_index, num_to_test, 0); - for (count = 0; count < num_iter; ++count) - { - total_bits = 0; - gettimeofday (&time1, NULL); - nready = poll (pollfd_array + start_index, num_to_test, 0); - if (nready == -1) - { - fprintf (stderr, "Error polling\t%s\n", ERRSTRING); - exit (2); - } - if (nready < 1) - { - fprintf (stderr, "Error: nready: %d\n", nready); - exit (1); - } - stop_pollfd = pollfd_array + start_index + num_to_test; - for (pollfd_ptr = pollfd_array + start_index; TRUE; ++pollfd_ptr) - { - if (pollfd_ptr->revents == 0) continue; - /* Have an active descriptor */ - revents = pollfd_ptr->revents; - fd = pollfd_ptr->fd; - if (revents & POLLPRI) - (*callbacks[fd].exception_func) (callbacks[fd].info); - if (revents & POLLIN) - (*callbacks[fd].input_func) (callbacks[fd].info); - if (revents & POLLOUT) - (*callbacks[fd].output_func) (callbacks[fd].info); - if (--nready == 0) break; - } - gettimeofday (&time2, NULL); - times[count] = (time2.tv_sec - time1.tv_sec) * 1000000; - times[count] += time2.tv_usec - time1.tv_usec; - } -} /* End Function time_poll */ -#endif /* HAS_POLL */ - -#ifdef HAS_POLL2 -static void time_poll2 (struct poll2ifd *poll2ifd_array, int start_index, - int num_to_test, int num_iter, long *times) -/* [SUMMARY] Time how long it takes to poll2(2) file descriptors. - The array of poll2ifd structures. - The start index in the array of pollfd structures. - The number of file descriptors to test. - The number of iterations. - The time taken (in microseconds) for each iteration. - [RETURNS] Nothing. -*/ -{ - short revents; - int fd, count, nready, i; - struct timeval time1, time2; - struct poll2ofd poll2ofd_array[MAX_FDS]; - - /* Warm the cache a bit */ - poll2 (poll2ifd_array + start_index, poll2ofd_array, num_to_test, 0); - for (count = 0; count < num_iter; ++count) - { - total_bits = 0; - gettimeofday (&time1, NULL); - nready = poll2 (poll2ifd_array + start_index, poll2ofd_array, - num_to_test, 0); - if (nready == -1) - { - times[count] = -1; - if (errno == ENOSYS) return; /* Must do this first */ - fprintf (stderr, "Error calling poll2(2)\t%s\n", ERRSTRING); - exit (2); - } - if (nready < 1) - { - fprintf (stderr, "Error: nready: %d\n", nready); - exit (1); - } - for (i = 0; i < nready; ++i) - { - revents = poll2ofd_array[i].revents; - fd = poll2ofd_array[i].fd; - if (revents & POLLPRI) - (*callbacks[fd].exception_func) (callbacks[fd].info); - if (revents & POLLIN) - (*callbacks[fd].input_func) (callbacks[fd].info); - if (revents & POLLOUT) - (*callbacks[fd].output_func) (callbacks[fd].info); - } - gettimeofday (&time2, NULL); - times[count] = (time2.tv_sec - time1.tv_sec) * 1000000; - times[count] += time2.tv_usec - time1.tv_usec; - } -} /* End Function time_poll2 */ -#endif /* HAS_POLL2 */ - - -int main (argc, argv) -int argc; -char *argv[]; -{ - flag failed = FALSE; - flag verbose = FALSE; - int first_fd = -1; - int fd, max_fd, count, total_fds; - int num_to_test, num_active; -#ifdef UNIXBENCH - int max_iter = 1000; -#else - int max_iter = 10; -#endif -#ifdef HAS_SELECT - long select_total = 0; - fd_set input_fds, output_fds, exception_fds; - long select_times[MAX_ITERATIONS]; -#endif -#ifdef HAS_POLL - int start_index; - long poll_total = 0; - struct pollfd pollfd_array[MAX_FDS]; - long poll_times[MAX_ITERATIONS]; -#endif -#ifdef HAS_POLL2 - long poll2_total = 0; - struct poll2ifd poll2ifd_array[MAX_FDS]; - struct poll2ofd poll2ofd_array[MAX_FDS]; - long poll2_times[MAX_ITERATIONS]; -#endif -#if 0 - extern char *sys_errlist[]; -#endif - -#ifdef HAS_SELECT - FD_ZERO (&input_fds); - FD_ZERO (&output_fds); - FD_ZERO (&exception_fds); -#endif -#ifdef HAS_POLL - memset (pollfd_array, 0, sizeof pollfd_array); -#endif - /* Allocate file descriptors */ - total_fds = 0; - max_fd = 0; - while (!failed) - { - if ( ( fd = dup (1) ) == -1 ) - { - if (errno != EMFILE) - { - fprintf (stderr, "Error dup()ing\t%s\n", ERRSTRING); - exit (1); - } - failed = TRUE; - continue; - } - if (fd >= MAX_FDS) - { - fprintf (stderr, "File descriptor: %d larger than max: %d\n", - fd, MAX_FDS - 1); - exit (1); - } - callbacks[fd].input_func = test_func; - callbacks[fd].output_func = test_func; - callbacks[fd].exception_func = test_func; - callbacks[fd].info = NULL; - if (fd > max_fd) max_fd = fd; - if (first_fd < 0) first_fd = fd; -#ifdef HAS_POLL - pollfd_array[fd].fd = fd; - pollfd_array[fd].events = 0; -#endif -#ifdef HAS_POLL2 - poll2ifd_array[fd].fd = fd; - poll2ifd_array[fd].events = 0; -#endif - } - total_fds = max_fd + 1; - /* Process the command-line arguments */ - if (argc > 5) - { - fputs ("Usage:\ttime-polling [num_iter] [num_to_test] [num_active] [-v]\n", - stderr); - exit (1); - } - if (argc > 1) max_iter = atoi (argv[1]); - if (max_iter > MAX_ITERATIONS) - { - fprintf (stderr, "num_iter too large\n"); - exit (1); - } - if (argc > 2) num_to_test = atoi (argv[2]); - else num_to_test = total_fds - first_fd; - if (argc > 3) num_active = atoi (argv[3]); - else num_active = 1; - if (argc > 4) - { - if (strcmp (argv[4], "-v") != 0) - { - fputs ("Usage:\ttime-polling [num_iter] [num_to_test] [num_active] [-v]\n", - stderr); - exit (1); - } - verbose = TRUE; - } - - /* Sanity tests */ - if (num_to_test > total_fds - first_fd) num_to_test = total_fds - first_fd; - if (num_active > total_fds - first_fd) num_active = total_fds - first_fd; - /* Set activity monitoring flags */ - for (fd = total_fds - num_to_test; fd < total_fds; ++fd) - { -#ifdef HAS_SELECT - FD_SET (fd, &exception_fds); - FD_SET (fd, &input_fds); -#endif -#ifdef HAS_POLL - pollfd_array[fd].events = POLLPRI | POLLIN; -#endif -#ifdef HAS_POLL2 - poll2ifd_array[fd].events = POLLPRI | POLLIN; -#endif - } - for (fd = total_fds - num_active; fd < total_fds; ++fd) - { -#ifdef HAS_SELECT - FD_SET (fd, &output_fds); -#endif -#ifdef HAS_POLL - pollfd_array[fd].events |= POLLOUT; -#endif -#ifdef HAS_POLL2 - poll2ifd_array[fd].events |= POLLOUT; -#endif - } - fprintf (OUT, "Num fds: %d, polling descriptors %d-%d\n", - total_fds, total_fds - num_to_test, max_fd); - /* First do all the tests, then print the results */ -#ifdef HAS_SELECT - time_select (&input_fds, &output_fds, &exception_fds, max_fd, max_iter, - select_times); -#endif -#ifdef HAS_POLL - start_index = total_fds - num_to_test; - time_poll (pollfd_array, start_index, num_to_test, max_iter, poll_times); -#endif -#ifdef HAS_POLL2 - start_index = total_fds - num_to_test; - time_poll2 (poll2ifd_array, start_index, num_to_test, max_iter, - poll2_times); -#endif - /* Now print out all the times */ - fputs ("All times in microseconds\n", OUT); - fputs ("ITERATION\t", OUT); -#ifdef HAS_SELECT - fprintf (OUT, "%-12s", "select(2)"); -#endif -#ifdef HAS_POLL - fprintf (OUT, "%-12s", "poll(2)"); -#endif -#ifdef HAS_POLL2 - if (poll2_times[0] >= 0) fprintf (OUT, "%-12s", "poll2(2)"); -#endif - for (count = 0; count < max_iter; ++count) - { - if (verbose) fprintf (OUT, "\n%d\t\t", count); -#ifdef HAS_SELECT - if (verbose) fprintf (OUT, "%-12ld", select_times[count]); - select_total += select_times[count]; -#endif -#ifdef HAS_POLL - if (verbose) fprintf (OUT, "%-12ld", poll_times[count]); - poll_total += poll_times[count]; -#endif -#ifdef HAS_POLL2 - if ( verbose && (poll2_times[0] >= 0) ) - fprintf (OUT, "%-12ld", poll2_times[count]); - poll2_total += poll2_times[count]; -#endif - } - fputs ("\n\naverage\t\t", OUT); -#ifdef HAS_SELECT - fprintf (OUT, "%-12ld", select_total / max_iter); -#endif -#ifdef HAS_POLL - fprintf (OUT, "%-12ld", poll_total / max_iter); -#endif -#ifdef HAS_POLL2 - if (poll2_times[0] >= 0) - fprintf (OUT, "%-12ld", poll2_total / max_iter); -#endif - putc ('\n', OUT); - fputs ("Per fd\t\t", OUT); -#ifdef HAS_SELECT - fprintf (OUT, "%-12.2f", - (float) select_total / (float) max_iter / (float) num_to_test); -#ifdef UNIXBENCH - fprintf (stderr, "lps\t%.2f\t%.1f\n", - 1000000 * (float) max_iter * (float) num_to_test - / (float) select_total, (float)select_total / 1000000); -#endif -#endif -#ifdef HAS_POLL - fprintf (OUT, "%-12.2f", - (float) poll_total / (float) max_iter / (float) num_to_test); -#ifdef UNIXBENCH - fprintf (stderr, "lps\t%.2f\t%.1f\n", - 1000000 * (float) max_iter * (float) num_to_test - / (float) poll_total, (float)poll_total / 1000000); -#endif -#endif -#ifdef HAS_POLL2 - if (poll2_times[0] >= 0) { - fprintf (OUT, "%-12.2f", - (float) poll2_total / (float) max_iter / (float) num_to_test); -#ifdef UNIXBENCH - fprintf (stderr, "lps\t%.2f\t%.1f\n", - 1000000 * (float) max_iter * (float) num_to_test - / (float) poll2_total, (float)poll2_total / 1000000); -#endif - } - -#endif - fputs ("<- the most important value\n", OUT); - - exit(0); -} /* End Function main */ diff --git a/testcases/feature-test/oeaware/UnixBench/src/timeit.c b/testcases/feature-test/oeaware/UnixBench/src/timeit.c deleted file mode 100644 index 00d1cfceb..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/timeit.c +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * - * The BYTE UNIX Benchmarks - Release 3 - * Module: timeit.c SID: 3.3 5/15/91 19:30:21 - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith, Rick Grehan or Tom Yager - * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com - * - ******************************************************************************* - * Modification Log: - * May 12, 1989 - modified empty loops to avoid nullifying by optimizing - * compilers - * August 28, 1990 - changed timing relationship--now returns total number - * of iterations (ty) - * October 22, 1997 - code cleanup to remove ANSI C compiler warnings - * Andy Kahn - * - ******************************************************************************/ - -/* this module is #included in other modules--no separate SCCS ID */ - -/* - * Timing routine - * - */ - -#include -#include - -void wake_me(seconds, func) - int seconds; - void (*func)(); -{ - /* set up the signal handler */ - signal(SIGALRM, func); - /* get the clock running */ - alarm(seconds); -} - diff --git a/testcases/feature-test/oeaware/UnixBench/src/ubgears.c b/testcases/feature-test/oeaware/UnixBench/src/ubgears.c deleted file mode 100644 index 417ebbda3..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/ubgears.c +++ /dev/null @@ -1,650 +0,0 @@ -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -/* $XFree86: xc/programs/glxgears/glxgears.c,v 1.3tsi Exp $ */ - -/* - * This is a port of the infamous "gears" demo to straight GLX (i.e. no GLUT) - * Port by Brian Paul 23 March 2001 - * - * Exact timing added by Behdad Esfahbod to achieve a fixed speed regardless - * of frame rate. November 2003 - * - * Printer support added by Roland Mainz . April 2004 - * - * This version modified by Ian Smith, 30 Sept 2007, to make ubgears. - * ubgears is cusoimised for use in the UnixBench benchmarking suite. - * Some redundant stuff is gone, and the -time option is added. - * Mainly it's forked so we don't use the host's version, which could change - * from platform to platform. - * - * Command line options: - * -display Set X11 display for output. - * -info Print additional GLX information. - * -time Run for seconds and produce a performance report. - * -h Print this help page. - * -v Verbose output. - * - */ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef M_PI -#define M_PI 3.14159265 -#endif /* !M_PI */ - -/* Turn a NULL pointer string into an empty string */ -#define NULLSTR(x) (((x)!=NULL)?(x):("")) -#define Log(x) { if(verbose) printf x; } -#define Msg(x) { printf x; } - -/* Globla vars */ -/* program name (from argv[0]) */ -static const char *ProgramName; - -/* verbose output what the program is doing */ -static Bool verbose = False; - -/* time in microseconds to run for; -1 means forever. */ -static int runTime = -1; - -/* Time at which start_time(void) was called. */ -static struct timeval clockStart; - -/* XXX this probably isn't very portable */ - -/* return current time (in seconds) */ -static void -start_time(void) -{ - (void) gettimeofday(&clockStart, 0); -} - -/* - * return time (in microseconds) since start_time(void) was called. - * - * The older version of this function randomly returned negative results. - * This version won't, up to 2000 seconds and some. - */ -static long -current_time(void) -{ - struct timeval tv; - long secs, micros; - - (void) gettimeofday(&tv, 0); - - secs = tv.tv_sec - clockStart.tv_sec; - micros = tv.tv_usec - clockStart.tv_usec; - if (micros < 0) { - --secs; - micros += 1000000; - } - return secs * 1000000 + micros; -} - -static -void usage(void) -{ - fprintf (stderr, "usage: %s [options]\n", ProgramName); - fprintf (stderr, "-display\tSet X11 display for output.\n"); - fprintf (stderr, "-info\t\tPrint additional GLX information.\n"); - fprintf (stderr, "-time t\t\tRun for t seconds and report performance.\n"); - fprintf (stderr, "-h\t\tPrint this help page.\n"); - fprintf (stderr, "-v\t\tVerbose output.\n"); - fprintf (stderr, "\n"); - exit(EXIT_FAILURE); -} - - -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; -static GLint speed = 60; -static GLboolean printInfo = GL_FALSE; - -/* - * - * Draw a gear wheel. You'll probably want to call this function when - * building a display list since we do a lot of trig here. - * - * Input: inner_radius - radius of hole at center - * outer_radius - radius at center of teeth - * width - width of gear - * teeth - number of teeth - * tooth_depth - depth of tooth - */ -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2, maxr2, minr2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - maxr2 = r2 = outer_radius + tooth_depth / 2.0; - minr2 = r2; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - if (i < teeth) { - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - r2 = minr2; - } - r2 = maxr2; - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - if (i < teeth) { - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - r2 = minr2; - } - r2 = maxr2; - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle + 1.5 * da), sin(angle + 1.5 * da), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glNormal3f(cos(angle + 3.5 * da), sin(angle + 3.5 * da), 0.0); - r2 = minr2; - } - r2 = maxr2; - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); -} - - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); -} - - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat h = (GLfloat) height / (GLfloat) width; - - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - /* fit width and height */ - if (h >= 1.0) - glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); - else - glFrustum(-1.0/h, 1.0/h, -1.0, 1.0, 5.0, 60.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - - -static void -init(void) -{ - static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; - static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; - static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; - static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); -} - - -/* - * Create an RGB, double-buffered window. - * Return the window and context handles. - */ -static void -make_window( Display *dpy, Screen *scr, - const char *name, - int x, int y, int width, int height, - Window *winRet, GLXContext *ctxRet) -{ - int attrib[] = { GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DOUBLEBUFFER, - GLX_DEPTH_SIZE, 1, - None }; - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - GLXContext ctx; - XVisualInfo *visinfo; - GLint max[2] = { 0, 0 }; - - scrnum = XScreenNumberOfScreen(scr); - root = XRootWindow(dpy, scrnum); - - visinfo = glXChooseVisual( dpy, scrnum, attrib ); - if (!visinfo) { - fprintf(stderr, "%s: Error: couldn't get an RGB, Double-buffered visual.\n", ProgramName); - exit(EXIT_FAILURE); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow( dpy, root, x, y, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr ); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(dpy, win, &sizehints); - XSetStandardProperties(dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - ctx = glXCreateContext( dpy, visinfo, NULL, True ); - if (!ctx) { - fprintf(stderr, "%s: Error: glXCreateContext failed.\n", ProgramName); - exit(EXIT_FAILURE); - } - - XFree(visinfo); - - XMapWindow(dpy, win); - glXMakeCurrent(dpy, win, ctx); - - /* Check for maximum size supported by the GL rasterizer */ - glGetIntegerv(GL_MAX_VIEWPORT_DIMS, max); - if (printInfo) - printf("GL_MAX_VIEWPORT_DIMS=%d/%d\n", (int)max[0], (int)max[1]); - if (width > max[0] || height > max[1]) { - fprintf(stderr, "%s: Error: Requested window size (%d/%d) larger than " - "maximum supported by GL engine (%d/%d).\n", - ProgramName, width, height, (int)max[0], (int)max[1]); - exit(EXIT_FAILURE); - } - - *winRet = win; - *ctxRet = ctx; -} - -static void -event_loop(Display *dpy, Window win) -{ - while (1) { - /* Process interactive events */ - while (XPending(dpy) > 0) { - XEvent event; - XNextEvent(dpy, &event); - switch (event.type) { - case Expose: - Log(("Event: Expose\n")); - /* we'll redraw below */ - break; - case ConfigureNotify: - Log(("Event: ConfigureNotify\n")); - reshape(event.xconfigure.width, event.xconfigure.height); - break; - } - } - - { - /* Time at which we started measuring. */ - static long startTime = 0; - - /* Time of the previous frame. */ - static long lastFrame = 0; - - /* Time of the previous FPS report. */ - static long lastFps = 0; - - /* Number of frames we've done. */ - static int frames = 0; - - /* Number of frames we've done in the measured run. */ - static long runFrames = 0; - - long t = current_time(); - long useconds; - - if (!lastFrame) - lastFrame = t; - if (!lastFps) - lastFps = t; - - /* How many microseconds since the previous frame? */ - useconds = t - lastFrame; - if (!useconds) /* assume 100FPS if we don't have timer */ - useconds = 10000; - - /* Calculate how far the gears need to move and redraw. */ - angle = angle + ((double)speed * useconds) / 1000000.0; - if (angle > 360.0) - angle = angle - 360.0; /* don't lose precision! */ - draw(); - glXSwapBuffers(dpy, win); - - /* Done this frame. */ - lastFrame = t; - frames++; - - /* Every 5 seconds, print the FPS. */ - if (t - lastFps >= 5000000L) { - GLfloat seconds = (t - lastFps) / 1000000.0; - GLfloat fps = frames / seconds; - - printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, - fps); - lastFps = t; - frames = 0; - - /* - * Set the start time now -- ie. after one report. This - * gives us pump-priming time before we start for real. - */ - if (runTime > 0 && startTime == 0) { - printf("Start timing!\n"); - startTime = t; - } - } - - if (startTime > 0) - ++runFrames; - - /* If our run time is done, finish. */ - if (runTime > 0 && startTime > 0 && t - startTime > runTime) { - double time = (double) (t - startTime) / 1000000.0; - fprintf(stderr, "COUNT|%ld|1|fps\n", runFrames); - fprintf(stderr, "TIME|%.1f\n", time); - exit(0); - } - - /* Need to give cpu away in order to get precise timing next cycle, - * otherwise, gettimeofday would return almost the same value. */ - sched_yield(); - } - } -} - - -int -main(int argc, char *argv[]) -{ - Bool use_threadsafe_api = False; - Display *dpy; - Window win; - Screen *screen; - GLXContext ctx; - char *dpyName = NULL; - int i; - XRectangle winrect; - - ProgramName = argv[0]; - - for (i = 1; i < argc; i++) { - const char *arg = argv[i]; - int len = strlen(arg); - - if (strcmp(argv[i], "-display") == 0) { - if (++i >= argc) - usage(); - dpyName = argv[i]; - } - else if (strcmp(argv[i], "-info") == 0) { - printInfo = GL_TRUE; - } - else if (strcmp(argv[i], "-time") == 0) { - if (++i >= argc) - usage(); - runTime = atoi(argv[i]) * 1000000; - } - else if (!strncmp("-v", arg, len)) { - verbose = True; - printInfo = GL_TRUE; - } - else if( !strncmp("-debug_use_threadsafe_api", arg, len) ) - { - use_threadsafe_api = True; - } - else if (!strcmp(argv[i], "-h")) { - usage(); - } - else - { - fprintf(stderr, "%s: Unsupported option '%s'.\n", ProgramName, argv[i]); - usage(); - } - } - - /* Init X threading API on demand (for debugging) */ - if( use_threadsafe_api ) - { - if( !XInitThreads() ) - { - fprintf(stderr, "%s: XInitThreads() failure.\n", ProgramName); - exit(EXIT_FAILURE); - } - } - - dpy = XOpenDisplay(dpyName); - if (!dpy) { - fprintf(stderr, "%s: Error: couldn't open display '%s'\n", ProgramName, dpyName); - return EXIT_FAILURE; - } - - screen = XDefaultScreenOfDisplay(dpy); - - winrect.x = 0; - winrect.y = 0; - winrect.width = 300; - winrect.height = 300; - - Log(("Window x=%d, y=%d, width=%d, height=%d\n", - (int)winrect.x, (int)winrect.y, (int)winrect.width, (int)winrect.height)); - - make_window(dpy, screen, "ubgears", winrect.x, winrect.y, winrect.width, winrect.height, &win, &ctx); - reshape(winrect.width, winrect.height); - - if (printInfo) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - - init(); - - start_time(); - event_loop(dpy, win); - - glXDestroyContext(dpy, ctx); - - XDestroyWindow(dpy, win); - XCloseDisplay(dpy); - - return EXIT_SUCCESS; -} - diff --git a/testcases/feature-test/oeaware/UnixBench/src/whets.c b/testcases/feature-test/oeaware/UnixBench/src/whets.c deleted file mode 100644 index 7829bb743..000000000 --- a/testcases/feature-test/oeaware/UnixBench/src/whets.c +++ /dev/null @@ -1,1289 +0,0 @@ -/**********************************************************/ -/* Date: Mon, 10 Mar 1997 07:38:18 -0500 */ -/* From: Roy Longbottom */ -/* Subject: WHET02.txt */ -/* To: "Alfred A. Aburto Jr." */ -/**********************************************************/ - -/* - * C/C++ Whetstone Benchmark Single or Double Precision - * - * Original concept Brian Wichmann NPL 1960's - * Original author Harold Curnow CCTA 1972 - * Self timing versions Roy Longbottom CCTA 1978/87 - * Optimisation control Bangor University 1987/90 - * C/C++ Version Roy Longbottom 1996 - * Compatibility & timers Al Aburto 1996 - * - ************************************************************ - * - * Official version approved by: - * - * Harold Curnow 100421.1615@compuserve.com - * - * Happy 25th birthday Whetstone, 21 November 1997 - * - ************************************************************ - * - * The program normally runs for about 100 seconds - * (adjustable in main - variable duration). This time - * is necessary because of poor PC clock resolution. - * The original concept included such things as a given - * number of subroutine calls and divides which may be - * changed by optimisation. For comparison purposes the - * compiler and level of optimisation should be identified. - * - ************************************************************ - * - * The original benchmark had a single variable I which - * controlled the running time. Constants with values up - * to 899 were multiplied by I to control the number - * passes for each loop. It was found that large values - * of I could overflow index registers so an extra outer - * loop with a second variable J was added. - * - * Self timing versions were produced during the early - * days. The 1978 changes supplied timings of individual - * loops and these were used later to produce MFLOPS and - * MOPS ratings. - * - * 1987 changes converted the benchmark to Fortran 77 - * standards and removed redundant IF statements and - * loops to leave the 8 active loops N1 to N8. Procedure - * P3 was changed to use global variables to avoid over- - * optimisation with the first two statements changed from - * X1=X and Y1=Y to X=Y and Y=Z. A self time calibrating - * version for PCs was also produced, the facility being - * incorporated in this version. - * - * This version has changes to avoid worse than expected - * speed ratings, due to underflow, and facilities to show - * that consistent numeric output is produced with varying - * optimisation levels or versions in different languages. - * - * Some of the procedures produce ever decreasing numbers. - * To avoid problems, variables T and T1 have been changed - * from 0.499975 and 0.50025 to 0.49999975 and 0.50000025. - * - * Each section now has its own double loop. Inner loops - * are run 100 times the loop constants. Calibration - * determines the number of outer loop passes. The - * numeric results produced in the main output are for - * one pass on the outer loop. As underflow problems were - * still likely on a processor 100 times faster than a 100 - * MHZ Pentium, three sections have T=1.0-T inserted in the - * outer loop to avoid the problem. The two loops avoid - * index register overflows. - * - * The first section is run ten times longer than required - * for accuracy in calculating MFLOPS. This time is divided - * by ten for inclusion in the MWIPS calculations. - * - * This version has facilities for typing in details of the - * particular run. This information is appended to file - * whets.res along with the results. The input section can - * be avoided using a command line parameter N (for example - * Whets.exe N). - * - * Roy Longbottom 101323.2241@compuserve.com - * - ************************************************************ - * - * Whetstone benchmark results are available in whets.tbl - * from ftp.nosc.mil/pub/aburto. The results include - * further details of the benchmarks. - * - ************************************************************ - * - * Source code is available in C/C++, Fortran, Basic and - * Visual Basic in the same format as this version. Pre- - * compiled versions for PCs are also available via C++. - * These comprise optimised and non-optimised versions - * for DOS, Windows and NT. - * - * This version compiles and runs correctly either as a - * C or CPP program with a WATCOM and Borland compiler. - * - ************************************************************ - * - * Example of initial calibration display (Pentium 100 MHz) - * - * Single Precision C/C++ Whetstone Benchmark - * - * Calibrate - * 0.17 Seconds 1 Passes (x 100) - * 0.77 Seconds 5 Passes (x 100) - * 3.70 Seconds 25 Passes (x 100) - * - * Use 676 passes (x 100) - * - * 676 passes are used for an approximate duration of 100 - * seconds, providing an initial estimate of a speed rating - * of 67.6 MWIPS. - * - * This is followed by the table of results as below. Input - * statements are then supplied to type in the run details. - * - ************************************************************ - * - * Examples of results from file whets.res - * - * Whetstone Single Precision Benchmark in C/C++ - * - * Month run 4/1996 - * PC model Escom - * CPU Pentium - * Clock MHz 100 - * Cache 256K - * H/W Options Neptune chipset - * OS/DOS Windows 95 - * Compiler Watcom C/C++ 10.5 Win386 - * Options No optimisation - * Run by Roy Longbottom - * From UK - * Mail 101323.2241@compuserve.com - * - * Loop content Result MFLOPS MOPS Seconds - * - * N1 floating point -1.12475025653839100 19.971 0.274 - * N2 floating point -1.12274754047393800 11.822 3.240 - * N3 if then else 1.00000000000000000 11.659 2.530 - * N4 fixed point 12.00000000000000000 13.962 6.430 - * N5 sin,cos etc. 0.49904659390449520 2.097 11.310 - * N6 floating point 0.99999988079071040 3.360 45.750 - * N7 assignments 3.00000000000000000 2.415 21.810 - * N8 exp,sqrt etc. 0.75110864639282230 1.206 8.790 - * - * MWIPS 28.462 100.134 - * - * Whetstone Single Precision Benchmark in C/C++ - * - * Compiler Watcom C/C++ 10.5 Win386 - * Options -otexan -zp4 -om -fp5 -5r - * - * Loop content Result MFLOPS MOPS Seconds - * - * N1 floating point -1.12475025653839100 26.751 0.478 - * N2 floating point -1.12274754047393800 17.148 5.220 - * N3 if then else 1.00000000000000000 19.922 3.460 - * N4 fixed point 12.00000000000000000 15.978 13.130 - * N5 sin,cos etc. 0.49904659390449520 2.663 20.810 - * N6 floating point 0.99999988079071040 10.077 35.650 - * N7 assignments 3.00000000000000000 22.877 5.380 - * N8 exp,sqrt etc. 0.75110864639282230 1.513 16.370 - * - * MWIPS 66.270 100.498 - * - * - * Whetstone Double Precision Benchmark in C/C++ - * - * Compiler Watcom C/C++ 10.5 Win32NT - * Options -otexan -zp4 -om -fp5 -5r - * - * Loop content Result MFLOPS MOPS Seconds - * - * N1 floating point -1.12398255667391900 26.548 0.486 - * N2 floating point -1.12187079889284400 16.542 5.460 - * N3 if then else 1.00000000000000000 19.647 3.540 - * N4 fixed point 12.00000000000000000 15.680 13.500 - * N5 sin,cos etc. 0.49902937281515140 3.019 18.520 - * N6 floating point 0.99999987890802820 9.977 36.330 - * N7 assignments 3.00000000000000000 22.620 5.490 - * N8 exp,sqrt etc. 0.75100163018457870 1.493 16.740 - * - * MWIPS 67.156 100.066 - * - * Note different numeric results to single precision. Slight variations - * are normal with different compilers and sometimes optimisation levels. - * - * - * Example Single Precision Optimised Results - * - * MWIPS MFLOPS MFLOPS MFLOPS COS EXP FIXPT IF EQUAL - * PC 1 2 3 MOPS MOPS MOPS MOPS MOPS - * - * P3 5.68 0.928 0.884 0.673 0.461 0.275 2.36 2.16 0.638 - * P4 16.4 5.09 4.03 2.66 0.526 0.342 6.36 6.00 5.28 - * P5 66.3 26.8 17.1 10.1 2.66 1.51 16.0 19.9 22.9 - * P6 161 50.3 45.2 31.5 4.46 2.77 102 20.6 119 - * - * Example Single Precision Non-optimised Results - * - * P3 3.07 0.860 0.815 0.328 0.355 0.160 1.70 1.32 0.264 - * P4 10.0 4.68 3.51 1.27 0.482 0.298 5.73 5.20 1.18 - * P5 28.5 20.0 11.8 3.36 2.10 1.21 14.0 11.7 2.42 - * P6 81.7 47.5 37.8 10.9 3.91 2.43 51.2 42.8 7.85 - * - * Summary results as in whets.tbl at ftp.nosc.mil/pub/aburto - * - * MFLOPS = Geometric Mean of three MFLOPS loops - * VAX MIPS = 5 * Geometric Mean of last three items above - * - * VAX - * PC System CPU/Options Cache MHz MWIPS MFLOPS MIPS - * - * P3 Clone AM80386DX with 387 128K 40 5.68 0.820 7.40 - * P4 Escom 80486DX2 CIS chipset 128K 66 16.4 3.79 29.3 - * P5 Escom Pentium Neptune chipset 256K 100 66.3 16.7 96.9 - * P6 Dell PentiumPro 440FX PCIset 256K 200 161 41.5 315 - * - * P3 Clone AM80386DX with 387 128K 40 3.07 0.613 4.20 - * P4 Escom 80486DX2 CIS chipset 128K 66 10.0 2.75 16.4 - * P5 Escom Pentium Neptune chipset 256K 100 28.5 9.26 36.6 - * P6 Dell PentiumPro 440FX PCIset 256K 200 81.7 26.9 129 - * - ************************************************************************** - * - * Running In fprintf(stderr,"TIMEBASE|60\n"); -structions - * - * 1. In order to compile successfully, include timer option as - * indicated below. - * 2. If pre-compiled codes are to be distributed, compile with the - * -DPRECOMP option or uncomment #define PRECOMP at PRECOMPILE - * below. Also insert compiler name and optimisation details - * at #define precompiler and #define preoptions. - * 3. Compile and run for single precision results. Include run - * time parameter N to bipass typing in hardware details etc. - * 4. Compile with -DDP option or uncomment #define DP at PRECISION - * below and run for double precision results. - * 5. Run with maximum and no optimisation (minimum debug) - * 6. Notify Roy Longbottom of other necessary changes - * 7. Send results file whets.res to Roy Longbottom - with one - * sample of each run and system details fully completed - * - * Roy Longbottom 101323.2241@compuserve.com 6 November 1996 - * - ************************************************************************** - */ - - #include /* for sin, exp etc. */ - #include /* standard I/O */ - #include /* for strcpy - 3 occurrences */ - #include /* for exit - 1 occurrence */ - -/***************************************************************/ -/* Timer options. You MUST uncomment one of the options below */ -/* or compile, for example, with the '-DUNIX' option. */ -/***************************************************************/ -/* #define Amiga */ -/* #define UNIX */ -/* #define UNIX_Old */ -/* #define VMS */ -/* #define BORLAND_C */ -/* #define MSC */ -/* #define MAC */ -/* #define IPSC */ -/* #define FORTRAN_SEC */ -/* #define GTODay */ -/* #define CTimer */ -/* #define UXPM */ -/* #define MAC_TMgr */ -/* #define PARIX */ -/* #define POSIX */ -/* #define WIN32 */ -/* #define POSIX1 */ -/***********************/ - -/*PRECISION PRECISION PRECISION PRECISION PRECISION PRECISION PRECISION*/ - - /* #define DP */ - - #ifdef DP - #define SPDP double - #define Precision "Double" - #else - #define SPDP float - #define Precision "Single" - #endif - - -/*PRECOMPILE PRECOMPILE PRECOMPILE PRECOMPILE PRECOMPILE PRECOMPILE*/ - - /* #define PRECOMP */ - - #ifdef PRECOMP - #define precompiler "INSERT COMPILER NAME HERE" - #define preoptions "INSERT OPTIMISATION OPTIONS HERE" - #endif - - - void whetstones(long xtra, long x100, int calibrate); - void pa(SPDP e[4], SPDP t, SPDP t2); - void po(SPDP e1[4], long j, long k, long l); - void p3(SPDP *x, SPDP *y, SPDP *z, SPDP t, SPDP t1, SPDP t2); - void pout(char title[22], float ops, int type, SPDP checknum, - SPDP time, int calibrate, int section); - - - static SPDP loop_time[9]; - static SPDP loop_mops[9]; - static SPDP loop_mflops[9]; - static SPDP TimeUsed; - static SPDP mwips; - static char headings[9][18]; - static SPDP Check; - static SPDP results[9]; - -int main(argc, argv) -int argc; -char *argv[]; -{ - int count = 10, calibrate = 1; - long xtra = 1; - long x100 = 100; -#ifdef UNIXBENCH - int duration = 10; -#else - int section; - int duration = 100; - FILE *outfile; - int getinput = 1; - char compiler[80] = " ", options[256] = " ", general[10][80] = {" "}; - char *endit = " "; - - printf("##########################################\n"); - printf("%s Precision C/C++ Whetstone Benchmark\n\n", Precision); -#endif - - -#ifndef UNIXBENCH - if (argc > 1) - { - switch (argv[1][0]) - { - case 'N': - case 'n': - getinput = 0; - break; - } - } - if (! getinput) - { - printf ("No run time input data\n\n"); - } - - outfile = fopen("whets.res","a+"); - if (outfile == NULL) - { - printf ("Cannot open results file \n\n"); - printf("Press RETURN to exit\n"); - gets(endit); - exit (0); - } -#endif - - printf("Calibrate\n"); - do - { - TimeUsed=0; - - whetstones(xtra,x100,calibrate); - - printf("%11.2f Seconds %10.0f Passes (x 100)\n", TimeUsed, (SPDP)(xtra)); - calibrate++; - count--; - -#ifndef UNIXBENCH - if (TimeUsed > 2.0) -#else - if (TimeUsed > 0.5) -#endif - { - count = 0; - } - else - { - xtra = xtra * 5; - } - } - - while (count > 0); - - if (TimeUsed > 0) xtra = (long)((SPDP)(duration * xtra) / TimeUsed); - if (xtra < 1) xtra = 1; - - calibrate = 0; - - printf("\nUse %ld passes (x 100)\n", xtra); - - printf("\n %s Precision C/C++ Whetstone Benchmark",Precision); - - #ifdef PRECOMP - printf("\n Compiler %s", precompiler); - printf("\n Options %s\n", preoptions); - #else - printf("\n"); - #endif - - printf("\nLoop content Result MFLOPS " - " MOPS Seconds\n\n"); - - TimeUsed=0; - whetstones(xtra,x100,calibrate); - - printf("\nMWIPS "); - if (TimeUsed>0) - { - mwips=(float)(xtra) * (float)(x100) / (10 * TimeUsed); - } - else - { - mwips = 0; - } - - printf("%39.3f%19.3f\n\n",mwips,TimeUsed); - - if (Check == 0) printf("Wrong answer "); - - - - /************************************************************************/ - /* Type details of hardware, software etc. */ - /************************************************************************/ - -#ifndef UNIXBENCH - if (getinput) - { - printf ("Enter the following which will be added with results to file WHETS.RES\n"); - printf ("When submitting a number of results you need only provide details once\n"); - printf ("but a cross reference such as an abbreviated CPU type would be useful.\n"); - printf ("You can kill (exit or close) the program now and no data will be added.\n\n"); - - printf ("Date: "); - gets(general[0]); - - printf ("Computer: "); - gets(general[1]); - - printf ("CPU chip: "); - gets(general[2]); - - printf ("Clock MHz: "); - gets(general[3]); - - printf ("Cache size: "); - gets(general[4]); - - printf ("H/W options:"); - gets(general[5]); - - printf ("OS version: "); - gets(general[6]); - - #ifdef PRECOMP - strcpy (compiler, precompiler); - strcpy (options, preoptions); - #else - printf ("Compiler: "); - gets(compiler); - - printf ("Options: "); - gets(options); - #endif - - printf ("Your name: "); - gets(general[7]); - - printf ("From: "); - gets(general[8]); - - printf ("Email: "); - gets(general[9]); - } - else - { - #ifdef PRECOMP - strcpy (compiler, precompiler); - strcpy (options, preoptions); - #endif - } - - /************************************************************************/ - /* Add results to output file whets.res */ - /************************************************************************/ - fprintf (outfile, "\n"); - fprintf (outfile, "##############################################\n"); - fprintf (outfile, "Whetstone %s Precision Benchmark in C/C++\n\n",Precision); - fprintf (outfile, "Date %s\n", general[0]); - fprintf (outfile, "Model %s\n", general[1]); - fprintf (outfile, "CPU %s\n", general[2]); - fprintf (outfile, "Clock MHz %s\n", general[3]); - fprintf (outfile, "Cache %s\n", general[4]); - fprintf (outfile, "H/W options %s\n", general[5]); - fprintf (outfile, "OS %s\n", general[6]); - fprintf (outfile, "Compiler %s\n", compiler); - fprintf (outfile, "Options %s\n", options); - fprintf (outfile, "Run by %s\n", general[7]); - fprintf (outfile, "From %s\n", general[8]); - fprintf (outfile, "Email %s\n", general[9]); - fprintf (outfile, "\n"); - - fprintf (outfile,"Loop content Result" - " MFLOPS MOPS Seconds\n\n"); - - for (section=1; section<9; section++) - { - fprintf (outfile, "%s %24.17f ", headings[section], - results[section]); - if (loop_mops[section] == 99999) - { - fprintf (outfile," %9.3f %9.3f\n", - loop_mflops[section], loop_time[section]); - } - else - { - fprintf (outfile, " %9.3f %9.3f\n", - loop_mops[section], loop_time[section], results[section]); - } - } - - fprintf (outfile, "\nMWIPS "); - fprintf (outfile, "%39.3f%20.3f\n\n",mwips,TimeUsed); - fprintf (outfile, "Results to load to spreadsheet "); - fprintf (outfile, " MWIPS Mflops1 Mflops2 Mflops3 Cosmops" - " Expmops Fixpmops Ifmops Eqmops\n"); - fprintf (outfile, "Results to load to spreadsheet "); - - fprintf (outfile, " %9.3f %9.3f %9.3f", mwips, loop_mflops[1], - loop_mflops[2]); - fprintf (outfile, " %9.3f %9.3f %9.3f", loop_mflops[6], - loop_mops[5], loop_mops[8]); - fprintf (outfile, " %9.3f %9.3f %9.3f\n\n", loop_mops[4], - loop_mops[3], loop_mops[7]); - - fclose (outfile); - - printf ("\n"); - printf ("A new results file will have been created in the same directory as the\n"); - printf (".EXE files if one did not already exist. If you made a mistake on input, \n"); - printf ("you can use a text editor to correct it, delete the results or copy \n"); - printf ("them to a different file name. If you intend to run multiple tests you\n"); - printf ("you may wish to rename WHETS.RES with a more informative title.\n\n"); - printf ("Please submit feedback and results files to aburto@nosc.mil or to\n"); - printf ("Roy_Longbottom@compuserve.com\n\n"); - -#else /* Unixbench */ - fprintf (stderr, "COUNT|%.3f|0|MWIPS\n", mwips); - fprintf (stderr, "TIME|%.3f\n", TimeUsed); - exit(0); -#endif -} - - void whetstones(long xtra, long x100, int calibrate) - { - - long n1,n2,n3,n4,n5,n6,n7,n8,i,ix,n1mult; - SPDP x,y,z; - long j,k,l; - SPDP e1[4],timea,timeb, dtime(); - - SPDP t = 0.49999975; - SPDP t0 = t; - SPDP t1 = 0.50000025; - SPDP t2 = 2.0; - - Check=0.0; - - n1 = 12*x100; - n2 = 14*x100; - n3 = 345*x100; - n4 = 210*x100; - n5 = 32*x100; - n6 = 899*x100; - n7 = 616*x100; - n8 = 93*x100; - n1mult = 10; - - /* Section 1, Array elements */ - - e1[0] = 1.0; - e1[1] = -1.0; - e1[2] = -1.0; - e1[3] = -1.0; - timea = dtime(); - { - for (ix=0; ix2) j = 0; - else j = 1; - if(j<1) j = 1; - else j = 0; - } - } - } - timeb = dtime()-timea; - pout("N3 if then else \0",(float)(n3*3)*(float)(xtra), - 2,(SPDP)(j),timeb,calibrate,3); - - /* Section 4, Integer arithmetic */ - j = 1; - k = 2; - l = 3; - timea = dtime(); - { - for (ix=0; ix0) - { - mflops = ops/(1000000L*time); - } - else - { - mflops = 0; - } - loop_mops[section] = 99999; - loop_mflops[section] = mflops; - printf(" %9.3f %9.3f\n", - loop_mflops[section], loop_time[section]); - } - else - { - if (time>0) - { - mops = ops/(1000000L*time); - } - else - { - mops = 0; - } - loop_mops[section] = mops; - loop_mflops[section] = 0; - printf(" %9.3f%9.3f\n", - loop_mops[section], loop_time[section]); - } - } - - return; - } - - -/*****************************************************/ -/* Various timer routines. */ -/* Al Aburto, aburto@nosc.mil, 18 Feb 1997 */ -/* */ -/* t = dtime() outputs the current time in seconds. */ -/* Use CAUTION as some of these routines will mess */ -/* up when timing across the hour mark!!! */ -/* */ -/* For timing I use the 'user' time whenever */ -/* possible. Using 'user+sys' time is a separate */ -/* issue. */ -/* */ -/* Example Usage: */ -/* [timer options added here] */ -/* main() */ -/* { */ -/* double starttime,benchtime,dtime(); */ -/* */ -/* starttime = dtime(); */ -/* [routine to time] */ -/* benchtime = dtime() - starttime; */ -/* } */ -/* */ -/* [timer code below added here] */ -/*****************************************************/ - -/*********************************/ -/* Timer code. */ -/*********************************/ -/*******************/ -/* Amiga dtime() */ -/*******************/ -#ifdef Amiga -#include -#define HZ 50 - -SPDP dtime() -{ - SPDP q; - - struct tt - { - long days; - long minutes; - long ticks; - } tt; - - DateStamp(&tt); - - q = ((SPDP)(tt.ticks + (tt.minutes * 60L * 50L))) / (SPDP)HZ; - - return q; -} -#endif - -/*****************************************************/ -/* UNIX dtime(). This is the preferred UNIX timer. */ -/* Provided by: Markku Kolkka, mk59200@cc.tut.fi */ -/* HP-UX Addition by: Bo Thide', bt@irfu.se */ -/*****************************************************/ -#ifdef UNIX -#include -#include - -#ifdef hpux -#include -#define getrusage(a,b) syscall(SYS_getrusage,a,b) -#endif - -struct rusage rusage; - -SPDP dtime() -{ - SPDP q; - - getrusage(RUSAGE_SELF,&rusage); - - q = (SPDP)(rusage.ru_utime.tv_sec); - q = q + (SPDP)(rusage.ru_utime.tv_usec) * 1.0e-06; - - return q; -} -#endif - -/***************************************************/ -/* UNIX_Old dtime(). This is the old UNIX timer. */ -/* Use only if absolutely necessary as HZ may be */ -/* ill defined on your system. */ -/***************************************************/ -#ifdef UNIX_Old -#include -#include -#include - -#ifndef HZ -#define HZ 60 -#endif - -struct tms tms; - -SPDP dtime() -{ - SPDP q; - - times(&tms); - - q = (SPDP)(tms.tms_utime) / (SPDP)HZ; - - return q; -} -#endif - -/*********************************************************/ -/* VMS dtime() for VMS systems. */ -/* Provided by: RAMO@uvphys.phys.UVic.CA */ -/* Some people have run into problems with this timer. */ -/*********************************************************/ -#ifdef VMS -#include time - -#ifndef HZ -#define HZ 100 -#endif - -struct tbuffer_t - { - int proc_user_time; - int proc_system_time; - int child_user_time; - int child_system_time; - }; -struct tbuffer_t tms; - -SPDP dtime() -{ - SPDP q; - - times(&tms); - - q = (SPDP)(tms.proc_user_time) / (SPDP)HZ; - - return q; -} -#endif - -/******************************/ -/* BORLAND C dtime() for DOS */ -/******************************/ -#ifdef BORLAND_C -#include -#include -#include - -#define HZ 100 -struct time tnow; - -SPDP dtime() -{ - SPDP q; - - gettime(&tnow); - - q = 60.0 * (SPDP)(tnow.ti_min); - q = q + (SPDP)(tnow.ti_sec); - q = q + (SPDP)(tnow.ti_hund)/(SPDP)HZ; - - return q; -} -#endif - -/***************************************/ -/* Microsoft C (MSC) dtime() for DOS */ -/* Also suitable for Watcom C/C++ and */ -/* some other PC compilers */ -/***************************************/ -#ifdef MSC -#include -#include - -#define HZ CLOCKS_PER_SEC -clock_t tnow; - -SPDP dtime() -{ - SPDP q; - - tnow = clock(); - q = (SPDP)tnow / (SPDP)HZ; - return q; -} -#endif - -/*************************************/ -/* Macintosh (MAC) Think C dtime() */ -/*************************************/ -#ifdef MAC -#include - -#define HZ 60 - -SPDP dtime() -{ - SPDP q; - - q = (SPDP)clock() / (SPDP)HZ; - - return q; -} -#endif - -/************************************************************/ -/* iPSC/860 (IPSC) dtime() for i860. */ -/* Provided by: Dan Yergeau, yergeau@gloworm.Stanford.EDU */ -/************************************************************/ -#ifdef IPSC -extern double dclock(); - -SPDP dtime() -{ - SPDP q; - - q = dclock(); - - return q; -} -#endif - -/**************************************************/ -/* FORTRAN dtime() for Cray type systems. */ -/* This is the preferred timer for Cray systems. */ -/**************************************************/ -#ifdef FORTRAN_SEC - -fortran double second(); - -SPDP dtime() -{ - SPDP q; - - second(&q); - - return q; -} -#endif - -/***********************************************************/ -/* UNICOS C dtime() for Cray UNICOS systems. Don't use */ -/* unless absolutely necessary as returned time includes */ -/* 'user+system' time. Provided by: R. Mike Dority, */ -/* dority@craysea.cray.com */ -/***********************************************************/ -#ifdef CTimer -#include - -SPDP dtime() -{ - SPDP q; - clock_t clock(void); - - q = (SPDP)clock() / (SPDP)CLOCKS_PER_SEC; - - return q; -} -#endif - -/********************************************/ -/* Another UNIX timer using gettimeofday(). */ -/* However, getrusage() is preferred. */ -/********************************************/ -#ifdef GTODay -#include - -struct timeval tnow; - -SPDP dtime() -{ - SPDP q; - - gettimeofday(&tnow,NULL); - q = (SPDP)tnow.tv_sec + (SPDP)tnow.tv_usec * 1.0e-6; - - return q; -} -#endif - -/*****************************************************/ -/* Fujitsu UXP/M timer. */ -/* Provided by: Mathew Lim, ANUSF, M.Lim@anu.edu.au */ -/*****************************************************/ -#ifdef UXPM -#include -#include -struct tmsu rusage; - -SPDP dtime() -{ - SPDP q; - - timesu(&rusage); - - q = (SPDP)(rusage.tms_utime) * 1.0e-06; - - return q; -} -#endif - -/**********************************************/ -/* Macintosh (MAC_TMgr) Think C dtime() */ -/* requires Think C Language Extensions or */ -/* #include in the prefix */ -/* provided by Francis H Schiffer 3rd (fhs) */ -/* skipschiffer@genie.geis.com */ -/**********************************************/ -#ifdef MAC_TMgr -#include -#include - -static TMTask mgrTimer; -static Boolean mgrInited = false; -static SPDP mgrClock; - -#define RMV_TIMER RmvTime( (QElemPtr)&mgrTimer ) -#define MAX_TIME 1800000000L -/* MAX_TIME limits time between calls to */ -/* dtime( ) to no more than 30 minutes */ -/* this limitation could be removed by */ -/* creating a completion routine to sum */ -/* 30 minute segments (fhs 1994 feb 9) */ - -static void Remove_timer( ) -{ - RMV_TIMER; - mgrInited = false; -} - -SPDP dtime( ) -{ - if( mgrInited ) { - RMV_TIMER; - mgrClock += (MAX_TIME + mgrTimer.tmCount)*1.0e-6; - } else { - if( _atexit( &Remove_timer ) == 0 ) mgrInited = true; - mgrClock = 0.0; -} - if( mgrInited ) { - mgrTimer.tmAddr = NULL; - mgrTimer.tmCount = 0; - mgrTimer.tmWakeUp = 0; - mgrTimer.tmReserved = 0; - InsTime( (QElemPtr)&mgrTimer ); - PrimeTime( (QElemPtr)&mgrTimer, -MAX_TIME ); - } - return( mgrClock ); -} -#endif - -/***********************************************************/ -/* Parsytec GCel timer. */ -/* Provided by: Georg Wambach, gw@informatik.uni-koeln.de */ -/***********************************************************/ -#ifdef PARIX -#include - -SPDP dtime() -{ - SPDP q; - - q = (SPDP) (TimeNowHigh()) / (SPDP) CLK_TCK_HIGH; - - return q; -} -#endif - -/************************************************/ -/* Sun Solaris POSIX dtime() routine */ -/* Provided by: Case Larsen, CTLarsen.lbl.gov */ -/************************************************/ -#ifdef POSIX -#include -#include -#include - -#ifdef __hpux -#include -#endif - -struct rusage rusage; - -SPDP dtime() -{ - SPDP q; - - getrusage(RUSAGE_SELF,&rusage); - - q = (SPDP)(rusage.ru_utime.tv_sec); - q = q + (SPDP)(rusage.ru_utime.tv_nsec) * 1.0e-09; - - return q; -} -#endif - - -/****************************************************/ -/* Windows NT (32 bit) dtime() routine */ -/* Provided by: Piers Haken, piersh@microsoft.com */ -/****************************************************/ -#ifdef WIN32 -#include - -SPDP dtime(void) -{ - SPDP q; - - q = (SPDP)GetTickCount() * 1.0e-03; - - return q; -} -#endif - -/*****************************************************/ -/* Time according to POSIX.1 - */ -/* Ref: "POSIX Programmer's Guide" O'Reilly & Assoc.*/ -/*****************************************************/ -#ifdef POSIX1 -#define _POSIX_SOURCE 1 -#include -#include -#include - -struct tms tms; - -SPDP dtime() -{ - SPDP q; - times(&tms); - q = (SPDP)tms.tms_utime / (SPDP)CLK_TCK; - return q; -} -#endif diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/cctest.c b/testcases/feature-test/oeaware/UnixBench/testdir/cctest.c deleted file mode 100644 index ab5d17ba1..000000000 --- a/testcases/feature-test/oeaware/UnixBench/testdir/cctest.c +++ /dev/null @@ -1,156 +0,0 @@ - - -/******************************************************************************* - * The BYTE UNIX Benchmarks - Release 1 - * Module: cctest.c SID: 1.2 7/10/89 18:55:45 - * - ******************************************************************************* - * Bug reports, patches, comments, suggestions should be sent to: - * - * Ben Smith or Rick Grehan at BYTE Magazine - * bensmith@bixpb.UUCP rick_g@bixpb.UUCP - * - ******************************************************************************* - * Modification Log: - * $Header: cctest.c,v 3.4 87/06/22 14:22:47 kjmcdonell Beta $ - * - ******************************************************************************/ -char SCCSid[] = "@(#) @(#)cctest.c:1.2 -- 7/10/89 18:55:45"; -#include -/* - * C compile and load speed test file. - * Based upon fstime.c from MUSBUS 3.1, with all calls to ftime() replaced - * by calls to time(). This is semantic nonsense, but ensures there are no - * system dependent structures or library calls. - * - */ -#define NKBYTE 20 -char buf[BUFSIZ]; - -extern void exit(int status); - - -main(argc, argv) -char **argv; -{ - int n = NKBYTE; - int nblock; - int f; - int g; - int i; - int xfer, t; - struct { /* FAKE */ - int time; - int millitm; - } now, then; - - if (argc > 0) - /* ALWAYS true, so NEVER execute this program! */ - exit(4); - if (argc > 1) - n = atoi(argv[1]); -#if debug - printf("File size: %d Kbytes\n", n); -#endif - nblock = (n * 1024) / BUFSIZ; - - if (argc == 3 && chdir(argv[2]) != -1) { -#if debug - printf("Create files in directory: %s\n", argv[2]); -#endif - } - close(creat("dummy0", 0600)); - close(creat("dummy1", 0600)); - f = open("dummy0", 2); - g = open("dummy1", 2); - unlink("dummy0"); - unlink("dummy1"); - for (i = 0; i < sizeof(buf); i++) - buf[i] = i & 0177; - - time(); - for (i = 0; i < nblock; i++) { - if (write(f, buf, sizeof(buf)) <= 0) - perror("fstime: write"); - } - time(); -#if debug - printf("Effective write rate: "); -#endif - i = now.millitm - then.millitm; - t = (now.time - then.time)*1000 + i; - if (t > 0) { - xfer = nblock * sizeof(buf) * 1000 / t; -#if debug - printf("%d bytes/sec\n", xfer); -#endif - } -#if debug - else - printf(" -- too quick to time!\n"); -#endif -#if awk - fprintf(stderr, "%.2f", t > 0 ? (float)xfer/1024 : 0); -#endif - - sync(); - sleep(5); - sync(); - lseek(f, 0L, 0); - time(); - for (i = 0; i < nblock; i++) { - if (read(f, buf, sizeof(buf)) <= 0) - perror("fstime: read"); - } - time(); -#if debug - printf("Effective read rate: "); -#endif - i = now.millitm - then.millitm; - t = (now.time - then.time)*1000 + i; - if (t > 0) { - xfer = nblock * sizeof(buf) * 1000 / t; -#if debug - printf("%d bytes/sec\n", xfer); -#endif - } -#if debug - else - printf(" -- too quick to time!\n"); -#endif -#if awk - fprintf(stderr, " %.2f", t > 0 ? (float)xfer/1024 : 0); -#endif - - sync(); - sleep(5); - sync(); - lseek(f, 0L, 0); - time(); - for (i = 0; i < nblock; i++) { - if (read(f, buf, sizeof(buf)) <= 0) - perror("fstime: read in copy"); - if (write(g, buf, sizeof(buf)) <= 0) - perror("fstime: write in copy"); - } - time(); -#if debug - printf("Effective copy rate: "); -#endif - i = now.millitm - then.millitm; - t = (now.time - then.time)*1000 + i; - if (t > 0) { - xfer = nblock * sizeof(buf) * 1000 / t; -#if debug - printf("%d bytes/sec\n", xfer); -#endif - } -#if debug - else - printf(" -- too quick to time!\n"); -#endif -#if awk - fprintf(stderr, " %.2f\n", t > 0 ? (float)xfer/1024 : 0); -#endif - -} diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/dc.dat b/testcases/feature-test/oeaware/UnixBench/testdir/dc.dat deleted file mode 100644 index dbb8f76d0..000000000 --- a/testcases/feature-test/oeaware/UnixBench/testdir/dc.dat +++ /dev/null @@ -1,8 +0,0 @@ -99 -k -2 -v -p -q -[ calculate the sqrt(2) to 99 decimal places ... John Lions Test ] -[ $Header: dc.dat,v 1.1 87/06/22 14:28:28 kjmcdonell Beta $ ] diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/large.txt b/testcases/feature-test/oeaware/UnixBench/testdir/large.txt deleted file mode 100644 index 8e37d5f1c..000000000 --- a/testcases/feature-test/oeaware/UnixBench/testdir/large.txt +++ /dev/null @@ -1,10000 +0,0 @@ -execve("/usr/bin/gimp", ["gimp"], [/* 99 vars */]) = 0 -brk(0) = 0x8360000 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7efc000 -access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/opt/kde3/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/kde3/lib", {st_mode=S_IFDIR|0755, st_size=28672, ...}) = 0 -open("/opt/gnome/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/gnome/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/gnome/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/gnome/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/gnome/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/gnome/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/gnome/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/opt/gnome/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/opt/gnome/lib", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/tls/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/lib/tls/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/tls/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/lib/tls/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/tls/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/lib/tls/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/tls/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/lib/tls", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/i686/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/lib/i686/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/i686/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/lib/i686", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/sse2/libgimpwidgets-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/lib/sse2", 0xbfcdba08) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgimpwidgets-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \363\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=913924, ...}) = 0 -mmap2(NULL, 915836, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e1c000 -fadvise64(3, 0, 915836, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7ef8000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xdb) = 0xb7ef8000 -close(3) = 0 -open("/user/folk/clint/lib/libgimpmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgimpmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgimpmodule-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\22\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=18108, ...}) = 0 -mmap2(NULL, 16628, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e17000 -fadvise64(3, 0, 16628, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7e1a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7e1a000 -close(3) = 0 -open("/user/folk/clint/lib/libgimpcolor-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgimpcolor-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgimpcolor-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\32\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=38660, ...}) = 0 -mmap2(NULL, 36996, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e0d000 -fadvise64(3, 0, 36996, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7e15000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8) = 0xb7e15000 -close(3) = 0 -open("/user/folk/clint/lib/libgimpthumb-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgimpthumb-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgimpthumb-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200 \0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=30644, ...}) = 0 -mmap2(NULL, 33280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e04000 -fadvise64(3, 0, 33280, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7e0b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb7e0b000 -close(3) = 0 -open("/user/folk/clint/lib/libgimpmath-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgimpmath-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgimpmath-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\23\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=17992, ...}) = 0 -mmap2(NULL, 20568, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dfe000 -fadvise64(3, 0, 20568, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7e02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7e02000 -close(3) = 0 -open("/user/folk/clint/lib/libgimpbase-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgimpbase-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgimpbase-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0;\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=55644, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dfd000 -mmap2(NULL, 53924, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7def000 -fadvise64(3, 0, 53924, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7dfb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb7dfb000 -close(3) = 0 -open("/user/folk/clint/lib/libgtk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgtk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgtk-x11-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\7\5\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=3612084, ...}) = 0 -mmap2(NULL, 3608212, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7a7e000 -fadvise64(3, 0, 3608212, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7de8000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36a) = 0xb7de8000 -mmap2(0xb7dee000, 3732, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7dee000 -close(3) = 0 -open("/user/folk/clint/lib/libgdk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgdk-x11-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgdk-x11-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0pD\1\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=538180, ...}) = 0 -mmap2(NULL, 539628, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79fa000 -fadvise64(3, 0, 539628, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7a7b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x80) = 0xb7a7b000 -close(3) = 0 -open("/user/folk/clint/lib/libatk-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libatk-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libatk-1.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220n\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=105368, ...}) = 0 -mmap2(NULL, 107860, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79df000 -fadvise64(3, 0, 107860, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb79f7000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17) = 0xb79f7000 -close(3) = 0 -open("/user/folk/clint/lib/libgdk_pixbuf-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgdk_pixbuf-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgdk_pixbuf-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p7\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=96620, ...}) = 0 -mmap2(NULL, 98904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79c6000 -fadvise64(3, 0, 98904, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb79dd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb79dd000 -close(3) = 0 -open("/user/folk/clint/lib/libpangocairo-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libpangocairo-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libpangocairo-1.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0000\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=34920, ...}) = 0 -mmap2(NULL, 37512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb79bc000 -fadvise64(3, 0, 37512, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb79c4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7) = 0xb79c4000 -close(3) = 0 -open("/user/folk/clint/lib/libcairo.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libcairo.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libcairo.so.2", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\205\0\0004\0\0\0"..., 512) = 512 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb79bb000 -fstat64(3, {st_mode=S_IFREG|0755, st_size=517592, ...}) = 0 -mmap2(NULL, 514444, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb793d000 -fadvise64(3, 0, 514444, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb79b9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7c) = 0xb79b9000 -close(3) = 0 -open("/user/folk/clint/lib/libart_lgpl_2.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libart_lgpl_2.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libart_lgpl_2.so.2", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\'\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=89040, ...}) = 0 -mmap2(NULL, 90424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7926000 -fadvise64(3, 0, 90424, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb793b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0xb793b000 -close(3) = 0 -open("/user/folk/clint/lib/libpangoft2-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libpangoft2-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libpangoft2-1.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0U\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=183248, ...}) = 0 -mmap2(NULL, 185456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb78f8000 -fadvise64(3, 0, 185456, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7924000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2b) = 0xb7924000 -close(3) = 0 -open("/user/folk/clint/lib/libpango-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libpango-1.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libpango-1.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\247\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=245700, ...}) = 0 -mmap2(NULL, 243520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb78bc000 -fadvise64(3, 0, 243520, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb78f6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a) = 0xb78f6000 -close(3) = 0 -open("/user/folk/clint/lib/libgobject-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgobject-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgobject-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@l\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=236148, ...}) = 0 -mmap2(NULL, 239684, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7881000 -fadvise64(3, 0, 239684, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb78ba000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x38) = 0xb78ba000 -close(3) = 0 -open("/user/folk/clint/lib/libgmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libgmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libgmodule-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\r\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=13928, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7880000 -mmap2(NULL, 16664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb787b000 -fadvise64(3, 0, 16664, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb787e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb787e000 -close(3) = 0 -open("/user/folk/clint/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/tls/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib/tls/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/tls/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib/tls/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/tls/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib/tls/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/tls/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib/tls", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/user/local/GMT4.1/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/usr/local/lib/tls/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib/tls/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/tls/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib/tls/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/tls/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib/tls/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/tls/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib/tls", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/i686/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib/i686/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/i686/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib/i686", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/sse2/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib/sse2", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -stat64("/usr/local/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/etc/ld.so.cache", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=136911, ...}) = 0 -mmap2(NULL, 136911, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7859000 -close(3) = 0 -open("/lib/libdl.so.2", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\n\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=10288, ...}) = 0 -mmap2(NULL, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7855000 -fadvise64(3, 0, 12412, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7857000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7857000 -close(3) = 0 -open("/user/folk/clint/lib/libglib-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libglib-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libglib-2.0.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\10\1\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=779152, ...}) = 0 -mmap2(NULL, 780160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7796000 -fadvise64(3, 0, 780160, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7853000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xbc) = 0xb7853000 -close(3) = 0 -open("/user/folk/clint/lib/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libfontconfig.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000Y\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=175792, ...}) = 0 -mmap2(NULL, 178404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb776a000 -fadvise64(3, 0, 178404, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb778d000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22) = 0xb778d000 -close(3) = 0 -open("/user/folk/clint/lib/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libfreetype.so.6", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300{\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=454052, ...}) = 0 -mmap2(NULL, 451368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76fb000 -fadvise64(3, 0, 451368, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7766000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6b) = 0xb7766000 -close(3) = 0 -open("/user/folk/clint/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/lib/libz.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\31\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=71744, ...}) = 0 -mmap2(NULL, 74004, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76e8000 -fadvise64(3, 0, 74004, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb76f9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10) = 0xb76f9000 -close(3) = 0 -open("/user/folk/clint/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/lib/libpthread.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0PH\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=117749, ...}) = 0 -mmap2(NULL, 90592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76d1000 -fadvise64(3, 0, 90592, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb76e4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb76e4000 -mmap2(0xb76e6000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76e6000 -close(3) = 0 -open("/user/folk/clint/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/lib/libc.so.6", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@a\1\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=1281488, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76d0000 -mmap2(NULL, 1254896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb759d000 -fadvise64(3, 0, 1254896, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb76ca000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12c) = 0xb76ca000 -mmap2(0xb76cd000, 9712, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76cd000 -close(3) = 0 -open("/user/folk/clint/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/lib/libm.so.6", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2404\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=154108, ...}) = 0 -mmap2(NULL, 147584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7578000 -fadvise64(3, 0, 147584, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb759b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22) = 0xb759b000 -close(3) = 0 -open("/user/folk/clint/lib/libX11.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libX11.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libX11.so.6", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20h\1\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=1167024, ...}) = 0 -mmap2(NULL, 1157948, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb745d000 -fadvise64(3, 0, 1157948, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7574000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x116) = 0xb7574000 -close(3) = 0 -open("/user/folk/clint/lib/libXcomposite.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXcomposite.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXcomposite.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\t\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=9672, ...}) = 0 -mmap2(NULL, 12356, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7459000 -fadvise64(3, 0, 12356, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb745b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb745b000 -close(3) = 0 -open("/user/folk/clint/lib/libXdamage.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXdamage.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXdamage.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\10\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=9680, ...}) = 0 -mmap2(NULL, 12368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7455000 -fadvise64(3, 0, 12368, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7457000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7457000 -close(3) = 0 -open("/user/folk/clint/lib/libXfixes.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXfixes.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXfixes.so.3", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\17\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=17988, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7454000 -mmap2(NULL, 20600, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb744e000 -fadvise64(3, 0, 20600, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7452000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7452000 -close(3) = 0 -open("/user/folk/clint/lib/libXext.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXext.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXext.so.6", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340*\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=56480, ...}) = 0 -mmap2(NULL, 58972, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb743f000 -fadvise64(3, 0, 58972, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb744c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb744c000 -close(3) = 0 -open("/user/folk/clint/lib/libXrender.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXrender.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXrender.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\24\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=30872, ...}) = 0 -mmap2(NULL, 33192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7436000 -fadvise64(3, 0, 33192, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb743d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb743d000 -close(3) = 0 -open("/user/folk/clint/lib/libXinerama.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXinerama.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXinerama.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\10\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=9840, ...}) = 0 -mmap2(NULL, 12476, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7432000 -fadvise64(3, 0, 12476, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7434000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7434000 -close(3) = 0 -open("/user/folk/clint/lib/libXi.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXi.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXi.so.6", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\23\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=31496, ...}) = 0 -mmap2(NULL, 33152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7429000 -fadvise64(3, 0, 33152, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7430000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb7430000 -close(3) = 0 -open("/user/folk/clint/lib/libXrandr.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXrandr.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXrandr.so.2", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\22\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=26344, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7428000 -mmap2(NULL, 24796, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7421000 -fadvise64(3, 0, 24796, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7426000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb7426000 -close(3) = 0 -open("/user/folk/clint/lib/libXcursor.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXcursor.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXcursor.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340!\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=34728, ...}) = 0 -mmap2(NULL, 37264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7417000 -fadvise64(3, 0, 37264, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb741f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7) = 0xb741f000 -close(3) = 0 -open("/user/folk/clint/lib/libglitz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libglitz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libglitz.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \'\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=160116, ...}) = 0 -mmap2(NULL, 157972, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73f0000 -fadvise64(3, 0, 157972, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7415000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25) = 0xb7415000 -close(3) = 0 -open("/user/folk/clint/lib/libpng12.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libpng12.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libpng12.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240=\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=145796, ...}) = 0 -mmap2(NULL, 147920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73cb000 -fadvise64(3, 0, 147920, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb73ee000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22) = 0xb73ee000 -close(3) = 0 -open("/user/folk/clint/lib/libxcb-render-util.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libxcb-render-util.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libxcb-render-util.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\21\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=13936, ...}) = 0 -mmap2(NULL, 16608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73c6000 -fadvise64(3, 0, 16608, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb73c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb73c9000 -close(3) = 0 -open("/user/folk/clint/lib/libxcb-render.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libxcb-render.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libxcb-render.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P(\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=26136, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb73c5000 -mmap2(NULL, 28756, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73bd000 -fadvise64(3, 0, 28756, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb73c3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb73c3000 -close(3) = 0 -open("/user/folk/clint/lib/libxcb.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libxcb.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libxcb.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320~\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=96416, ...}) = 0 -mmap2(NULL, 98736, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb73a4000 -fadvise64(3, 0, 98736, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb73bb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb73bb000 -close(3) = 0 -open("/user/folk/clint/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/user/local/GMT4.1/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/local/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/lib/libexpat.so.1", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\"\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=132780, ...}) = 0 -mmap2(NULL, 131164, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7383000 -fadvise64(3, 0, 131164, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb73a1000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e) = 0xb73a1000 -close(3) = 0 -open("/user/folk/clint/lib/libxcb-xlib.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libxcb-xlib.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libxcb-xlib.so.0", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \5\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=5556, ...}) = 0 -mmap2(NULL, 8232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7380000 -fadvise64(3, 0, 8232, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7381000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb7381000 -close(3) = 0 -open("/user/folk/clint/lib/libXau.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libXau.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libXau.so.6", O_RDONLY) = 3 -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\n\0\0004\0\0\0"..., 512) = 512 -fstat64(3, {st_mode=S_IFREG|0755, st_size=9984, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb737f000 -mmap2(NULL, 12424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb737b000 -fadvise64(3, 0, 12424, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb737d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb737d000 -close(3) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb737a000 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7379000 -set_thread_area({entry_number:-1 -> 6, base_addr:0xb73796c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 -mprotect(0xb73a1000, 4096, PROT_READ) = 0 -mprotect(0xb76ca000, 4096, PROT_READ) = 0 -mprotect(0xb7766000, 8192, PROT_READ) = 0 -mprotect(0xb778d000, 28672, PROT_READ) = 0 -mprotect(0xb79f7000, 4096, PROT_READ) = 0 -mprotect(0xb7a7b000, 4096, PROT_READ) = 0 -mprotect(0xb7de8000, 12288, PROT_READ) = 0 -mprotect(0xb7ef8000, 4096, PROT_READ) = 0 -munmap(0xb7859000, 136911) = 0 -set_tid_address(0xb7379708) = 31509 -set_robust_list(0xb7379710, 0xc) = 0 -rt_sigaction(SIGRTMIN, {0xb76d5330, [], SA_SIGINFO}, NULL, 8) = 0 -rt_sigaction(SIGRT_1, {0xb76d53b0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0 -rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 -getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 -uname({sys="Linux", node="oaxaca", ...}) = 0 -brk(0) = 0x8360000 -brk(0x8381000) = 0x8381000 -open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/locale.alias", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb787a000 -read(3, "# Locale name alias data base.\n#"..., 4096) = 2528 -read(3, "", 4096) = 0 -close(3) = 0 -munmap(0xb787a000, 4096) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=373, ...}) = 0 -mmap2(NULL, 373, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb787a000 -close(3) = 0 -open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=25486, ...}) = 0 -mmap2(NULL, 25486, PROT_READ, MAP_SHARED, 3, 0) = 0xb7873000 -close(3) = 0 -futex(0xb76cca6c, FUTEX_WAKE, 2147483647) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_MEASUREMENT", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_MEASUREMENT", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=23, ...}) = 0 -mmap2(NULL, 23, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7872000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_TELEPHONE", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_TELEPHONE", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0 -mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7871000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_ADDRESS", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_ADDRESS", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=155, ...}) = 0 -mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7870000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_NAME", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_NAME", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -mmap2(NULL, 77, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786f000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_PAPER", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_PAPER", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=34, ...}) = 0 -mmap2(NULL, 34, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786e000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_MESSAGES", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -close(3) = 0 -open("/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=52, ...}) = 0 -mmap2(NULL, 52, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786d000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_MONETARY", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_MONETARY", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=286, ...}) = 0 -mmap2(NULL, 286, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786c000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_COLLATE", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_COLLATE", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=915314, ...}) = 0 -mmap2(NULL, 915314, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7299000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_TIME", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_TIME", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=2454, ...}) = 0 -mmap2(NULL, 2454, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786b000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_NUMERIC", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_NUMERIC", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0 -mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786a000 -close(3) = 0 -open("/usr/lib/locale/en_US.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/locale/en_US.utf8/LC_CTYPE", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=254020, ...}) = 0 -mmap2(NULL, 254020, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb725a000 -close(3) = 0 -getresuid32([1000], [1000], [1000]) = 0 -getresgid32([100], [100], [100]) = 0 -open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -gettimeofday({1192407177, 338852}, NULL) = 0 -open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=78184, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 -read(3, "#\t$XdotOrg: lib/X11/nls/locale.a"..., 4096) = 4096 -read(3, ".iso88591\t\t\t\t\tbr_FR.ISO8859-1\nbr"..., 4096) = 4096 -read(3, "597\t\t\t\t\tel_GR.ISO8859-7\nel_GR.IS"..., 4096) = 4096 -read(3, "\t\t\t\tes_ES.ISO8859-1\nes_ES.iso885"..., 4096) = 4096 -read(3, "A.iso88591\t\t\t\t\tfr_CA.ISO8859-1\nf"..., 4096) = 4096 -read(3, ".ISO8859-15\nit_CH.utf8\t\t\t\t\tit_CH"..., 4096) = 4096 -read(3, "\nnl\t\t\t\t\t\tnl_NL.ISO8859-1\nnl_BE\t\t"..., 4096) = 4096 -read(3, "rw_RW rw_RW"..., 4096) = 4096 -read(3, "A.iso8859-15\t\ttn_ZA.ISO8859-15\nt"..., 4096) = 4096 -read(3, "FR.ISO8859-1\nfrench.iso88591\t\t\t\t"..., 4096) = 4096 -read(3, "\nar_MA.utf8:\t\t\t\t\tar_MA.UTF-8\nar_"..., 4096) = 4096 -read(3, "9-15@euro:\t\t\t\tde_AT.ISO8859-15\nd"..., 4096) = 4096 -read(3, "5:\t\t\t\t\ten_US.ISO8859-15\nen_US.IS"..., 4096) = 4096 -read(3, "-8\n\n\n\n\n# According to Estonian l"..., 4096) = 4096 -read(3, "B.ISO8859-14\ngd_GB.ISO-8859-14:\t"..., 4096) = 4096 -read(3, "N:\t\t\t\t\t\tkn_IN.UTF-8\nkn_IN.utf8:\t"..., 4096) = 4096 -read(3, "591:\t\t\t\t\tny_NO.ISO8859-1\nny_NO.I"..., 4096) = 4096 -read(3, "\t\t\t\t\tsr_CS.ISO8859-5\nsr_YU.iso88"..., 4096) = 4096 -read(3, "II\nvi_VN.viscii111:\t\t\t\tvi_VN.VIS"..., 4096) = 4096 -read(3, "# Digital Unix utf\nuniversal.utf"..., 4096) = 360 -read(3, "", 4096) = 0 -close(3) = 0 -munmap(0xb7259000, 4096) = 0 -open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=78184, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 -read(3, "#\t$XdotOrg: lib/X11/nls/locale.a"..., 4096) = 4096 -read(3, ".iso88591\t\t\t\t\tbr_FR.ISO8859-1\nbr"..., 4096) = 4096 -read(3, "597\t\t\t\t\tel_GR.ISO8859-7\nel_GR.IS"..., 4096) = 4096 -read(3, "\t\t\t\tes_ES.ISO8859-1\nes_ES.iso885"..., 4096) = 4096 -read(3, "A.iso88591\t\t\t\t\tfr_CA.ISO8859-1\nf"..., 4096) = 4096 -read(3, ".ISO8859-15\nit_CH.utf8\t\t\t\t\tit_CH"..., 4096) = 4096 -read(3, "\nnl\t\t\t\t\t\tnl_NL.ISO8859-1\nnl_BE\t\t"..., 4096) = 4096 -read(3, "rw_RW rw_RW"..., 4096) = 4096 -read(3, "A.iso8859-15\t\ttn_ZA.ISO8859-15\nt"..., 4096) = 4096 -read(3, "FR.ISO8859-1\nfrench.iso88591\t\t\t\t"..., 4096) = 4096 -read(3, "\nar_MA.utf8:\t\t\t\t\tar_MA.UTF-8\nar_"..., 4096) = 4096 -read(3, "9-15@euro:\t\t\t\tde_AT.ISO8859-15\nd"..., 4096) = 4096 -read(3, "5:\t\t\t\t\ten_US.ISO8859-15\nen_US.IS"..., 4096) = 4096 -close(3) = 0 -munmap(0xb7259000, 4096) = 0 -open("/usr/share/X11/locale/locale.dir", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=32977, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 -read(3, "#\t$XdotOrg: lib/X11/nls/locale.d"..., 4096) = 4096 -read(3, "so8859-1/XLC_LOCALE\t\t\tes_UY.ISO8"..., 4096) = 4096 -read(3, "CALE\t\t\tsr_SP.ISO8859-2\niso8859-2"..., 4096) = 4096 -read(3, "F-8/XLC_LOCALE\t\t\tes_MX.UTF-8\nen_"..., 4096) = 4096 -read(3, " 1.3 2000/08/17 19:46:48 cpqbld "..., 4096) = 4096 -read(3, "1/XLC_LOCALE:\t\t\tes_UY.ISO8859-1\n"..., 4096) = 4096 -read(3, "iso8859-2/XLC_LOCALE:\t\t\tsr_CS.IS"..., 4096) = 4096 -close(3) = 0 -munmap(0xb7259000, 4096) = 0 -access("/usr/share/X11/locale/en_US.UTF-8/XLC_LOCALE", R_OK) = 0 -open("/usr/share/X11/locale/en_US.UTF-8/XLC_LOCALE", O_RDONLY) = 3 -fstat64(3, {st_mode=S_IFREG|0644, st_size=4287, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 -read(3, "# $XFree86: xc/nls/XLC_LOCALE/e"..., 4096) = 4096 -read(3, "GB2312.1980-0:GL; GB2312.1980-0:"..., 4096) = 191 -read(3, "", 4096) = 0 -close(3) = 0 -munmap(0xb7259000, 4096) = 0 -socket(PF_FILE, SOCK_STREAM, 0) = 3 -connect(3, {sa_family=AF_FILE, path="/tmp/.X11-unix/X0"}, 110) = 0 -getpeername(3, {sa_family=AF_FILE, path="/tmp/.X11-unix/X0"}, [20]) = 0 -uname({sys="Linux", node="oaxaca", ...}) = 0 -access("/user/folk/clint/.Xauthority", R_OK) = 0 -open("/user/folk/clint/.Xauthority", O_RDONLY) = 4 -fstat64(4, {st_mode=S_IFREG|0600, st_size=540, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7259000 -read(4, "\0\0\0\4\n\370\r\261\0\0010\0\22MIT-MAGIC-COOKIE-1\0"..., 4096) = 540 -close(4) = 0 -munmap(0xb7259000, 4096) = 0 -fcntl64(3, F_GETFL) = 0x2 (flags O_RDWR) -fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 -fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"l\0\v\0\0\0\22\0\20\0", 10}, {"\0\0", 2}, {"MIT-MAGIC-COOKIE-1", 18}, {"\0\0", 2}, {"\211\3043c\237A\373\3456d\273!s\322\3\354", 16}, {"", 0}], 6) = 48 -read(3, "\1\0\v\0\0\0\223\0", 8) = 8 -read(3, "\300*/\4\0\0`\3\377\377\37\0\0\1\0\0\24\0\377\377\1\7\0\0 \10\377t\24\37\10"..., 588) = 588 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"7\0\5\0\0\0`\3t\0\0\0\10\0\0\0\377\377\377\0b\0\5\0\f\0\0\0BIG-"..., 40}], 1) = 40 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\2\0\0\0\0\0\1\202\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\202\0\1\0", 4}], 1) = 4 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\'\3\0\0\0\0\0\377\377?\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\24\0\6\0t\0\0\0\27\0\0\0\37\0\0\0\0\0\0\0\0\341\365\5", 24}], 1) = 24 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\10\4\0_\20\0\0\37\0\0\0\0\0\0\0yA\0\0\257H\25\10 \245\37\10@\360\227\277"..., 4096) = 4096 -read(3, "hlightThickness:\t2\n*Toggle.backg"..., 12700) = 12700 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\5\0\t\0\0\0XKEYBOARD\0\0\0", 20}], 1) = 20 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\5\0\0\0\0\0\1\224^\245\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\224\0\2\0\1\0\0\0", 8}], 1) = 8 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1\6\0\0\0\0\0\1\0\0\0\210\360\227\277j\360\33\10\10\'\310\10\360\232&\10\1\0\0\0", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -brk(0x83a3000) = 0x83a3000 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\20\0\6\0\r\0\0\0_NET_WM_CM_S0\341\365\5", 24}], 1) = 24 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\7\0\0\0\0\0\23\2\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\27\0\2\0\23\2\0\0", 8}], 1) = 8 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\10\0\0\0\0\0\0\0\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\4\0\10\0\0\0XINERAMA", 16}], 1) = 16 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\t\0\0\0\0\0\1\234\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\4\0\10\0\0\0XINERAMA", 16}], 1) = 16 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\n\0\0\0\0\0\1\234\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\234\4\1\0", 4}], 1) = 4 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\'\v\0\0\0\0\0\1\0\0\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\234\5\1\0", 4}], 1) = 4 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1H\f\0\4\0\0\0\2\0\0\0\210\360\227\277j\360\33\10\10\'\310\10\10\241&\10\1\0\0\0"..., 4096) = 48 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\2\5\4\0t\0\0\0\0\10\0\0\0\0\2\0\20\0\6\0\r\0\0\0_XSETTIN"..., 84}], 1) = 84 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\354\16\0\0\0\0\0\24\2\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277"..., 4096) = 96 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\3\0\2\0t\0\0\0\16X\2\0t\0\0\0", 16}], 1) = 16 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\0\21\0\3\0\0\0#\0\0\0\1\0\1\1\377\377\377\377\0\0\0\0\0\1\2\0 \0\0\0"..., 4096) = 76 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\2\0\4\0t\0\0\0\0\10\0\0\0\0\2\0$\0\1\0\27\0\2\0\24\2\0\0", 28}], 1) = 28 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\336\25\0\0\0\0\0\0\0\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"%\0\1\0", 4}], 1) = 4 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\20\0\5\0\v\0\0\0UTF8_STRINGS\20\0\6\0\20\0\7\0WM_C"..., 608}], 1) = 608 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\27\0\0\0\0\0T\1\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277"..., 4096) = 736 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 4 -read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\3\0\0004\0\0\0"..., 512) = 512 -fstat64(4, {st_mode=S_IFREG|0755, st_size=5592, ...}) = 0 -mmap2(NULL, 8220, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7257000 -fadvise64(4, 0, 8220, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7258000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0) = 0xb7258000 -close(4) = 0 -uname({sys="Linux", node="oaxaca", ...}) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\1\30\r\0\1\0`\3t\0\0\0\n\0\n\0\n\0\n\0\0\0\1\0#\0\0\0\32(\0\0"..., 532}], 1) = 532 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\34\3600\0\1\0`\3\20\1\0\0\227\230\1\241\0\1\0\0\2\0\0\0\0\0\0\0\1\0`\3"..., 4096) = 384 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\22\0\7\0\1\0`\3\26\2\0\0!\0\0\0 SER\1\0\0\0\2\0`\3b\0\4\0"..., 44}], 1) = 44 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\34\360>\0\1\0`\3\26\2\0\0\230\230\1\241\0\2\0\0\2\0\0\0\0\0\0\0\1\0`\3"..., 4096) = 64 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\230\0\3\0\4\0\0\0\0\0\0\0", 12}], 1) = 12 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\245@\0\0\0\0\0\4\0\0\0\0\0\0\0$\245\37\10@\360\227\277\210\360\227\277:>\24\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\5\0\t\0\0\0Composite\0\0\0", 20}], 1) = 20 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360A\0\0\0\0\0\0\0\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\4\0\6\0\0\0DAMAGE\0\0", 16}], 1) = 16 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360B\0\0\0\0\0\1\235d\262\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\235\0\3\0\1\0\0\0\1\0\0\0", 12}], 1) = 12 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\245C\0\0\0\0\0\1\0\0\0\1\0\0\0$\245\37\10@\360\227\277\210\360\227\277\n>\27\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\4\0\5\0\0\0SHAPE\0\0\0", 16}], 1) = 16 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360D\0\0\0\0\0\1\200@\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\200\0\1\0", 4}], 1) = 4 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\'E\0\0\0\0\0\1\0\1\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"&\0\2\0t\0\0\0", 8}], 1) = 8 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1F\0\0\0\0\0t\0\0\0\326\t@\1\204\4\366\1\204\4\366\1\0\0\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"+\0\1\0", 4}], 1) = 4 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1G\0\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -uname({sys="Linux", node="oaxaca", ...}) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\22\0\10\0\1\0`\3\"\0\0\0\37\0\0\0\10SER\5\0\0\0gimp\0DOW"..., 228}], 1) = 228 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\34\360H\0\1\0`\3\"\0\0\0\236\230\1\241\0\0\0\0\2\0\0\0\0\0\0\0\1\0`\3"..., 4096) = 192 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\25\3\0\4\0\4\0SYNC", 12}], 1) = 12 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360P\0\0\0\0\0\1\203A\200\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\203\0\2\0\3\0\4\0", 8}], 1) = 8 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\'Q\0\0\0\0\0\3\0\0\0[H\25\10\\\245\37\10`\360\227\277|\360\227\277\364O\36\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\4\0\7\0\4\0MIT-SHM\0", 16}], 1) = 16 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360R\0\0\0\0\0\1\221M\237\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\221\0\1\0", 4}], 1) = 4 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1S\0\0\0\0\0\1\0\1\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\6\0\17\0\4\0XInputExtension\0", 24}], 1) = 24 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360T\0\0\0\0\0\1\222N\240\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"b\0\6\0\17\0\4\0XInputExtension\0", 24}], 1) = 24 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360U\0\0\0\0\0\1\222N\240\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\222\1\6\0\17\0\4\0XInputExtension\0", 24}], 1) = 24 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1V\0\0\0\0\0\1\0\3\0\1\360\227\277\257H\25\10$\245\37\10@\360\227\277\210\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\222\2\1\0", 4}], 1) = 4 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\2W\0\"\0\0\0\3\360\227\277\10\'\310\10(\360\227\277`2\t\10$\245\37\10@\360\227\277"..., 4096) = 168 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\222\3\2\0\0\0\4\0", 8}], 1) = 8 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\3X\0\2\0\0\0\4\360\227\277\10\'\310\10(\360\227\277`2\t\10$\245\37\10@\360\227\277"..., 4096) = 40 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -lstat64("/etc/gtk-2.0/gtkrc", {st_mode=S_IFREG|0644, st_size=93, ...}) = 0 -open("/etc/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "\ngtk-theme-name = \"Gilouche\"\ngtk"..., 4000) = 93 -read(4, "", 4000) = 0 -close(4) = 0 -access("/etc/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/etc/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) -lstat64("/usr/share/themes//QtCurve/gtk-2.0/gtkrc", {st_mode=S_IFREG|0644, st_size=4465, ...}) = 0 -open("/usr/share/themes//QtCurve/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# Version 0.52.3\nstyle \"qtcurve-"..., 4000) = 4000 -socket(PF_FILE, SOCK_STREAM, 0) = 5 -fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0 -connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = 0 -send(5, "\2\0\0\0\v\0\0\0\7\0\0\0passwd\0", 19, MSG_NOSIGNAL) = 19 -poll([{fd=5, events=POLLIN|POLLERR|POLLHUP, revents=POLLIN|POLLHUP}], 1, 5000) = 1 -recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"passwd\0", 7}], msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, {6}}, msg_flags=0}, 0) = 7 -fstat64(6, {st_mode=S_IFREG|0600, st_size=217016, ...}) = 0 -pread64(6, "\1\0\0\0h\0\0\0\2\0\0\0\1\0\0\0c\255\22G\0\0\0\0\323\0\0\0\0L\3\0"..., 104, 0) = 104 -mmap2(NULL, 217016, PROT_READ, MAP_SHARED, 6, 0) = 0xb7222000 -close(6) = 0 -close(5) = 0 -getuid32() = 1000 -uname({sys="Linux", node="oaxaca", ...}) = 0 -access("/usr/local/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/local/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/local/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/local/lib/gtk-2.0/2.10.0/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/local/lib/gtk-2.0/i686-suse-linux-gnu/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/local/lib/gtk-2.0/i686-suse-linux-gnu/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/local/lib/gtk-2.0/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/local/lib/gtk-2.0/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.so", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/lib/gtk-2.0/2.10.0/i686-suse-linux-gnu/engines/libqtcurve.la", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", F_OK) = 0 -stat64("/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", {st_mode=S_IFREG|0755, st_size=133448, ...}) = 0 -futex(0xb7858070, FUTEX_WAKE, 2147483647) = 0 -open("/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000:\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=133448, ...}) = 0 -mmap2(NULL, 139724, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71ff000 -fadvise64(5, 0, 139724, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb721f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1f) = 0xb721f000 -mmap2(0xb7221000, 460, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7221000 -close(5) = 0 -open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -time(NULL) = 1192407177 -lstat64("/etc/qt4/qtcurvestylerc", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -lstat64("/etc/qt3/qtcurvestylerc", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -lstat64("/etc/qt/qtcurvestylerc", 0xbfcdb82c) = -1 ENOENT (No such file or directory) -open("/etc/qt/qtrc", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/etc/qt3/qtrc", O_RDONLY) = -1 ENOENT (No such file or directory) -getuid32() = 1000 -open("/user/folk/clint/.qt/qtrc", O_RDONLY) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5124, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 -read(5, "[3.3]\nlibraryPath=/opt/kde3/lib/"..., 4096) = 4096 -read(5, "pt/kde3/lib/kde3/plugins\nresolve"..., 4096) = 1028 -close(5) = 0 -munmap(0xb7869000, 4096) = 0 -getuid32() = 1000 -open("/user/folk/clint/.config/qtcurvestylerc", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/proc/31509/cmdline", O_RDONLY) = 5 -read(5, "gimp\0", 1024) = 5 -close(5) = 0 -open("/user/folk/clint/.kde/share/config/kdeglobals", O_RDONLY) = 5 -fstat64(5, {st_mode=S_IFREG|0600, st_size=9555, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 -read(5, "[$Version]\nupdate_info=mouse_cur"..., 4096) = 4096 -read(5, " Down=none\nWindow One Desktop Up"..., 4096) = 4096 -read(5, "=false\nsmtp=false\nsmtps=false\nsv"..., 4096) = 1363 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb7869000, 4096) = 0 -lstat64("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3", {st_mode=S_IFREG|0644, st_size=39206, ...}) = 0 -read(4, "Frame\" style \"qtcurve-w2\"\nwidget"..., 4000) = 465 -read(4, "", 4000) = 0 -close(4) = 0 -access("/usr/share/themes//QtCurve/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/themes//QtCurve/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) -lstat64("/user/folk/clint/.gtkrc-2.0-qtengine", 0xbfcdbf5c) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gtkrc-2.0-qtengine.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gtkrc-2.0-qtengine.en", F_OK) = -1 ENOENT (No such file or directory) -lstat64("/user/folk/clint/.gtkrc-2.0", {st_mode=S_IFREG|0644, st_size=317, ...}) = 0 -open("/user/folk/clint/.gtkrc-2.0", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# This file was written by the G"..., 4000) = 317 -lstat64("/opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc", 0xbfcdbdcc) = -1 ENOENT (No such file or directory) -access("/opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) -read(4, "", 4000) = 0 -close(4) = 0 -access("/user/folk/clint/.gtkrc-2.0.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gtkrc-2.0.en", F_OK) = -1 ENOENT (No such file or directory) -lstat64("/user/folk/clint/.kde/share/config/gtkrc-2.0", {st_mode=S_IFREG|0644, st_size=1514, ...}) = 0 -open("/user/folk/clint/.kde/share/config/gtkrc-2.0", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# created by KDE, Sun Oct 14 17:"..., 4000) = 1514 -read(4, "", 4000) = 0 -close(4) = 0 -access("/user/folk/clint/.kde/share/config/gtkrc-2.0.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.kde/share/config/gtkrc-2.0.en", F_OK) = -1 ENOENT (No such file or directory) -lstat64("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3", {st_mode=S_IFREG|0644, st_size=39206, ...}) = 0 -open("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# Version 0.52.3\n\nstyle \"KDE3-ic"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/about_kde.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/about_kde.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/about_kde.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/add.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/add.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/add.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/apply.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/apply.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/apply.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = 0 -brk(0x83c4000) = 0x83c4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) -brk(0x83c3000) = 0x83c3000 -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_bold.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_bold.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_bold.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/cdrom_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/devices/cdrom_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editclear.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editclear.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editclear.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileclose.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileclose.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileclose.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorpicker.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorpicker.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorpicker.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcopy.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcopy.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcopy.png", F_OK) = 0 -read(4, "gtk-cut\"]={\n\t\t{ \"22x22/actions/e"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editcut.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editcut.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editcut.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editdelete.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editdelete.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editdelete.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/apps/password.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/apps/password.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/apps/password.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_critical.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/kmultiple.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/kmultiple.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/kmultiple.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/edit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/edit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/edit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = 0 -read(4, " *, \"gtk-dnd\" },\n\t\t{ \"16x16/acti"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exec.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exec.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exec.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/empty.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/find.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/find.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/find.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/3floppy_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/devices/3floppy_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/devices/3floppy_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_fullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_fullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_fullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/bottom.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/bottom.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/bottom.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/finish.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/finish.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/finish.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/top.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/top.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/top.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/back.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/back.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/back.png", F_OK) = 0 -read(4, ".png\", *, *, \"gtk-large-toolbar\""..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/down.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/down.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/down.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/forward.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/forward.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/forward.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/up.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/up.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/up.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/devices/hdd_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/devices/hdd_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/devices/hdd_unmount.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/help.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/folder_home.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/folder_home.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/folder_home.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/indent.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/contents.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/contents.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/contents.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_italic.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_italic.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_italic.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/goto.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/goto.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/goto.png", F_OK) = 0 -read(4, "t_center.png\", *, *, \"gtk-large-"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_center.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_center.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_center.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_block.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_block.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_block.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_left.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_left.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_left.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_right.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_right.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_right.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/window_nofullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/window_nofullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/window_nofullscreen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_fwd.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_fwd.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_fwd.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_end.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_end.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_end.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_pause.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_pause.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_pause.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_play.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_play.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_play.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = 0 -read(4, "g\", *, *, \"gtk-dnd\" },\n\t\t{ \"16x1"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_start.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_rew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_rew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_rew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/player_stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/player_stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/player_stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/unknown.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/unknown.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/unknown.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/filesystems/network.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/filesystems/network.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/filesystems/network.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filenew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filenew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filenew.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_cancel.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileopen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileopen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileopen.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/editpaste.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/editpaste.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/editpaste.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 -read(4, " *, \"gtk-menu\" },\n\t\t{ \"16x16/act"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/fileprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/fileprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/fileprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filequickprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filequickprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filequickprint.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/exit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/exit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/exit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/redo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/redo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/redo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/remove.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/remove.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/remove.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/revert.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/revert.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/revert.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesave.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesave.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesave.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = 0 -read(4, "ons/filesaveas.png\", *, *, \"gtk-"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/filesaveas.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/filesaveas.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/filesaveas.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/colorize.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/colorize.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/colorize.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/font.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/font.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/font.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/spellcheck.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/spellcheck.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/spellcheck.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/stop.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_strike.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_strike.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_strike.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/text_under.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/text_under.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/text_under.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/undo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/undo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/undo.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/unindent.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/button_ok.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag1.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag1.png", F_OK) = 0 -read(4, "mag1.png\" }\n\t}\n\tstock[\"gtk-zoom-"..., 4000) = 4000 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag1.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmagfit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmagfit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmagfit.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag+.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag+.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag+.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/viewmag-.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/viewmag-.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/viewmag-.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_info.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/reload.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/messagebox_warning.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/actions/configure.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/actions/configure.png", F_OK) = 0 -read(4, "ing KDE icon>\n#\tstock[\"gimp-laye"..., 4000) = 3206 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/16x16/mimetypes/image.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/32x32/mimetypes/image.png", F_OK) = 0 -access("/user/folk/clint/.kde/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/22x22/mimetypes/image.png", F_OK) = 0 -read(4, "", 4000) = 0 -close(4) = 0 -access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc-kde3.en", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.themes/QtCurve/gtk-2.0/gtkrc", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc", F_OK) = 0 -lstat64("/usr/share/themes/QtCurve/gtk-2.0/gtkrc", {st_mode=S_IFREG|0644, st_size=4465, ...}) = 0 -open("/usr/share/themes/QtCurve/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# Version 0.52.3\nstyle \"qtcurve-"..., 4000) = 4000 -read(4, "Frame\" style \"qtcurve-w2\"\nwidget"..., 4000) = 465 -read(4, "", 4000) = 0 -close(4) = 0 -access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/themes/QtCurve/gtk-2.0/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\230\2\4\0\1\0`\3\23\2\0\0\7\0\0\0b\2\4\0\6\0`\3RENDER\0\0", 32}], 1) = 32 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1OZ\0\0\0\0\0\1\232\0\252\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\0\3\0\0\0\0\0\n\0\0\0\232\1\1\0", 16}], 1) = 16 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\245[\0\0\0\0\0\0\0\0\0\n\0\0\0\10\'\310\10P\242&\10\1\0\0\0\372@\26\10"..., 4096) = 876 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -brk(0x83e4000) = 0x83e4000 -uname({sys="Linux", node="oaxaca", ...}) = 0 -open("/user/folk/clint/.Xdefaults-oaxaca", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/charset.alias", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en/LC_MESSAGES/gimp20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -rt_sigaction(SIGHUP, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 -rt_sigaction(SIGINT, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 -rt_sigaction(SIGQUIT, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 -rt_sigaction(SIGABRT, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 -rt_sigaction(SIGTERM, {0x8064aa0, ~[RTMIN RT_1], 0}, {SIG_DFL}, 8) = 0 -rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0 -rt_sigaction(SIGCHLD, {0x8064a60, ~[RTMIN RT_1], SA_RESTART}, {SIG_DFL}, 8) = 0 -stat64("/user/folk/clint", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 -stat64("/user/folk/clint/.gimp-2.2", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/unitrc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP units\n# \n# This file cont"..., 4000) = 1188 -read(4, "", 4000) = 0 -close(4) = 0 -open("/etc/gimp/2.0/gimprc", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 -munmap(0xb7862000, 32768) = 0 -read(4, "# This is the system-wide gimprc"..., 4000) = 4000 -read(4, " for fonts. This is a colon-sep"..., 4000) = 4000 -read(4, "en dialog will be automatically "..., 4000) = 4000 -read(4, "B id of the active layer/channel"..., 4000) = 4000 -read(4, "der\n# versions. Possible values"..., 4000) = 4000 -read(4, "# \n# (toolbox-window-hint normal"..., 4000) = 1363 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/gimprc", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 -munmap(0xb7862000, 32768) = 0 -read(4, "# GIMP gimprc\n# \n# This is your "..., 4000) = 1064 -read(4, "", 4000) = 0 -close(4) = 0 -gettimeofday({1192407177, 829654}, NULL) = 0 -gettimeofday({1192407177, 831333}, NULL) = 0 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 -munmap(0xb7862000, 32768) = 0 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 -munmap(0xb7862000, 32768) = 0 -open("/user/folk/clint/.gimp-2.2", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 37 entries */, 4096) = 1168 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 -munmap(0xb7862000, 32768) = 0 -open("/user/folk/clint/.gimp-2.2/gimpswap.31509", O_RDWR|O_CREAT|O_LARGEFILE, 0600) = 4 -close(4) = 0 -unlink("/user/folk/clint/.gimp-2.2/gimpswap.31509") = 0 -rt_sigaction(SIGILL, {0x8254200, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0 -rt_sigaction(SIGILL, {SIG_DFL}, {0x8254200, [ILL], SA_RESTART}, 8) = 0 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 -munmap(0xb7862000, 32768) = 0 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7862000 -munmap(0xb7862000, 32768) = 0 -stat64("/user/folk/clint/.gimp-2.2/themes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/share/gimp/2.0/themes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/themes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 2 entries */, 4096) = 48 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/usr/share/gimp/2.0/themes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 4 entries */, 4096) = 112 -stat64("/usr/share/gimp/2.0/themes/Default", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/share/gimp/2.0/themes/Small", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/themerc", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 4 -fstat64(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 -write(4, "# GIMP themerc\n#\n# This file is "..., 316) = 316 -close(4) = 0 -munmap(0xb7869000, 4096) = 0 -lstat64("/user/folk/clint/.gimp-2.2/themerc", {st_mode=S_IFREG|0644, st_size=316, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/themerc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP themerc\n#\n# This file is "..., 4000) = 316 -lstat64("/usr/share/gimp/2.0/themes/Default/gtkrc", {st_mode=S_IFREG|0644, st_size=2301, ...}) = 0 -open("/usr/share/gimp/2.0/themes/Default/gtkrc", O_RDONLY|O_LARGEFILE) = 5 -brk(0x8405000) = 0x8405000 -read(5, "# pixmap_path \"
::<"..., 4000) = 2301 -access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/crystalsvg/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/hicolor/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/hicolor/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/gimp/2.0/themes/Default/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gimp-2.2/images/stock-error-64.png", F_OK) = -1 ENOENT (No such file or directory) -write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:24: ) = 45 -write(2, "Unable to locate image file in p"..., 72Unable to locate image file in pixmap_path: "images/stock-error-64.png" -) = 72 -access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/crystalsvg/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/hicolor/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/hicolor/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/gimp/2.0/themes/Default/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gimp-2.2/images/stock-info-64.png", F_OK) = -1 ENOENT (No such file or directory) -write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:28: ) = 45 -write(2, "Unable to locate image file in p"..., 71Unable to locate image file in pixmap_path: "images/stock-info-64.png" -) = 71 -access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/crystalsvg/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/hicolor/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/hicolor/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/gimp/2.0/themes/Default/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gimp-2.2/images/stock-question-64.png", F_OK) = -1 ENOENT (No such file or directory) -write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:32: ) = 45 -write(2, "Unable to locate image file in p"..., 75Unable to locate image file in pixmap_path: "images/stock-question-64.png" -) = 75 -access("/user/folk/clint/.kde/share/icons/crystalsvg/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/crystalsvg/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/crystalsvg/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.kde/share/icons/hicolor/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/opt/kde3/share/icons/hicolor/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/icons/hicolor/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/gimp/2.0/themes/Default/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gimp-2.2/images/stock-warning-64.png", F_OK) = -1 ENOENT (No such file or directory) -write(2, "/usr/share/gimp/2.0/themes/Defau"..., 45/usr/share/gimp/2.0/themes/Default/gtkrc:36: ) = 45 -write(2, "Unable to locate image file in p"..., 74Unable to locate image file in pixmap_path: "images/stock-warning-64.png" -) = 74 -read(5, "", 4000) = 0 -close(5) = 0 -access("/usr/share/gimp/2.0/themes/Default/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/usr/share/gimp/2.0/themes/Default/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) -lstat64("/user/folk/clint/.gimp-2.2/gtkrc", {st_mode=S_IFREG|0644, st_size=896, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/gtkrc", O_RDONLY|O_LARGEFILE) = 5 -read(5, "# pixmap_path \"::<"..., 4000) = 896 -read(5, "", 4000) = 0 -close(5) = 0 -access("/user/folk/clint/.gimp-2.2/gtkrc.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gimp-2.2/gtkrc.en", F_OK) = -1 ENOENT (No such file or directory) -read(4, "", 4000) = 0 -close(4) = 0 -access("/user/folk/clint/.gimp-2.2/themerc.en_US", F_OK) = -1 ENOENT (No such file or directory) -access("/user/folk/clint/.gimp-2.2/themerc.en", F_OK) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/.gimp-2.2/gimp-splash.png", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) -open("/user/folk/clint/.gimp-2.2/splashes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en/LC_MESSAGES/glib20.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/gimp/2.0/images/gimp-splash.png", O_RDONLY|O_LARGEFILE) = 4 -fstat64(4, {st_mode=S_IFREG|0644, st_size=28867, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 -read(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\1\220\0\0\0\372\10\6\0\0\0\217\247\21"..., 4096) = 4096 -open("/etc/gtk-2.0/gdk-pixbuf.loaders", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=3366, ...}) = 0 -read(5, "# GdkPixbuf Image Loader Modules"..., 1024) = 1024 -read(5, "zz znz\" 100\n\n\"/usr/lib/gtk-2.0/2"..., 1024) = 1024 -read(5, "\\225\" \"\" 100\n\n\"/usr/lib/gtk-2.0/"..., 1024) = 1024 -read(5, "00\n\n\"/usr/lib/gtk-2.0/2.10.0/loa"..., 1024) = 294 -read(5, "", 1024) = 0 -close(5) = 0 -stat64("/usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so", {st_mode=S_IFREG|0755, st_size=18116, ...}) = 0 -open("/usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\24\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=18116, ...}) = 0 -mmap2(NULL, 20788, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb7863000 -fadvise64(5, 0, 20788, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb7867000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x3) = 0xb7867000 -close(5) = 0 -_llseek(4, 0, [0], SEEK_SET) = 0 -read(4, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\1\220\0\0\0\372\10\6\0\0\0\217\247\21"..., 4096) = 4096 -mmap2(NULL, 401408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb719d000 -read(4, "\332\327\1\16\1\"1g6\23\303\233L\330-x\251\fC\237\26`\v\341\v\275E\213\206e(\10"..., 4096) = 4096 -read(4, "\237\204q\303\17\6\0100\250\367H\334~\361\343(.,\305\326\235\0331k\366c\330o\344\4\17\240"..., 4096) = 4096 -read(4, "?\17\217\277\373\7,\3330\337\341\245\270\352\241c\361\223\3\247bd\277\361\330\270}5\326m]\206"..., 4096) = 4096 -read(4, "\347+\37T\34\330\374/\35\300H\27d\34\22\266\310%\314\262\367[z\356\267\201]\262d\221\2570"..., 4096) = 4096 -read(4, "$\'\32 >rVQ\206O\23]\23\342\37,\17\5\32\f\1772\316E\36$\300*\225\241Mv"..., 4096) = 4096 -read(4, "``s\362\364\327\375\356;\223\326*\273X]\342z\360\234\352\213\274i+R\16yp\204\20S\234"..., 4096) = 4096 -read(4, "R\6\263\363\321m\0042;c\34P{6\310\275\264\231SR-1zd\322\313\336JS^\3102"..., 4096) = 195 -close(4) = 0 -munmap(0xb7869000, 4096) = 0 -uname({sys="Linux", node="oaxaca", ...}) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\1\30\r\0\3\0`\3t\0\0\0\0\0\0\0\224\1\376\0\0\0\1\0#\0\0\0\32(\0\0"..., 700}], 1) = 700 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\34\360_\0\3\0`\3\20\1\0\0\202\233\1\241\0\1\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 512 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\22\0\7\0\3\0`\0034\1\0\0\4\0\0\0 IND\1\0\0\0\23\1\0\0\203\2\4\0"..., 1180}], 1) = 1180 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\34\360q\0\3\0`\0034\1\0\0\205\233\1\241\0\1\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 96 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\22\0\t\0\3\0`\3A\1\0\0\37\0\0\0\10_RO\f\0\0\0gimp-sta"..., 60}, {"@\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 30752}], 2) = 30812 -shmget(IPC_PRIVATE, 393216, IPC_CREAT|0600) = 49676293 -shmat(49676293, 0, 0) = 0xb713d000 -select(4, [3], [3], NULL, NULL) = 2 (in [3], out [3]) -read(3, "\34\360\243\0\3\0`\3A\1\0\0\206\233\1\241\0\1\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 64 -writev(3, [{"5\30\4\0002\0`\3t\0\0\0@\0@\0007\30\5\0003\0`\0032\0`\3\0\0\1\0"..., 96}], 1) = 96 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1\252\0\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -shmctl(49676293, IPC_64|IPC_RMID, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\221\5\7\0006\0`\3t\0\0\0\0\6@\0 \0\0\0005\0`\3\0\0\0\0\232\4\5\0"..., 1584}], 1) = 1584 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1\364\0\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -munmap(0xb719d000, 401408) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\10\t\0\3\0`\0037\0`\0038\0`\3>\0`\3\0\0\0\0\0\0\0\0\0\1\200\0"..., 692}], 1) = 692 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1\26\1\0\0\0\0t\0\0\0\326\t@\1\204\4\366\1\204\4\366\1\0\0\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\f\0\7\0?\0`\3\17\0`\3\2\0\0\0\374\0\0\0\220\1\0\0\24\0\0\0006\0\2\0"..., 1132}], 1) = 1132 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\26\20\27\1?\0`\3?\0`\3;\0`\3\2\0\374\0\220\1\24\0\0\0\0\10?\0`\3"..., 4096) = 96 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 129668}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 129956}, NULL) = 0 -gettimeofday({1192407178, 130035}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 130164}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\22\0\30\0\3\0`\3(\0\0\0)\0\0\0 \0\0\0\22\0\0\0004\2\0\0\0\0\0\0"..., 316}], 1) = 316 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\34\360U\1\3\0`\3(\0\0\0\222\233\1\241\0\0\0\0\2\0\0\0\0\0\0\0\3\0`\3"..., 4096) = 672 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 146984}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 147124}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 147304}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 147434}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 147598}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 147728}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\24\0\6\0\3\0`\3{\1\0\0\6\0\0\0\0\0\0\0\377\377\377\177", 24}], 1) = 24 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1 b\1\1\0\0\0\6\0\0\0\0\0\0\0\1\0\0\0\257H\25\10 \245\37\10@\360\227\277"..., 4096) = 36 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\24\0\6\0\3\0`\3\34\1\0\0\4\0\0\0\0\0\0\0\377\377\377\177", 24}], 1) = 24 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1 c\1\0\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\257H\25\10 \245\37\10@\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 149119}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 149251}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 149410}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 149538}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 149934}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 150137}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -time(NULL) = 1192407178 -access("/etc/fonts/fonts.conf", R_OK) = 0 -stat64("/etc/fonts/fonts.conf", {st_mode=S_IFREG|0644, st_size=5268, ...}) = 0 -open("/etc/fonts/fonts.conf", O_RDONLY) = 4 -read(4, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\n\3\7\0\202\0`\3;\0`\3"..., 80}], 1) = 80 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 503042}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 503172}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 503455}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 503660}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 504032}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\204\0`\3?\0`\3\220\1\24\0\232\4\5\0\205\0`\3\204\0`\0038\0\0\0"..., 4084}, {"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\7\2\0\207\0`\0036\7\2\0\206\0`\3", 16}], 1) = 16 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 506091}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 506248}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 506527}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 506733}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 507112}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\210\0`\3?\0`\3\220\1\24\0\232\4\5\0\211\0`\3\210\0`\0038\0\0\0"..., 4072}, {">\3\7\0\212\0`\3;\0`\0033\0`\3\0\0\0\0\264\0\347\0(\0\n\0", 28}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\213\0`\0036\7\2\0\212\0`\3", 32}], 1) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 509171}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 509301}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 509704}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 509911}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 510284}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\214\0`\3?\0`\3\220\1\24\0\232\4\5\0\215\0`\3\214\0`\0038\0\0\0"..., 4008}, {"\232\24\33\0S\0`\3\1\0\0\0*\0\0\0\10\0\n\0\377\377\n\0\n\0\0\0\0Q\372\377"..., 108}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\27\16\0\3\0`\3O\0`\3\217\0`\0034\0\0\0S\0`\3\377\377\n\0\21Q\372\377"..., 136}], 1) = 136 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 512600}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 512730}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 513027}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 513233}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 513605}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\220\0`\3?\0`\3\220\1\24\0\232\4\5\0\221\0`\3\220\0`\0038\0\0\0"..., 4084}, {"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\7\2\0\223\0`\0036\7\2\0\222\0`\3", 16}], 1) = 16 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 515648}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 515778}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 516111}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 516318}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 516690}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\224\0`\3?\0`\3\220\1\24\0\232\4\5\0\225\0`\3\224\0`\0038\0\0\0"..., 4072}, {"\232\27\f\0\3\0`\3O\0`\3\227\0`\0034\0\0\0S\0`\3\377\377\n\0\v\0`\3"..., 48}], 2) = 4120 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{";\3\5\0003\0`\3\0\0\0\0\250\0\347\0?\0\n\0>\3\7\0\226\0`\3;\0`\3"..., 80}], 1) = 80 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 518889}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 519019}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 519316}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 519523}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 519894}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\230\0`\3?\0`\3\220\1\24\0\232\4\5\0\231\0`\3\230\0`\0038\0\0\0"..., 4088}, {"\232\27\f\0\3\0`\3O\0`\3\233\0`\0034\0\0\0S\0`\3\4\0\n\0\t\0\2\0"..., 48}], 2) = 4136 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{";\3\5\0003\0`\3\0\0\0\0\250\0\347\0?\0\n\0>\3\7\0\232\0`\3;\0`\3"..., 80}], 1) = 80 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 522089}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 522219}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 522520}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 522726}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 523104}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\234\0`\3?\0`\3\220\1\24\0\232\4\5\0\235\0`\3\234\0`\0038\0\0\0"..., 4060}, {"\232\27\16\0\3\0`\3O\0`\3\237\0`\0034\0\0\0P\0`\3\363\377\364\377\23\0`\3"..., 56}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\6\5\0\237\0`\3\0\0\0\0\0\0\0\0d\0\r\0\232\27\r\0\3\0`\3O\0`\3"..., 152}], 1) = 152 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 525330}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 525459}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 534606}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 534841}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 535379}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\240\0`\3?\0`\3\220\1\24\0\232\4\5\0\241\0`\3\240\0`\0038\0\0\0"..., 4044}, {"\232\27\16\0\3\0`\3O\0`\3\243\0`\0034\0\0\0P\0`\3\363\377\364\377\23\0\2\0"..., 56}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\6\5\0\243\0`\3\0\0\0\0\0\0\0\0d\0\r\0\232\24\33\0S\0`\3\1\0\0\0"..., 260}], 1) = 260 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 539512}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 539643}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 539986}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 540193}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 540586}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\244\0`\3?\0`\3\220\1\24\0\232\4\5\0\245\0`\3\244\0`\0038\0\0\0"..., 4060}, {"\232\27\16\0\3\0`\3O\0`\3\247\0`\0034\0\0\0P\0`\3\357\377\364\377\23\0`\3"..., 56}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\6\5\0\247\0`\3\0\0\0\0\0\0\0\0\\\0\r\0\232\27\v\0\3\0`\3O\0`\3"..., 144}], 1) = 144 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 543960}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 544090}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 544550}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 544757}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 545159}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\250\0`\3?\0`\3\220\1\24\0\232\4\5\0\251\0`\3\250\0`\0038\0\0\0"..., 4084}, {"5\30\4\0\252\0`\3;\0`\3!\0\r\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\4\5\0\253\0`\3\252\0`\0038\0\0\0\0\0\0\0\232\6\5\0\253\0`\3\0\0\0\0"..., 460}], 1) = 460 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 547411}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 547542}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 548032}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 548242}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 548627}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\254\0`\3?\0`\3\220\1\24\0\232\4\5\0\255\0`\3\254\0`\0038\0\0\0"..., 4088}, {">\3\7\0\254\0`\3?\0`\0033\0`\3\0\0\0\0\0\0\0\0\220\1\24\0", 28}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\255\0`\0036\7\2\0\254\0`\3"..., 560}], 1) = 560 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 551257}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 551388}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 551694}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 551900}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 552274}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\260\0`\3?\0`\3\220\1\24\0\232\4\5\0\261\0`\3\260\0`\0038\0\0\0"..., 4088}, {">\3\7\0\260\0`\3?\0`\0033\0`\3\0\0\0\0\0\0\0\0\220\1\24\0", 28}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\261\0`\0036\7\2\0\260\0`\3"..., 392}], 1) = 392 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 555228}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 555359}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 555785}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 556156}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 556547}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\264\0`\3?\0`\3\220\1\24\0\232\4\5\0\265\0`\3\264\0`\0038\0\0\0"..., 4088}, {">\3\7\0\264\0`\3?\0`\0033\0`\3\0\0\0\0\0\0\0\0\220\1\24\0", 28}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\265\0`\0036\7\2\0\264\0`\3"..., 532}], 1) = 532 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 559088}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 559218}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 559527}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 559733}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 560107}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\270\0`\3?\0`\3\220\1\24\0\232\4\5\0\271\0`\3\270\0`\0038\0\0\0"..., 4088}, {"@\0\4\0B\0`\3C\0`\3\2\0\21\0", 16}], 2) = 4104 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{">\0\7\0B\0`\3\270\0`\3\7\0`\3\0\0\0\0\0\0\0\0\220\1\24\0;\3\5\0"..., 460}], 1) = 460 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 562349}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 562479}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 562816}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 563092}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 563417}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 563620}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 564027}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"6\7\2\0B\0`\0035\30\4\0\274\0`\3?\0`\3\220\1\24\0F\30\5\0\274\0`\3"..., 4092}, {";\3\5\0C\0`\3\0\0\0\0\1\0\1\0&\1\22\0", 20}], 2) = 4112 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0C\0`\3\4\0\0\0`i\241\0@\0\4\0\274\0`\3C\0`\3\2\0\2\0"..., 612}], 1) = 612 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 566931}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 567062}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 567368}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 567574}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 567954}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\301\0`\3?\0`\3\220\1\24\0\232\4\5\0\302\0`\3\301\0`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 560}], 1) = 560 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 569916}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 570044}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 570351}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 570554}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 570923}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\305\0`\3?\0`\3\220\1\24\0\232\4\5\0\306\0`\3\305\0`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 588}], 1) = 588 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 572307}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 572435}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 572724}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 572929}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 574485}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\311\0`\3?\0`\3\220\1\24\0\232\4\5\0\312\0`\3\311\0`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 212}], 1) = 212 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\0017\31\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\313\0`\3;\0`\3r\0\r\0\232\4\5\0\314\0`\3\313\0`\0038\0\0\0"..., 352}], 1) = 352 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 577549}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 577675}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 577968}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 578194}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 578562}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\315\0`\3?\0`\3\220\1\24\0\232\4\5\0\316\0`\3\315\0`\0038\0\0\0"..., 4084}, {"8\0\4\0#\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0$\0`\3\0\0\10\0\0\0\0\0008\0\4\0%\0`\3\0\0\10\0\0\0\0\0"..., 640}], 1) = 640 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 580810}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 580937}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 581267}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 581468}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 581835}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\321\0`\3?\0`\3\220\1\24\0\232\4\5\0\322\0`\3\321\0`\0038\0\0\0"..., 4084}, {"8\0\4\0#\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0$\0`\3\0\0\10\0\0\0\0\0008\0\4\0%\0`\3\0\0\10\0\0\0\0\0"..., 644}], 1) = 644 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 584092}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 584218}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 584497}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 584697}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 585079}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\325\0`\3?\0`\3\220\1\24\0\232\4\5\0\326\0`\3\325\0`\0038\0\0\0"..., 4084}, {"8\0\4\0#\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0$\0`\3\0\0\10\0\0\0\0\0008\0\4\0%\0`\3\0\0\10\0\0\0\0\0"..., 624}], 1) = 624 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 587342}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 587472}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 587826}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 588057}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 588431}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\331\0`\3?\0`\3\220\1\24\0\232\4\5\0\332\0`\3\331\0`\0038\0\0\0"..., 4084}, {"8\0\4\0!\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0\"\0`\3\0\0\10\0\0\0\0\0008\0\4\0#\0`\3\0\0\10\0\0\0\0\0"..., 704}], 1) = 704 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 590895}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 591026}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 591335}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 591542}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 591915}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\335\0`\3?\0`\3\220\1\24\0\232\4\5\0\336\0`\3\335\0`\0038\0\0\0"..., 4084}, {"@\0\4\0\274\0`\3\n\0`\3Q\1\21\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3\2\0\21\0008\0\4\0!\0`\3\0\0\10\0\0\0\0\0"..., 716}], 1) = 716 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 594268}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 594398}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 594703}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 594909}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 595279}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\341\0`\3?\0`\3\220\1\24\0\232\4\5\0\342\0`\3\341\0`\0038\0\0\0"..., 4084}, {"@\0\4\0\274\0`\3\n\0`\3Y\1\21\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3\2\0\21\0008\0\4\0!\0`\3\0\0\10\0\0\0\0\0"..., 688}], 1) = 688 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 596685}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 596814}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 606477}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 606702}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 607170}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\345\0`\3?\0`\3\220\1\24\0\232\4\5\0\346\0`\3\345\0`\0038\0\0\0"..., 4084}, {"@\0\4\0\274\0`\3\n\0`\3^\1\21\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3\2\0\21\0008\0\4\0!\0`\3\0\0\10\0\0\0\0\0"..., 816}], 1) = 816 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 609872}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 610003}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 610511}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 610719}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 611103}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\351\0`\3?\0`\3\220\1\24\0\232\4\5\0\352\0`\3\351\0`\0038\0\0\0"..., 4096}, {"@\0\4\0\274\0`\3\n\0`\3m\1\2\0", 16}], 2) = 4112 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3l\1\20\0B\0\5\0\274\0`\3C\0`\3l\1\21\0"..., 892}], 1) = 892 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 613833}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 613960}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 614271}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 614473}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 614843}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\355\0`\3?\0`\3\220\1\24\0\232\4\5\0\356\0`\3\355\0`\0038\0\0\0"..., 4096}, {"@\0\4\0\274\0`\3\n\0`\3r\1\2\0", 16}], 2) = 4112 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3q\1\20\0B\0\5\0\274\0`\3C\0`\3q\1\21\0"..., 760}], 1) = 760 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 617467}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 617594}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 617940}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 618169}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 618545}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\361\0`\3?\0`\3\220\1\24\0\232\4\5\0\362\0`\3\361\0`\0038\0\0\0"..., 4092}, {"@\0\4\0\274\0`\3&\0`\3\2\0\2\0", 16}], 2) = 4108 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3t\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 852}], 1) = 852 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 619983}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 620108}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 620378}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 620577}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 620937}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\365\0`\3?\0`\3\220\1\24\0\232\4\5\0\366\0`\3\365\0`\0038\0\0\0"..., 4092}, {"@\0\4\0\274\0`\3&\0`\3\2\0\2\0", 16}], 2) = 4108 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3z\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 804}], 1) = 804 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 622403}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 622530}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 622803}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 623002}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 623363}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\371\0`\3?\0`\3\220\1\24\0\232\4\5\0\372\0`\3\371\0`\0038\0\0\0"..., 4092}, {"@\0\4\0\274\0`\3&\0`\3\2\0\2\0", 16}], 2) = 4108 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0\274\0`\3&\0`\3\200\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 824}], 1) = 824 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 624774}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 624900}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 627972}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 628209}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\375\0`\3?\0`\3\220\1\24\0\232\4\5\0\376\0`\3\375\0`\0038\0\0\0"..., 2060}], 1) = 2060 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 630343}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 630474}, NULL) = 0 -stat64("/user/folk/clint/.gimp-2.2/environ", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/lib/gimp/2.0/environ", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/environ", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 2 entries */, 4096) = 48 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/usr/lib/gimp/2.0/environ", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 4 entries */, 4096) = 112 -stat64("/usr/lib/gimp/2.0/environ/default.env", {st_mode=S_IFREG|0644, st_size=65, ...}) = 0 -open("/usr/lib/gimp/2.0/environ/default.env", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=65, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 -read(5, "# Example entry in files like th"..., 4096) = 65 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb7869000, 4096) = 0 -stat64("/usr/lib/gimp/2.0/environ/pygimp.env", {st_mode=S_IFREG|0644, st_size=38, ...}) = 0 -open("/usr/lib/gimp/2.0/environ/pygimp.env", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=38, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000 -read(5, ": PYTHONPATH=/usr/lib/gimp/2.0/p"..., 4096) = 38 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb7869000, 4096) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d9000 -brk(0x84c5000) = 0x84c5000 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 728793}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 729096}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 729286}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 729483}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"6\7\2\0\274\0`\0035\30\4\0\1\1`\3?\0`\3\220\1\24\0F\30\5\0\1\1`\3"..., 1940}], 1) = 1940 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 731932}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 732059}, NULL) = 0 -open("/user/folk/clint/.gimp-2.2/parasiterc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP parasiterc\n# \n# This file"..., 4000) = 112 -read(4, "", 4000) = 0 -close(4) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 755751}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 755987}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 756514}, NULL) = 0 -gettimeofday({1192407178, 756598}, NULL) = 0 -gettimeofday({1192407178, 756668}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\6\1`\3?\0`\3\220\1\24\0\232\4\5\0\7\1`\3\6\1`\0038\0\0\0"..., 3804}], 1) = 3804 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407178, 758747}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407178, 758880}, NULL) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/share/gimp/2.0/brushes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 12 entries */, 4096) = 504 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (41)\n5"..., 4096) = 77 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(41).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (101)\n"..., 4096) = 78 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(101).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (61)\n5"..., 4096) = 77 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(61).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle (39)\n5.00000"..., 4096) = 71 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-(39).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=78, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (121)\n"..., 4096) = 78 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(121).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (25)\n4"..., 4096) = 77 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25)-1.vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (81)\n6"..., 4096) = 77 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(81).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle (59)\n5.00000"..., 4096) = 71 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-(59).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle Fuzzy (31)\n5"..., 4096) = 77 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d0000 -munmap(0xb71d0000, 32768) = 0 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-Fuzzy-(25).vbr", W_OK) = 0 -stat64("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", {st_mode=S_IFREG|0644, st_size=70, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=70, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d8000 -read(5, "GIMP-VBR\n1.0\nCircle (02)\n5.00000"..., 4096) = 70 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d0000 -munmap(0xb71d0000, 32768) = 0 -close(5) = 0 -munmap(0xb71d8000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/brushes/Circle-(02).vbr", W_OK) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/usr/share/gimp/2.0/brushes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 50 entries */, 4096) = 1712 -stat64("/usr/share/gimp/2.0/brushes/10x10squareBlur.gbr", {st_mode=S_IFREG|0644, st_size=148, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/10x10squareBlur.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0000\0\0\0\2\0\0\0\n\0\0\0\n\0\0\0\1GIMP\0\0\0<", 28) = 28 -read(5, "square (10x10) blur\0", 20) = 20 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\355\313\273\271\270\270\271\273\313\355\313qHAAAAHq\313\274G\20\10\10\10\10\20G\274\271A"..., 100) = 100 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/10x10square.gbr", {st_mode=S_IFREG|0644, st_size=143, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/10x10square.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0+\0\0\0\2\0\0\0\n\0\0\0\n\0\0\0\1GIMP\0\0\0(", 28) = 28 -read(5, "square (10x10)\0", 15) = 15 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\0\0\0\0\0\0\0\0\377\377\0"..., 100) = 100 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/20x20squareBlur.gbr", {st_mode=S_IFREG|0644, st_size=448, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/20x20squareBlur.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0000\0\0\0\2\0\0\0\24\0\0\0\24\0\0\0\1GIMP\0\0\0002", 28) = 28 -read(5, "square (20x20) blur\0", 20) = 20 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\242\224\202sjfeddddddefjs\202\224\242\223\204o^TPONNNNN"..., 400) = 400 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/11circle.gbr", {st_mode=S_IFREG|0644, st_size=161, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/11circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\v\0\0\0\v\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (11)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0+\234\345\377\345\234+\0\0\0W\377\377\377\377\377\377\377W\0+\377\377\377\377\377\377\377\377\377"..., 121) = 121 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/11fcircle.gbr", {st_mode=S_IFREG|0644, st_size=159, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/11fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\v\0\0\0\v\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (11)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\7\t\n\t\7\0\0\0\0\0\n\23\34 \34\23\n\0\0\0\n\31/EOE/\31\n"..., 121) = 121 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/13circle.gbr", {st_mode=S_IFREG|0644, st_size=209, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/13circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\r\0\0\0\r\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (13)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0J\254\351\377\351\254J\0\0\0\0\0\230\377\377\377\377\377\377\377\230\0\0\0\230\377\377\377\377"..., 169) = 169 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/13fcircle.gbr", {st_mode=S_IFREG|0644, st_size=207, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/13fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\r\0\0\0\r\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (13)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\7\t\t\t\7\0\0\0\0\0\0\6\v\21\27\31\27\21\v\6\0\0\0\6\r\31\'4"..., 169) = 169 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/15circle.gbr", {st_mode=S_IFREG|0644, st_size=265, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/15circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\17\0\0\0\17\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (15)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0a\267\354\377\354\267a\0\0\0\0\0\0000\311\377\377\377\377\377\377\377\3110\0\0\0000"..., 225) = 225 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/15fcircle.gbr", {st_mode=S_IFREG|0644, st_size=263, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/15fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\17\0\0\0\17\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (15)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\0\7\10\t\10\7\0\0\0\0\0\0\0\0\7\v\20\23\25\23\20\v\7\0\0\0\0\0"..., 225) = 225 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/17circle.gbr", {st_mode=S_IFREG|0644, st_size=329, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/17circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\21\0\0\0\21\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (17)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\16t\300\357\377\357\300t\16\0\0\0\0\0\0\0e\357\377\377\377\377\377\377\377\357e\0"..., 289) = 289 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/17fcircle.gbr", {st_mode=S_IFREG|0644, st_size=327, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/17fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\21\0\0\0\21\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (17)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\0\0\7\10\10\10\7\0\0\0\0\0\0\0\0\0\0\10\v\17\21\22\21\17\v\10\0\0"..., 289) = 289 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/19circle.gbr", {st_mode=S_IFREG|0644, st_size=401, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/19circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\23\0\0\0\23\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (19)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\0&\202\307\360\377\360\307\202&\0\0\0\0\0\0\0\0\0\220\377\377\377\377\377\377\377\377"..., 361) = 361 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/19fcircle.gbr", {st_mode=S_IFREG|0644, st_size=399, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/19fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\23\0\0\0\23\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (19)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\0\0\6\7\10\10\10\7\6\0\0\0\0\0\0\0\0\0\0\6\10\v\16\17\20\17\16\v"..., 361) = 361 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/1circle.gbr", {st_mode=S_IFREG|0644, st_size=41, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/1circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Circle (01)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "l", 1) = 1 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/20x20square.gbr", {st_mode=S_IFREG|0644, st_size=443, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/20x20square.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0+\0\0\0\2\0\0\0\24\0\0\0\24\0\0\0\1GIMP\0\0\0002", 28) = 28 -read(5, "square (20x20)\0", 15) = 15 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"..., 400) = 400 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/3fcircle.gbr", {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/3fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\3\0\0\0\3\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (03)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\20P\20P\377P\20P\20", 9) = 9 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/3circle.gbr", {st_mode=S_IFREG|0644, st_size=49, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/3circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (03)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\225\377\225\377\377\377\225\377\225", 9) = 9 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/5fcircle.gbr", {st_mode=S_IFREG|0644, st_size=63, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/5fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\5\0\0\0\5\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (05)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\v\25\v\0\vH\206H\v\25\206\377\206\25\vH\206H\v\0\v\25\v\0", 25) = 25 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/5circle.gbr", {st_mode=S_IFREG|0644, st_size=65, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/5circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (05)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "+\302\377\302+\302\377\377\377\302\377\377\377\377\377\302\377\377\377\302+\302\377\302+", 25) = 25 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/5x5squareBlur.gbr", {st_mode=S_IFREG|0644, st_size=71, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/5x5squareBlur.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0.\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0\226", 28) = 28 -read(5, "square (5x5) blur\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\370\335\326\335\370\334P-P\334\325-\3-\325\334P-P\334\370\335\326\335\370", 25) = 25 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/5x5square.gbr", {st_mode=S_IFREG|0644, st_size=66, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/5x5square.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0)\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0002", 28) = 28 -read(5, "square (5x5)\0", 13) = 13 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\377\377\377\377\377\377\1\1\1\377\377\1\1\1\377\377\1\1\1\377\377\377\377\377\377", 25) = 25 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/7fcircle.gbr", {st_mode=S_IFREG|0644, st_size=87, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/7fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\7\0\0\0\7\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (07)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\v\16\v\0\0\0\0243F3\24\0\v3\205\270\2053\v\16F\270\377\270F\16\v3\205\270"..., 49) = 49 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/7circle.gbr", {st_mode=S_IFREG|0644, st_size=89, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/7circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\7\0\0\0\7\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (07)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0d\325\377\325d\0d\377\377\377\377\377d\325\377\377\377\377\377\325\377\377\377\377\377\377\377\325\377\377\377"..., 49) = 49 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/9fcircle.gbr", {st_mode=S_IFREG|0644, st_size=119, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/9fcircle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0\t\0\0\0\t\0\0\0\1Circle F", 28) = 28 -_llseek(5, -8, [20], SEEK_CUR) = 0 -read(5, "Circle Fuzzy (09)\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\6\n\f\n\6\0\0\0\10\25$,$\25\10\0\6\0256`u`6\25\6\n$`\254\321"..., 81) = 81 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/9circle.gbr", {st_mode=S_IFREG|0644, st_size=121, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/9circle.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0\t\0\0\0\t\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Circle (09)\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\206\337\377\337\206\0\0\0\301\377\377\377\377\377\301\0\206\377\377\377\377\377\377\377\206\337\377\377\377\377"..., 81) = 81 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/SketchBrush-16.gih", {st_mode=S_IFREG|0644, st_size=1618, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/SketchBrush-16.gih", O_RDONLY|O_LARGEFILE) = 5 -read(5, "P", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "i", 1) = 1 -read(5, "l", 1) = 1 -read(5, " ", 1) = 1 -read(5, "S", 1) = 1 -read(5, "k", 1) = 1 -read(5, "e", 1) = 1 -read(5, "t", 1) = 1 -read(5, "c", 1) = 1 -read(5, "h", 1) = 1 -read(5, "\n", 1) = 1 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "w", 1) = 1 -read(5, "i", 1) = 1 -read(5, "d", 1) = 1 -read(5, "t", 1) = 1 -read(5, "h", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "6", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "h", 1) = 1 -read(5, "e", 1) = 1 -read(5, "i", 1) = 1 -read(5, "g", 1) = 1 -read(5, "h", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "6", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "p", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "d", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "o", 1) = 1 -read(5, "w", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "p", 1) = 1 -read(5, "l", 1) = 1 -read(5, "a", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "m", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "d", 1) = 1 -read(5, "o", 1) = 1 -read(5, "m", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#5\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U#\0\0\0\0\0\0\0\0"..., 256) = 256 -read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#4\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0*\f\0\0*\0\0\0\0\0\0\0"..., 256) = 256 -read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#3\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\204\21a\0\0\0\0\0"..., 256) = 256 -read(5, "\0\0\0,\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#2\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 256) = 256 -read(5, "\0\0\0*\0\0\0\2\0\0\0\20\0\0\0\20\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch\0", 14) = 14 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0000\0\0\0\0\0\0\0\0\0\0\0"..., 256) = 256 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/DStar11.gbr", {st_mode=S_IFREG|0644, st_size=168, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/DStar11.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\v\0\0\0\v\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Diagonal Star (11)\0", 19) = 19 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\0\0\0\0L\0\0\0\201\0\0\0\0\0\201\0"..., 121) = 121 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/DStar17.gbr", {st_mode=S_IFREG|0644, st_size=336, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/DStar17.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\21\0\0\0\21\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Diagonal Star (17)\0", 19) = 19 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\37\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 289) = 289 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/DStar25.gbr", {st_mode=S_IFREG|0644, st_size=672, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/DStar25.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\31\0\0\0\31\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Diagonal Star (25)\0", 19) = 19 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0\0\0"..., 625) = 625 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/SketchBrush-32.gih", {st_mode=S_IFREG|0644, st_size=5458, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/SketchBrush-32.gih", O_RDONLY|O_LARGEFILE) = 5 -read(5, "P", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "i", 1) = 1 -read(5, "l", 1) = 1 -read(5, " ", 1) = 1 -read(5, "S", 1) = 1 -read(5, "k", 1) = 1 -read(5, "e", 1) = 1 -read(5, "t", 1) = 1 -read(5, "c", 1) = 1 -read(5, "h", 1) = 1 -read(5, "\n", 1) = 1 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "w", 1) = 1 -read(5, "i", 1) = 1 -read(5, "d", 1) = 1 -read(5, "t", 1) = 1 -read(5, "h", 1) = 1 -read(5, ":", 1) = 1 -read(5, "3", 1) = 1 -read(5, "2", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "h", 1) = 1 -read(5, "e", 1) = 1 -read(5, "i", 1) = 1 -read(5, "g", 1) = 1 -read(5, "h", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "3", 1) = 1 -read(5, "2", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "p", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "d", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "o", 1) = 1 -read(5, "w", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "p", 1) = 1 -read(5, "l", 1) = 1 -read(5, "a", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "m", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "d", 1) = 1 -read(5, "o", 1) = 1 -read(5, "m", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "\0\0\0*\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch\0", 14) = 14 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 -read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#2\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 -read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#3\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 -read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#4\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 -read(5, "\0\0\0,\0\0\0\2\0\0\0 \0\0\0 \0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#5\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/SketchBrush-64.gih", {st_mode=S_IFREG|0644, st_size=20818, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/SketchBrush-64.gih", O_RDONLY|O_LARGEFILE) = 5 -read(5, "P", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "i", 1) = 1 -read(5, "l", 1) = 1 -read(5, " ", 1) = 1 -read(5, "S", 1) = 1 -read(5, "k", 1) = 1 -read(5, "e", 1) = 1 -read(5, "t", 1) = 1 -read(5, "c", 1) = 1 -read(5, "h", 1) = 1 -read(5, "\n", 1) = 1 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -munmap(0xb71d1000, 32768) = 0 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "w", 1) = 1 -read(5, "i", 1) = 1 -read(5, "d", 1) = 1 -read(5, "t", 1) = 1 -read(5, "h", 1) = 1 -read(5, ":", 1) = 1 -read(5, "6", 1) = 1 -read(5, "4", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "h", 1) = 1 -read(5, "e", 1) = 1 -read(5, "i", 1) = 1 -read(5, "g", 1) = 1 -read(5, "h", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "6", 1) = 1 -read(5, "4", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "p", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "d", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "o", 1) = 1 -read(5, "w", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "p", 1) = 1 -read(5, "l", 1) = 1 -read(5, "a", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "m", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "d", 1) = 1 -read(5, "o", 1) = 1 -read(5, "m", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "\0\0\0*\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch\0", 14) = 14 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 -read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#2\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 -read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#3\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 -read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#4\0", 16) = 16 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 -read(5, "\0\0\0,\0\0\0\2\0\0\0@\0\0\0@\0\0\0\1GIMP\0\0\0\24", 28) = 28 -read(5, "Pencil Sketch#5\0", 16) = 16 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d7000 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/callig1.gbr", {st_mode=S_IFREG|0644, st_size=147, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/callig1.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\n\0\0\0\n\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Calligraphic Brush\0", 19) = 19 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 -munmap(0xb71cf000, 32768) = 0 -read(5, "\0\0\0\0\0\0\10F\212$\0\0\0\0\0\th\342\357X\0\0\0\0\3Z\361\377\353E\0\0"..., 100) = 100 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/callig2.gbr", {st_mode=S_IFREG|0644, st_size=447, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/callig2.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\24\0\0\0\24\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Calligraphic Brush\0", 19) = 19 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 -munmap(0xb71cf000, 32768) = 0 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10L\237G\0\0\0\0\0\0\0\0\0\0\0\0"..., 400) = 400 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/callig3.gbr", {st_mode=S_IFREG|0644, st_size=272, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/callig3.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\17\0\0\0\17\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Calligraphic Brush\0", 19) = 19 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 -munmap(0xb71cf000, 32768) = 0 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\6=\223M\0\0\0\0\0\0\0\0\0\0\1K\353\377\331\0\0"..., 225) = 225 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/callig4.gbr", {st_mode=S_IFREG|0644, st_size=72, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/callig4.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\5\0\0\0\5\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Calligraphic Brush\0", 19) = 19 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 -munmap(0xb71cf000, 32768) = 0 -read(5, "\0\5*]\'\3C\322\364\2300\334\376\371v\221\377\376\265\25=\311\247$\0", 25) = 25 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/confetti.gbr", {st_mode=S_IFREG|0644, st_size=793, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/confetti.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0%\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0K", 28) = 28 -read(5, "Confetti\0", 9) = 9 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 -munmap(0xb71cf000, 32768) = 0 -read(5, "\0\0\0\7\31\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\26R"..., 756) = 756 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/confetti.gih", {st_mode=S_IFREG|0644, st_size=8076, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/confetti.gih", O_RDONLY|O_LARGEFILE) = 5 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, "a", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "d", 1) = 1 -read(5, " ", 1) = 1 -read(5, "C", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "f", 1) = 1 -read(5, "e", 1) = 1 -read(5, "t", 1) = 1 -read(5, "t", 1) = 1 -read(5, "i", 1) = 1 -read(5, "\n", 1) = 1 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71cf000 -munmap(0xb71cf000, 32768) = 0 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "w", 1) = 1 -read(5, "i", 1) = 1 -read(5, "d", 1) = 1 -read(5, "t", 1) = 1 -read(5, "h", 1) = 1 -read(5, ":", 1) = 1 -read(5, "2", 1) = 1 -read(5, "7", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "h", 1) = 1 -read(5, "e", 1) = 1 -read(5, "i", 1) = 1 -read(5, "g", 1) = 1 -read(5, "h", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "2", 1) = 1 -read(5, "8", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "p", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "d", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "o", 1) = 1 -read(5, "w", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "p", 1) = 1 -read(5, "l", 1) = 1 -read(5, "a", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "m", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "d", 1) = 1 -read(5, "o", 1) = 1 -read(5, "m", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "\0\0\0(\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#10\0", 12) = 12 -brk(0x84e6000) = 0x84e6000 -read(5, "\0\0\0\7\31\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\26R"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#9\0", 11) = 11 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#8\0", 11) = 11 -read(5, "\0\0\0\2\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#7\0", 11) = 11 -read(5, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#6\0", 11) = 11 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#5\0", 11) = 11 -read(5, "\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#4\0", 11) = 11 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#3\0", 11) = 11 -read(5, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -read(5, "\0\0\0\'\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti#2\0", 11) = 11 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -read(5, "\0\0\0%\0\0\0\2\0\0\0\33\0\0\0\34\0\0\0\1GIMP\0\0\0\17", 28) = 28 -read(5, "Confetti\0", 9) = 9 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 756) = 756 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/dunes.gbr", {st_mode=S_IFREG|0644, st_size=1100, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/dunes.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0,\0\0\0\2\0\0\0!\0\0\0 \0\0\0\1GIMP\0\0\0d", 28) = 28 -read(5, "Sand Dunes (AP)\0", 16) = 16 -read(5, "\0\0\0\0\6\34#\34\26\r\7\3\1\1\0\0\0\6\17$32%\30\17\7\6\3\1\0\0\0"..., 1056) = 1056 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/feltpen.gih", {st_mode=S_IFREG|0644, st_size=118799, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/feltpen.gih", O_RDONLY|O_LARGEFILE) = 5 -read(5, "F", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "P", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "1", 1) = 1 -read(5, "2", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "2", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "w", 1) = 1 -read(5, "i", 1) = 1 -read(5, "d", 1) = 1 -read(5, "t", 1) = 1 -read(5, "h", 1) = 1 -read(5, ":", 1) = 1 -read(5, "3", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "h", 1) = 1 -read(5, "e", 1) = 1 -read(5, "i", 1) = 1 -read(5, "g", 1) = 1 -read(5, "h", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "3", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "p", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "d", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, ":", 1) = 1 -read(5, "3", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "o", 1) = 1 -read(5, "w", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "p", 1) = 1 -read(5, "l", 1) = 1 -read(5, "a", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "m", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "p", 1) = 1 -read(5, "r", 1) = 1 -read(5, "e", 1) = 1 -read(5, "s", 1) = 1 -read(5, "s", 1) = 1 -read(5, "u", 1) = 1 -read(5, "r", 1) = 1 -read(5, "e", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "1", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "1", 1) = 1 -read(5, ":", 1) = 1 -read(5, "y", 1) = 1 -read(5, "t", 1) = 1 -read(5, "i", 1) = 1 -read(5, "l", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "2", 1) = 1 -read(5, ":", 1) = 1 -read(5, "5", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "2", 1) = 1 -read(5, ":", 1) = 1 -read(5, "x", 1) = 1 -read(5, "t", 1) = 1 -read(5, "i", 1) = 1 -read(5, "l", 1) = 1 -read(5, "t", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "\0\0\0.\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush\0", 18) = 18 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#2\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#3\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#4\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#5\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#6\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#7\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#8\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0000\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#9\0", 20) = 20 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#10\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#11\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#12\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#13\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#14\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#15\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#16\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#17\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#18\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#19\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#20\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#21\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#22\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#23\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#24\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#25\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#26\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#27\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#28\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#29\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#30\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#31\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#32\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#33\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#34\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#35\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#36\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#37\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#38\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#39\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#40\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#41\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#42\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#43\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#44\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#45\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#46\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#47\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#48\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#49\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#50\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#51\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#52\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#53\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#54\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#55\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#56\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#57\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#58\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#59\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#60\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#61\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#62\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#63\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#64\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#65\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#66\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#67\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#68\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#69\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#70\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#71\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#72\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#73\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#74\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#75\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#76\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#77\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#78\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#79\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#80\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#81\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#82\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#83\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#84\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#85\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#86\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#87\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#88\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#89\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#90\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#91\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#92\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#93\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#94\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#95\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#96\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#97\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#98\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0001\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#99\0", 21) = 21 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#100\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#101\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#102\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#103\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#104\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#105\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#106\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#107\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#108\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#109\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#110\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#111\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#112\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#113\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#114\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#115\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#116\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#117\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#118\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#119\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#120\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#121\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#122\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#123\0", 22) = 22 -brk(0x8507000) = 0x8507000 -brk(0x8506000) = 0x8506000 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#124\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -read(5, "\0\0\0002\0\0\0\2\0\0\0\36\0\0\0\36\0\0\0\1GIMP\0\0\0\7", 28) = 28 -read(5, "GIMP Pixmap Brush#125\0", 22) = 22 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 900) = 900 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/galaxy.gbr", {st_mode=S_IFREG|0644, st_size=2637, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/galaxy.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0005\0\0\0001\0\0\0\1GIMP\0\0\0K", 28) = 28 -read(5, "Galaxy (AP)\0", 12) = 12 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\2\6\10\n\16\24\24\20\v"..., 2597) = 2597 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/galaxy_big.gbr", {st_mode=S_IFREG|0644, st_size=10040, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/galaxy_big.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\2\0\0\0d\0\0\0d\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "Galaxy, Big\0", 12) = 12 -read(5, "\1\2\3\3\2\1\3\3\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\6\1\1\0\0"..., 10000) = 10000 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/galaxy_small.gbr", {st_mode=S_IFREG|0644, st_size=749, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/galaxy_small.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\33\0\0\0\32\0\0\0\1GIMP\0\0\0K", 28) = 28 -read(5, "Galaxy, Small (AP)\0", 19) = 19 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\1\2\1\2\2\2\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 702) = 702 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/hsparks.gih", {st_mode=S_IFREG|0644, st_size=127644, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/hsparks.gih", O_RDONLY|O_LARGEFILE) = 5 -read(5, "S", 1) = 1 -read(5, "p", 1) = 1 -read(5, "a", 1) = 1 -read(5, "r", 1) = 1 -read(5, "k", 1) = 1 -read(5, "s", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "9", 1) = 1 -read(5, " ", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "9", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "w", 1) = 1 -read(5, "i", 1) = 1 -read(5, "d", 1) = 1 -read(5, "t", 1) = 1 -read(5, "h", 1) = 1 -read(5, ":", 1) = 1 -read(5, "6", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "h", 1) = 1 -read(5, "e", 1) = 1 -read(5, "i", 1) = 1 -read(5, "g", 1) = 1 -read(5, "h", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "6", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "p", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "d", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "o", 1) = 1 -read(5, "w", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "p", 1) = 1 -read(5, "l", 1) = 1 -read(5, "a", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "m", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "9", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "d", 1) = 1 -read(5, "o", 1) = 1 -read(5, "m", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "\0\0\0#\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks\0", 7) = 7 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\372L\0<\367W\0F\373_\0P\371f\0Z\371n\0c\374x\0j\374\202\0q\372\222\0v"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#2\0", 9) = 9 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#3\0", 9) = 9 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#4\0", 9) = 9 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#5\0", 9) = 9 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#6\0", 9) = 9 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#7\0", 9) = 9 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0<\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#8\0", 9) = 9 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d4000 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6208) = 6208 -read(5, "\0\0\0%\0\0\0\2\0\0\0002\0\0\0<\0\0\0\4GIMP\0\0\0\17", 28) = 28 -read(5, "Sparks#9\0", 9) = 9 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71d1000 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3808) = 3808 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/pepper.gbr", {st_mode=S_IFREG|0644, st_size=11991, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/pepper.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0#\0\0\0\2\0\0\0001\0\0\0=\0\0\0\4GIMP\0\0\0d", 28) = 28 -read(5, "Pepper\0", 7) = 7 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71c9000 -munmap(0xb71c9000, 32768) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71ce000 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "w\245N\377z\251S\377~\257[\377{\256Y\377}\262[\376|\263[\363\177\253_\320.2\35:"..., 3764) = 3764 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/pixel.gbr", {st_mode=S_IFREG|0644, st_size=48, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/pixel.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0/\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1GIMP\0\0\0002", 28) = 28 -read(5, "pixel (1x1 square)\0", 19) = 19 -brk(0x8527000) = 0x8527000 -read(5, "\377", 1) = 1 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/thegimp.gbr", {st_mode=S_IFREG|0644, st_size=2514, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/thegimp.gbr", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\'\0\0\0\2\0\0\0007\0\0\0-\0\0\0\1GIMP\0\0\0\n", 28) = 28 -read(5, "GIMP Brush\0", 11) = 11 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2475) = 2475 -close(5) = 0 -stat64("/usr/share/gimp/2.0/brushes/vine.gih", {st_mode=S_IFREG|0644, st_size=116027, ...}) = 0 -open("/usr/share/gimp/2.0/brushes/vine.gih", O_RDONLY|O_LARGEFILE) = 5 -read(5, "V", 1) = 1 -read(5, "i", 1) = 1 -read(5, "n", 1) = 1 -read(5, "e", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "6", 1) = 1 -read(5, " ", 1) = 1 -read(5, "n", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "6", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "w", 1) = 1 -read(5, "i", 1) = 1 -read(5, "d", 1) = 1 -read(5, "t", 1) = 1 -read(5, "h", 1) = 1 -read(5, ":", 1) = 1 -read(5, "7", 1) = 1 -read(5, "7", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "l", 1) = 1 -read(5, "h", 1) = 1 -read(5, "e", 1) = 1 -read(5, "i", 1) = 1 -read(5, "g", 1) = 1 -read(5, "h", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "7", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "e", 1) = 1 -read(5, "p", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, "0", 1) = 1 -read(5, "0", 1) = 1 -read(5, " ", 1) = 1 -read(5, "d", 1) = 1 -read(5, "i", 1) = 1 -read(5, "m", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "l", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "o", 1) = 1 -read(5, "w", 1) = 1 -read(5, "s", 1) = 1 -read(5, ":", 1) = 1 -read(5, "1", 1) = 1 -read(5, " ", 1) = 1 -read(5, "p", 1) = 1 -read(5, "l", 1) = 1 -read(5, "a", 1) = 1 -read(5, "c", 1) = 1 -read(5, "e", 1) = 1 -read(5, "m", 1) = 1 -read(5, "e", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, ":", 1) = 1 -read(5, "c", 1) = 1 -read(5, "o", 1) = 1 -read(5, "n", 1) = 1 -read(5, "s", 1) = 1 -read(5, "t", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "t", 1) = 1 -read(5, " ", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "k", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "6", 1) = 1 -read(5, " ", 1) = 1 -read(5, "s", 1) = 1 -read(5, "e", 1) = 1 -read(5, "l", 1) = 1 -read(5, "0", 1) = 1 -read(5, ":", 1) = 1 -read(5, "r", 1) = 1 -read(5, "a", 1) = 1 -read(5, "n", 1) = 1 -read(5, "d", 1) = 1 -read(5, "o", 1) = 1 -read(5, "m", 1) = 1 -read(5, "\n", 1) = 1 -read(5, "\0\0\0\'\0\0\0\2\0\0\0M\0\0\0G\0\0\0\4GIMP\0\0\0\36", 28) = 28 -read(5, "GIMP Brush\0", 11) = 11 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 5484) = 5484 -read(5, "\0\0\0)\0\0\0\2\0\0\0I\0\0\0?\0\0\0\4GIMP\0\0\0\36", 28) = 28 -read(5, "GIMP Brush#2\0", 13) = 13 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2012) = 2012 -read(5, "\0\0\0)\0\0\0\2\0\0\0M\0\0\0?\0\0\0\4GIMP\0\0\0\36", 28) = 28 -read(5, "GIMP Brush#3\0", 13) = 13 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\n\v\n\v\\mK\204"..., 8192) = 8192 -read(5, "\10\10\10\t\2\2\2\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3020) = 3020 -read(5, "\0\0\0)\0\0\0\2\0\0\0M\0\0\0?\0\0\0\4GIMP\0\0\0\36", 28) = 28 -read(5, "GIMP Brush#4\0", 13) = 13 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\n\v\n\v\\mK\204"..., 8192) = 8192 -read(5, "\10\10\10\t\2\2\2\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3020) = 3020 -read(5, "\0\0\0)\0\0\0\2\0\0\0I\0\0\0=\0\0\0\4GIMP\0\0\0\36", 28) = 28 -read(5, "GIMP Brush#5\0", 13) = 13 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1428) = 1428 -read(5, "\0\0\0)\0\0\0\2\0\0\0M\0\0\0=\0\0\0\4GIMP\0\0\0\36", 28) = 28 -read(5, "GIMP Brush#6\0", 13) = 13 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192 -read(5, "\204\263U\372V\201+\377R{)\377Mt\'\377D\\,\334Lr(\3661-\207x\7WK\5^Q\tgW\5_P\1VH\7hY\27u"..., 6075) = 6075 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/Craters.pat", {st_mode=S_IFREG|0644, st_size=39707, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/Craters.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0 \0\0\0\1\0\0\0s\0\0\0s\0\0\0\3GPAT", 24) = 24 -read(5, "Craters\0", 8) = 8 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e6a000 -munmap(0xb6e6a000, 32768) = 0 -mmap2(NULL, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e68000 -read(5, "rt\233z|\243\201\203\252|~\245lo\230\\_\210UX\201VY\202gl\226`e\217Za"..., 39675) = 39675 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/crinklepaper.pat", {st_mode=S_IFREG|0644, st_size=49191, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/crinklepaper.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\'\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 -read(5, "Crinkled Paper\0", 15) = 15 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e60000 -munmap(0xb6e60000, 32768) = 0 -mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e5b000 -read(5, "\327\257\214\331\261\216\334\264\221\337\267\224\337\267\224\334\264\221\330\261\220\326\257\216\333\264\223\333\264\223\334\265"..., 49152) = 49152 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/Stripes1px.pat", {st_mode=S_IFREG|0644, st_size=9253, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/Stripes1px.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0%\0\0\0\1\0\0\0000\0\0\0000\0\0\0\4GPAT", 24) = 24 -read(5, "Stripes Fine\0", 13) = 13 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e53000 -munmap(0xb6e53000, 32768) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e58000 -read(5, "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"..., 9216) = 9216 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/Stripes2px.pat", {st_mode=S_IFREG|0644, st_size=9248, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/Stripes2px.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0 \0\0\0\1\0\0\0000\0\0\0000\0\0\0\4GPAT", 24) = 24 -read(5, "Stripes\0", 8) = 8 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e50000 -munmap(0xb6e50000, 32768) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e55000 -read(5, "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"..., 9216) = 9216 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/amethyst.pat", {st_mode=S_IFREG|0644, st_size=12321, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/amethyst.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0!\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Amethyst\0", 9) = 9 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4d000 -munmap(0xb6e4d000, 32768) = 0 -brk(0x8548000) = 0x8548000 -brk(0x8547000) = 0x8547000 -read(5, "^FW^LZjSc\202s\204{o\200p_oeS_YCQW=NO6HO3"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/bark.pat", {st_mode=S_IFREG|0644, st_size=22174, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/bark.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0R\0\0\0Z\0\0\0\3GPAT", 24) = 24 -read(5, "Tree Bark\0", 10) = 10 -read(5, "[H7wbO\204iT\236\200h\210fM\215iQ{XB\245\204q\240\204v\232\202vE1"..., 22140) = 22140 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/blue.pat", {st_mode=S_IFREG|0644, st_size=6108, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/blue.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0!\0\0\0\1\0\0\0-\0\0\0-\0\0\0\3GPAT", 24) = 24 -read(5, "Big Blue\0", 9) = 9 -read(5, "\0\0\177\0\0\177\0\0\177\0\0\177\0\0~\0\0~\0\0\177\0\0\200\0\0\201\0\0\177\0\0"..., 6075) = 6075 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/bluegrid.pat", {st_mode=S_IFREG|0644, st_size=1909, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/bluegrid.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0\31\0\0\0\31\0\0\0\3GPAT", 24) = 24 -read(5, "Blue Grid\0", 10) = 10 -read(5, "v\200\273mw\262z\204\277\177\211\304nx\263r|\267\214\226\321\225\237\332\211\223\320[e\242~\207"..., 1875) = 1875 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/bluesquares.pat", {st_mode=S_IFREG|0644, st_size=48037, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/bluesquares.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0%\0\0\0\1\0\0\0\240\0\0\0d\0\0\0\3GPAT", 24) = 24 -read(5, "Blue Squares\0", 13) = 13 -read(5, "\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\270\323\325\267\316\322Jt"..., 48000) = 48000 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/blueweb.pat", {st_mode=S_IFREG|0644, st_size=12321, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/blueweb.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0!\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Blue Web\0", 9) = 9 -read(5, "-@\345)=\345#m\345#e\345#G\345#Z\345\"a\345#x\345=#\345#k\345#K"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/brick.pat", {st_mode=S_IFREG|0644, st_size=27679, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/brick.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\37\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 -read(5, "Bricks\0", 7) = 7 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4d000 -munmap(0xb6e4d000, 32768) = 0 -mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4e000 -read(5, "\216kd\216lh\201`\\\215kh\232ys\207fd\242\204}\222ss\204gi\223xw\201h"..., 27648) = 27648 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/burlap.pat", {st_mode=S_IFREG|0644, st_size=27679, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/burlap.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\37\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 -read(5, "Burlap\0", 7) = 7 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e46000 -munmap(0xb6e46000, 32768) = 0 -mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e47000 -read(5, "*\f\2O.%S.%vPER\'\36<\24\10H#\23D%\23M2\37oZE<\'"..., 27648) = 27648 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/burlwood.pat", {st_mode=S_IFREG|0644, st_size=27681, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/burlwood.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0!\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 -read(5, "Burlwood\0", 9) = 9 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e3f000 -munmap(0xb6e3f000, 32768) = 0 -mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e40000 -read(5, "\274l3\254c$\264k+\264w4\264k+\254k,\264l=\274yE\244wK\264\206C\254\177"..., 27648) = 27648 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/choc_swirl.pat", {st_mode=S_IFREG|0644, st_size=7540, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/choc_swirl.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0(\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 -read(5, "Chocolate Swirl\0", 16) = 16 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e38000 -munmap(0xb6e38000, 32768) = 0 -read(5, "v5\20\201?\35|:\31u2\25w4\32|8!w3 b\37\rI\22\n7\3\0005\4"..., 7500) = 7500 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/corkboard.pat", {st_mode=S_IFREG|0644, st_size=10097, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/corkboard.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0#\0\0\0\1\0\0\0N\0\0\0+\0\0\0\3GPAT", 24) = 24 -read(5, "Cork board\0", 11) = 11 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e38000 -munmap(0xb6e38000, 32768) = 0 -read(5, "\254\233\203\264\244\203\255\224{\254\233\203\254\233\203\245\223{\245\223{\244\223\203\255\234{\254\233\203\254\223"..., 10062) = 10062 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/cracked.pat", {st_mode=S_IFREG|0644, st_size=62238, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/cracked.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0\220\0\0\0\220\0\0\0\3GPAT", 24) = 24 -read(5, "Crack\0", 6) = 6 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e38000 -munmap(0xb6e38000, 32768) = 0 -mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e30000 -read(5, "IEFQMNRNOJFGFBCNJKXTU]YZa]^_[\\[W"..., 62208) = 62208 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/electric.pat", {st_mode=S_IFREG|0644, st_size=9638, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/electric.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0P\0\0\0(\0\0\0\3GPAT", 24) = 24 -read(5, "Electric Blue\0", 14) = 14 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e28000 -munmap(0xb6e28000, 32768) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e2d000 -read(5, "\2\0\222\0\2\215\2\0\216\10\0\214\5\0\206\5%\257\6e\307\6a\312\t)\266\2\5\230\1\1"..., 9600) = 9600 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/fibers.pat", {st_mode=S_IFREG|0644, st_size=7531, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/fibers.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\37\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 -read(5, "Fibers\0", 7) = 7 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e25000 -munmap(0xb6e25000, 32768) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e2b000 -read(5, "\353\371\364\336\347\354\265\270\305\325\323\335\332\334\346\322\331\336\350\364\366\343\361\363\327\343\357\340\352\362\313\320"..., 7500) = 7500 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/granite1.pat", {st_mode=S_IFREG|0644, st_size=10035, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/granite1.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0#\0\0\0\1\0\0\0d\0\0\0d\0\0\0\1GPAT", 24) = 24 -read(5, "Granite #1\0", 11) = 11 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e23000 -munmap(0xb6e23000, 32768) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e28000 -read(5, "+C<*#$)&10GQ8210\"\25\24\27\37A\223u9,5I)\30\23\33"..., 10000) = 10000 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/ground1.pat", {st_mode=S_IFREG|0644, st_size=30034, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/ground1.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0d\0\0\0d\0\0\0\3GPAT", 24) = 24 -read(5, "Dried mud\0", 10) = 10 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e20000 -munmap(0xb6e20000, 32768) = 0 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e20000 -read(5, "xB\36\224`;\222^9R\"\0\216`<\373\321\253\353\303\237\343\275\230\335\271\225\312\246\202\307\240"..., 30000) = 30000 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/ice.pat", {st_mode=S_IFREG|0644, st_size=43228, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/ice.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\34\0\0\0\1\0\0\0x\0\0\0x\0\0\0\3GPAT", 24) = 24 -read(5, "Ice\0", 4) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e18000 -munmap(0xb6e18000, 32768) = 0 -mmap2(NULL, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e15000 -read(5, "\343\345\371\331\334\357\327\332\354\330\333\356\327\332\355\330\333\356\325\330\352\330\333\356\325\330\353\321\323\346\332\335"..., 43200) = 43200 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/java.pat", {st_mode=S_IFREG|0644, st_size=12317, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/java.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\35\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Java\0", 5) = 5 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e0d000 -munmap(0xb6e0d000, 32768) = 0 -mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e11000 -read(5, ")\23\0266 #;%(D.18\"%0\32\0359#&D.15\37\")\23\26?$"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/leather.pat", {st_mode=S_IFREG|0644, st_size=12320, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/leather.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0 \0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Leather\0", 8) = 8 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e09000 -munmap(0xb6e09000, 32768) = 0 -mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e0d000 -read(5, ";\t\5F\v\5C\v\6N\16\10K\r\7d\24\t\207\37\20i\24\tC\v\6G\n\6K\f"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/leaves.pat", {st_mode=S_IFREG|0644, st_size=7537, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/leaves.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0%\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 -read(5, "Maple Leaves\0", 13) = 13 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e05000 -munmap(0xb6e05000, 32768) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e0b000 -read(5, "-Y\0046c\0104a\0060\\\0065Z\0071\\\0060]\0047`\4@b\26\33,\10\31\'"..., 7500) = 7500 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/leopard.pat", {st_mode=S_IFREG|0644, st_size=11936, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/leopard.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0 \0\0\0\1\0\0\0@\0\0\0>\0\0\0\3GPAT", 24) = 24 -read(5, "Leopard\0", 8) = 8 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e03000 -munmap(0xb6e03000, 32768) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e08000 -read(5, "7*\37\244uR\313\221h\310\215b\303\216hx^K0\'\37\17\r\n\2\2\2\2\2\2\n\7"..., 11904) = 11904 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/lightning.pat", {st_mode=S_IFREG|0644, st_size=40723, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/lightning.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0\211\0\0\0c\0\0\0\3GPAT", 24) = 24 -read(5, "Lightning\0", 10) = 10 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e00000 -munmap(0xb6e00000, 32768) = 0 -brk(0x8568000) = 0x8568000 -brk(0x8567000) = 0x8567000 -read(5, "\376\310\354\374\310\356\313\235\302yPxC\"O>$S?)Z0 Q6%[-\37R9\'"..., 40689) = 40689 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/marble1.pat", {st_mode=S_IFREG|0644, st_size=16418, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/marble1.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\1GPAT", 24) = 24 -read(5, "Marble #1\0", 10) = 10 -read(5, "\355\367\360\360\362\347\357\353\347\355\364\354\346\375\364\357\360\354\362\351\360\342\344\334\352\347\354\364\366\367\365\357"..., 16384) = 16384 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/marble2.pat", {st_mode=S_IFREG|0644, st_size=16418, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/marble2.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\1GPAT", 24) = 24 -read(5, "Marble #2\0", 10) = 10 -read(5, "\340\330\333\323\320\313\277\242\261\261\272\302\310\323\330\341\340\341\343\351\341\351\361\351\351\351\361\354\361\351\361\351"..., 16384) = 16384 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/marble3.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/marble3.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Marble #3\0", 10) = 10 -read(5, "\304\302\300\316\315\306\311\310\304\312\307\303\323\314\306\336\332\322\347\351\341\335\336\325\321\324\316\311\322\323\323\326"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/nops.pat", {st_mode=S_IFREG|0644, st_size=49181, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/nops.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\35\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 -read(5, "Nops\0", 5) = 5 -mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dfb000 -read(5, "\354\354\354\351\351\351\343\343\343\337\337\337\332\332\332\322\322\322\305\305\305\270\270\270\245\245\245\220\220\220~~"..., 49152) = 49152 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/paper.pat", {st_mode=S_IFREG|0644, st_size=10030, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/paper.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0d\0\0\0d\0\0\0\1GPAT", 24) = 24 -read(5, "Paper\0", 6) = 6 -read(5, "\240\233\261\234\244\253|\204\213\203\200\177uyh\240\243\206|{\213a\217{\272\223\212}\213\253\270\223"..., 10000) = 10000 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/parque1.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/parque1.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Parque #1\0", 10) = 10 -read(5, "\310s1\263X,\302i+\272`;\273fE\310|9\257Z*\300c6\266W\33\217/\n\273d"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/parque2.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/parque2.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Parque #2\0", 10) = 10 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df3000 -munmap(0xb6df3000, 32768) = 0 -read(5, "\254`\36\245R\30\256V\27\260X\30\2155\t\220?\r\224F\22\234L!\217?\24\224F\22\270l"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/parque3.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/parque3.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Parque #3\0", 10) = 10 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df3000 -munmap(0xb6df3000, 32768) = 0 -mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df7000 -read(5, "T%+o61\253gH\300vS\243TLi-7\235dC\330\224gv>:p?7\244P"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/pastel.pat", {st_mode=S_IFREG|0644, st_size=12325, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/pastel.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0%\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Pastel Stuff\0", 13) = 13 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6def000 -munmap(0xb6def000, 32768) = 0 -mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df3000 -read(5, "4S\2372[\226N9\215G\32kW;yT:\210R8\236k2\224\1778\215m9\211\201@"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/pine.pat", {st_mode=S_IFREG|0644, st_size=10781, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/pine.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\35\0\0\0\1\0\0\0@\0\0\0008\0\0\0\3GPAT", 24) = 24 -read(5, "Pine\0", 5) = 5 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6deb000 -munmap(0xb6deb000, 32768) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6df0000 -read(5, "f3\0\314f3\377\256L\377\314f\377\3143\377\314f\377\314f\377\256L\377\300T\377\300T\377\231"..., 10752) = 10752 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/pink_marble.pat", {st_mode=S_IFREG|0644, st_size=49188, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/pink_marble.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0$\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 -read(5, "Pink Marble\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6de8000 -munmap(0xb6de8000, 32768) = 0 -mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6de3000 -read(5, "\344\312\304\354\316\304\354\316\304\364\326\314\354\322\304\364\332\314\354\322\304\364\322\304\364\322\304\354\316\274\354\312"..., 49152) = 49152 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/pool.pat", {st_mode=S_IFREG|0644, st_size=6111, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/pool.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0$\0\0\0\1\0\0\0-\0\0\0-\0\0\0\3GPAT", 24) = 24 -read(5, "Pool Bottom\0", 12) = 12 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ddb000 -munmap(0xb6ddb000, 32768) = 0 -read(5, "v\217\305k\204\272n\207\275o\210\276n\207\275k\204\272l\205\273v\217\305w\220\306p\212\275q\213"..., 6075) = 6075 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/qube1.pat", {st_mode=S_IFREG|0644, st_size=5331, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/qube1.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0\37\0\0\0009\0\0\0\3GPAT", 24) = 24 -read(5, "Qbert\0", 6) = 6 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ddb000 -munmap(0xb6ddb000, 32768) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6de1000 -read(5, "-7[06Z00RF?`,\30=W=bP,XF Og?s@\33OO/"..., 5301) = 5301 -close(5) = 0 -brk(0x8588000) = 0x8588000 -stat64("/usr/share/gimp/2.0/patterns/rain.pat", {st_mode=S_IFREG|0644, st_size=35021, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/rain.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\35\0\0\0\1\0\0\0l\0\0\0l\0\0\0\3GPAT", 24) = 24 -read(5, "Rain\0", 5) = 5 -read(5, "\213\276\367\216\301\372\221\305\377\223\307\377\217\305\377\213\301\375\207\275\371\205\273\367\224\310\377\217\303\374\223\304"..., 34992) = 34992 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/recessed.pat", {st_mode=S_IFREG|0644, st_size=6433, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/recessed.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0!\0\0\0\1\0\0\0P\0\0\0P\0\0\0\1GPAT", 24) = 24 -read(5, "recessed\0", 9) = 9 -read(5, "w\201\203|`22a\207x~\204~\201vT3/K{\215~x\203j\202\205c8*It"..., 6400) = 6400 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/redcube.pat", {st_mode=S_IFREG|0644, st_size=12322, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/redcube.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Red Cubes\0", 10) = 10 -read(5, "\0\4\2\16\0\5\1\1\4\1\2\3\0\7\0\5\4\0P\4\6{\27\26\212\20\17\242\25\31\260\22"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/rock.pat", {st_mode=S_IFREG|0644, st_size=30510, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/rock.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0\177\0\0\0P\0\0\0\3GPAT", 24) = 24 -read(5, "Rocks\0", 6) = 6 -read(5, "\234\225\202\231\222\177\252\243\221|uc\205\177osp_\204\201r`aQgg[VXKz}"..., 30480) = 30480 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/sky.pat", {st_mode=S_IFREG|0644, st_size=11002, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/sky.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\34\0\0\0\1\0\0\0;\0\0\0>\0\0\0\3GPAT", 24) = 24 -read(5, "Sky\0", 4) = 4 -read(5, "\275\306\367\265\306\367\265\306\367\265\275\357\265\306\357\245\275\357\255\275\367\255\275\357\234\265\357\245\275\357\255\275"..., 10974) = 10974 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/slate.pat", {st_mode=S_IFREG|0644, st_size=16414, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/slate.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\1GPAT", 24) = 24 -read(5, "Slate\0", 6) = 6 -read(5, "DDDfUDDDUUUfDUDUDDUUUUDUUDDDffUU"..., 16384) = 16384 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/sm_squares.pat", {st_mode=S_IFREG|0644, st_size=7538, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/sm_squares.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0&\0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 -read(5, "Small Squares\0", 14) = 14 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dd9000 -munmap(0xb6dd9000, 32768) = 0 -read(5, "\372\301T\364\300Q\364\301R\373\301Y\370\264V\366\250S\354\234I\354\240L\350\231Q\326\205I\360\236"..., 7500) = 7500 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/starfield.pat", {st_mode=S_IFREG|0644, st_size=49186, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/starfield.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\"\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 -read(5, "Starfield\0", 10) = 10 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dd9000 -munmap(0xb6dd9000, 32768) = 0 -mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dd4000 -read(5, "\4\7\r\4\10\34\4\t1\5\n@\f\7<\v\7D\10\7N\6\7V\5\10Z\10\6o\t\5"..., 49152) = 49152 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/stone33.pat", {st_mode=S_IFREG|0644, st_size=73038, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/stone33.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0\234\0\0\0\234\0\0\0\3GPAT", 24) = 24 -read(5, "Stone\0", 6) = 6 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dcc000 -munmap(0xb6dcc000, 32768) = 0 -mmap2(NULL, 73728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dc2000 -read(5, "\204\211\237\230\235\263\232\237\265\221\226\254\226\234\262\231\237\265\214\224\251\200\210\235\203\216\244\220\233\261w\203"..., 73008) = 73008 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/terra.pat", {st_mode=S_IFREG|0644, st_size=12318, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/terra.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0@\0\0\0@\0\0\0\3GPAT", 24) = 24 -read(5, "Terra\0", 6) = 6 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dba000 -munmap(0xb6dba000, 32768) = 0 -mmap2(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dbe000 -read(5, "\322q-\314o)\324w3\330y1\320s-\322o1\320q3\322{/\324u1\324s1\322w"..., 12288) = 12288 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/walnut.pat", {st_mode=S_IFREG|0644, st_size=49183, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/walnut.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\37\0\0\0\1\0\0\0\200\0\0\0\200\0\0\0\3GPAT", 24) = 24 -read(5, "Walnut\0", 7) = 7 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6db6000 -munmap(0xb6db6000, 32768) = 0 -mmap2(NULL, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6db1000 -read(5, "\204B1\224J1\224R9{B){91Z!\30c1)k1\30k1!c1){9"..., 49152) = 49152 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/warning.pat", {st_mode=S_IFREG|0644, st_size=1233, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/warning.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0!\0\0\0\1\0\0\0\24\0\0\0\24\0\0\0\3GPAT", 24) = 24 -read(5, "Warning!\0", 9) = 9 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da9000 -munmap(0xb6da9000, 32768) = 0 -read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377"..., 1200) = 1200 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/wood1.pat", {st_mode=S_IFREG|0644, st_size=27690, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/wood1.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0*\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 -read(5, "Wood of some sort\0", 18) = 18 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da9000 -munmap(0xb6da9000, 32768) = 0 -mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6daa000 -read(5, "\264e\34\254`\24\254`\24\244Z\v\244U\f\244Z\v\254a\36\264l!\274m\"\264l!\264e"..., 27648) = 27648 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/wood2.pat", {st_mode=S_IFREG|0644, st_size=30030, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/wood2.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\36\0\0\0\1\0\0\0d\0\0\0d\0\0\0\3GPAT", 24) = 24 -read(5, "Pine?\0", 6) = 6 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da2000 -munmap(0xb6da2000, 32768) = 0 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da2000 -read(5, "\377\272Y\377\303e\353\252A\377\262A\377\262A\377\262A\377\272Y\377\303e\353\252A\377\262A\377\262"..., 30000) = 30000 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/wood3.pat", {st_mode=S_IFREG|0644, st_size=7532, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/wood3.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0 \0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 -read(5, "Wood #1\0", 8) = 8 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d9a000 -munmap(0xb6d9a000, 32768) = 0 -read(5, "\262h,\276u4\266l-\263j-\256c*\264h+\270j,\266f,\255a*\256c*\241W"..., 7500) = 7500 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/wood4.pat", {st_mode=S_IFREG|0644, st_size=7532, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/wood4.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0 \0\0\0\1\0\0\0002\0\0\0002\0\0\0\3GPAT", 24) = 24 -read(5, "Wood #2\0", 8) = 8 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d9a000 -munmap(0xb6d9a000, 32768) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6da0000 -read(5, "\201;\32w:\34t7\35m6\34c3\33i3\33j1\32f4\34e5\35_0\31b1"..., 7500) = 7500 -close(5) = 0 -stat64("/usr/share/gimp/2.0/patterns/wood5.pat", {st_mode=S_IFREG|0644, st_size=27677, ...}) = 0 -open("/usr/share/gimp/2.0/patterns/wood5.pat", O_RDONLY|O_LARGEFILE) = 5 -read(5, "\0\0\0\35\0\0\0\1\0\0\0`\0\0\0`\0\0\0\3GPAT", 24) = 24 -read(5, "Wood\0", 5) = 5 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -munmap(0xb6d98000, 32768) = 0 -mmap2(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d99000 -read(5, "\254\226t\274\236|\274\246\204\274\236|\254\226t\254\222l\254\222t\254\226l\274\246\204\304\252\204\274\246"..., 27648) = 27648 -close(5) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -brk(0x85a9000) = 0x85a9000 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 265559}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 265767}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 265999}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 266197}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 266632}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"6\7\2\0\n\1`\0035\30\4\0\17\1`\3?\0`\3\220\1\24\0F\30\5\0\17\1`\3"..., 4072}, {">\3\7\0\22\1`\3;\0`\0033\0`\3\0\0\0\0\260\0\347\0/\0\n\0", 28}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0\23\1`\0036\7\2\0\22\1`\3", 32}], 1) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 269108}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 269235}, NULL) = 0 -stat64("/user/folk/clint/.gimp-2.2/palettes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/user/folk/clint/.gimp-2.2/palettes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/share/gimp/2.0/palettes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/palettes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 2 entries */, 4096) = 48 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/usr/share/gimp/2.0/palettes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 41 entries */, 4096) = 1376 -stat64("/usr/share/gimp/2.0/palettes/Coldfire.gpl", {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Coldfire.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Coldfire\n#\n "..., 4096) = 4096 -read(5, "ntitled\n236 216 4\tUntitled\n240"..., 4096) = 1308 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Bears.gpl", {st_mode=S_IFREG|0644, st_size=5394, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Bears.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5394, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Bears\n#\n 8 "..., 4096) = 4096 -read(5, "d\n148 92 44\tUntitled\n188 184 1"..., 4096) = 1298 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Bgold.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Bgold.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Bgold\n#\n236 2"..., 4096) = 4096 -read(5, "tled\n168 152 208\tUntitled\n168 15"..., 4096) = 1307 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Blues.gpl", {st_mode=S_IFREG|0644, st_size=5436, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Blues.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5436, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Blues\n#\n# For"..., 4096) = 4096 -read(5, "d\n 0 0 252\tUntitled\n 0 0 2"..., 4096) = 1340 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Borders.gpl", {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Borders.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Borders\n#\n204"..., 4096) = 4096 -read(5, "titled\n 80 100 88\tUntitled\n 88 "..., 4096) = 1309 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Caramel.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Caramel.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Caramel\n#\n 48"..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, "tled\n 0 112 104\tUntitled\n 0 10"..., 4096) = 1307 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Cascade.gpl", {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Cascade.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5405, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Cascade\n#\n108"..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -brk(0x85ca000) = 0x85ca000 -read(5, "titled\n 60 116 164\tUntitled\n 60 "..., 4096) = 1309 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Browns_And_Yellows.gpl", {st_mode=S_IFREG|0644, st_size=528, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Browns_And_Yellows.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=528, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Browns And Ye"..., 4096) = 528 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/China.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/China.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: China\n#\n224 "..., 4096) = 4096 -read(5, "tled\n200 120 196\tUntitled\n160 13"..., 4096) = 1307 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Dark_pastels.gpl", {st_mode=S_IFREG|0644, st_size=5410, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Dark_pastels.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5410, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Dark pastels\n"..., 4096) = 4096 -read(5, "56\tUntitled\n 92 80 60\tUntitled"..., 4096) = 1314 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Cool_Colors.gpl", {st_mode=S_IFREG|0644, st_size=201, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Cool_Colors.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=201, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Cool Colors\n#"..., 4096) = 201 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Cranes.gpl", {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Cranes.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Cranes\n#\n 8 "..., 4096) = 4096 -read(5, "\n192 28 36\tUntitled\n 72 80 6"..., 4096) = 1297 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Firecode.gpl", {st_mode=S_IFREG|0644, st_size=5401, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Firecode.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5401, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Firecode\n#\n "..., 4096) = 4096 -read(5, "tled\n252 252 28\tUntitled\n252 25"..., 4096) = 1305 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Default.gpl", {st_mode=S_IFREG|0644, st_size=498, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Default.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=498, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Default\n#\n255"..., 4096) = 498 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Ega.gpl", {st_mode=S_IFREG|0644, st_size=4972, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Ega.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=4972, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Ega\nColumns: "..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, "52\tUntitled\n252 252 0\tUntitled"..., 4096) = 876 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/GrayViolet.gpl", {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/GrayViolet.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: GrayViolet\n#\n"..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -brk(0x85eb000) = 0x85eb000 -read(5, "Untitled\n140 116 140\tUntitled\n14"..., 4096) = 1290 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Gold.gpl", {st_mode=S_IFREG|0644, st_size=5390, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Gold.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5390, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Gold\n#\n252 25"..., 4096) = 4096 -read(5, "led\n 60 0 0\tUntitled\n 60 0"..., 4096) = 1294 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Named_Colors.gpl", {st_mode=S_IFREG|0644, st_size=16940, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Named_Colors.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=16940, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Named Colors\n"..., 4096) = 4096 -read(5, "9 0)\n255 0 0\tred (255 0 "..., 4096) = 4096 -read(5, "39)\n202 225 255\tlight steel blue"..., 4096) = 4096 -read(5, "na 1 (255 130 71)\n238 121 66\ts"..., 4096) = 4096 -read(5, "medium purple 1 (171 130 255)\n15"..., 4096) = 556 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Grayblue.gpl", {st_mode=S_IFREG|0644, st_size=5406, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Grayblue.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5406, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Grayblue\n#\n12"..., 4096) = 4096 -read(5, "ntitled\n 60 76 108\tUntitled\n 60"..., 4096) = 1310 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Grays.gpl", {st_mode=S_IFREG|0644, st_size=629, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Grays.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=629, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Grays\n 0 0"..., 4096) = 629 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Greens.gpl", {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Greens.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5393, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Greens\n#\n 0 "..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, " 0 244 0\tUntitled\n 0 240 0"..., 4096) = 1297 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Hilite.gpl", {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Hilite.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5404, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Hilite\n#\n164 "..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -brk(0x860c000) = 0x860c000 -read(5, "itled\n232 248 188\tUntitled\n232 2"..., 4096) = 1308 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Khaki.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Khaki.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Khaki\n#\n144 1"..., 4096) = 4096 -read(5, "tled\n136 140 76\tUntitled\n136 14"..., 4096) = 1307 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Lights.gpl", {st_mode=S_IFREG|0644, st_size=578, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Lights.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=578, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Lights\n#\n255 "..., 4096) = 578 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Muted.gpl", {st_mode=S_IFREG|0644, st_size=1750, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Muted.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=1750, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Muted\n#\n139 1"..., 4096) = 1750 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Paintjet.gpl", {st_mode=S_IFREG|0644, st_size=488, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Paintjet.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=488, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Paintjet\n#\n# "..., 4096) = 488 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/News3.gpl", {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/News3.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5403, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: News3\n#\n236 2"..., 4096) = 4096 -read(5, "tled\n 56 20 64\tUntitled\n 56 2"..., 4096) = 1307 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Op2.gpl", {st_mode=S_IFREG|0644, st_size=5399, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Op2.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5399, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Op2\n#\n204 144"..., 4096) = 4096 -read(5, "ed\n216 188 208\tUntitled\n216 188 "..., 4096) = 1303 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Reds_And_Purples.gpl", {st_mode=S_IFREG|0644, st_size=694, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Reds_And_Purples.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=694, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Reds And Purp"..., 4096) = 694 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Pastels.gpl", {st_mode=S_IFREG|0644, st_size=407, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Pastels.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=407, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Pastels\n#\n226"..., 4096) = 407 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Plasma.gpl", {st_mode=S_IFREG|0644, st_size=5414, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Plasma.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5414, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Plasma\nColumn"..., 4096) = 4096 -read(5, "56 180\tUntitled\n 48 64 168\tUnti"..., 4096) = 1318 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Reds.gpl", {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Reds.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Reds\n#\n 0 "..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, "Untitled\n248 0 0\tUntitled\n24"..., 4096) = 1290 -brk(0x862d000) = 0x862d000 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Topographic.gpl", {st_mode=S_IFREG|0644, st_size=5470, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Topographic.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5470, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Topographic\n#"..., 4096) = 4096 -read(5, " 224 92\tUntitled\n232 224 92\tUn"..., 4096) = 1374 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Royal.gpl", {st_mode=S_IFREG|0644, st_size=5396, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Royal.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5396, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Royal\n#\n 0 "..., 4096) = 4096 -read(5, "0 236 4\tUntitled\n240 232 4\tU"..., 4096) = 1300 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Visibone.gpl", {st_mode=S_IFREG|0644, st_size=12044, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Visibone.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=12044, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Visibone\nColu"..., 4096) = 4096 -read(5, "255 102 204\t#FF66CC - Light Pink"..., 4096) = 4096 -read(5, "ight Teal-Green\n 51 204 102\t#33C"..., 4096) = 3852 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Visibone_2.gpl", {st_mode=S_IFREG|0644, st_size=8928, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Visibone_2.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=8928, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Visibone 2\nCo"..., 4096) = 4096 -read(5, "C66\n 0 255 0\t( 0 255 0) #0"..., 4096) = 4096 -read(5, "( 0 51 204) #0033CC\n 0 0 "..., 4096) = 736 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Volcano.gpl", {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Volcano.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=5386, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Volcano\n#\n 0"..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, "ed\n160 252 0\tUntitled\n164 252 "..., 4096) = 1290 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Warm_Colors.gpl", {st_mode=S_IFREG|0644, st_size=180, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Warm_Colors.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=180, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Warm Colors\n#"..., 4096) = 180 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/palettes/Web.gpl", {st_mode=S_IFREG|0644, st_size=4572, ...}) = 0 -open("/usr/share/gimp/2.0/palettes/Web.gpl", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=4572, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Palette\nName: Web\nColumns: "..., 4096) = 4096 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -brk(0x864e000) = 0x864e000 -read(5, " 204\tUntitled\n 0 153 153\tUntitl"..., 4096) = 476 -read(5, "", 4096) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 367162}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 367443}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 367612}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 367814}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 368277}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"6\7\2\0\17\1`\0035\30\4\0\24\1`\3?\0`\3\220\1\24\0F\30\5\0\24\1`\3"..., 4072}, {"\232\27\17\0\3\1`\3O\0`\3\30\1`\0034\0\0\0P\0`\3\330\377\364\377\26\0`\3"..., 60}], 2) = 4132 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\6\5\0\30\1`\3\0\0\0\0\0\0\0\0006\0\n\0\232\27\f\0\3\1`\3O\0`\3"..., 148}], 1) = 148 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 371264}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 371395}, NULL) = 0 -stat64("/user/folk/clint/.gimp-2.2/gradients", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/user/folk/clint/.gimp-2.2/gradients", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/share/gimp/2.0/gradients", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/gradients", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 3 entries */, 4096) = 88 -stat64("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Mountains\n6\n"..., 4096) = 650 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -access("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", F_OK) = 0 -access("/user/folk/clint/.gimp-2.2/gradients/Mountains.ggr", W_OK) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/usr/share/gimp/2.0/gradients", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 80 entries */, 4096) = 3224 -stat64("/usr/share/gimp/2.0/gradients/Brushed_Aluminium.ggr", {st_mode=S_IFREG|0644, st_size=2513, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Brushed_Aluminium.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=2513, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Brushed Alum"..., 4096) = 2513 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Abstract_1.ggr", {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Abstract_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Abstract 1\n6"..., 4096) = 651 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Abstract_2.ggr", {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Abstract_2.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Abstract 2\n6"..., 4096) = 651 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Abstract_3.ggr", {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Abstract_3.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=651, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Abstract 3\n6"..., 4096) = 651 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Aneurism.ggr", {st_mode=S_IFREG|0644, st_size=855, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Aneurism.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=855, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Aneurism\n8\n0"..., 4096) = 855 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Blinds.ggr", {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Blinds.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Blinds\n9\n0.0"..., 4096) = 956 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Blue_Green.ggr", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Blue_Green.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Blue Green\n2"..., 4096) = 239 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Browns.ggr", {st_mode=S_IFREG|0644, st_size=1163, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Browns.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=1163, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Browns\n11\n0."..., 4096) = 1163 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Burning_Transparency.ggr", {st_mode=S_IFREG|0644, st_size=661, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Burning_Transparency.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=661, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Burning Tran"..., 4096) = 661 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Burning_Paper.ggr", {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Burning_Paper.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Burning Pape"..., 4096) = 654 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/CD_Half.ggr", {st_mode=S_IFREG|0644, st_size=957, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/CD_Half.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=957, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: CD Half\n9\n0."..., 4096) = 957 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/CD.ggr", {st_mode=S_IFREG|0644, st_size=1880, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/CD.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=1880, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: CD\n18\n0.0000"..., 4096) = 1880 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Angular_1.ggr", {st_mode=S_IFREG|0644, st_size=4782, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Glow_Angular_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=4782, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Glow A"..., 4096) = 4096 -read(5, " 1.000000 1.000000 0.110000 1.00"..., 4096) = 686 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Caribbean_Blues.ggr", {st_mode=S_IFREG|0644, st_size=347, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Caribbean_Blues.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=347, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Caribbean Bl"..., 4096) = 347 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Coffee.ggr", {st_mode=S_IFREG|0644, st_size=132, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Coffee.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=132, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Coffee\n1\n0.0"..., 4096) = 132 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Cold_Steel.ggr", {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Cold_Steel.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=239, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Cold Steel\n2"..., 4096) = 239 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Cold_Steel_2.ggr", {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Cold_Steel_2.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Cold Steel 2"..., 4096) = 344 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Crown_molding.ggr", {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Crown_molding.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=654, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Crown moldin"..., 4096) = 654 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Dark_1.ggr", {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Dark_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Dark 1\n3\n0.0"..., 4096) = 338 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Deep_Sea.ggr", {st_mode=S_IFREG|0644, st_size=237, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Deep_Sea.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=237, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Deep Sea\n2\n0"..., 4096) = 237 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Default.ggr", {st_mode=S_IFREG|0644, st_size=133, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Default.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=133, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Default\n1\n0."..., 4096) = 133 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CCW.ggr", {st_mode=S_IFREG|0644, st_size=154, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CCW.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=154, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Full saturat"..., 4096) = 154 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_1.ggr", {st_mode=S_IFREG|0644, st_size=454, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=454, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 454 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_2.ggr", {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_2.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 557 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_3.ggr", {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_3.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 557 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_4.ggr", {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Glow_Radial_4.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Glow R"..., 4096) = 351 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Radial_101.ggr", {st_mode=S_IFREG|0644, st_size=760, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Radial_101.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=760, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Radial"..., 4096) = 760 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Radial_102.ggr", {st_mode=S_IFREG|0644, st_size=657, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Radial_102.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=657, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Radial"..., 4096) = 657 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Radial_103.ggr", {st_mode=S_IFREG|0644, st_size=142, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Radial_103.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=142, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Radial"..., 4096) = 142 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_1.ggr", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Rays R"..., 4096) = 248 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_2.ggr", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Rays_Radial_2.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Rays R"..., 4096) = 248 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Rays_Size_1.ggr", {st_mode=S_IFREG|0644, st_size=1689, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Rays_Size_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=1689, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Rays S"..., 4096) = 1689 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Flare_Sizefac_101.ggr", {st_mode=S_IFREG|0644, st_size=143, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Flare_Sizefac_101.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=143, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Flare Sizefa"..., 4096) = 143 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Four_bars.ggr", {st_mode=S_IFREG|0644, st_size=856, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Four_bars.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=856, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Four bars\n8\n"..., 4096) = 856 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/French_flag.ggr", {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/French_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: French flag\n"..., 4096) = 343 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/French_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/French_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: French flag "..., 4096) = 247 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Horizon_1.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Horizon_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Horizon 1\n5\n"..., 4096) = 547 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Golden.ggr", {st_mode=S_IFREG|0644, st_size=1472, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Golden.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=1472, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Golden\n14\n0."..., 4096) = 1472 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CW.ggr", {st_mode=S_IFREG|0644, st_size=153, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Full_saturation_spectrum_CW.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=153, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Full saturat"..., 4096) = 153 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/German_flag.ggr", {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/German_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=343, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: German flag\n"..., 4096) = 343 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/German_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/German_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=247, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: German flag "..., 4096) = 247 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Greens.ggr", {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Greens.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Greens\n9\n0.0"..., 4096) = 956 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Incandescent.ggr", {st_mode=S_IFREG|0644, st_size=447, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Incandescent.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=447, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Incandescent"..., 4096) = 447 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Horizon_2.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Horizon_2.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Horizon 2\n5\n"..., 4096) = 547 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Land_and_Sea.ggr", {st_mode=S_IFREG|0644, st_size=550, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Land_and_Sea.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=550, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Land and Sea"..., 4096) = 550 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Land_1.ggr", {st_mode=S_IFREG|0644, st_size=544, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Land_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=544, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Land 1\n5\n0.0"..., 4096) = 544 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Brown.ggr", {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Brown.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Radial Eyeba"..., 4096) = 558 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Metallic_Something.ggr", {st_mode=S_IFREG|0644, st_size=865, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Metallic_Something.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=865, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Metallic Som"..., 4096) = 865 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Mexican_flag.ggr", {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Mexican_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=344, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Mexican flag"..., 4096) = 344 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Mexican_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Mexican_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=248, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Mexican flag"..., 4096) = 248 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Nauseating_Headache.ggr", {st_mode=S_IFREG|0644, st_size=2618, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Nauseating_Headache.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=2618, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Nauseating H"..., 4096) = 2618 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Neon_Cyan.ggr", {st_mode=S_IFREG|0644, st_size=444, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Neon_Cyan.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=444, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Neon Cyan\n4\n"..., 4096) = 444 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Neon_Green.ggr", {st_mode=S_IFREG|0644, st_size=445, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Neon_Green.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=445, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Neon Green\n4"..., 4096) = 445 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Neon_Yellow.ggr", {st_mode=S_IFREG|0644, st_size=446, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Neon_Yellow.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=446, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Neon Yellow\n"..., 4096) = 446 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Pastel_Rainbow.ggr", {st_mode=S_IFREG|0644, st_size=140, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Pastel_Rainbow.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=140, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Pastel Rainb"..., 4096) = 140 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Pastels.ggr", {st_mode=S_IFREG|0644, st_size=1473, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Pastels.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=1473, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Pastels\n14\n0"..., 4096) = 1473 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Purples.ggr", {st_mode=S_IFREG|0644, st_size=751, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Purples.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=751, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Purples\n7\n0."..., 4096) = 751 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Blue.ggr", {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Blue.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=557, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Radial Eyeba"..., 4096) = 557 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Green.ggr", {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Radial_Eyeball_Green.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=558, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Radial Eyeba"..., 4096) = 558 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Radial_Glow_1.ggr", {st_mode=S_IFREG|0644, st_size=551, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Radial_Glow_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=551, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Radial Glow "..., 4096) = 551 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Radial_Rainbow_Hoop.ggr", {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Radial_Rainbow_Hoop.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Radial Rainb"..., 4096) = 351 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Romanian_flag.ggr", {st_mode=S_IFREG|0644, st_size=345, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Romanian_flag.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=345, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Romanian fla"..., 4096) = 345 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Romanian_flag_smooth.ggr", {st_mode=S_IFREG|0644, st_size=249, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Romanian_flag_smooth.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=249, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Romanian fla"..., 4096) = 249 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Rounded_edge.ggr", {st_mode=S_IFREG|0644, st_size=756, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Rounded_edge.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=756, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Rounded edge"..., 4096) = 756 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Shadows_1.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Shadows_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Shadows 1\n5\n"..., 4096) = 547 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Shadows_2.ggr", {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Shadows_2.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=547, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Shadows 2\n5\n"..., 4096) = 547 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Shadows_3.ggr", {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Shadows_3.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=650, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Shadows 3\n6\n"..., 4096) = 650 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Skyline.ggr", {st_mode=S_IFREG|0644, st_size=545, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Skyline.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=545, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Skyline\n5\n0."..., 4096) = 545 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Skyline_polluted.ggr", {st_mode=S_IFREG|0644, st_size=554, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Skyline_polluted.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=554, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Skyline poll"..., 4096) = 554 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Square_Wood_Frame.ggr", {st_mode=S_IFREG|0644, st_size=658, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Square_Wood_Frame.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=658, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Square Wood "..., 4096) = 658 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Sunrise.ggr", {st_mode=S_IFREG|0644, st_size=648, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Sunrise.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=648, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Sunrise\n6\n0."..., 4096) = 648 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Three_bars_sin.ggr", {st_mode=S_IFREG|0644, st_size=655, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Three_bars_sin.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=655, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Three bars s"..., 4096) = 655 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Tropical_Colors.ggr", {st_mode=S_IFREG|0644, st_size=965, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Tropical_Colors.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=965, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Tropical Col"..., 4096) = 965 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Tube_Red.ggr", {st_mode=S_IFREG|0644, st_size=752, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Tube_Red.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=752, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Tube Red\n7\n0"..., 4096) = 752 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Wood_1.ggr", {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Wood_1.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=338, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Wood 1\n3\n0.0"..., 4096) = 338 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Wood_2.ggr", {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Wood_2.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=956, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Wood 2\n9\n0.0"..., 4096) = 956 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Yellow_Contrast.ggr", {st_mode=S_IFREG|0644, st_size=759, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Yellow_Contrast.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=759, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Yellow Contr"..., 4096) = 759 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -stat64("/usr/share/gimp/2.0/gradients/Yellow_Orange.ggr", {st_mode=S_IFREG|0644, st_size=242, ...}) = 0 -open("/usr/share/gimp/2.0/gradients/Yellow_Orange.ggr", O_RDONLY|O_LARGEFILE) = 5 -fstat64(5, {st_mode=S_IFREG|0644, st_size=242, ...}) = 0 -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d98000 -read(5, "GIMP Gradient\nName: Yellow Orang"..., 4096) = 242 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d90000 -munmap(0xb6d90000, 32768) = 0 -close(5) = 0 -munmap(0xb6d98000, 4096) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 640554}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 640838}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 641009}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 643450}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 643866}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"6\7\2\0\24\1`\0035\30\4\0\31\1`\3?\0`\3\220\1\24\0F\30\5\0\31\1`\3"..., 4088}, {"\232\32\7\0\3\1`\3\35\1`\3\326\326\315\315\273\273\377\377\0\0\0\0006\0\n\0", 28}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{";\3\5\0<\0`\3\0\0\0\0\0\0\0\0006\0\n\0>\3\7\0=\0`\3\34\1`\3"..., 272}], 1) = 272 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407179, 646044}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407179, 646171}, NULL) = 0 -time(NULL) = 1192407179 -access("/etc/fonts/fonts.conf", R_OK) = 0 -stat64("/etc/fonts/fonts.conf", {st_mode=S_IFREG|0644, st_size=5268, ...}) = 0 -open("/etc/fonts/fonts.conf", O_RDONLY) = 4 -read(4, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\n\32\7\0#\1`\3$\1`\3\7\0`\3\0\0\0\0\0\0\0\0\220\1\24\0;\3\5\0"..., 476}], 1) = 476 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 364027}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407180, 364106}, NULL) = 0 -open("/user/folk/clint/.gimp-2.2/templaterc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP templaterc\n# \n# This file"..., 4000) = 4000 -read(4, "ackground-fill))\n(GimpTemplate \""..., 4000) = 1045 -read(4, "", 4000) = 0 -close(4) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 370293}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 370421}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407180, 370672}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0(\1`\3?\0`\3\220\1\24\0\232\4\5\0)\1`\3(\1`\0038\0\0\0"..., 4084}, {"8\0\4\0\'\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\0\4\0(\0`\3\0\0\10\0\0\0\0\0008\0\4\0\23\0`\3\0\0\10\0\0\0\0\0"..., 580}], 1) = 580 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 372151}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407180, 372230}, NULL) = 0 -open("/user/folk/clint/.gimp-2.2/modulerc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) -stat64("/user/folk/clint/.gimp-2.2/modules", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/modules", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 2 entries */, 4096) = 48 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/usr/lib/gimp/2.0/modules", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 11 entries */, 4096) = 448 -stat64("/usr/lib/gimp/2.0/modules/libcontroller_linux_input.so", {st_mode=S_IFREG|0755, st_size=13948, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcontroller_linux_input.so", {st_mode=S_IFREG|0755, st_size=13948, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcontroller_linux_input.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \17\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=13948, ...}) = 0 -mmap2(NULL, 12444, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d95000 -fadvise64(5, 0, 12444, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb6d97000 -close(5) = 0 -munmap(0xb6d95000, 12444) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_colorblind.so", {st_mode=S_IFREG|0755, st_size=13972, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_colorblind.so", {st_mode=S_IFREG|0755, st_size=13972, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcdisplay_colorblind.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\17\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=13972, ...}) = 0 -mmap2(NULL, 16572, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d94000 -fadvise64(5, 0, 16572, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb6d97000 -close(5) = 0 -munmap(0xb6d94000, 16572) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_gamma.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_gamma.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcdisplay_gamma.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\r\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 -mmap2(NULL, 12440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d95000 -fadvise64(5, 0, 12440, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1) = 0xb6d97000 -close(5) = 0 -munmap(0xb6d95000, 12440) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.so", {st_mode=S_IFREG|0755, st_size=9816, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.so", {st_mode=S_IFREG|0755, st_size=9816, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcdisplay_highcontrast.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\r\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=9816, ...}) = 0 -mmap2(NULL, 12440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d95000 -fadvise64(5, 0, 12440, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1) = 0xb6d97000 -close(5) = 0 -munmap(0xb6d95000, 12440) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_proof.so", {st_mode=S_IFREG|0755, st_size=14016, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcdisplay_proof.so", {st_mode=S_IFREG|0755, st_size=14016, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcdisplay_proof.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\25\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=14016, ...}) = 0 -mmap2(NULL, 16652, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d94000 -fadvise64(5, 0, 16652, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb6d97000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb6d97000 -close(5) = 0 -open("/user/folk/clint/lib/liblcms.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/liblcms.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/liblcms.so.1", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\\\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=189124, ...}) = 0 -mmap2(NULL, 197408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6d63000 -fadvise64(5, 0, 197408, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb6d8f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2c) = 0xb6d8f000 -mmap2(0xb6d91000, 8992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6d91000 -close(5) = 0 -munmap(0xb6d94000, 16652) = 0 -munmap(0xb6d63000, 197408) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcolorsel_cmyk.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcolorsel_cmyk.so", {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcolorsel_cmyk.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\r\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=9808, ...}) = 0 -mmap2(NULL, 12436, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c7000 -fadvise64(5, 0, 12436, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1) = 0xb71c9000 -close(5) = 0 -munmap(0xb71c7000, 12436) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcolorsel_triangle.so", {st_mode=S_IFREG|0755, st_size=13932, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcolorsel_triangle.so", {st_mode=S_IFREG|0755, st_size=13932, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcolorsel_triangle.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\16\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=13932, ...}) = 0 -mmap2(NULL, 16560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c6000 -fadvise64(5, 0, 16560, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb71c9000 -close(5) = 0 -munmap(0xb71c6000, 16560) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcolorsel_water.so", {st_mode=S_IFREG|0755, st_size=13968, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcolorsel_water.so", {st_mode=S_IFREG|0755, st_size=13968, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcolorsel_water.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\17\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=13968, ...}) = 0 -mmap2(NULL, 12472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c7000 -fadvise64(5, 0, 12472, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb71c9000 -close(5) = 0 -munmap(0xb71c7000, 12472) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcontroller_midi.so", {st_mode=S_IFREG|0755, st_size=14052, ...}) = 0 -stat64("/usr/lib/gimp/2.0/modules/libcontroller_midi.so", {st_mode=S_IFREG|0755, st_size=14052, ...}) = 0 -open("/usr/lib/gimp/2.0/modules/libcontroller_midi.so", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\23\0\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=14052, ...}) = 0 -mmap2(NULL, 19776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb71c6000 -fadvise64(5, 0, 19776, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb71c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2) = 0xb71c9000 -close(5) = 0 -open("/user/folk/clint/lib/libasound.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/opt/kde3/lib/libasound.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/lib/libasound.so.2", O_RDONLY) = 5 -read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000%\2\0004\0\0\0"..., 512) = 512 -fstat64(5, {st_mode=S_IFREG|0755, st_size=768576, ...}) = 0 -mmap2(NULL, 768392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0xb6cdd000 -fadvise64(5, 0, 768392, POSIX_FADV_WILLNEED) = 0 -mmap2(0xb6d94000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xb6) = 0xb6d94000 -close(5) = 0 -mprotect(0xb6d94000, 4096, PROT_READ) = 0 -munmap(0xb71c6000, 19776) = 0 -munmap(0xb6cdd000, 768392) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71ba000 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb71a9000 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d88000 -brk(0x889b000) = 0x889b000 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\20\0\5\0\t\0`\3CLIPBOARD\0\0\0", 20}], 1) = 20 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\360\215)\0\0\0\0001\1\0\0\210\360\227\277[H\25\10\\\245\37\10`\360\227\277x\360\227\277", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -open("/user/folk/clint/.gimp-2.2/sessionrc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP sessionrc\n# \n# This file "..., 4000) = 3023 -read(4, "", 4000) = 0 -close(4) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\230\2\4\0\1\0`\0031\1\0\0\7\0\0\0", 16}], 1) = 16 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 545161}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 545372}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 545610}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 545812}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"6\2\2\0#\1`\0035\30\4\0,\1`\3?\0`\3\220\1\24\0F\30\5\0,\1`\3"..., 4084}, {"@\0\4\0,\1`\3&\0`\3\2\0\2\0", 16}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"@\0\4\0,\1`\3&\0`\3\214\1\3\0008\0\4\0C\0`\3\4\0\0\0dm\217\0"..., 928}], 1) = 928 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407180, 548889}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407180, 549021}, NULL) = 0 -open("/user/folk/clint/.gimp-2.2/toolrc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP toolrc\n\n(GimpToolInfo \"gi"..., 4000) = 3366 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rect-select-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-rect-select-tool opt"..., 4000) = 144 -read(4, "", 4000) = 0 -close(4) = 0 -open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 4 -fstat64(4, {st_mode=S_IFCHR|0644, st_rdev=makedev(1, 9), ...}) = 0 -ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfcdb4a4) = -1 EINVAL (Invalid argument) -mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d87000 -read(4, "o\335\6\337n\36\26V\274[\324\0254\257\222\300\311\n|\327(\346\24>\23\333_"..., 4096) = 4096 -close(4) = 0 -munmap(0xb6d87000, 4096) = 0 -open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en_US/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en_US/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en_US/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-langpack/en/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale/en/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -open("/usr/share/locale-bundle/en/LC_MESSAGES/gimp20-libgimp.mo", O_RDONLY) = -1 ENOENT (No such file or directory) -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d86000 -brk(0x88bc000) = 0x88bc000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rect-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-rect-select-tool opt"..., 4000) = 94 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ellipse-select-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-ellipse-select-tool "..., 4000) = 133 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ellipse-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-ellipse-select-tool "..., 4000) = 100 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-free-select-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-free-select-tool opt"..., 4000) = 78 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-free-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-free-select-tool opt"..., 4000) = 94 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-fuzzy-select-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-fuzzy-select-tool op"..., 4000) = 144 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-fuzzy-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-fuzzy-select-tool op"..., 4000) = 96 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-by-color-select-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-by-color-select-tool"..., 4000) = 146 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-by-color-select-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-by-color-select-tool"..., 4000) = 102 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-iscissors-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-iscissors-tool optio"..., 4000) = 132 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-iscissors-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-iscissors-tool optio"..., 4000) = 90 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-vector-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-vector-tool options\n"..., 4000) = 68 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-vector-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-vector-tool options "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-picker-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-color-picker-tool op"..., 4000) = 80 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-picker-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-color-picker-tool op"..., 4000) = 96 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-magnify-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-magnify-tool options"..., 4000) = 70 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-magnify-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-magnify-tool options"..., 4000) = 86 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-measure-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-measure-tool options"..., 4000) = 92 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-measure-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-measure-tool options"..., 4000) = 86 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-move-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-move-tool options\n\n\n"..., 4000) = 64 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-move-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-move-tool options pr"..., 4000) = 80 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-crop-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-crop-tool options\n\n\n"..., 4000) = 64 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-crop-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -brk(0x88dd000) = 0x88dd000 -read(4, "# GIMP gimp-crop-tool options pr"..., 4000) = 80 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x88dc000) = 0x88dc000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rotate-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-rotate-tool options\n"..., 4000) = 152 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-rotate-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-rotate-tool options "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-scale-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-scale-tool options\n\n"..., 4000) = 124 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-scale-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-scale-tool options p"..., 4000) = 82 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-shear-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-shear-tool options\n\n"..., 4000) = 66 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-shear-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-shear-tool options p"..., 4000) = 82 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-perspective-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7e000 -munmap(0xb6d7e000, 32768) = 0 -read(4, "# GIMP gimp-perspective-tool opt"..., 4000) = 78 -read(4, "", 4000) = 0 -close(4) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d84000 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d82000 -brk(0x88fd000) = 0x88fd000 -brk(0x88fc000) = 0x88fc000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-perspective-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-perspective-tool opt"..., 4000) = 94 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-flip-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-flip-tool options\n\n\n"..., 4000) = 64 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-flip-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-flip-tool options pr"..., 4000) = 80 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-text-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-text-tool options\n\n("..., 4000) = 183 -read(4, "", 4000) = 0 -close(4) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -munmap(0xb6d7f000, 12288) = 0 -brk(0x891d000) = 0x891d000 -brk(0x891c000) = 0x891c000 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -mmap2(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -munmap(0xb6d7d000, 20480) = 0 -brk(0x893d000) = 0x893d000 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -brk(0x895e000) = 0x895e000 -brk(0x895d000) = 0x895d000 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -mmap2(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 36864) = 0 -brk(0x897e000) = 0x897e000 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -brk(0x899f000) = 0x899f000 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -mmap2(NULL, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d71000 -munmap(0xb6d71000, 69632) = 0 -brk(0x89c0000) = 0x89c0000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-text-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 -munmap(0xb6d7a000, 32768) = 0 -read(4, "# GIMP gimp-text-tool options pr"..., 4000) = 80 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-bucket-fill-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 -munmap(0xb6d7a000, 32768) = 0 -read(4, "# GIMP gimp-bucket-fill-tool opt"..., 4000) = 143 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x89e1000) = 0x89e1000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-bucket-fill-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-bucket-fill-tool opt"..., 4000) = 94 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-blend-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-blend-tool options\n\n"..., 4000) = 131 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x8a02000) = 0x8a02000 -brk(0x8a01000) = 0x8a01000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-blend-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-blend-tool options p"..., 4000) = 82 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-pencil-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-pencil-tool options\n"..., 4000) = 278 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x8a22000) = 0x8a22000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-pencil-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-pencil-tool options "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-paintbrush-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-paintbrush-tool opti"..., 4000) = 287 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x8a43000) = 0x8a43000 -brk(0x8a42000) = 0x8a42000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-paintbrush-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-paintbrush-tool opti"..., 4000) = 92 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-eraser-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-eraser-tool options\n"..., 4000) = 163 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-eraser-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 -munmap(0xb6d7a000, 32768) = 0 -read(4, "# GIMP gimp-eraser-tool options "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-airbrush-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7a000 -munmap(0xb6d7a000, 32768) = 0 -read(4, "# GIMP gimp-airbrush-tool option"..., 4000) = 304 -read(4, "", 4000) = 0 -close(4) = 0 -mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7f000 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7d000 -brk(0x8a63000) = 0x8a63000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-airbrush-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d75000 -munmap(0xb6d75000, 32768) = 0 -read(4, "# GIMP gimp-airbrush-tool option"..., 4000) = 88 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ink-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d75000 -munmap(0xb6d75000, 32768) = 0 -read(4, "# GIMP gimp-ink-tool options\n\n(b"..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d7b000 -brk(0x8a84000) = 0x8a84000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-ink-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-ink-tool options pre"..., 4000) = 78 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-clone-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-clone-tool options\n\n"..., 4000) = 256 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x8aa5000) = 0x8aa5000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-clone-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-clone-tool options p"..., 4000) = 82 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-convolve-tool", O_RDONLY|O_LARGEFILE) = 4 -mmap2(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d73000 -munmap(0xb6d73000, 32768) = 0 -read(4, "# GIMP gimp-convolve-tool option"..., 4000) = 100 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x8ac6000) = 0x8ac6000 -brk(0x8ac5000) = 0x8ac5000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-convolve-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-convolve-tool option"..., 4000) = 88 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-smudge-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-smudge-tool options\n"..., 4000) = 214 -read(4, "", 4000) = 0 -close(4) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 8192) = 0 -mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d79000 -munmap(0xb6d79000, 8192) = 0 -brk(0x8ae6000) = 0x8ae6000 -brk(0x8ae5000) = 0x8ae5000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-smudge-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-smudge-tool options "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-dodge-burn-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-dodge-burn-tool opti"..., 4000) = 229 -read(4, "", 4000) = 0 -close(4) = 0 -brk(0x8b06000) = 0x8b06000 -brk(0x8b05000) = 0x8b05000 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-dodge-burn-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-dodge-burn-tool opti"..., 4000) = 92 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-balance-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-color-balance-tool o"..., 4000) = 82 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-color-balance-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-color-balance-tool o"..., 4000) = 98 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-hue-saturation-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-hue-saturation-tool "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-hue-saturation-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-hue-saturation-tool "..., 4000) = 100 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-colorize-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-colorize-tool option"..., 4000) = 72 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-colorize-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-colorize-tool option"..., 4000) = 88 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-brightness-contrast-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-brightness-contrast-"..., 4000) = 94 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-brightness-contrast-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-brightness-contrast-"..., 4000) = 110 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-threshold-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-threshold-tool optio"..., 4000) = 104 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-threshold-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-threshold-tool optio"..., 4000) = 90 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-levels-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-levels-tool options\n"..., 4000) = 68 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-levels-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-levels-tool options "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-curves-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-curves-tool options\n"..., 4000) = 68 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-curves-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-curves-tool options "..., 4000) = 84 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-posterize-tool", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-posterize-tool optio"..., 4000) = 74 -read(4, "", 4000) = 0 -close(4) = 0 -open("/user/folk/clint/.gimp-2.2/tool-options/gimp-posterize-tool.presets", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP gimp-posterize-tool optio"..., 4000) = 90 -read(4, "", 4000) = 0 -close(4) = 0 -shmget(IPC_PRIVATE, 16384, IPC_CREAT|0600) = 49905670 -shmat(49905670, 0, 0) = 0xb6d77000 -shmctl(49905670, IPC_64|IPC_RMID, 0) = 0 -stat64("/user/folk/clint/.gimp-2.2/plug-ins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -open("/user/folk/clint/.gimp-2.2/plug-ins", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 2 entries */, 4096) = 48 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -open("/usr/lib/gimp/2.0/plug-ins", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4 -fstat64(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 -fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 -getdents64(4, /* 134 entries */, 4096) = 4080 -stat64("/usr/lib/gimp/2.0/plug-ins/CML_explorer", {st_mode=S_IFREG|0755, st_size=48208, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/AlienMap2", {st_mode=S_IFREG|0755, st_size=18648, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/CEL", {st_mode=S_IFREG|0755, st_size=14376, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/align_layers", {st_mode=S_IFREG|0755, st_size=14300, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/aa", {st_mode=S_IFREG|0755, st_size=14272, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/FractalExplorer", {st_mode=S_IFREG|0755, st_size=79248, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/Lighting", {st_mode=S_IFREG|0755, st_size=105628, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/MapObject", {st_mode=S_IFREG|0755, st_size=126268, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/bumpmap", {st_mode=S_IFREG|0755, st_size=26916, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/bmp", {st_mode=S_IFREG|0755, st_size=22648, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/animationplay", {st_mode=S_IFREG|0755, st_size=22628, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/animoptimize", {st_mode=S_IFREG|0755, st_size=18340, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/apply_lens", {st_mode=S_IFREG|0755, st_size=18516, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/autocrop", {st_mode=S_IFREG|0755, st_size=10080, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/autostretch_hsv", {st_mode=S_IFREG|0755, st_size=10056, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/blinds", {st_mode=S_IFREG|0755, st_size=18512, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/blur", {st_mode=S_IFREG|0755, st_size=10044, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/edge", {st_mode=S_IFREG|0755, st_size=18528, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/dog", {st_mode=S_IFREG|0755, st_size=22668, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/borderaverage", {st_mode=S_IFREG|0755, st_size=14364, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/c_astretch", {st_mode=S_IFREG|0755, st_size=10052, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/cartoon", {st_mode=S_IFREG|0755, st_size=22552, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/ccanalyze", {st_mode=S_IFREG|0755, st_size=14304, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/channel_mixer", {st_mode=S_IFREG|0755, st_size=27036, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/checkerboard", {st_mode=S_IFREG|0755, st_size=14300, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/clothify.py", {st_mode=S_IFREG|0755, st_size=2587, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/color_enhance", {st_mode=S_IFREG|0755, st_size=10052, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/colorify", {st_mode=S_IFREG|0755, st_size=14540, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/colortoalpha", {st_mode=S_IFREG|0755, st_size=14352, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/colorxhtml.py", {st_mode=S_IFREG|0755, st_size=5160, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/compose", {st_mode=S_IFREG|0755, st_size=22768, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/compressor", {st_mode=S_IFREG|0755, st_size=10180, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/convmatrix", {st_mode=S_IFREG|0755, st_size=22660, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/csource", {st_mode=S_IFREG|0755, st_size=22616, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/cubism", {st_mode=S_IFREG|0755, st_size=18500, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/curve_bend", {st_mode=S_IFREG|0755, st_size=47856, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/decompose", {st_mode=S_IFREG|0755, st_size=22648, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/deinterlace", {st_mode=S_IFREG|0755, st_size=14256, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/depthmerge", {st_mode=S_IFREG|0755, st_size=22628, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/despeckle", {st_mode=S_IFREG|0755, st_size=18448, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/destripe", {st_mode=S_IFREG|0755, st_size=14284, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/dicom", {st_mode=S_IFREG|0755, st_size=18460, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/diffraction", {st_mode=S_IFREG|0755, st_size=18644, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/displace", {st_mode=S_IFREG|0755, st_size=18580, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/exchange", {st_mode=S_IFREG|0755, st_size=22828, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/emboss", {st_mode=S_IFREG|0755, st_size=18448, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/engrave", {st_mode=S_IFREG|0755, st_size=14296, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/foggify.py", {st_mode=S_IFREG|0755, st_size=2145, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/faxg3", {st_mode=S_IFREG|0755, st_size=17300, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/film", {st_mode=S_IFREG|0755, st_size=31752, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/fits", {st_mode=S_IFREG|0755, st_size=39068, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/flame", {st_mode=S_IFREG|0755, st_size=111992, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/flarefx", {st_mode=S_IFREG|0755, st_size=22552, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/fractaltrace", {st_mode=S_IFREG|0755, st_size=18572, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/fp", {st_mode=S_IFREG|0755, st_size=47264, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gee_zoom", {st_mode=S_IFREG|0755, st_size=14240, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gauss", {st_mode=S_IFREG|0755, st_size=26848, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gbr", {st_mode=S_IFREG|0755, st_size=18812, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gee", {st_mode=S_IFREG|0755, st_size=14236, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gimpcons.py", {st_mode=S_IFREG|0755, st_size=3020, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gfig", {st_mode=S_IFREG|0755, st_size=164224, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gflare", {st_mode=S_IFREG|0755, st_size=71108, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gfli", {st_mode=S_IFREG|0755, st_size=26844, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gif", {st_mode=S_IFREG|0755, st_size=26820, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gifload", {st_mode=S_IFREG|0755, st_size=18336, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gih", {st_mode=S_IFREG|0755, st_size=27276, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/guillotine", {st_mode=S_IFREG|0755, st_size=10084, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gtm", {st_mode=S_IFREG|0755, st_size=23604, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gimpressionist", {st_mode=S_IFREG|0755, st_size=167380, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/glasstile", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/glob", {st_mode=S_IFREG|0755, st_size=9976, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gqbist", {st_mode=S_IFREG|0755, st_size=18380, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gradmap", {st_mode=S_IFREG|0755, st_size=10048, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/grid", {st_mode=S_IFREG|0755, st_size=27024, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/gtkcons.py", {st_mode=S_IFREG|0644, st_size=10692, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/helpbrowser", {st_mode=S_IFREG|0755, st_size=22780, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/header", {st_mode=S_IFREG|0755, st_size=10072, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/help", {st_mode=S_IFREG|0755, st_size=18500, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/ifscompose", {st_mode=S_IFREG|0755, st_size=64480, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/hot", {st_mode=S_IFREG|0755, st_size=14432, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/pdbbrowse.py", {st_mode=S_IFREG|0755, st_size=1385, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/illusion", {st_mode=S_IFREG|0755, st_size=14360, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/imagemap", {st_mode=S_IFREG|0755, st_size=182808, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/iwarp", {st_mode=S_IFREG|0755, st_size=30908, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/jigsaw", {st_mode=S_IFREG|0755, st_size=38972, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/jpeg", {st_mode=S_IFREG|0755, st_size=39644, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/laplace", {st_mode=S_IFREG|0755, st_size=10048, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/lic", {st_mode=S_IFREG|0755, st_size=18460, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/mail", {st_mode=S_IFREG|0755, st_size=23972, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/mapcolor", {st_mode=S_IFREG|0755, st_size=14528, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/max_rgb", {st_mode=S_IFREG|0755, st_size=10124, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/maze", {st_mode=S_IFREG|0755, st_size=31084, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/mblur", {st_mode=S_IFREG|0755, st_size=22680, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/mng", {st_mode=S_IFREG|0755, st_size=31140, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/mosaic", {st_mode=S_IFREG|0755, st_size=35056, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/neon", {st_mode=S_IFREG|0755, st_size=18420, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/newsprint", {st_mode=S_IFREG|0755, st_size=35440, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/nlfilt", {st_mode=S_IFREG|0755, st_size=22532, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/noisify", {st_mode=S_IFREG|0755, st_size=18632, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/normalize", {st_mode=S_IFREG|0755, st_size=10048, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/nova", {st_mode=S_IFREG|0755, st_size=22756, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/oilify", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/pagecurl", {st_mode=S_IFREG|0755, st_size=51344, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/papertile", {st_mode=S_IFREG|0755, st_size=22784, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/pat", {st_mode=S_IFREG|0755, st_size=14652, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/pcx", {st_mode=S_IFREG|0755, st_size=14300, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/plugin-browser", {st_mode=S_IFREG|0755, st_size=30944, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/photocopy", {st_mode=S_IFREG|0755, st_size=22608, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/pix", {st_mode=S_IFREG|0755, st_size=14268, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/pixelize", {st_mode=S_IFREG|0755, st_size=14316, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/plasma", {st_mode=S_IFREG|0755, st_size=14360, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/polar", {st_mode=S_IFREG|0755, st_size=18520, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/png", {st_mode=S_IFREG|0755, st_size=31676, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/pnm", {st_mode=S_IFREG|0755, st_size=22588, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/procedure-browser", {st_mode=S_IFREG|0755, st_size=22684, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/postscript", {st_mode=S_IFREG|0755, st_size=51972, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/print", {st_mode=S_IFREG|0755, st_size=93540, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/psd_save", {st_mode=S_IFREG|0755, st_size=18416, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/psd", {st_mode=S_IFREG|0755, st_size=26556, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/py-slice.py", {st_mode=S_IFREG|0755, st_size=6895, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/psp", {st_mode=S_IFREG|0755, st_size=22524, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sample_colorize", {st_mode=S_IFREG|0755, st_size=43360, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/randomize", {st_mode=S_IFREG|0755, st_size=18480, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/raw", {st_mode=S_IFREG|0755, st_size=22684, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/rcm", {st_mode=S_IFREG|0755, st_size=47524, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/retinex", {st_mode=S_IFREG|0755, st_size=18480, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/ripple", {st_mode=S_IFREG|0755, st_size=18516, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/rotate", {st_mode=S_IFREG|0755, st_size=14264, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/shadow_bevel.py", {st_mode=S_IFREG|0755, st_size=2464, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/scatter_hsv", {st_mode=S_IFREG|0755, st_size=14356, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/screenshot", {st_mode=S_IFREG|0755, st_size=22660, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/script-fu", {st_mode=S_IFREG|0755, st_size=155128, ...}) = 0 -getdents64(4, /* 44 entries */, 4096) = 1336 -stat64("/usr/lib/gimp/2.0/plug-ins/sel2path", {st_mode=S_IFREG|0755, st_size=51864, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sel_gauss", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/semiflatten", {st_mode=S_IFREG|0755, st_size=10020, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sgi", {st_mode=S_IFREG|0755, st_size=18492, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/smooth_palette", {st_mode=S_IFREG|0755, st_size=14360, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sharpen", {st_mode=S_IFREG|0755, st_size=14284, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/shift", {st_mode=S_IFREG|0755, st_size=14356, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sinus", {st_mode=S_IFREG|0755, st_size=27032, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/softglow", {st_mode=S_IFREG|0755, st_size=18468, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/snoise", {st_mode=S_IFREG|0755, st_size=18600, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sobel", {st_mode=S_IFREG|0755, st_size=14304, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/spheredesigner", {st_mode=S_IFREG|0755, st_size=51592, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sparkle", {st_mode=S_IFREG|0755, st_size=26876, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/threshold_alpha", {st_mode=S_IFREG|0755, st_size=10132, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/spread", {st_mode=S_IFREG|0755, st_size=14328, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/struc", {st_mode=S_IFREG|0755, st_size=30676, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/sunras", {st_mode=S_IFREG|0755, st_size=22624, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/svg", {st_mode=S_IFREG|0755, st_size=26988, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/tga", {st_mode=S_IFREG|0755, st_size=18524, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/uniteditor", {st_mode=S_IFREG|0755, st_size=22676, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/tiff", {st_mode=S_IFREG|0755, st_size=35164, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/tile", {st_mode=S_IFREG|0755, st_size=14400, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/tileit", {st_mode=S_IFREG|0755, st_size=23180, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/tiler", {st_mode=S_IFREG|0755, st_size=10044, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/vpropagate", {st_mode=S_IFREG|0755, st_size=22636, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/unsharp", {st_mode=S_IFREG|0755, st_size=18436, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/url", {st_mode=S_IFREG|0755, st_size=10076, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/video", {st_mode=S_IFREG|0755, st_size=47104, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/vinvert", {st_mode=S_IFREG|0755, st_size=10016, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/webbrowser", {st_mode=S_IFREG|0755, st_size=9952, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/warp", {st_mode=S_IFREG|0755, st_size=35204, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/waves", {st_mode=S_IFREG|0755, st_size=14392, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/whirlpinch.py", {st_mode=S_IFREG|0755, st_size=9452, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/whirlpinch", {st_mode=S_IFREG|0755, st_size=18472, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/zealouscrop", {st_mode=S_IFREG|0755, st_size=10084, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/wind", {st_mode=S_IFREG|0755, st_size=18456, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/winicon", {st_mode=S_IFREG|0755, st_size=31036, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/wmf", {st_mode=S_IFREG|0755, st_size=26912, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/xbm", {st_mode=S_IFREG|0755, st_size=27068, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/xjt", {st_mode=S_IFREG|0755, st_size=53052, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/xpm", {st_mode=S_IFREG|0755, st_size=18492, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/xwd", {st_mode=S_IFREG|0755, st_size=26620, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/xscanimage", {st_mode=S_IFREG|0755, st_size=89220, ...}) = 0 -stat64("/usr/lib/gimp/2.0/plug-ins/ufraw-gimp", {st_mode=S_IFREG|0755, st_size=611884, ...}) = 0 -getdents64(4, /* 0 entries */, 4096) = 0 -close(4) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 482113}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 482400}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 482537}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 482761}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 483109}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 483311}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0001\1`\3?\0`\3\220\1\24\0\232\4\5\0002\1`\0031\1`\0038\0\0\0"..., 1932}], 1) = 1932 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 486134}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 486356}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 488937}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 489159}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 489389}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 489597}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 489950}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 490076}, NULL) = 0 -open("/user/folk/clint/.gimp-2.2/pluginrc", O_RDONLY|O_LARGEFILE) = 4 -read(4, "# GIMP pluginrc\n# \n# This file c"..., 4000) = 4000 -read(4, "map) format.\"\n \"Save fil"..., 4000) = 4000 -read(4, "eit\"\n \"1998\"\n \"X"..., 4000) = 4000 -read(4, "o save\")\n (proc-arg 4 \"fi"..., 4000) = 4000 -read(4, " \"\"\n \"\"\n "..., 4000) = 4000 -read(4, " \"Adam D. Moss (adam@foxbox.o"..., 4000) = 4000 -read(4, "-arg 0 \"direction-mask\" \"0 <= di"..., 4000) = 4000 -read(4, "ponding base type.\"\n \"Sp"..., 4000) = 4000 -read(4, "\n \"\"\n \"\"\n "..., 4000) = 4000 -read(4, "\n 6 0\n (proc-arg "..., 4000) = 4000 -read(4, " \"Version 1.27, September 2003\""..., 4000) = 4000 -read(4, " (proc-arg 0 \"seed\" \"Random seed"..., 4000) = 4000 -read(4, "unt (0 <= shift_amount_x <= 200)"..., 4000) = 4000 -read(4, " \"\"\n \"RGBA\"\n "..., 4000) = 4000 -read(4, " 2 0\n (proc-arg 0 "..., 4000) = 4000 -read(4, "\\0\\0u\\206\\0\\0\\0\\377\\6XXX\\354LLL\\"..., 4000) = 4000 -read(4, "377ssr\\377ppp\\377\\0\\0\\0\\377\\0\\0\\"..., 4000) = 4000 -read(4, ")\n (proc-arg 0 \"drop_x\" \""..., 4000) = 4000 -read(4, " (proc-arg 0 \"run_mode\" \"Int"..., 4000) = 4000 -brk(0x8b26000) = 0x8b26000 -brk(0x8b25000) = 0x8b25000 -read(4, "u may select the percentage of p"..., 4000) = 4000 -read(4, "per intensity\")\n (proc-ar"..., 4000) = 4000 -read(4, " \"Monigotes\"\n \"Monigotes"..., 4000) = 4000 -read(4, "height\" \"Height of image in Post"..., 4000) = 4000 -read(4, " \"\"\n 3 1\n (pr"..., 4000) = 4000 -read(4, "at\"\n \"PNM saving handles"..., 4000) = 4000 -read(4, "the default settings stored as a"..., 4000) = 4000 -read(4, "er 2002\"\n \"PNG image\"\n "..., 4000) = 4000 -read(4, "tte file format\"\n \"Micha"..., 4000) = 4000 -read(4, " \"\"\n \"\"\n \"\""..., 4000) = 4000 -read(4, "rap_around\" \"wrap around (bool)\""..., 4000) = 4000 -read(4, "co Mena Quintero\"\n \"Adam"..., 4000) = 4000 -read(4, ", MIT Press, 1987.\"\n \"Au"..., 4000) = 4000 -read(4, "ckground): { BW (0), FG_BG (1) }"..., 4000) = 4000 -read(4, "sr/lib/gimp/2.0/plug-ins/max_rgb"..., 4000) = 4000 -read(4, "77\\365\\365\\365\\377YYY\\377nnn\\377"..., 4000) = 4000 -read(4, "mp\" \"The subsampling option numb"..., 4000) = 4000 -read(4, "ef \"plug_in_illusion\" 1\n "..., 4000) = 4000 -read(4, "ource code header\"\n 0\n "..., 4000) = 4000 -read(4, "cach, Jens Ch. Restemeier\"\n "..., 4000) = 4000 -read(4, " \"\"\n \"\"\n \"RGB"..., 4000) = 4000 -read(4, " (proc-arg 13 \"image\" \"Im"..., 4000) = 4000 -read(4, "ctor angle for second flares (de"..., 4000) = 4000 -read(4, "oad\")\n (proc-arg 13 \"imag"..., 4000) = 4000 -read(4, "-generated.\"\n \"Spencer K"..., 4000) = 4000 -read(4, "\")\n (proc-arg 0 \"depth\" \""..., 4000) = 4000 -read(4, "roc-arg 10 \"number_color\" \"Color"..., 4000) = 4000 -read(4, "17th, 1997\"\n \"_Color Exc"..., 4000) = 4000 -read(4, "ed with default dummy values.\"\n "..., 4000) = 4000 -read(4, "lt\")\n (proc-arg 16 \"sourc"..., 4000) = 4000 -read(4, "e) If rotation is not 0, the lay"..., 4000) = 4000 -brk(0x8b46000) = 0x8b46000 -read(4, " \"Lauri Alanko\"\n \"199"..., 4000) = 4000 -read(4, " function creates a new image fr"..., 4000) = 4000 -read(4, "-1 \"\")\n \"\"\n \"\"\n "..., 4000) = 4000 -read(4, " for the green channel\")\n "..., 4000) = 4000 -read(4, " 16 \"drawable\" \"Input drawable\")"..., 4000) = 4000 -read(4, "90660588\n (proc-def \"plug_in_"..., 4000) = 4000 -read(4, " \"/usr/lib/gimp/2.0/plug-ins/ani"..., 4000) = 4000 -read(4, "c-def \"file_bmp_load\" 1\n "..., 4000) = 4000 -read(4, " \"\"\n \"\"\n \"RGB*"..., 4000) = 4000 -read(4, "roc-arg 13 \"image\" \"Input image\""..., 4000) = 4000 -read(4, "e image as ascii art into a vari"..., 4000) = 4000 -read(4, "ctor (0-360)\")\n (proc-arg"..., 4000) = 1369 -read(4, "", 4000) = 0 -close(4) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 633993}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 634127}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0005\1`\3;\0`\3\273\0#\0\232\4\5\0006\1`\0035\1`\0038\0\0\0"..., 628}], 1) = 628 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 635505}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 635583}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 635799}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 635922}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0007\1`\3;\0`\3<\0\r\0\232\4\5\0008\1`\0037\1`\0038\0\0\0"..., 380}], 1) = 380 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 636603}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 636681}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 636859}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 636983}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 637248}, NULL) = 0 -gettimeofday({1192407181, 637291}, NULL) = 0 -gettimeofday({1192407181, 637331}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0009\1`\3?\0`\3\220\1\24\0\232\4\5\0:\1`\0039\1`\0038\0\0\0"..., 1628}], 1) = 1628 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 638142}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 638242}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 638436}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 638561}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 638789}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0=\1`\3?\0`\3\220\1\24\0\232\4\5\0>\1`\3=\1`\0038\0\0\0"..., 1604}], 1) = 1604 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 639539}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 639619}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 639791}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 639916}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 640140}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0A\1`\3?\0`\3\220\1\24\0\232\4\5\0B\1`\3A\1`\0038\0\0\0"..., 2036}], 1) = 2036 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 640922}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 641000}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 641242}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 641366}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 641594}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0E\1`\3?\0`\3\220\1\24\0\232\4\5\0F\1`\3E\1`\0038\0\0\0"..., 3716}], 1) = 3716 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 642608}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 642686}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 642854}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 642978}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 643203}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0I\1`\3?\0`\3\220\1\24\0\232\4\5\0J\1`\3I\1`\0038\0\0\0"..., 3732}], 1) = 3732 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 644161}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 644239}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 644406}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 644531}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 644755}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0M\1`\3?\0`\3\220\1\24\0\232\4\5\0N\1`\3M\1`\0038\0\0\0"..., 3732}], 1) = 3732 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 645734}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 645813}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 645987}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 646111}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 646336}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0Q\1`\3?\0`\3\220\1\24\0\232\4\5\0R\1`\3Q\1`\0038\0\0\0"..., 3384}], 1) = 3384 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1\354.\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0S\1`\3;\0`\3*\0\n\0\232\4\5\0T\1`\3S\1`\0038\0\0\0"..., 372}], 1) = 372 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 647795}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 647873}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 648044}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 648167}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 648412}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0U\1`\3?\0`\3\220\1\24\0\232\4\5\0V\1`\3U\1`\0038\0\0\0"..., 3732}], 1) = 3732 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 649502}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 649581}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 649769}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 649892}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 650119}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0Y\1`\3?\0`\3\220\1\24\0\232\4\5\0Z\1`\3Y\1`\0038\0\0\0"..., 3840}], 1) = 3840 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 651228}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 651307}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 651489}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 651612}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 651839}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0]\1`\3?\0`\3\220\1\24\0\232\4\5\0^\1`\3]\1`\0038\0\0\0"..., 3708}], 1) = 3708 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 652841}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 652938}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 653121}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 653256}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 653480}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0a\1`\3?\0`\3\220\1\24\0\232\4\5\0b\1`\3a\1`\0038\0\0\0"..., 3760}], 1) = 3760 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 654505}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 654584}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 654754}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 654877}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 655101}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0e\1`\3?\0`\3\220\1\24\0\232\4\5\0f\1`\3e\1`\0038\0\0\0"..., 3736}], 1) = 3736 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 656094}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 656173}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 656343}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 656466}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 656690}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0i\1`\3?\0`\3\220\1\24\0\232\4\5\0j\1`\3i\1`\0038\0\0\0"..., 3752}], 1) = 3752 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 657742}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 657821}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 658001}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 658124}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 658369}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0m\1`\3?\0`\3\220\1\24\0\232\4\5\0n\1`\3m\1`\0038\0\0\0"..., 3824}], 1) = 3824 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 659387}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 659466}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 659637}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 659761}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 659987}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0q\1`\3?\0`\3\220\1\24\0\232\4\5\0r\1`\3q\1`\0038\0\0\0"..., 3800}], 1) = 3800 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 660993}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 661071}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 662793}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 662920}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 663173}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0u\1`\3?\0`\3\220\1\24\0\232\4\5\0v\1`\3u\1`\0038\0\0\0"..., 3816}], 1) = 3816 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 664208}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 664287}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 664484}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 664607}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 664835}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0y\1`\3?\0`\3\220\1\24\0\232\4\5\0z\1`\3y\1`\0038\0\0\0"..., 3812}], 1) = 3812 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 665829}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 665907}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 666083}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 666206}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 666433}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0}\1`\3?\0`\3\220\1\24\0\232\4\5\0~\1`\3}\1`\0038\0\0\0"..., 3816}], 1) = 3816 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 667443}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 667522}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 667700}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 667824}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 668050}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\201\1`\3?\0`\3\220\1\24\0\232\4\5\0\202\1`\3\201\1`\0038\0\0\0"..., 3820}], 1) = 3820 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 669110}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 669210}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 669382}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 669505}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 669732}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\205\1`\3?\0`\3\220\1\24\0\232\4\5\0\206\1`\3\205\1`\0038\0\0\0"..., 3800}], 1) = 3800 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 670771}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 670849}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 671021}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 671146}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 671371}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\211\1`\3?\0`\3\220\1\24\0\232\4\5\0\212\1`\3\211\1`\0038\0\0\0"..., 3816}], 1) = 3816 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 672348}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 672426}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 672595}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 672719}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 672943}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\215\1`\3?\0`\3\220\1\24\0\232\4\5\0\216\1`\3\215\1`\0038\0\0\0"..., 3796}], 1) = 3796 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 673924}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 674003}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 674171}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 674295}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 674519}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\221\1`\3?\0`\3\220\1\24\0\232\4\5\0\222\1`\3\221\1`\0038\0\0\0"..., 3844}], 1) = 3844 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 675486}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 675565}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 675743}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 675866}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 676091}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\225\1`\3?\0`\3\220\1\24\0\232\4\5\0\226\1`\3\225\1`\0038\0\0\0"..., 3884}], 1) = 3884 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 677093}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 677202}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 677372}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 677514}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 677740}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\231\1`\3?\0`\3\220\1\24\0\232\4\5\0\232\1`\3\231\1`\0038\0\0\0"..., 3860}], 1) = 3860 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 678978}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 679057}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 679227}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 679351}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 679578}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\235\1`\3?\0`\3\220\1\24\0\232\4\5\0\236\1`\3\235\1`\0038\0\0\0"..., 3876}], 1) = 3876 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 680555}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 680633}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 680803}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 680927}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 681204}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\241\1`\3?\0`\3\220\1\24\0\232\4\5\0\242\1`\3\241\1`\0038\0\0\0"..., 3884}], 1) = 3884 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 682207}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 682285}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 682455}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 682579}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 682804}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\245\1`\3?\0`\3\220\1\24\0\232\4\5\0\246\1`\3\245\1`\0038\0\0\0"..., 3880}], 1) = 3880 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 683793}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 683872}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 684043}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 684166}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 684391}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\251\1`\3?\0`\3\220\1\24\0\232\4\5\0\252\1`\3\251\1`\0038\0\0\0"..., 3864}], 1) = 3864 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 685407}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 685503}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 685739}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 685863}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 686098}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\255\1`\3?\0`\3\220\1\24\0\232\4\5\0\256\1`\3\255\1`\0038\0\0\0"..., 3924}], 1) = 3924 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 687218}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 687298}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 687475}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 687599}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 687827}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\261\1`\3?\0`\3\220\1\24\0\232\4\5\0\262\1`\3\261\1`\0038\0\0\0"..., 3864}], 1) = 3864 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 688884}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 688963}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 689145}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 689279}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 689508}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\265\1`\3?\0`\3\220\1\24\0\232\4\5\0\266\1`\3\265\1`\0038\0\0\0"..., 3920}], 1) = 3920 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 690587}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 690665}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 690835}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 690959}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 691184}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\271\1`\3?\0`\3\220\1\24\0\232\4\5\0\272\1`\3\271\1`\0038\0\0\0"..., 3928}], 1) = 3928 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 692230}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 692309}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 692477}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 692602}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 692827}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\275\1`\3?\0`\3\220\1\24\0\232\4\5\0\276\1`\3\275\1`\0038\0\0\0"..., 3944}], 1) = 3944 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 693858}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 693937}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 694109}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 694233}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 694458}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\301\1`\3?\0`\3\220\1\24\0\232\4\5\0\302\1`\3\301\1`\0038\0\0\0"..., 3944}], 1) = 3944 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 695498}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 695577}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 695746}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 695869}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 696094}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\305\1`\3?\0`\3\220\1\24\0\232\4\5\0\306\1`\3\305\1`\0038\0\0\0"..., 3928}], 1) = 3928 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 697121}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 697210}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 697378}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 697502}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 697727}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\311\1`\3?\0`\3\220\1\24\0\232\4\5\0\312\1`\3\311\1`\0038\0\0\0"..., 3944}], 1) = 3944 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 698753}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 698832}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 699003}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 699127}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 699352}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\315\1`\3?\0`\3\220\1\24\0\232\4\5\0\316\1`\3\315\1`\0038\0\0\0"..., 3944}], 1) = 3944 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 700390}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 700469}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 700650}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 700775}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 701017}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\321\1`\3?\0`\3\220\1\24\0\232\4\5\0\322\1`\3\321\1`\0038\0\0\0"..., 3576}], 1) = 3576 -select(4, [3], [], NULL, NULL) = 1 (in [3]) -read(3, "\1\1\304G\0\0\0\0\r\0\300\3\\\245\37\10`\360\227\277x\360\227\277\364O\36\10\351E\t\10", 4096) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\323\1`\3;\0`\3W\0\r\0\232\4\5\0\324\1`\3\323\1`\0038\0\0\0"..., 380}], 1) = 380 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 702581}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 702660}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 702830}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 702953}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 703177}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\325\1`\3?\0`\3\220\1\24\0\232\4\5\0\326\1`\3\325\1`\0038\0\0\0"..., 3924}], 1) = 3924 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 704217}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 704296}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 704473}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 704597}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 704822}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\331\1`\3?\0`\3\220\1\24\0\232\4\5\0\332\1`\3\331\1`\0038\0\0\0"..., 4012}], 1) = 4012 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 706247}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 706326}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 706619}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 706742}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 707090}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\335\1`\3?\0`\3\220\1\24\0\232\4\5\0\336\1`\3\335\1`\0038\0\0\0"..., 3996}], 1) = 3996 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 708364}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 708442}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 708625}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 708750}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 708994}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\341\1`\3?\0`\3\220\1\24\0\232\4\5\0\342\1`\3\341\1`\0038\0\0\0"..., 4008}], 1) = 4008 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 710082}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 710161}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 710343}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 710467}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 710693}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\345\1`\3?\0`\3\220\1\24\0\232\4\5\0\346\1`\3\345\1`\0038\0\0\0"..., 4012}], 1) = 4012 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 711752}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 711830}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 712009}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 712134}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 712357}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\351\1`\3?\0`\3\220\1\24\0\232\4\5\0\352\1`\3\351\1`\0038\0\0\0"..., 3980}], 1) = 3980 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 713451}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 713530}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 713709}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 713833}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 714057}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\355\1`\3?\0`\3\220\1\24\0\232\4\5\0\356\1`\3\355\1`\0038\0\0\0"..., 4012}], 1) = 4012 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 715117}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 715196}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 715381}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 715505}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 715730}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\361\1`\3?\0`\3\220\1\24\0\232\4\5\0\362\1`\3\361\1`\0038\0\0\0"..., 4016}], 1) = 4016 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 716817}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 716896}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 717068}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 717220}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 717446}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\365\1`\3?\0`\3\220\1\24\0\232\4\5\0\366\1`\3\365\1`\0038\0\0\0"..., 3992}], 1) = 3992 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 718515}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 718594}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 718765}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 718888}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 719113}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\371\1`\3?\0`\3\220\1\24\0\232\4\5\0\372\1`\3\371\1`\0038\0\0\0"..., 4072}], 1) = 4072 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 720165}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 720243}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 720415}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 720538}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 720763}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\375\1`\3?\0`\3\220\1\24\0\232\4\5\0\376\1`\3\375\1`\0038\0\0\0"..., 4072}], 1) = 4072 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 721813}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 721891}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 722058}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 722181}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 722403}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\1\2`\3?\0`\3\220\1\24\0\232\4\5\0\2\2`\3\1\2`\0038\0\0\0"..., 4052}], 1) = 4052 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 723423}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 723502}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 723669}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 723793}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 724016}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\5\2`\3?\0`\3\220\1\24\0\232\4\5\0\6\2`\3\5\2`\0038\0\0\0"..., 4072}], 1) = 4072 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 725022}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 725118}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 725304}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 725427}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 725652}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\t\2`\3?\0`\3\220\1\24\0\232\4\5\0\n\2`\3\t\2`\0038\0\0\0"..., 4080}], 1) = 4080 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 726714}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 726793}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 726976}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 727099}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 727323}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\r\2`\3?\0`\3\220\1\24\0\232\4\5\0\16\2`\3\r\2`\0038\0\0\0"..., 4048}], 1) = 4048 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 728440}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 728519}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 728687}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 728811}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 729035}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\21\2`\3?\0`\3\220\1\24\0\232\4\5\0\22\2`\3\21\2`\0038\0\0\0"..., 4052}], 1) = 4052 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 730156}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 730235}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 730415}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 730539}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 730762}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\25\2`\3?\0`\3\220\1\24\0\232\4\5\0\26\2`\3\25\2`\0038\0\0\0"..., 4076}], 1) = 4076 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 731849}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 731974}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 732098}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 732174}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 732342}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 732485}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 732711}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\31\2`\3?\0`\3\220\1\24\0\232\4\5\0\32\2`\3\31\2`\0038\0\0\0"..., 4052}], 1) = 4052 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 733784}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 733862}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 734036}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 734160}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 734385}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0\35\2`\3?\0`\3\220\1\24\0\232\4\5\0\36\2`\3\35\2`\0038\0\0\0"..., 4076}, {">\3\7\0\37\2`\3;\0`\0033\0`\3\0\0\0\0\256\0\347\0004\0\r\0", 28}], 2) = 4104 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0 \2`\0036\7\2\0\37\2`\3", 32}], 1) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 735628}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 735706}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 735875}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 735999}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 736224}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0!\2`\3?\0`\3\220\1\24\0\232\4\5\0\"\2`\3!\2`\0038\0\0\0"..., 4088}, {"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0", 16}], 2) = 4104 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"\232\7\2\0$\2`\0036\7\2\0#\2`\3", 16}], 1) = 16 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 737443}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 737567}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 737711}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 737833}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 738078}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"6\7\2\0,\1`\0035\30\4\0%\2`\3?\0`\3\220\1\24\0F\30\5\0%\2`\3"..., 3840}], 1) = 3840 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 738943}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 739022}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 739205}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 739329}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 739569}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0(\2`\3?\0`\3\220\1\24\0\232\4\5\0)\2`\3(\2`\0038\0\0\0"..., 4092}, {";\3\5\0003\0`\3\0\0\0\0\254\0\347\0007\0\r\0", 20}], 2) = 4112 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{">\3\7\0*\2`\3;\0`\0033\0`\3\0\0\0\0\254\0\347\0007\0\r\0008\3\4\0"..., 60}], 1) = 60 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 740846}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 740924}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 741111}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 741243}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 741465}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0,\2`\3?\0`\3\220\1\24\0\232\4\5\0-\2`\3,\2`\0038\0\0\0"..., 4044}, {"\232\27\16\0\3\2`\3O\0`\3/\2`\0034\0\0\0S\0`\3\377\377\n\0\21\0`\3"..., 56}], 2) = 4100 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{";\3\5\0003\0`\3\0\0\0\0\224\0\347\0i\0\r\0>\3\7\0.\2`\3;\0`\3"..., 80}], 1) = 80 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 742817}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 742893}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 743057}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 743177}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 743399}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0000\2`\3?\0`\3\220\1\24\0\232\4\5\0001\2`\0030\2`\0038\0\0\0"..., 4088}, {">\3\7\0002\2`\3;\0`\0033\0`\3\0\0\0\0\224\0\347\0i\0\r\0", 28}], 2) = 4116 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0003\2`\0036\7\2\0002\2`\3", 32}], 1) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 744680}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 744756}, NULL) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 744920}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 745039}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 745272}, NULL) = 0 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"5\30\4\0004\2`\3?\0`\3\220\1\24\0\232\4\5\0005\2`\0034\2`\0038\0\0\0"..., 4076}, {">\3\7\0006\2`\3;\0`\0033\0`\3\0\0\0\0\274\0\352\0\27\0\n\0", 28}], 2) = 4104 -select(4, [3], [3], NULL, NULL) = 1 (out [3]) -writev(3, [{"8\3\4\0003\0`\3\0\0\10\0\0\0\0\0\232\7\2\0007\2`\0036\7\2\0006\2`\3", 32}], 1) = 32 -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -read(3, 0x837214c, 4096) = -1 EAGAIN (Resource temporarily unavailable) -gettimeofday({1192407181, 746493}, NULL) = 0 -poll([{fd=3, events=POLLIN}], 1, 0) = 0 -gettimeofday({1192407181, 746571}, NULL) = 0 diff --git a/testcases/feature-test/oeaware/UnixBench/testdir/sort.src b/testcases/feature-test/oeaware/UnixBench/testdir/sort.src deleted file mode 100644 index 6a72fa84c..000000000 --- a/testcases/feature-test/oeaware/UnixBench/testdir/sort.src +++ /dev/null @@ -1,362 +0,0 @@ -version="1.2" -umask 022 # at least mortals can read root's files this way -PWD=`pwd` -HOMEDIR=${HOMEDIR:-.} -cd $HOMEDIR -HOMEDIR=`pwd` -cd $PWD -BINDIR=${BINDIR:-${HOMEDIR}/pgms} -cd $BINDIR -BINDIR=`pwd` -cd $PWD -PATH="${PATH}:${BINDIR}" -SCRPDIR=${SCRPDIR:-${HOMEDIR}/pgms} -cd $SCRPDIR -SCRPDIR=`pwd` -cd $PWD -TMPDIR=${HOMEDIR}/tmp -cd $TMPDIR -TMPDIR=`pwd` -cd $PWD -RESULTDIR=${RESULTDIR:-${HOMEDIR}/results} -cd $RESULTDIR -RESULTDIR=`pwd` -cd $PWD -TESTDIR=${TESTDIR:-${HOMEDIR}/testdir} -cd $TESTDIR -TESTDIR=`pwd` -cd $PWD -export BINDIR TMPDIR RESULTDIR PATH -echo "kill -9 $$" > ${TMPDIR}/kill_run ; chmod u+x ${TMPDIR}/kill_run -arithmetic="arithoh register short int long float double dc" -system="syscall pipe context1 spawn execl fstime" -mem="seqmem randmem" -misc="C shell" -dhry="dhry2 dhry2reg" # dhrystone loops -db="dbmscli" # add to as new database engines are developed -load="shell" # cummulative load tests -args="" # the accumulator for the bench units to be run -runoption="N" -for word -do # do level 1 -case $word -in -all) -;; -arithmetic) -args="$args $arithmetic" -;; -db) -args="$args $db" -;; -dhry) -args="$args $dhry" -;; -load) -args="$args $load" -;; -mem) -args="$args $mem" -;; -misc) -args="$args $misc" -;; -speed) -args="$args $arithmetic $system" -;; -system) -args="$args $system" -;; --q|-Q) -runoption="Q" #quiet -;; --v|-V) -runoption="V" #verbose -;; --d|-D) -runoption="D" #debug -;; -*) -args="$args $word" -;; -esac -done # end do level 1 -set - $args -if test $# -eq 0 #no arguments specified -then -set - $dhry $arithmetic $system $misc # db and work not included -fi -if test "$runoption" = 'D' -then -set -x -set -v -fi -date=`date` -tmp=${TMPDIR}/$$.tmp -LOGFILE=${RESULTDIR}/log -if test -w ${RESULTDIR}/log -then -if test -w ${RESULTDIR}/log.accum -then -cat ${RESULTDIR}/log >> ${RESULTDIR}/log.accum -rm ${RESULTDIR}/log -else -mv ${RESULTDIR}/log ${RESULTDIR}/log.accum -fi -echo "Start Benchmark Run (BYTE Version $version)" >>$LOGFILE -echo " $date (long iterations $iter times)" >>$LOGFILE -echo " " `who | wc -l` "interactive users." >>$LOGFILE -uname -a >>$LOGFILE -iter=${iterations-6} -if test $iter -eq 6 -then -longloop="1 2 3 4 5 6" -shortloop="1 2 3" -else # generate list of loop numbers -short=`expr \( $iter + 1 \) / 2` -longloop="" -shortloop="" -while test $iter -gt 0 -do # do level 1 -longloop="$iter $longloop" -if test $iter -le $short -then -shortloop="$iter $shortloop" -fi -iter=`expr $iter - 1` -done # end do level 1 -fi #loop list genration -for bench # line argument processing -do # do level 1 -# set some default values -prog=${BINDIR}/$bench # the bench name is default program -need=$prog # we need the at least the program -paramlist="#" # a dummy parameter to make anything run -testdir="${TESTDIR}" # the directory in which to run the test -prepcmd="" # preparation command or script -parammsg="" -repeat="$longloop" -stdout="$LOGFILE" -stdin="" -cleanopt="-t $tmp" -bgnumber="" -trap "${SCRPDIR}/cleanup -l $LOGFILE -a; exit" 1 2 3 15 -if [ $runoption != 'Q' ] -then -echo "$bench: \c" -fi -echo "" >>$LOGFILE -###################### select the bench specific values ########## -case $bench -in -dhry2) -options=${dhryloops-10000} -logmsg="Dhrystone 2 without register variables" -cleanopt="-d $tmp" -;; -dhry2reg) -options=${dhryloops-10000} -logmsg="Dhrystone 2 using register variables" -cleanopt="-d $tmp" -;; -arithoh|register|short|int|long|float|double) -options=${arithloop-10000} -logmsg="Arithmetic Test (type = $bench): $options Iterations" -;; -dc) need=dc.dat -prog=dc -options="" -stdin=dc.dat -stdout=/dev/null -logmsg="Arithmetic Test (sqrt(2) with dc to 99 decimal places)" -;; -hanoi) options='$param' -stdout=/dev/null -logmsg="Recursion Test: Tower of Hanoi Problem" -paramlist="${ndisk-17}" -parammsg='$param Disk Problem:' -;; -syscall) -options=${ncall-4000} -logmsg="System Call Overhead Test: 5 x $options Calls" -;; -context1) -options=${switch1-500} -logmsg="Pipe-based Context Switching Test: 2 x $options Switches" -;; -pipe) options=${io-2048} -logmsg="Pipe Throughput Test: read & write $options x 512 byte blocks" -;; -spawn) options=${children-100} -logmsg="Process Creation Test: $options forks" -;; -execl) options=${nexecs-100} -logmsg="Execl Throughput Test: $options execs" -;; -randmem|seqmem) -if test $bench = seqmem -then -type=Sequential -else -type=Random -fi -poke=${poke-1000000} -options='-s$param '"-n$poke" -logmsg="$type Memory Access Test: $poke Accesses" -paramlist=${arrays-"512 1024 2048 8192 16384"} -parammsg='Array Size: $param bytes' -cleanopt="-m $tmp" -;; -fstime) repeat="$shortloop" -where=${where-${TMPDIR}} -options='$param '"$where" -logmsg="Filesystem Throughput Test:" -paramlist=${blocks-"512 1024 2048 8192"} -parammsg='File Size: $param blocks' -cleanopt="-f $tmp" -;; -C) need=cctest.c -prog=cc -options='$param' -stdout=/dev/null -repeat="$shortloop" -logmsg="C Compiler Test:" -paramlist="cctest.c" -parammsg='cc $param' -rm -f a.out -;; -dbmscli) -repeat="$shortloop" -need="db.dat" -prepcmd='${BINDIR}/dbprep ${testdir}/db.dat 10000' -paramlist=${clients-"1 2 4 8"} -parammsg='$param client processes. (filesize `cat ${testdir}/db.dat|wc -c` bytes)' -logmsg="Client/Server Database Engine:" -options='${testdir}/db.dat $param 0 1000' # $param clients; -# 0 sleep; 1000 iterations -;; -shell) -prog="multi.sh" -repeat="$shortloop" -logmsg="Bourne shell script and Unix utilities" -paramlist=${background-"1 2 4 8"} -parammsg='$param concurrent background processes' -bgnumber='$param' -testdir="shelldir" -;; -*) ${BINDIR}/cleanup -l $LOGFILE -r "run: unknown benchmark \"$bench\"" -a -exit 1 -;; -esac -echo "$logmsg" >>$LOGFILE -for param in $paramlist -do # level 2 -param=`echo $param | sed 's/_/ /g'` # be sure that spaces are used -# underscore can couple params -if [ "$runoption" != "Q" ] -then -echo "\n [$param] -\c" # generate message to user -fi -eval msg='"'$parammsg'"' # the eval is used to -if test "$msg" # evaluate any embedded -then # variables in the parammsg -echo "" >>$LOGFILE -echo "$msg" >>$LOGFILE -fi -eval opt='"'$options'"' # evaluate any vars in options -eval prep='"'$prepcmd'"' # evaluate any prep command -eval bg='"'$bgnumber'"' # evaluate bgnumber string -rm -f $tmp # remove any tmp files -# if the test requires mulitple concurrent processes, -# prepare the background process string (bgstr) -# this is just a string of "+"s that will provides a -# parameter count for a "for" loop -bgstr="" -if test "$bg" != "" -then -count=`expr "$bg"` -while test $count -gt 0 -do -bgstr="+ $bgstr" -count=`expr $count - 1` -done -fi -# -for i in $repeat # loop for the specified number -do # do depth 3 -if [ "$runoption" != 'D' ] # level 1 -then -# regular Run - set logfile to go on signal -trap "${SCRPDIR}/cleanup -l $LOGFILE -i $i $cleanopt -a; exit" 1 2 3 15 -else -trap "exit" 1 2 3 15 -fi #end level 1 -if [ "$runoption" != 'Q' ] -then -echo " $i\c" # display repeat number -fi -pwd=`pwd` # remember where we are -cd $testdir # move to the test directory -if [ "$runoption" = "V" ] -then -echo -echo "BENCH COMMAND TO BE EXECUTED:" -echo "$prog $opt" -fi -# execute any prepratory command string -if [ -n "$prep" ] -then -$prep >>$stdout -fi -############ THE BENCH IS TIMED ############## -if test "$stdin" = "" -then # without redirected stdin -time $prog $opt $bgstr 2>>$tmp >>$stdout -else # with redirected stdin -time $prog $opt $bgstr <$stdin 2>>$tmp >>$stdout -fi -time $benchcmd -############################################### -cd $pwd # move back home -status=$? # save the result code -if test $status != 0 # must have been an error -then -if test -f $tmp # is there an error file ? -then -cp $tmp ${TMPDIR}/save.$bench.$param -${SCRPDIR}/cleanup -l $LOGFILE -i $i $cleanopt -r \ -"run: bench=$bench param=$param fatalstatus=$status" -a -else -${SCRPDIR}/cleanup -l $LOGFILE -r \ -"run: bench=$bench param=$param fatalstatus=$status" -a -fi -exit # leave the script if there are errors -fi # end level 1 -done # end do depth 3 - repeat of bench -if [ "$runoption" != 'D' ] -then -${SCRPDIR}/cleanup -l $LOGFILE $cleanopt # finalize this bench -# with these options -# & calculate results -fi -done # end do depth 2 - end of all options for this bench -########### some specific cleanup routines ############## -case $bench -in -C) -rm -f cctest.o a.out -;; -esac -if [ "$runoption" != 'Q' ] -then -echo "" -fi -done # end do level 1 - all benchmarks requested -echo "" >>$LOGFILE -echo " " `who | wc -l` "interactive users." >>$LOGFILE -echo "End Benchmark Run ($date) ...." >>$LOGFILE -if [ "$runoption" != 'Q' ] -then -pg $LOGFILE -fi -exit diff --git a/testcases/feature-test/oeaware/UnixBench/tmp/kill_run b/testcases/feature-test/oeaware/UnixBench/tmp/kill_run deleted file mode 100755 index 2aa5e9a81..000000000 --- a/testcases/feature-test/oeaware/UnixBench/tmp/kill_run +++ /dev/null @@ -1 +0,0 @@ -kill -9 46787 diff --git a/testcases/feature-test/oeaware/server.crt b/testcases/feature-test/oeaware/server.crt deleted file mode 100644 index db205cba4..000000000 --- a/testcases/feature-test/oeaware/server.crt +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDETCCAfkCFEfMyRZCGm5okv/0MbnmWvfDKcCLMA0GCSqGSIb3DQEBCwUAMEUx -CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl -cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjUwNzI0MTA1MDU5WhcNMjYwNzI0MTA1 -MDU5WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE -CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA0/Gk3p1xdiKhirD5HAWdnqQU42sEk5tj6oPSp1Xxbc123NxG -svxocTgS/QlGmvfqsMh+AsgQ25473i77ggMIMMygXkbNjVXOJGY5wsmQR4MuCHR9 -vkKnuw+UADcPg2Bwutan1cunzMq2EDAoF09npHqu6zT6m8OixB+b2ljeywOxxCTt -IXBCPOJoDhsRLO6QC1QQZ7KG3FwoxdwiFwBHaPuoYkf4LgGVkG04Tr2dOQ7LF/RM -NhHuDLtG4ism+j1bWHkWYPIatjwfEIzhUDpzME0bjw7syOO3pi4tScgMmotkRyKe -pCAs93EL1UkhVz8u28uQz5r4iEojS39hO13vNQIDAQABMA0GCSqGSIb3DQEBCwUA -A4IBAQAQP+DIXdPaXTr0jTuWGsaXdaAi7ofjS8Dg7vasChBl/rI7D3KkiACe3Hx2 -Ov+s7H9tOicXw0oWkMH9YcTpFlbyDB3FI0BQmoiXZe3e+UjdziRivTZ4xyR7XVec -OAgpZBJxt7eo/PwWmAYmK8yqkQXba4awK2Mzroe6eKgQ5eplnYP2ywcSStckbpWW -6Loc/5/jVAhLY7L9mQ8P5FzcGoLA1vPQNwmLuTqtZ1MCR9N7qjgLqg9ryfISUM0r -yAkV/17zAorydMIkUqXCqPlvHSElvhvurX6J4VI7u/lm0EfbbDshOzBTqX/PleEu -pQGa5/4hIzdyRN4Kpzd7e0ra8nml ------END CERTIFICATE----- diff --git a/testcases/feature-test/oeaware/server.csr b/testcases/feature-test/oeaware/server.csr deleted file mode 100644 index 4000996ed..000000000 --- a/testcases/feature-test/oeaware/server.csr +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx -ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBANPxpN6dcXYioYqw+RwFnZ6kFONrBJObY+qD0qdV -8W3NdtzcRrL8aHE4Ev0JRpr36rDIfgLIENueO94u+4IDCDDMoF5GzY1VziRmOcLJ -kEeDLgh0fb5Cp7sPlAA3D4NgcLrWp9XLp8zKthAwKBdPZ6R6rus0+pvDosQfm9pY -3ssDscQk7SFwQjziaA4bESzukAtUEGeyhtxcKMXcIhcAR2j7qGJH+C4BlZBtOE69 -nTkOyxf0TDYR7gy7RuIrJvo9W1h5FmDyGrY8HxCM4VA6czBNG48O7Mjjt6YuLUnI -DJqLZEcinqQgLPdxC9VJIVc/LtvLkM+a+IhKI0t/YTtd7zUCAwEAAaAAMA0GCSqG -SIb3DQEBCwUAA4IBAQBUOpWNHK3Ik3RgLfrbXBSXMVhVWZ9YtWkrikcXEfztwdc9 -x9cXB8lVUTa1bG9NNu3qo8oPZcfqKb9sNedCS/UxpxyR2sadfsgiU8YB/bzvlsa4 -VpC6ZXXphzW8jX3IZiwvgh1AY9aoUkRnTjdEsCpJ8Hn4T/kAxnvZnB+QKeIijyuf -q7Fwb2/aey4W+b3PZ4vXX7pPrTm5UYToHe/AKOcmQ+rQexiJnIaVvPM1Vc20PrA/ -7lj0aSmneBkEK8jwTd8ZJnS8Oy0qJozk1gUqHfEVHTX8BRJW3mpa5mLAVsvrnnPW -fci1wLYBomFWoXk/+XuzLNqdm4oYr6HDVSqM2Ia7 ------END CERTIFICATE REQUEST----- diff --git a/testcases/feature-test/oeaware/server.key b/testcases/feature-test/oeaware/server.key deleted file mode 100644 index eae0a8759..000000000 --- a/testcases/feature-test/oeaware/server.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA0/Gk3p1xdiKhirD5HAWdnqQU42sEk5tj6oPSp1Xxbc123NxG -svxocTgS/QlGmvfqsMh+AsgQ25473i77ggMIMMygXkbNjVXOJGY5wsmQR4MuCHR9 -vkKnuw+UADcPg2Bwutan1cunzMq2EDAoF09npHqu6zT6m8OixB+b2ljeywOxxCTt -IXBCPOJoDhsRLO6QC1QQZ7KG3FwoxdwiFwBHaPuoYkf4LgGVkG04Tr2dOQ7LF/RM -NhHuDLtG4ism+j1bWHkWYPIatjwfEIzhUDpzME0bjw7syOO3pi4tScgMmotkRyKe -pCAs93EL1UkhVz8u28uQz5r4iEojS39hO13vNQIDAQABAoIBAGhHa3wQcQPT9DFd -86Mi7DNivdhLDlxlxxpas6mbcoc44XO3eZ2U7PpPwZ/4EWIr+q/yZXWO5CR6TTB7 -Y0nLnhsMgxb/tSEGB8AHAAJj0/Yrh9mnHzseZpJ2DrawYJSePbjf5oIdirkLP9rl -JsSZUAAwUKHvViKPdiUS/EbJFQ1DJV3I0eS44+cmXhX2LAInsnBSllnH5s8W98X/ -nlIBOe4+JNdMM4G8/DSIo6YPJf9qfl1aOEd/cDQhc/Ti61M3ltkp3hPY1C2csRe6 -ZGXzgyubp0DGBWAdP5iOwXb69HYc+/SaQPgomoYm/oz5Tnr+49Sj1RgDUg89r+/Y -kSLfM/0CgYEA+LPQ9CHGtTtYTkbJyXkjDjcYJXBEhXHTARXeMWij5fFkfQ3m4PjE -fQyaeTWuC1gEJ0LQhMOq8AZhdw2oA/hFw2qAPKuTMEgZ0ZDWI+rcFV3IngIiGgWi -0Xb6RksNMhQ8DEbOQmR7SPyUoNQu1uBQ4BoOh1WOiLc2gTXkk8IX1pcCgYEA2im1 -TVMhBel5Ol3PrDG+uGUl+ff9y8FMGoI2GYHtvYbNK8916Kkrzfo63CJNvctZBIR/ -G1fCs1YKGfa9O/etufubIEZFJx0z4etPZulPp3ctovLg2YqugJiBddjxn2yxyhti -fNPvqBqzelG+ELprUeWB3DdtZdk5bipmxOdhThMCgYEA2z45oF3+PFoamLbSwGen -vapYAPkdjr4vEy/h9pCWm+jXe167/+uN2+c2blAiJCHtV2cRR1ju4jXdygQh7434 -gjLq5ZEjalbFW/dgr70lUzif2Jts0J/TTvCh5UHYWiN4ZCIvRlwqSsdPhxBGUmrh -IQ4XbLrBskhBJlsKLC/Yr/UCgYEApTsZmarwQ+4EZvROKXiznizdimkMy5lm7lzY -ZJFHYlgKZLgH8WLPTn3KvpcskibFEOrY6fiZ+gGcPPXndNetuEKbxuHx1iID/YOe -666hKZDV+6hALAMhDzxyMLNSrRBBx3TeLvTFemherrHiZgEK70gIBqXkMVNIb+ul -UlR8GgkCgYBerTDaK1ksFYDqKHl1i0nJbET1y89FON1D8oFhhEvAWpzPG4ROp34H -iRQz82Rq0GIqa0XPRB0pFg16xBbPuzLe4xxY1A0EvTIyyleK6JnIjylODgu/MmbG -75MzpmPB1aRQEe2+WGFeQoNoqpzvPrNCv+P10ejGKpguyicMnL4dJg== ------END RSA PRIVATE KEY----- diff --git a/testcases/feature-test/oeaware/smc-tools-main/.gitignore b/testcases/feature-test/oeaware/smc-tools-main/.gitignore deleted file mode 100644 index e07a8e736..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*.o -*.so -smc -smc_pnet -smcss diff --git a/testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md b/testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md deleted file mode 100644 index d00fdb562..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/CONTRIBUTING.md +++ /dev/null @@ -1,62 +0,0 @@ -Contributing to smc-tools -========================= - - -License -------- -All contributions have to be submitted under the Eclipse Public License v1.0. -See also the [LICENSE](LICENSE) file. - - -Developer's Certificate of Origin and Signed-off-by ---------------------------------------------------- -The sign-off is a simple line at the end of the explanation for the patch, -which certifies that you wrote it or otherwise have the right to pass it on as -an open-source patch. - -With the Signed-off-by line you certify the below: - -``` -Developer's Certificate of Origin 1.1 - - By making a contribution to this project, I certify that: - - (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - - (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - - (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - - (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. -``` - -If you can certify the above, just add a line stating the following at the -bottom of each of your commit messages: - -``` -Signed-off-by: Random Developer -``` - -Please use your real name and a valid e-mail address (no pseudonyms or anonymous -contributions). - - -Submitting code ---------------- -The preferred way is to create GitHub pull requests for your code contributions. -Please create separate pull requests for each logical enhancement, new feature, -or fix. diff --git a/testcases/feature-test/oeaware/smc-tools-main/LICENSE b/testcases/feature-test/oeaware/smc-tools-main/LICENSE deleted file mode 100644 index b8cef6aa7..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/LICENSE +++ /dev/null @@ -1,222 +0,0 @@ - - Eclipse Public License - v 1.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF - THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - a) in the case of the initial Contributor, the initial code and - documentation distributed under this Agreement, and - b) in the case of each subsequent Contributor: - - i) changes to the Program, and - - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and - are distributed by that particular Contributor. A Contribution - 'originates' from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's - behalf. Contributions do not include additions to the Program which: - (i) are separate modules of software distributed in conjunction with - the Program under their own license agreement, and (ii) are not - derivative works of the Program. - - "Contributor" means any person or entity that distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement, - including all Contributors. - - 2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare derivative works of, publicly display, - publicly perform, distribute and sublicense the Contribution of such - Contributor, if any, and such derivative works, in source code and - object code form. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in source code and object code form. This patent license - shall apply to the combination of the Contribution and the Program - if, at the time the Contribution is added by the Contributor, such - addition of the Contribution causes such combination to be covered - by the Licensed Patents. The patent license shall not apply to any - other combinations which include the Contribution. No hardware per - se is licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby assumes - sole responsibility to secure any other intellectual property rights - needed, if any. For example, if a third party patent license is - required to allow Recipient to distribute the Program, it is - Recipient's responsibility to acquire that license before - distributing the Program. - - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - - 3. REQUIREMENTS - - A Contributor may choose to distribute the Program in object code form - under its own license agreement, provided that: - a) it complies with the terms and conditions of this Agreement; and - - b) its license agreement: - - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - - ii) effectively excludes on behalf of all Contributors all liability - for damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a - reasonable manner on or through a medium customarily used for - software exchange. - - When the Program is made available in source code form: - a) it must be made available under this Agreement; and - - b) a copy of this Agreement must be included with each copy of the - Program. - - Contributors may not remove or alter any copyright notices contained - within the Program. - - Each Contributor must identify itself as the originator of its - Contribution, if any, in a manner that reasonably allows subsequent - Recipients to identify the originator of the Contribution. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the - Indemnified Contributor to the extent caused by the acts or omissions - of such Commercial Contributor in connection with its distribution of - the Program in a commercial product offering. The obligations in this - section do not apply to any claims or Losses relating to any actual or - alleged intellectual property infringement. In order to qualify, an - Indemnified Contributor must: a) promptly notify the Commercial - Contributor in writing of such claim, and b) allow the Commercial - Contributor to control, and cooperate with the Commercial Contributor - in, the defense and any related settlement negotiations. The Indemnified - Contributor may participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those - performance claims and warranties, and if a court requires any other - Contributor to pay any damages as a result, the Commercial Contributor - must pay those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED - ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER - EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR - CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A - PARTICULAR PURPOSE. Each Recipient is solely responsible for determining - the appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement , - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs or - equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT - NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING - WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR - DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED - HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity (including - a cross-claim or counterclaim in a lawsuit) alleging that the Program - itself (excluding combinations of the Program with other software or - hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it fails - to comply with any of the material terms or conditions of this Agreement - and does not cure such failure in a reasonable period of time after - becoming aware of such noncompliance. If all Recipient's rights under - this Agreement terminate, Recipient agrees to cease use and distribution - of the Program as soon as reasonably practicable. However, Recipient's - obligations under this Agreement and any licenses granted by Recipient - relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to distribute the Program (including its - Contributions) under the new version. Except as expressly stated in - Sections 2(a) and 2(b) above, Recipient receives no rights or licenses - to the intellectual property of any Contributor under this Agreement, - whether expressly, by implication, estoppel or otherwise. All rights in - the Program not expressly granted under this Agreement are reserved. - - This Agreement is governed by the laws of the State of New York and the - intellectual property laws of the United States of America. No party to - this Agreement will bring a legal action under this Agreement more than - one year after the cause of action arose. Each party waives its rights - to a jury trial in any resulting litigation. diff --git a/testcases/feature-test/oeaware/smc-tools-main/Makefile b/testcases/feature-test/oeaware/smc-tools-main/Makefile deleted file mode 100644 index d7e5c2e19..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/Makefile +++ /dev/null @@ -1,212 +0,0 @@ -# -# SMC Tools - Shared Memory Communication Tools -# -# Copyright IBM Corp. 2016, 2018 -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -# - -SMC_TOOLS_RELEASE = 1.8.4 -VER_MAJOR = $(shell echo $(SMC_TOOLS_RELEASE) | cut -d '.' -f 1) - -ARCHTYPE = $(shell uname -m) -ARCH := $(shell getconf LONG_BIT) -DISTRO := $(shell lsb_release -si 2>/dev/null) - -ifneq ("${V}","1") - MAKEFLAGS += --quiet - cmd = echo $1$2; -else - cmd = -endif -CCC = $(call cmd," CC ",$@)${CC} -LINK = $(call cmd," LINK ",$@)${CC} -GEN = $(call cmd," GEN ",$@)sed -DESTDIR ?= -PREFIX = /usr -BINDIR = ${PREFIX}/bin -MANDIR = ${PREFIX}/share/man -BASH_AUTODIR = $(shell pkg-config --variable=completionsdir bash-completion 2>/dev/null) -OWNER = $(shell id -un) -GROUP = $(shell id -gn) -INSTALL_FLAGS_BIN = -g $(GROUP) -o $(OWNER) -m755 -INSTALL_FLAGS_MAN = -g $(GROUP) -o $(OWNER) -m644 -INSTALL_FLAGS_LIB = -g $(GROUP) -o $(OWNER) -m4755 - -STUFF_32BIT = 0 -# -# Check that 31/32-bit build tools are available. -# -ifeq ($(ARCH),64) -ifeq ($(DISTRO),Ubuntu) -LIBDIR = ${PREFIX}/usr/lib -else -LIBDIR = ${PREFIX}/lib64 -endif -ifneq ("$(wildcard ${PREFIX}/include/gnu/stubs-32.h)","") -STUFF_32BIT = 1 -LIBDIR32 = ${PREFIX}/lib -endif -else -ifeq ($(DISTRO),Ubuntu) -LIBDIR = ${PREFIX}/lib/s390-linux-gnu -else -LIBDIR = ${PREFIX}/lib -endif -endif - -all: libsmc-preload.so libsmc-preload32.so smcd smcr smcss smc_pnet - -CFLAGS ?= -Wall -O3 -g -ifneq ($(shell sh -c 'command -v pkg-config'),) -LIBNL_CFLAGS = $(shell pkg-config --silence-errors --cflags libnl-genl-3.0) -LIBNL_LFLAGS = $(shell pkg-config --silence-errors --libs libnl-genl-3.0) -else -LIBNL_CFLAGS = -I /usr/include/libnl3 -LIBNL_LFLAGS = -lnl-genl-3 -lnl-3 -endif -ALL_CFLAGS += ${CFLAGS} -DSMC_TOOLS_RELEASE=$(SMC_TOOLS_RELEASE) \ - ${LIBNL_CFLAGS} ${OPTFLAGS} -ALL_LDFLAGS += ${LDFLAGS} ${LIBNL_LFLAGS} -lm - -ifeq ($(ARCHTYPE),s390x) - MACHINE_OPT32="-m31" -else - MACHINE_OPT32="-m32" -endif - -util.o: util.c util.h - ${CCC} ${ALL_CFLAGS} -c util.c - -libnetlink.o: libnetlink.c libnetlink.h - ${CCC} ${ALL_CFLAGS} ${ALL_LDFLAGS} -c libnetlink.c - -smc-preload.o: smc-preload.c - ${CCC} ${ALL_CFLAGS} -fPIC -c smc-preload.c - -libsmc-preload.so: smc-preload.o - ${LINK} ${ALL_LDFLAGS} -shared smc-preload.o -ldl -Wl,-z,defs,-soname,$@.$(VER_MAJOR) -o $@ - chmod u+s $@ - -libsmc-preload32.so: smc-preload.c -ifeq ($(ARCH),64) -ifeq ($(STUFF_32BIT),1) - ${CCC} ${ALL_CFLAGS} -fPIC -c ${MACHINE_OPT32} $< -o smc-preload32.o - ${LINK} ${ALL_LDFLAGS} -shared smc-preload32.o ${MACHINE_OPT32} -ldl -Wl,-soname,$@.$(VER_MAJOR) -o $@ - chmod u+s $@ -else - $(warning "Warning: Skipping 31/32-bit library build because 31/32-bit build tools") - $(warning " are unavailable. SMC will not support 31/32 bit applications") - $(warning " unless the glibc devel package for the appropriate addressing") - $(warning " mode is installed and the preload libraries are rebuilt.") -endif -endif - - -%d.o: %.c smctools_common.h - ${CCC} ${ALL_CFLAGS} -DSMCD -c $< -o $@ - -%r.o: %.c smctools_common.h - ${CCC} ${ALL_CFLAGS} -DSMCR -c $< -o $@ - -%.o: %.c smctools_common.h - ${CCC} ${ALL_CFLAGS} -c $< -o $@ - -smc: smc.o info.o ueid.o seid.o dev.o linkgroup.o libnetlink.o util.o - ${CCC} ${ALL_CFLAGS} ${ALL_LDFLAGS} $^ -o $@ - -smcd: smcd.o infod.o ueidd.o seidd.o devd.o linkgroupd.o statsd.o libnetlink.o util.o - ${CCC} ${ALL_CFLAGS} $^ ${ALL_LDFLAGS} -o $@ - -smcr: smcr.o infor.o ueidr.o seidr.o devr.o linkgroupr.o statsr.o libnetlink.o util.o - ${CCC} ${ALL_CFLAGS} $^ ${ALL_LDFLAGS} -o $@ - -smc_pnet: smc_pnet.c smctools_common.h - @if [ ! -e /usr/include/libnl3/netlink/netlink.h ]; then \ - printf "**************************************************************\n" >&2; \ - printf "* Missing build requirement for: %-45s\n" $@ >&2; \ - printf "* Install package..............: %-45s\n" "devel package for libnl3" >&2; \ - printf "* Install package..............: %-45s\n" "devel package for libnl3-genl" >&2; \ - printf "* NOTE: Package names might differ by platform\n" >&2; \ - printf "* On Ubuntu try libnl-3-dev and libnl-genl-3-dev\n" >&2; \ - printf "**************************************************************\n" >&2; \ - exit 1; \ - fi - ${CCC} ${ALL_CFLAGS} $< ${ALL_LDFLAGS} -o $@ - -smcss: smcss.o libnetlink.o - ${CCC} ${ALL_CFLAGS} $^ ${ALL_LDFLAGS} -o $@ - -install: all - echo " INSTALL" - install -d -m755 $(DESTDIR)$(LIBDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)/man7 \ - $(DESTDIR)$(BASH_AUTODIR) $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_LIB) libsmc-preload.so $(DESTDIR)$(LIBDIR) -#ifeq ($(STUFF_32BIT),1) -# install -d -m755 $(DESTDIR)$(LIBDIR32) -# install $(INSTALL_FLAGS_LIB) libsmc-preload32.so $(DESTDIR)$(LIBDIR32)/libsmc-preload.so -#endif - install $(INSTALL_FLAGS_BIN) smc_run $(DESTDIR)$(BINDIR) - install $(INSTALL_FLAGS_BIN) smcd $(DESTDIR)$(BINDIR) - install $(INSTALL_FLAGS_BIN) smcr $(DESTDIR)$(BINDIR) - install $(INSTALL_FLAGS_BIN) smcss $(DESTDIR)$(BINDIR) - install $(INSTALL_FLAGS_BIN) smc_pnet $(DESTDIR)$(BINDIR) - install $(INSTALL_FLAGS_BIN) smc_dbg $(DESTDIR)$(BINDIR) -ifeq ($(shell uname -m | cut -c1-4),s390) - install $(INSTALL_FLAGS_BIN) smc_rnics $(DESTDIR)$(BINDIR) - install $(INSTALL_FLAGS_MAN) smc_rnics.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_BIN) smc_chk $(DESTDIR)$(BINDIR) - install $(INSTALL_FLAGS_MAN) smc_chk.8 $(DESTDIR)$(MANDIR)/man8 -endif - install $(INSTALL_FLAGS_MAN) af_smc.7 $(DESTDIR)$(MANDIR)/man7 - install $(INSTALL_FLAGS_MAN) smc_run.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smc_pnet.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcss.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcd.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcr.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcd-linkgroup.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcd-device.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcd-info.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcd-stats.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcd-ueid.8 $(DESTDIR)$(MANDIR)/man8 - install $(INSTALL_FLAGS_MAN) smcd-seid.8 $(DESTDIR)$(MANDIR)/man8 - ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-linkgroup.8 $(DESTDIR)$(MANDIR)/man8/smcr-linkgroup.8 - ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-device.8 $(DESTDIR)$(MANDIR)/man8/smcr-device.8 - ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-info.8 $(DESTDIR)$(MANDIR)/man8/smcr-info.8 - ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-stats.8 $(DESTDIR)$(MANDIR)/man8/smcr-stats.8 - ln -sfr $(DESTDIR)$(MANDIR)/man8/smcd-ueid.8 $(DESTDIR)$(MANDIR)/man8/smcr-ueid.8 -ifneq ($(BASH_AUTODIR),) - install $(INSTALL_FLAGS_MAN) smc-tools.autocomplete $(DESTDIR)$(BASH_AUTODIR)/smc-tools - ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_rnics - ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_chk - ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_dbg - ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smcss - ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc_pnet - ln -sfr $(DESTDIR)$(BASH_AUTODIR)/smc-tools $(DESTDIR)$(BASH_AUTODIR)/smc -endif - -check: - if ( command -v cppcheck >/dev/null ); then \ - echo "Running cppcheck"; \ - cppcheck . 2>&1; \ - else \ - echo "cppcheck not available"; \ - fi - @echo; - #if type -p valgrind >/dev/null; then \ - if ( command -v valgrind >/dev/null ); then \ - echo "Running valgrind"; \ - valgrind --leak-check=full --show-leak-kinds=all ./smcss 2>&1; \ - valgrind --leak-check=full --show-leak-kinds=all ./smc_pnet 2>&1; \ - valgrind --leak-check=full --show-leak-kinds=all ./smcd info 2>&1; \ - valgrind --leak-check=full --show-leak-kinds=all ./smcd stats 2>&1; \ - else \ - echo "valgrind not available"; \ - fi - @echo; -clean: - echo " CLEAN" - rm -f *.o *.so *.a smc smcd smcr smcss smc_pnet diff --git a/testcases/feature-test/oeaware/smc-tools-main/README.md b/testcases/feature-test/oeaware/smc-tools-main/README.md deleted file mode 100644 index 1c03534d4..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/README.md +++ /dev/null @@ -1,217 +0,0 @@ -SMC Tools -========= - -Utilities for use with `AF_SMC` sockets. - -This package consists of the following tools: - -- `libsmc-preload.so` : preload library. -- `smc` : List linkgroups, links, devices, and more -- `smc_chk` : SMC support diagnostics -- `smc_pnet` : C program for PNET Table handling -- `smc_rnics` : List available RDMA NICs -- `smc_run` : preload library environment setup script. -- `smcss` : C program for displaying the information about active - SMC sockets. - -The preload shared library `libsmc-preload.so` provides mapping of TCP socket -operations to SMC sockets. -The environment setup script `smc_run` sets up the preload environment -for the `libsmc-preload.so` shared library before starting application. -The `smcss` program is used to gather and display information about the -SMC sockets. -The `smc_pnet` program is used to create, destroy, and change the SMC-R PNET -table. - -In addition the package contains the `AF_SMC` manpage (`man af_smc`). - - -License -------- -See [LICENSE](LICENSE). - - -Code Contributions ------------------- -See [CONTRIBUTING.md](CONTRIBUTING.md). - - -Release History: -================ - -* __v1.8.4 (2024-12-17)__ - - Changes: - - `smcd`/`smcr` statistics: add statistics on sndbufs/RMBs usage - - Bug fixes: - - `smc_rnics`: Fix smc_rnics showing the wrong physical port - - `util.h`: Fix build with CFLAGS="-g" - - `smc_run`: Fix segfault issue during creating concurrent sockets - - `Makefile`: Make sure to show the right release number - -* __v1.8.3 (2023-07-28)__ - - Bug fixes: - - `Makefile`: Adjust default library path for Ubuntu - - `smc_stats`: Fix man page name - -* __v1.8.2 (2022-09-26)__ - - Bug fixes: - - `smc_run`: Fix for single quotes in parameters - - `Makefile`: Fix target `check` - - `smcss`/`smc_pnet`: Fix option `--version` - - `smcr`/`smc_dbg`: Fix for showing the correct hardware capabailities - for RoCE Express3 cards - -* __v1.8.1 (2022-04-14)__ - - Changes: - - `smc_rnics`: Recognize RoCE Express3 cards - -* __v1.8.0 (2022-04-11)__ - - Changes: - - `smc_dbg`: Add stats and `smc info` output - - `smc_rnics`: - - List unknown devices with option `-a` - - Include software-set PNET IDs - - `smc_chk`: Indicate PNET IDs set by `smc_pnet`. - - Bug fixes: - - `smc_rnics`: Display correct PNET ID for unknown Mellanox cards - - `smc_run`: Fix output of version info - -* __v1.7.0 (2021-10-29)__ - - Changes: - - Add support for SMC-Rv2 - - `smcd`/`smcr`: Add support for new commands `seid` and `ueid` to - manage system and user EIDs - -* __v1.6.1 (2021-10-01)__ - - Bug fixes: - - `smcd`/`smcr` statistics: - - Fix memory overread in is_data_consistent() - - Fix memory and file handle leaks - - Use correct fallback counter values after reset - -* __v1.6.0 (2021-07-01)__ - - Changes: - - `smcd`/`smcr`: Add new command `stats` - - `smc_rnics`: Recognize unknown Mellanox cards - - `smc_run`: Add various command-line switches - - Bug fixes: - - `smc_chk`: Remove 'EXPERIMENTAL' flag - - `smc_chk`: Improve cleanup - - `smc_chk`: Start server with intended port - - `Makefile`: Install `smc_chk.8` on s390 only - - `Makefile`: Fix extra compile flags handling - - `smc_rnics`: Handle malformed FID arguments - -* __v1.5.0 (2021-01-29)__ - - Changes: - - `smcd`/`smcr`: Add new command `info` - - `smc_rnics`: Use `n/a` to indicate missing PNET ID - - `smc_chk`: New tool to perform SMC eligilibilty checks, requires `man` and - `python3` to be installed - - `man` pages: Consistency improvements - - Bug fixes: - - `smc_pnet.8`: Use correct spelling for 'PNET ID' - - `smc_rnics`: Suppress output of port attribute for offline devices - -* __v1.4.0 (2020-11-03)__ - - Changes: - - Add SMC-Dv2 support - - `smc`: Add new tools `smcd` and `smcr` to list linkgroups, links and - devices. Requires Linux kernel 5.11 or higher. - - `smc_rnics`: Display enabled devices per default, add new option `--all` - - `smc_rnics`: Sort output by FID - - Bug fixes: - - `smc_rnics`/`smc_dbg`: Fix PNETID for multiport devices - - `smcss`/`smc_pnet`: Consistent use of option `-v` - -* __v1.3.1 (2020-09-14)__ - - Changes: - - `smcss`: Add further error codes to man page - - Bug fixes: - - `smcss`: Display more than 321 connections - - `smc_rnics`: Suppress any unknown non-networking device unless - option `-r` is specified - -* __v1.3.0 (2020-06-16)__ - - Changes: - - `smcss`: Add description of Linux error codes to man page - - `smc_rnics`: - * Sort output by PCHID - * Replace spaces in output by underscores for easier parsing - * Add new option `--IB-dev` to display IB-specific attributes - - Bug fixes: - - smc_rnics: - * FIDs can have up to 4 digits and are planned to be extended - to a total of 8 digits - adjusting output format accordingly - * Do not display port attribute for RoCE Express2 devices - unless we have an accurate value - -* __v1.2.2 (2019-10-24)__ - Changes: - - Add bash autocompletion support - - `Makefile`: Drop 31 Bit install due to rpmbuild conflict - - Bug fixes: - - `smcss`: Do not show connection mode for already closed sockets - - `smc_rnics`: Set interface to "n/a" for ISM devices - -* __v1.2.1 (2019-04-15)__ - Bug fixes: - - `smc_rnics`: Install man page on s390 only - - `libsmc..`: Handle behavior flags in type argument to `socket()` call - - `Makefile`: Fixed install target on Ubuntu for platforms other than s390 - - `smc_pnet`: Changes in support of kernel 5.1 - -* __v1.2.0 (2019-02-08)__ - Changes: - - `smc_rnics`: Initial version added - - `smc_dbg`: Initial version added - - Bug fixes: - - `smcss`: Parse address family of ip address - -* __v1.1.0 (2018-06-29)__ - Changes: - - `smcss`: Add IPv6 support - - `libsmc..`: Add IPv6 support - - `smcss`: Output format changed - - `libsmc..`: Rename preload library to `libsmc-preload.so` - - `Makefile`: Improve distro compatibility - - `Makefile`: Add `SONAME` to shared libraries - - `Makefile`: Do not strip binaries on install - - `Makefile`: Use `LDFLAGS` to allow addition of externally set link flags - - `libsmc..`: Remove hardcoded reference to libc - - Manpages: Formatting changes - - Bug fixes: - - `Makefile`: Fix target `install` dependencies - - `smcss`: Fix `--version` output - - `smc_pnet`: Fix `--version` output - - `smc_run`: Append preload library to `LD_PRELOAD` instead of potentially - overwriting pre-set values - - `libsmc..`: Set suid flag to work with suid executables - -* __v1.0.0 (2017-02-13)__ - The initial version - - -Copyright IBM Corp. 2016, 2020 diff --git a/testcases/feature-test/oeaware/smc-tools-main/af_smc.7 b/testcases/feature-test/oeaware/smc-tools-main/af_smc.7 deleted file mode 100644 index 13ee52317..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/af_smc.7 +++ /dev/null @@ -1,147 +0,0 @@ -.\" -.\" Copyright IBM Corp. 2016, 2018 -.\" Author(s): Ursula Braun -.\" Thomas Richter -.\" ---------------------------------------------------------------------- -.TH AF_SMC 7 "January 2017" "smc-tools" "Linux Programmer's Manual" -.SH NAME -AF_SMC - Sockets for SMC communication -.SH SYNOPSIS -.B #include -.sp -.B "#define AF_SMC 43" -.sp -.B "#define SMCPROTO_SMC 0" -.sp -.B "#define SMCPROTO_SMC6 1" -.PP -.IB tcp_sockfd " = socket(" AF_SMC ", " SOCK_STREAM ", " SMCPROTO_SMC ); -.sp -.IB tcp_sockfd " = socket(" AF_SMC ", " SOCK_STREAM ", " SMCPROTO_SMC6 ); -.SH DESCRIPTION -.I Shared Memory Communication via RDMA -(SMC) is a socket over the RDMA -communication protocol that allows existing TCP socket applications -to transparently benefit from RDMA when exchanging data -over an -.I RDMA over Converged Ethernet -(RoCE) network. Those networks are not routable. -SMC provides -host-to-host direct memory access without traditional TCP/IP -processing overhead. -SMC offers preservation of existing IP topology and IP security, and -introduces minimal administrative and operational changes. -The exploitation of SMC is transparent to TCP socket applications. -.PP -The new address family -.B AF_SMC -supports the SMC protocol on Linux. -It keeps the address format of -.B AF_INET -and -.B AF_INET6 -sockets and supports streaming socket types only. -.SS Usage modes -Two usage modes are possible: -.IP "AF_SMC native usage" -uses the socket domain -.B AF_SMC -instead of -.B AF_INET -and -.BR AF_INET6 . -Specify -.B SMCPROTO_SMC -for -.B AF_INET -compatible socket semantics, and -.B SMC_PROTO_SMC6 -for -.B AF_INET6 -respectively. -.IP "Usage of AF_INET socket applications with SMC preload library" -converts -.B AF_INET -and -.B AF_INET6 -sockets to -.B AF_SMC -sockets. -The SMC preload library is part of the SMC tools package. -.PP -SMC socket capabilities are negotiated at connection setup. If -one peer is not SMC capable, further socket processing falls -back to TCP usage automatically. -.SS Implementation details: Links and Link Groups -To run RDMA traffic to a peer, a so-called -.I link -is established between -a local RoCE card and a remote RoCE card. To enhance availability, you can -configure alternate links with automatic fail over. -Primary and backup links to a certain peer are combined in a so-called -.I link -.IR group . -.SS RoCE adapter mapping: Creation of a pnet table -The SMC protocol requires grouping of multiple physical networks - -standard Ethernet and RoCE networks. Such groups are called -.I Physical Networks -(PNets). For SMC, RoCE adapter mapping is configured within a table called -.BR "pnet table" . -Any available Ethernet interface can be combined with available -.I RDMA-capable network interface cards -(RNICs), -if they belong to the same Converged Ethernet fabric. -To configure RoCE Adapter mapping, you must create a pnet table. -Modify the table with the smc-tools command -.IR smc_pnet . -.PP -For details see -.BR smc_pnet (8). -.SS Displaying SMC socket state information -SMC socket state information can be obtained with the smc-tools command -.IR smcss . -For details see -.BR smcss (8). -.SS Starting a TCP application to work with SMC -To use an existing TCP application to work with SMC, use the SMC -preload library. -The SMC Tools package provides the command -.I smc_run -to convert -.B AF_INET -and -.B AF_INET6 -socket calls to -.B AF_SMC -socket calls by means of the preload technique. -For more information about the preload mechanism, see also -.BR ld.so (8). -.PP -Example: -.IP -.B smc_run ftp -.PP -This command-line example starts an FTP client over SMC. -.PP -.SS MTU and Infiniband data transfer -Infiniband traffic may use MTU values 256, 512, 1024, 2048, or 4096. -SMC determines the configured MTU size of the RoCE Ethernet port, -announces this MTU size to the peer during connection start, and chooses -the minimum MTU size of both peers. - -.SH "SEE ALSO" -.BR socket (2), -.BR ip (7), -.BR tcp (7), -.BR socket (7), -.BR smc_chk (8) -.BR smc_run (8), -.BR smcss (8), -.BR smc_pnet (8) -.SH "HISTORY" -.TP -.B AF_SMC, version 1.0.0 -.RS 4 -.IP "\bu" 2 -Initial version. -.RE diff --git a/testcases/feature-test/oeaware/smc-tools-main/dev.c b/testcases/feature-test/oeaware/smc-tools-main/dev.c deleted file mode 100644 index 9333f2987..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/dev.c +++ /dev/null @@ -1,545 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "util.h" -#include "libnetlink.h" -#include "dev.h" - -#define MASK_ROCE_V1_HEX 0x1004 -#define MASK_ROCE_V2_HEX 0x1016 -#define MASK_ROCE_V3_HEX 0x101e - -#define MASK_ISM_V1_HEX 0x04ed - -static int netdev_entered = 0; -static int ibdev_entered = 0; -static int type_entered = 0; -static int all_entered = 0; -#if defined(SMCD) -static int dev_smcr = 0; -static int dev_smcd = 1; -#else -static int dev_smcr = 1; -static int dev_smcd = 0; -#endif - -static int d_level = 0; - -static char target_ibdev[IB_DEVICE_NAME_MAX] = {0}; -static char target_type[SMC_TYPE_STR_MAX] = {0}; -static char target_ndev[IFNAMSIZ] = {0}; - -static struct nla_policy smc_gen_dev_smcd_sock_policy[SMC_NLA_DEV_MAX + 1] = { - [SMC_NLA_DEV_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_DEV_USE_CNT] = { .type = NLA_U32 }, - [SMC_NLA_DEV_IS_CRIT] = { .type = NLA_U8 }, - [SMC_NLA_DEV_PCI_FID] = { .type = NLA_U32 }, - [SMC_NLA_DEV_PCI_CHID] = { .type = NLA_U16 }, - [SMC_NLA_DEV_PCI_VENDOR] = { .type = NLA_U16 }, - [SMC_NLA_DEV_PCI_DEVICE] = { .type = NLA_U16 }, - [SMC_NLA_DEV_PCI_ID] = { .type = NLA_NUL_STRING }, - [SMC_NLA_DEV_PORT] = { .type = NLA_NESTED }, - [SMC_NLA_DEV_PORT2] = { .type = NLA_NESTED }, - [SMC_NLA_DEV_IB_NAME] = { .type = NLA_NUL_STRING }, -}; - -static struct nla_policy smc_gen_dev_port_smcd_sock_policy[SMC_NLA_DEV_PORT_MAX + 1] = { - [SMC_NLA_DEV_PORT_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_DEV_PORT_PNET_USR] = { .type = NLA_U8 }, - [SMC_NLA_DEV_PORT_PNETID] = { .type = NLA_NUL_STRING }, - [SMC_NLA_DEV_PORT_NETDEV] = { .type = NLA_U32 }, - [SMC_NLA_DEV_PORT_STATE] = { .type = NLA_U8 }, - [SMC_NLA_DEV_PORT_VALID] = { .type = NLA_U8 }, - [SMC_NLA_DEV_PORT_LNK_CNT] = { .type = NLA_U32 }, -}; - -static void usage(void) -{ - fprintf(stderr, -#if defined(SMCD) - "Usage: smcd device [show] [all]\n" -#elif defined(SMCR) - "Usage: smcr device [show] [all]\n" - " [ibdev ]\n" - " [netdev ]\n" -#else - "Usage: smc device [show] [all] [type {smcd | smcr}]\n" - " [ibdev ]\n" - " [netdev ]\n" -#endif - ); - exit(-1); -} - -static const char *smc_ib_port_state(unsigned int x) -{ - static char buf[16]; - - switch (x) { - case 0: return "INACTIVE"; - case 1: return "ACTIVE"; - default: sprintf(buf, "%#x?", x); return buf; - } -} - -static const char *smc_ib_dev_type(unsigned int x) -{ - static char buf[16]; - - switch (x) { - case MASK_ROCE_V1_HEX: return "RoCE_Express"; - case MASK_ROCE_V2_HEX: return "RoCE_Express2"; - case MASK_ROCE_V3_HEX: return "RoCE_Express3"; - case MASK_ISM_V1_HEX: return "ISM"; - default: sprintf(buf, "%#x", x); return buf; - } -} - -static void print_devs_smcd_header(void) -{ - printf("FID "); - printf("Type "); - printf("PCI-ID "); - printf("PCHID "); - printf("InUse "); - printf("#LGs "); - printf("PNET-ID "); - printf("\n"); -} - -static void print_devs_smcr_header(void) -{ - printf("Net-Dev "); - printf("IB-Dev "); - printf("IB-P "); - printf("IB-State "); - printf("Type "); - printf("Crit "); - if (d_level >= SMC_DETAIL_LEVEL_V) { - printf(" FID "); - printf("PCI-ID "); - printf("PCHID "); - } - printf("#Links "); - printf("PNET-ID "); - printf("\n"); -} - -static int filter_item(struct smc_diag_dev_info *dev, int idx) -{ - int ignore = 0; - - if (is_str_empty(target_ibdev) && is_str_empty(target_ndev)) { - return ignore; /* No filter set */ - } else if (!is_str_empty(target_ndev)) { - if (strncmp(target_ndev, (char *)dev->netdev[idx], sizeof(target_ndev)) == 0) - ignore = 0; - else - ignore = 1; - } else if (!is_str_empty(target_ibdev)) { - if (strncmp(target_ibdev, (char *)dev->dev_name, sizeof(target_ibdev)) == 0) - ignore = 0; - else - ignore = 1; - } - - return ignore; -} - -static void show_devs_smcr_details(struct smc_diag_dev_info *dev, int idx) -{ - char buf[SMC_MAX_PNETID_LEN+1] = {0}; - - if (dev->port_valid[idx] && !filter_item(dev, idx)) { - if (strnlen((char*)dev->netdev[idx], sizeof(dev->netdev[idx])) > (IFNAMSIZ - 1)) - printf("%-.15s ", (char *)&dev->netdev[idx]); - else - printf("%-15s ", (char *)&dev->netdev[idx]); - if (strnlen((char*)dev->dev_name, sizeof(dev->dev_name)) > SMC_MAX_IBNAME) - printf("%-.8s ", dev->dev_name); - else - printf("%-8s ", dev->dev_name); - printf("%4d ", idx+1); - printf("%8s ", smc_ib_port_state(dev->port_state[idx])); - printf("%-13s ", smc_ib_dev_type(dev->pci_device)); - printf("%3s ", dev->is_critical?"Yes":"No"); - if (d_level >= SMC_DETAIL_LEVEL_V) { - printf("%04x ", dev->pci_fid); - printf("%-12s ", dev->pci_id); - printf("%04x ", dev->pci_pchid); - } - printf("%5d ", dev->lnk_cnt_by_port[idx]); - if (dev->pnetid_by_user[idx]) - snprintf(buf, sizeof(buf),"*%s", dev->pnet_id[idx]); - else - snprintf(buf, sizeof(buf),"%s", dev->pnet_id[idx]); - printf(" %-16s ", trim_space(buf)); - printf("\n"); - } -} - -static int fill_dev_port_smcr_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs, int idx) -{ - struct nlattr *port_attrs[SMC_NLA_DEV_PORT_MAX + 1]; - - if (!attrs[SMC_NLA_DEV_PORT + idx]) { - dev->port_valid[idx] = 0; - return NL_OK; - } - - if (nla_parse_nested(port_attrs, SMC_NLA_DEV_PORT_MAX, - attrs[SMC_NLA_DEV_PORT + idx], - smc_gen_dev_port_smcd_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_port_smcd_sock_policy\n"); - return NL_STOP; - } - if (port_attrs[SMC_NLA_DEV_PORT_PNETID]) - snprintf((char*)&dev->pnet_id[idx], sizeof(dev->pnet_id[idx]), "%s", - nla_get_string(port_attrs[SMC_NLA_DEV_PORT_PNETID])); - if (port_attrs[SMC_NLA_DEV_PORT_PNET_USR]) - dev->pnetid_by_user[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_PNET_USR]); - if (port_attrs[SMC_NLA_DEV_PORT_NETDEV] && nla_get_u32(port_attrs[SMC_NLA_DEV_PORT_NETDEV])) - if_indextoname(nla_get_u32(port_attrs[SMC_NLA_DEV_PORT_NETDEV]), (char*)dev->netdev[idx]); - if (port_attrs[SMC_NLA_DEV_PORT_STATE]) - dev->port_state[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_STATE]); - if (port_attrs[SMC_NLA_DEV_PORT_VALID]) - dev->port_valid[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_VALID]); - if (port_attrs[SMC_NLA_DEV_PORT_LNK_CNT]) - dev->lnk_cnt_by_port[idx] = nla_get_u32(port_attrs[SMC_NLA_DEV_PORT_LNK_CNT]); - - return NL_OK; -} - -static int fill_dev_smcr_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs) -{ - struct nlattr *dev_attrs[SMC_NLA_DEV_MAX + 1]; - int i; - - if (nla_parse_nested(dev_attrs, SMC_NLA_DEV_MAX, - attrs[SMC_GEN_DEV_SMCR], - smc_gen_dev_smcd_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_smcd_sock_policy\n"); - return NL_STOP; - } - if (dev_attrs[SMC_NLA_DEV_IS_CRIT]) - dev->is_critical = nla_get_u8(dev_attrs[SMC_NLA_DEV_IS_CRIT]); - if (dev_attrs[SMC_NLA_DEV_PCI_FID]) - dev->pci_fid = nla_get_u32(dev_attrs[SMC_NLA_DEV_PCI_FID]); - if (dev_attrs[SMC_NLA_DEV_PCI_CHID]) - dev->pci_pchid = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_CHID]); - if (dev_attrs[SMC_NLA_DEV_PCI_VENDOR]) - dev->pci_vendor = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_VENDOR]); - if (dev_attrs[SMC_NLA_DEV_PCI_DEVICE]) - dev->pci_device = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_DEVICE]); - if (dev_attrs[SMC_NLA_DEV_PCI_ID]) - snprintf((char*)dev->pci_id, sizeof(dev->pci_id), "%s", - nla_get_string(dev_attrs[SMC_NLA_DEV_PCI_ID])); - if (dev_attrs[SMC_NLA_DEV_IB_NAME]) - snprintf((char*)dev->dev_name, sizeof(dev->dev_name), "%s", - nla_get_string(dev_attrs[SMC_NLA_DEV_IB_NAME])); - - for (i = 0; i < SMC_MAX_PORTS; i++) { - if (fill_dev_port_smcr_struct(dev, &dev_attrs[0], i) != NL_OK) - return NL_STOP; - } - - return NL_OK; -} - -static int show_dev_smcr_info(struct nlattr **attr) -{ - struct smc_diag_dev_info dev; - int i; - - if (attr[SMC_GEN_DEV_SMCR]) { - if (fill_dev_smcr_struct(&dev, attr) != NL_OK) - return NL_STOP; - - for (i = 0; i < SMC_MAX_PORTS; i++) { - show_devs_smcr_details(&dev, i); - } - } - return NL_OK; -} - -static int fill_dev_port_smcd_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs, int idx) -{ - struct nlattr *port_attrs[SMC_NLA_DEV_PORT_MAX + 1]; - - if (nla_parse_nested(port_attrs, SMC_NLA_DEV_PORT_MAX, - attrs[SMC_NLA_DEV_PORT], - smc_gen_dev_port_smcd_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_port_smcd_sock_policy\n"); - return NL_STOP; - } - if (port_attrs[SMC_NLA_DEV_PORT_PNETID]) - snprintf((char*)&dev->pnet_id[idx], sizeof(dev->pnet_id[idx]), "%s", - nla_get_string(port_attrs[SMC_NLA_DEV_PORT_PNETID])); - if (port_attrs[SMC_NLA_DEV_PORT_PNET_USR]) - dev->pnetid_by_user[idx] = nla_get_u8(port_attrs[SMC_NLA_DEV_PORT_PNET_USR]); - - return NL_OK; -} - -static int fill_dev_smcd_struct(struct smc_diag_dev_info *dev, struct nlattr **attrs) -{ - struct nlattr *dev_attrs[SMC_NLA_DEV_MAX + 1]; - - if (nla_parse_nested(dev_attrs, SMC_NLA_DEV_MAX, - attrs[SMC_GEN_DEV_SMCD], - smc_gen_dev_smcd_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_smcd_sock_policy\n"); - return NL_STOP; - } - if (dev_attrs[SMC_NLA_DEV_USE_CNT]) - dev->use_cnt = nla_get_u32(dev_attrs[SMC_NLA_DEV_USE_CNT]); - if (dev_attrs[SMC_NLA_DEV_IS_CRIT]) - dev->is_critical = nla_get_u8(dev_attrs[SMC_NLA_DEV_IS_CRIT]); - if (dev_attrs[SMC_NLA_DEV_PCI_FID]) - dev->pci_fid = nla_get_u32(dev_attrs[SMC_NLA_DEV_PCI_FID]); - if (dev_attrs[SMC_NLA_DEV_PCI_CHID]) - dev->pci_pchid = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_CHID]); - if (dev_attrs[SMC_NLA_DEV_PCI_VENDOR]) - dev->pci_vendor = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_VENDOR]); - if (dev_attrs[SMC_NLA_DEV_PCI_DEVICE]) - dev->pci_device = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_DEVICE]); - if (dev_attrs[SMC_NLA_DEV_PCI_ID]) - snprintf((char*)dev->pci_id, sizeof(dev->pci_id), "%s", - nla_get_string(dev_attrs[SMC_NLA_DEV_PCI_ID])); - - if (fill_dev_port_smcd_struct(dev, &dev_attrs[0], 0) != NL_OK) - return NL_STOP; - - return NL_OK; -} - -static int show_dev_smcd_info(struct nlattr **attr) -{ - char buf[SMC_MAX_PNETID_LEN+1] = {0}; - struct smc_diag_dev_info dev; - - if (attr[SMC_GEN_DEV_SMCD]) { - if (fill_dev_smcd_struct(&dev, attr) != NL_OK) - return NL_STOP; - printf("%04x ", dev.pci_fid); - printf("%-4s ", smc_ib_dev_type(dev.pci_device)); - printf("%-12s ", dev.pci_id); - printf("%04x ", dev.pci_pchid); - printf("%-4s ", dev.is_critical?"Yes":"No"); - printf("%5d ", dev.use_cnt); - if (dev.pnetid_by_user[0]) - snprintf(buf, sizeof(buf),"*%s", dev.pnet_id[0]); - else - snprintf(buf, sizeof(buf),"%s", dev.pnet_id[0]); - printf(" %-16s ", trim_space(buf)); - printf("\n"); - } - - return NL_OK; -} - -static int handle_gen_dev_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - static int header_printed = 0; - int rc = NL_OK; - - if (!header_printed) { - if (dev_smcr) - print_devs_smcr_header(); - else - print_devs_smcd_header(); - header_printed = 1; - } - - if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, - (struct nla_policy *)smc_gen_net_policy) < 0) { - fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - - if (!attrs[SMC_GEN_DEV_SMCD] && !attrs[SMC_GEN_DEV_SMCR]) - return NL_STOP; - - if (dev_smcd && attrs[SMC_GEN_DEV_SMCD]) - rc = show_dev_smcd_info(&attrs[0]); - if (dev_smcr && attrs[SMC_GEN_DEV_SMCR]) - rc = show_dev_smcr_info(&attrs[0]); - return rc; -} - -static void handle_cmd_params(int argc, char **argv) -{ - if (((argc == 1) && (contains(argv[0], "help") == 0)) || (argc > 4)) - usage(); - - if ((argc > 0) && (contains(argv[0], "show") != 0)) - PREV_ARG(); /* no object given, so use the default "show" */ - - while (NEXT_ARG_OK()) { - NEXT_ARG(); - if (ibdev_entered) { - snprintf(target_ibdev, sizeof(target_ibdev), "%s", argv[0]); - ibdev_entered = 0; - break; - } else if (netdev_entered) { - snprintf(target_ndev, sizeof(target_ndev), "%s", argv[0]); - netdev_entered = 0; - break; - } else if (type_entered) { - snprintf(target_type, sizeof(target_type), "%s", argv[0]); - if (strncmp(target_type, "smcd", SMC_TYPE_STR_MAX) == 0) { - dev_smcd = 1; - dev_smcr = 0; - } else if ((strnlen(target_type, sizeof(target_type)) < 4) || - (strncmp(target_type, "smcr", SMC_TYPE_STR_MAX) != 0)) { - print_type_error(); - } - type_entered = 0; - break; - } else if (contains(argv[0], "help") == 0) { - usage(); - } else if (contains(argv[0], "all") == 0) { - all_entered=1; -#if !defined(SMCD) && !defined(SMCR) - } else if (contains(argv[0], "type") == 0) { - type_entered=1; -#endif -#if !defined(SMCD) - } else if (contains(argv[0], "ibdev") == 0) { - ibdev_entered =1; - } else if (contains(argv[0], "netdev") == 0) { - netdev_entered =1; -#endif - } else { - usage(); - } - } - /* Too many parameters or wrong sequence of parameters */ - if (NEXT_ARG_OK()) - usage(); -} - -int invoke_devs(int argc, char **argv, int detail_level) -{ - int rc = EXIT_SUCCESS; - - d_level = detail_level; - handle_cmd_params(argc, argv); - if (dev_smcd) - rc = gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCD, handle_gen_dev_reply, NULL); - else - rc = gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCR, handle_gen_dev_reply, NULL); - - return rc; -} - -/* arg is an (int *) */ -static int count_ism_devices_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - int *ism_count = (int *)arg; - - if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, - (struct nla_policy *)smc_gen_net_policy) < 0) { - fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - - if (!attrs[SMC_GEN_DEV_SMCD]) - return NL_STOP; - - (*ism_count)++; - - return NL_OK; -} - -int dev_count_ism_devices(int *ism_count) -{ - *ism_count = 0; - return gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCD, count_ism_devices_reply, ism_count); -} - -struct count_roce_args { - int *rocev1_count; - int *rocev2_count; - int *rocev3_count; -}; - -/* arg is an (struct count_roce_args *) */ -static int count_roce_devices_reply(struct nl_msg *msg, void *arg) -{ - struct count_roce_args *args = (struct count_roce_args *)arg; - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - - if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, - (struct nla_policy *)smc_gen_net_policy) < 0) { - fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - - if (!attrs[SMC_GEN_DEV_SMCR]) - return NL_STOP; - - /* Determine PCI device type */ - { - struct nlattr *dev_attrs[SMC_NLA_DEV_MAX + 1]; - short i = 0; - - if (nla_parse_nested(dev_attrs, SMC_NLA_DEV_MAX, - attrs[SMC_GEN_DEV_SMCR], - smc_gen_dev_smcd_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_dev_smcd_sock_policy\n"); - return NL_STOP; - } - if (dev_attrs[SMC_NLA_DEV_PCI_DEVICE]) - i = nla_get_u16(dev_attrs[SMC_NLA_DEV_PCI_DEVICE]); - if (i == MASK_ROCE_V1_HEX) - (*args->rocev1_count)++; - if (i == MASK_ROCE_V2_HEX) - (*args->rocev2_count)++; - if (i == MASK_ROCE_V3_HEX) - (*args->rocev3_count)++; - } - - return NL_OK; -} - -int dev_count_roce_devices(int *rocev1_count, int *rocev2_count, int *rocev3_count) -{ - struct count_roce_args args = { - .rocev1_count = rocev1_count, - .rocev2_count = rocev2_count, - .rocev3_count = rocev3_count, - }; - - *rocev1_count = 0; - *rocev2_count = 0; - *rocev3_count = 0; - return gen_nl_handle_dump(SMC_NETLINK_GET_DEV_SMCR, count_roce_devices_reply, &args); -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/dev.h b/testcases/feature-test/oeaware/smc-tools-main/dev.h deleted file mode 100644 index e91685308..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/dev.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#ifndef DEV_H_ -#define DEV_H_ - -extern struct rtnl_handle rth; - -int invoke_devs(int argc, char **argv, int detail_level); -int dev_count_ism_devices(int *ism_count); -int dev_count_roce_devices(int *rocev1_count, int *rocev2_count, int *rocev3_count); - -#endif /* DEV_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/info.c b/testcases/feature-test/oeaware/smc-tools-main/info.c deleted file mode 100644 index 626191d5a..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/info.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2021 - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "util.h" -#include "libnetlink.h" -#include "info.h" -#include "dev.h" - -static int show_cmd = 0; -static int ism_count, rocev1_count, rocev2_count, rocev3_count; - -static struct nla_policy -smc_gen_info_policy[SMC_NLA_SYS_MAX + 1] = { - [SMC_NLA_SYS_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_SYS_VER] = { .type = NLA_U8 }, - [SMC_NLA_SYS_REL] = { .type = NLA_U8 }, - [SMC_NLA_SYS_IS_ISM_V2] = { .type = NLA_U8 }, - [SMC_NLA_SYS_LOCAL_HOST]= { .type = NLA_NUL_STRING }, - [SMC_NLA_SYS_SEID] = { .type = NLA_NUL_STRING }, - [SMC_NLA_SYS_IS_SMCR_V2]= { .type = NLA_U8 }, -}; - -static void usage(void) -{ - fprintf(stderr, -#if defined(SMCD) - "Usage: smcd info [show]\n" -#elif defined(SMCR) - "Usage: smcr info [show]\n" -#else - "Usage: smc info [show]\n" -#endif - ); - exit(-1); -} - -static int handle_gen_info_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *info_attrs[SMC_NLA_SYS_MAX + 1]; - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - int rc = NL_OK; - char tmp[80]; - int smc_version = 1; - - if (!show_cmd) - return rc; - - if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, - (struct nla_policy *)smc_gen_net_policy) < 0) { - fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - - if (!attrs[SMC_GEN_SYS_INFO]) - return rc; - - if (nla_parse_nested(info_attrs, SMC_NLA_DEV_MAX, - attrs[SMC_GEN_SYS_INFO], - smc_gen_info_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_info_policy\n"); - return NL_STOP; - } - - printf("Kernel Capabilities\n"); - - /* Version */ - tmp[0] = '\0'; - if (info_attrs[SMC_NLA_SYS_VER] && info_attrs[SMC_NLA_SYS_REL]) { - sprintf(tmp, "%d.%d", nla_get_u8(info_attrs[SMC_NLA_SYS_VER]), nla_get_u8(info_attrs[SMC_NLA_SYS_REL])); - smc_version = nla_get_u8(info_attrs[SMC_NLA_SYS_VER]); - } - printf("SMC Version: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); - - /* Hostname */ - tmp[0] = '\0'; - if (info_attrs[SMC_NLA_SYS_LOCAL_HOST]) { - sprintf(tmp, "%s", nla_get_string(info_attrs[SMC_NLA_SYS_LOCAL_HOST])); - } - printf("SMC Hostname: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); - - /* SMC-D */ - sprintf(tmp, "%s", "v1"); - if (smc_version >= 2) { - strcat(tmp, " v2"); - } - printf("SMC-D Features: %s\n", tmp); - - /* SMC-R */ - sprintf(tmp, "%s", "v1"); - if (info_attrs[SMC_NLA_SYS_IS_SMCR_V2] && nla_get_u8(info_attrs[SMC_NLA_SYS_IS_SMCR_V2])) { - strcat(tmp, " v2"); - } - printf("SMC-R Features: %s\n", tmp); - - printf("\n"); - printf("Hardware Capabilities\n"); - - /* SEID */ - tmp[0] = '\0'; - if (info_attrs[SMC_NLA_SYS_SEID]) { - sprintf(tmp, "%s", nla_get_string(info_attrs[SMC_NLA_SYS_SEID])); - } - printf("SEID: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); - - /* ISM hardware */ - tmp[0] = '\0'; - if (ism_count) { - /* Kernel found any ISM device */ - sprintf(tmp, "%s", "v1"); /* dev found, v1 is possible */ - if (info_attrs[SMC_NLA_SYS_IS_ISM_V2]) { - if (nla_get_u8(info_attrs[SMC_NLA_SYS_IS_ISM_V2])) - strcat(tmp, " v2"); - } - } - printf("ISM: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); - - /* RoCE hardware */ - tmp[0] = '\0'; - if (rocev1_count || rocev2_count || rocev3_count) { - /* Kernel found any RoCE device */ - strcpy(tmp, ""); - if (rocev1_count || rocev2_count || rocev3_count) - strcat(tmp, "v1 "); - if (rocev2_count || rocev3_count) - strcat(tmp, "v2"); - } - printf("RoCE: %s\n", (tmp[0] != '\0' ? tmp : "n/a")); - - return rc; -} - -static void handle_cmd_params(int argc, char **argv) -{ - if (argc == 0) { - show_cmd = 1; /* no object given, so use the default "show" */ - return; - } - - while (1) { - if (contains(argv[0], "help") == 0) { - usage(); - } else if (contains(argv[0], "show") == 0) { - show_cmd = 1; - break; - } else { - usage(); - } - if (!NEXT_ARG_OK()) - break; - NEXT_ARG(); - } - /* Too many parameters or wrong sequence of parameters */ - if (NEXT_ARG_OK()) - usage(); -} - -int invoke_info(int argc, char **argv, int detail_level) -{ - int rc = EXIT_SUCCESS; - - handle_cmd_params(argc, argv); - - if (show_cmd) { - if (dev_count_ism_devices(&ism_count)) { - fprintf(stderr, "Error: Failed to retrieve ISM device count\n"); - return EXIT_FAILURE; - } - if (dev_count_roce_devices(&rocev1_count, &rocev2_count, &rocev3_count)) { - fprintf(stderr, "Error: Failed to retrieve RoCE device count\n"); - return EXIT_FAILURE; - } - - rc = gen_nl_handle_dump(SMC_NETLINK_GET_SYS_INFO, handle_gen_info_reply, NULL); - } else { - printf("Error: Unknown command\n"); /* we should never come here ... */ - return EXIT_FAILURE; - } - - return rc; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/info.h b/testcases/feature-test/oeaware/smc-tools-main/info.h deleted file mode 100644 index ec5fa8db1..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/info.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2021 - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#ifndef INFO_H_ -#define INFO_H_ - -extern struct rtnl_handle rth; - -int invoke_info(int argc, char **argv, int detail_level); - -#endif /* INFO_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/libnetlink.c b/testcases/feature-test/oeaware/smc-tools-main/libnetlink.c deleted file mode 100644 index 753143309..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/libnetlink.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Ursula Braun - * Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "libnetlink.h" - -#define MAGIC_SEQ 123456 - -int smc_id = 0; -struct nl_sock *sk; - -/* Operations on sock_diag netlink socket */ - -int rtnl_open(struct rtnl_handle *rth) -{ - socklen_t addr_len; - int rcvbuf = 1024 * 1024; - int sndbuf = 32768; - - rth->fd = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, - NETLINK_SOCK_DIAG); - if (rth->fd < 0) { - perror("Error: Cannot open netlink socket"); - return EXIT_FAILURE; - } - if (setsockopt(rth->fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, - sizeof(sndbuf)) < 0) { - perror("Error: SO_SNDBUF"); - return EXIT_FAILURE; - } - if (setsockopt(rth->fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, - sizeof(rcvbuf)) < 0) { - perror("Error: SO_RCVBUF"); - return EXIT_FAILURE; - } - memset(&rth->local, 0, sizeof(rth->local)); - rth->local.nl_family = AF_NETLINK; - rth->local.nl_groups = 0; - if (bind(rth->fd, (struct sockaddr*)&rth->local, - sizeof(rth->local)) < 0) { - perror("Error: Cannot bind netlink socket"); - return EXIT_FAILURE; - } - addr_len = sizeof(rth->local); - if (getsockname(rth->fd, (struct sockaddr*)&rth->local, - &addr_len) < 0) { - perror("Error: getsockname"); - return EXIT_FAILURE; - } - if (addr_len != sizeof(rth->local)) { - fprintf(stderr, "Error: Wrong address length %d\n", addr_len); - return EXIT_FAILURE; - } - if (rth->local.nl_family != AF_NETLINK) { - fprintf(stderr, "Error: Wrong address family %d\n", - rth->local.nl_family); - return EXIT_FAILURE; - } - - rth->seq = time(NULL); - return 0; -} - -void rtnl_close(struct rtnl_handle *rth) -{ - if (rth->fd >= 0) { - close(rth->fd); - rth->fd = -1; - } -} - -int rtnl_dump(struct rtnl_handle *rth, void (*handler)(struct nlmsghdr *nlh)) -{ - int msglen, found_done = 0; - struct sockaddr_nl nladdr; - struct iovec iov; - struct msghdr msg = { - .msg_name = &nladdr, - .msg_namelen = sizeof(nladdr), - .msg_iov = &iov, - .msg_iovlen = 1, - }; - char buf[32768]; - struct nlmsghdr *h = (struct nlmsghdr *)buf; - - memset(buf, 0, sizeof(buf)); - iov.iov_base = buf; - iov.iov_len = sizeof(buf); -again: - msglen = recvmsg(rth->fd, &msg, 0); - if (msglen < 0) { - if (errno == EINTR || errno == EAGAIN) - goto again; - fprintf(stderr, "Error: Netlink receive error %s (%d)\n", - strerror(errno), errno); - return EXIT_FAILURE; - } - if (msglen == 0) { - fprintf(stderr, "Error: Unexpected EOF on netlink\n"); - return EXIT_FAILURE; - } - - while(NLMSG_OK(h, msglen)) { - if (h->nlmsg_flags & NLM_F_DUMP_INTR) - fprintf(stderr, "Error: Dump interrupted\n"); - if (h->nlmsg_type == NLMSG_DONE) { - found_done = 1; - break; - } - if (h->nlmsg_type == NLMSG_ERROR) { - if (h->nlmsg_len < NLMSG_LENGTH(sizeof(struct nlmsgerr))) { - fprintf(stderr, "Error: Incomplete message\n"); - } else { - perror("RTNETLINK answers"); - } - return EXIT_FAILURE; - } - (*handler)(h); - h = NLMSG_NEXT(h, msglen); - } - if (msg.msg_flags & MSG_TRUNC) { - fprintf(stderr, "Error: Message truncated\n"); - goto again; - } - if (!found_done) { - h = (struct nlmsghdr *)buf; - goto again; - } - return EXIT_SUCCESS; -} - -void parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, - int len) -{ - unsigned short type; - - memset(tb, 0, sizeof(struct rtattr *) * (max + 1)); - while (RTA_OK(rta, len)) { - type = rta->rta_type; - if ((type <= max) && (!tb[type])) - tb[type] = rta; - rta = RTA_NEXT(rta,len); - } - if (len) - fprintf(stderr, "Error: Deficit %d, rta_len=%d\n", len, rta->rta_len); -} - -int sockdiag_send(int fd, unsigned char cmd) -{ - struct sockaddr_nl nladdr = { .nl_family = AF_NETLINK }; - DIAG_REQUEST(req, struct smc_diag_req r, MAGIC_SEQ); - struct msghdr msg; - struct iovec iov[1]; - int iovlen = 1; - - memset(&req.r, 0, sizeof(req.r)); - req.r.diag_family = PF_SMC; - - iov[0] = (struct iovec) { - .iov_base = &req, - .iov_len = sizeof(req) - }; - - msg = (struct msghdr) { - .msg_name = (void *)&nladdr, - .msg_namelen = sizeof(nladdr), - .msg_iov = iov, - .msg_iovlen = iovlen, - }; - - req.r.diag_ext = cmd; - - if (sendmsg(fd, &msg, 0) < 0) { - close(fd); - return EXIT_FAILURE; - } - - return 0; -} - -/* Operations on generic netlink sockets */ - -int gen_nl_open(char *pname) -{ - int rc = EXIT_FAILURE; - - /* Allocate a netlink socket and connect to it */ - sk = nl_socket_alloc(); - if (!sk) { - nl_perror(NLE_NOMEM, "Error"); - return rc; - } - rc = genl_connect(sk); - if (rc) { - nl_perror(rc, "Error"); - rc = EXIT_FAILURE; - goto err1; - } - smc_id = genl_ctrl_resolve(sk, SMC_GENL_FAMILY_NAME); - if (smc_id < 0) { - rc = EXIT_FAILURE; - if (smc_id == -NLE_OBJ_NOTFOUND) - fprintf(stderr, "Error: SMC module not loaded\n"); - else - nl_perror(smc_id, "Error"); - goto err2; - } - - return EXIT_SUCCESS; -err2: - nl_close(sk); -err1: - nl_socket_free(sk); - return rc; - -} - -int gen_nl_handle(int cmd, int nlmsg_flags, - int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg) -{ - struct nl_msg *msg; - int rc; - - nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, arg); - - /* Allocate a netlink message and set header information. */ - msg = nlmsg_alloc(); - if (!msg) { - nl_perror(NLE_NOMEM, "Error"); - goto errout; - } - - if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, smc_id, 0, nlmsg_flags, - cmd, SMC_GENL_FAMILY_VERSION)) { - nl_perror(NLE_NOMEM, "Error"); - goto errout; - } - - /* Send message */ - rc = nl_send_auto(sk, msg); - if (rc < 0) { - nl_perror(rc, "Error"); - goto errout; - } - - /* Receive reply message, returns number of cb invocations. */ - rc = nl_recvmsgs_default(sk); - if (rc < 0) { - if (rc == -NLE_OPNOTSUPP) { - fprintf(stderr, "Error: Operation not supported by kernel\n"); - } else { - nl_perror(rc, "Error"); - } - goto errout; - } - - nlmsg_free(msg); - return EXIT_SUCCESS; - -errout: - nlmsg_free(msg); - return EXIT_FAILURE; -} - -int gen_nl_handle_dump(int cmd, int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg) -{ - return gen_nl_handle(cmd, NLM_F_DUMP, cb_handler, arg); -} - -void gen_nl_close() -{ - if (sk) { - nl_close(sk); - nl_socket_free(sk); - sk = NULL; - } -} - -uint64_t nl_attr_get_uint(const struct nlattr *nla) -{ - if (nla && nla_len(nla) == sizeof(uint32_t)) - return nla_get_u32(nla); - return nla_get_u64(nla); -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/libnetlink.h b/testcases/feature-test/oeaware/smc-tools-main/libnetlink.h deleted file mode 100644 index fe011329a..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/libnetlink.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Ursula Braun - * Guvenc Gulce - * - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#ifndef SMC_LIBNETLINK_H_ -#define SMC_LIBNETLINK_H_ -#include -#include -#include -#include -#include -#include -#include - -static const struct nla_policy smc_gen_net_policy[SMC_GEN_MAX + 1] = { - [SMC_GEN_UNSPEC] = { .type = NLA_UNSPEC, }, - [SMC_GEN_STATS] = { .type = NLA_NESTED, }, - [SMC_GEN_FBACK_STATS] = { .type = NLA_NESTED, }, -}; - -struct rtnl_handle { - int fd; - struct sockaddr_nl local; - struct sockaddr_nl peer; - __u32 seq; - __u32 dump; - int proto; - FILE *dump_fp; - int flags; -}; - -#define DIAG_REQUEST(_req, _r, _seq) \ - struct { \ - struct nlmsghdr nlh; \ - _r; \ - } _req = { \ - .nlh = { \ - .nlmsg_type = SOCK_DIAG_BY_FAMILY, \ - .nlmsg_flags = NLM_F_ROOT|NLM_F_REQUEST, \ - .nlmsg_seq = _seq, \ - .nlmsg_len = sizeof(_req), \ - }, \ - } - -int rtnl_open(struct rtnl_handle *rth); -void rtnl_close(struct rtnl_handle *rth); -int rtnl_dump(struct rtnl_handle *rth, void (*handler)(struct nlmsghdr *nlh)); -void parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len); -int sockdiag_send(int fd, unsigned char cmd); -void set_extension(int ext); -int gen_nl_open(); -void gen_nl_close(); -int gen_nl_handle(int cmd, int nlmsg_flags, - int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg); -int gen_nl_handle_dump(int cmd, int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg); -uint64_t nl_attr_get_uint(const struct nlattr *nla); -#endif /* SMC_LIBNETLINK_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/linkgroup.c b/testcases/feature-test/oeaware/smc-tools-main/linkgroup.c deleted file mode 100644 index 2c6e1390c..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/linkgroup.c +++ /dev/null @@ -1,636 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Guvenc Gulce - * - * User space program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "util.h" -#include "libnetlink.h" -#include "linkgroup.h" - -#define SMC_MASK_LINK_ID 0xFFFFFF00 -#define SMC_INVALID_LINK_ID 0xFFFFFFFF - -static __u32 unmasked_trgt_lgid = 0; -static int netdev_entered = 0; -static __u32 target_lgid = 0; -static int ibdev_entered = 0; -static int type_entered = 0; -static int all_entered = 0; -static int show_links = 0; -#if defined(SMCD) -static int lgr_smcr = 0; -static int lgr_smcd = 1; -#else -static int lgr_smcr = 1; -static int lgr_smcd = 0; -#endif -static int d_level = 0; - -static char target_ibdev[IB_DEVICE_NAME_MAX] = {0}; -static char target_type[SMC_TYPE_STR_MAX] = {0}; -static char target_ndev[IFNAMSIZ] = {0}; - -static struct nla_policy smc_gen_lgr_smcr_sock_policy[SMC_NLA_LGR_R_MAX + 1] = { - [SMC_NLA_LGR_R_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_LGR_R_ID] = { .type = NLA_U32 }, - [SMC_NLA_LGR_R_ROLE] = { .type = NLA_U8 }, - [SMC_NLA_LGR_R_TYPE] = { .type = NLA_U8 }, - [SMC_NLA_LGR_R_PNETID] = { .type = NLA_NUL_STRING, - .maxlen = SMC_MAX_PNETID_LEN + 1 }, - [SMC_NLA_LGR_R_VLAN_ID] = { .type = NLA_U8 }, - [SMC_NLA_LGR_R_CONNS_NUM] = { .type = NLA_U32 }, -}; - -static struct nla_policy smc_gen_lgr_smcd_sock_policy[SMC_NLA_LGR_D_MAX + 1] = { - [SMC_NLA_LGR_D_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_LGR_D_ID] = { .type = NLA_U32 }, - [SMC_NLA_LGR_D_PNETID] = { .type = NLA_NUL_STRING, - .maxlen = SMC_MAX_PNETID_LEN + 1 }, - [SMC_NLA_LGR_D_VLAN_ID] = { .type = NLA_U8 }, - [SMC_NLA_LGR_D_CONNS_NUM] = { .type = NLA_U32 }, -}; - -static struct nla_policy smc_gen_link_smcr_sock_policy[SMC_NLA_LINK_MAX + 1] = { - [SMC_NLA_LINK_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_LINK_ID] = { .type = NLA_U8 }, - [SMC_NLA_LINK_IB_DEV] = { .type = NLA_NUL_STRING, - .maxlen = IB_DEVICE_NAME_MAX + 1 }, - [SMC_NLA_LINK_IB_PORT] = { .type = NLA_U8 }, - [SMC_NLA_LINK_GID] = { .type = NLA_NUL_STRING, - .maxlen = 40 + 1 }, - [SMC_NLA_LINK_PEER_GID] = { .type = NLA_NUL_STRING, - .maxlen = 40 + 1 }, - [SMC_NLA_LINK_CONN_CNT] = { .type = NLA_U32 }, - [SMC_NLA_LINK_NET_DEV] = { .type = NLA_U32}, - [SMC_NLA_LINK_UID] = { .type = NLA_U32 }, - [SMC_NLA_LINK_PEER_UID] = { .type = NLA_U32 }, - [SMC_NLA_LINK_STATE] = { .type = NLA_U32 }, -}; - -static struct nla_policy smc_gen_lgr_v2_sock_policy[SMC_NLA_LGR_V2_MAX + 1] = { - [SMC_NLA_LGR_V2_VER] = { .type = NLA_U8 }, - [SMC_NLA_LGR_V2_REL] = { .type = NLA_U8 }, - [SMC_NLA_LGR_V2_OS] = { .type = NLA_U8 }, - [SMC_NLA_LGR_V2_NEG_EID] = { .type = NLA_NUL_STRING, - .maxlen = SMC_MAX_EID_LEN + 1 }, - [SMC_NLA_LGR_V2_PEER_HOST] = { .type = NLA_NUL_STRING, - .maxlen = SMC_MAX_HOSTNAME_LEN + 1 }, -}; - -static struct nla_policy smc_gen_lgr_r_v2_sock_policy[SMC_NLA_LGR_R_V2_MAX + 1] = { - [SMC_NLA_LGR_R_V2_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_LGR_R_V2_DIRECT] = { .type = NLA_U8 }, -}; - -static void usage(void) -{ - fprintf(stderr, -#if defined(SMCD) - "Usage: smcd linkgroup [show] [all | LG-ID]\n" -#elif defined(SMCR) - "Usage: smcr linkgroup [show | link-show] [all | LG-ID]\n" - " [ibdev ]\n" - " [netdev ]\n" -#else - "Usage: smc linkgroup [show | link-show] [all | LG-ID] [type {smcd | smcr}]\n" - " [ibdev ]\n" - " [netdev ]\n" -#endif - ); - exit(-1); -} - -static void print_lgr_smcr_header(void) -{ - if (!show_links && d_level >= SMC_DETAIL_LEVEL_V) - return; - - printf("LG-ID "); - printf("LG-Role "); - printf("LG-Type "); - if (show_links) { - printf("Net-Dev "); - printf("Link-State "); - printf("#Conns "); - if (d_level >= SMC_DETAIL_LEVEL_V) { - printf("Link-UID "); - printf("Peer-UID "); - printf("IB-Dev "); - printf("IB-P "); - if (d_level >= SMC_DETAIL_LEVEL_VV) { - printf("Local-GID "); - printf("Peer-GID "); - } - } - } else { - printf("VLAN "); - printf("#Conns "); - printf("PNET-ID "); - } - printf("\n"); -} - -static void print_lgr_smcd_header(void) -{ - if (d_level >= SMC_DETAIL_LEVEL_V) - return; - - printf("LG-ID "); - printf("VLAN "); - printf("#Conns "); - printf("PNET-ID " ); - - printf("\n"); -} - -static const char *smc_peer_os(unsigned int x) -{ - static char buf[32]; - - switch (x) { - case 1: return "ZOS"; - case 2: return "LINUX"; - case 3: return "AIX"; - default: sprintf(buf, "Unknown (%#x)", x); return buf; - } -} - -static const char *smc_link_state(unsigned int x) -{ - static char buf[16]; - - switch (x) { - case 0: return "LINK_UNUSED"; - case 1: return "LINK_INACTIVE"; - case 2: return "LINK_ACTIVATING"; - case 3: return "LINK_ACTIVE"; - default: sprintf(buf, "%#x?", x); return buf; - } -} - -static const char *smc_lgr_type(unsigned int x) -{ - static char buf[16]; - - switch (x) { - case 0: return "NONE"; - case 1: return "SINGLE"; - case 2: return "SYM"; - case 3: return "ASYMP"; - case 4: return "ASYML"; - default: sprintf(buf, "%#x?", x); return buf; - } -} - -static int filter_smcd_item(struct smcd_diag_dmbinfo_v2 *lgr) -{ - int ignore = 0; - - if (unmasked_trgt_lgid == 0 ) - return ignore; /* No filter set */ - else if (unmasked_trgt_lgid != lgr->v1.linkid) - ignore = 1; - - return ignore; -} - -static int filter_smcr_item(struct smc_diag_linkinfo_v2 *link, struct smc_diag_lgr *lgr) -{ - int ignore = 0; - - if (is_str_empty(target_ibdev) && is_str_empty(target_ndev) && - (unmasked_trgt_lgid == 0 )) { - return ignore; /* No filter set */ - }else if (!is_str_empty(target_ndev) && show_links) { - if (strncmp(target_ndev, (char*)link->netdev, sizeof(target_ndev)) == 0) - ignore = 0; - else - ignore = 1; - } else if (!is_str_empty(target_ibdev) && show_links) { - if (strncmp(target_ibdev, (char*)link->v1.ibname, sizeof(target_ibdev)) == 0) - ignore = 0; - else - ignore = 1; - } else if (unmasked_trgt_lgid != 0 ) { - if (target_lgid == *(__u32*)lgr->lgr_id) - ignore = 0; - else - ignore = 1; - } - - return ignore; -} - -static int fill_link_struct(struct smc_diag_linkinfo_v2 *link, struct nlattr **attrs) -{ - struct nlattr *link_attrs[SMC_NLA_LINK_MAX + 1]; - __u32 temp_link_uid; - - if (nla_parse_nested(link_attrs, SMC_NLA_LINK_MAX, - attrs[SMC_GEN_LINK_SMCR], - smc_gen_link_smcr_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_link_smcr_sock_policy\n"); - return NL_STOP; - } - if (link_attrs[SMC_NLA_LINK_STATE]) - link->link_state = nla_get_u32(link_attrs[SMC_NLA_LINK_STATE]); - if (link_attrs[SMC_NLA_LINK_CONN_CNT]) - link->conn_cnt = nla_get_u32(link_attrs[SMC_NLA_LINK_CONN_CNT]); - if (link_attrs[SMC_NLA_LINK_UID]) { - temp_link_uid = nla_get_u32(link_attrs[SMC_NLA_LINK_UID]); - memcpy(&link->link_uid[0], &temp_link_uid, sizeof(temp_link_uid)); - } - if (link_attrs[SMC_NLA_LINK_IB_PORT]) - link->v1.ibport = nla_get_u8(link_attrs[SMC_NLA_LINK_IB_PORT]); - if (link_attrs[SMC_NLA_LINK_PEER_UID]) { - temp_link_uid = nla_get_u32(link_attrs[SMC_NLA_LINK_PEER_UID]); - memcpy(&link->peer_link_uid[0], &temp_link_uid, sizeof(temp_link_uid)); - } - if (link_attrs[SMC_NLA_LINK_NET_DEV] && nla_get_u32(link_attrs[SMC_NLA_LINK_NET_DEV])) - if_indextoname(nla_get_u32(link_attrs[SMC_NLA_LINK_NET_DEV]), (char*)link->netdev); - if (link_attrs[SMC_NLA_LINK_IB_DEV]) - snprintf((char*)link->v1.ibname, sizeof(link->v1.ibname), "%s", - nla_get_string(link_attrs[SMC_NLA_LINK_IB_DEV])); - if (link_attrs[SMC_NLA_LINK_GID]) - snprintf((char*)link->v1.gid, sizeof(link->v1.gid), "%s", - nla_get_string(link_attrs[SMC_NLA_LINK_GID])); - if (link_attrs[SMC_NLA_LINK_PEER_GID]) - snprintf((char*)link->v1.peer_gid, sizeof(link->v1.peer_gid), "%s", - nla_get_string(link_attrs[SMC_NLA_LINK_PEER_GID])); - return NL_OK; -} - -static void fill_lgr_v2_common_struct(struct smc_v2_lgr_info *v2_lgr_info, struct nlattr **v2_lgr_attrs) -{ - if (v2_lgr_attrs[SMC_NLA_LGR_V2_VER]) - v2_lgr_info->smc_version = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_V2_VER]); - if (v2_lgr_attrs[SMC_NLA_LGR_V2_REL]) - v2_lgr_info->peer_smc_release = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_V2_REL]); - if (v2_lgr_attrs[SMC_NLA_LGR_V2_OS]) - v2_lgr_info->peer_os = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_V2_OS]); - if (v2_lgr_attrs[SMC_NLA_LGR_V2_NEG_EID]) - snprintf((char*)v2_lgr_info->negotiated_eid, - sizeof(v2_lgr_info->negotiated_eid), "%s", - nla_get_string(v2_lgr_attrs[SMC_NLA_LGR_V2_NEG_EID])); - if (v2_lgr_attrs[SMC_NLA_LGR_V2_PEER_HOST]) - snprintf((char*)v2_lgr_info->peer_hostname, - sizeof(v2_lgr_info->peer_hostname), "%s", - nla_get_string(v2_lgr_attrs[SMC_NLA_LGR_V2_PEER_HOST])); - v2_lgr_info->v2_lgr_info_received = 1; -} - -static int fill_lgr_struct(struct smc_diag_lgr *lgr, struct nlattr **attrs) -{ - struct nlattr *lgr_attrs[SMC_NLA_LGR_R_MAX + 1]; - - if (nla_parse_nested(lgr_attrs, SMC_NLA_LGR_R_MAX, - attrs[SMC_GEN_LGR_SMCR], - smc_gen_lgr_smcr_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_smcr_sock_policy\n"); - return NL_STOP; - } - if (lgr_attrs[SMC_NLA_LGR_R_ID]) - *(__u32*)lgr->lgr_id = nla_get_u32(lgr_attrs[SMC_NLA_LGR_R_ID]); - if (lgr_attrs[SMC_NLA_LGR_R_ROLE]) - lgr->lgr_role = nla_get_u8(lgr_attrs[SMC_NLA_LGR_R_ROLE]); - if (lgr_attrs[SMC_NLA_LGR_R_TYPE]) - lgr->lgr_type = nla_get_u8(lgr_attrs[SMC_NLA_LGR_R_TYPE]); - if (lgr_attrs[SMC_NLA_LGR_R_VLAN_ID]) - lgr->vlan_id = nla_get_u8(lgr_attrs[SMC_NLA_LGR_R_VLAN_ID]); - if (lgr_attrs[SMC_NLA_LGR_R_CONNS_NUM]) - lgr->conns_num = nla_get_u32(lgr_attrs[SMC_NLA_LGR_R_CONNS_NUM]); - if (lgr_attrs[SMC_NLA_LGR_R_PNETID]) - snprintf((char*)lgr->pnet_id, sizeof(lgr->pnet_id), "%s", - nla_get_string(lgr_attrs[SMC_NLA_LGR_R_PNETID])); - if (lgr_attrs[SMC_NLA_LGR_R_SNDBUF_ALLOC]) - lgr->sndbuf_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_R_SNDBUF_ALLOC]); - if (lgr_attrs[SMC_NLA_LGR_R_RMB_ALLOC]) - lgr->rmb_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_R_RMB_ALLOC]); - if (lgr_attrs[SMC_NLA_LGR_R_V2_COMMON]) { - struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_V2_MAX + 1]; - - if (nla_parse_nested(v2_lgr_attrs, SMC_NLA_LGR_V2_MAX, - lgr_attrs[SMC_NLA_LGR_R_V2_COMMON], - smc_gen_lgr_v2_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_v2_sock_policy\n"); - return NL_STOP; - } - fill_lgr_v2_common_struct(&lgr->v2_lgr_info, v2_lgr_attrs); - } - if (lgr_attrs[SMC_NLA_LGR_R_V2]) { - struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_R_V2_MAX + 1]; - - if (nla_parse_nested(v2_lgr_attrs, SMC_NLA_LGR_R_V2_MAX, - lgr_attrs[SMC_NLA_LGR_R_V2], - smc_gen_lgr_r_v2_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_r_v2_sock_policy\n"); - return NL_STOP; - } - if (v2_lgr_attrs[SMC_NLA_LGR_R_V2_DIRECT]) - lgr->v2_lgr_info.smcr_direct = nla_get_u8(v2_lgr_attrs[SMC_NLA_LGR_R_V2_DIRECT]); - } - - return NL_OK; -} - -static int fill_lgr_smcd_struct(struct smcd_diag_dmbinfo_v2 *lgr, struct nlattr **attrs) -{ - struct nlattr *lgr_attrs[SMC_NLA_LGR_D_MAX + 1]; - - if (nla_parse_nested(lgr_attrs, SMC_NLA_LGR_D_MAX, - attrs[SMC_GEN_LGR_SMCD], - smc_gen_lgr_smcd_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_smcd_sock_policy\n"); - return NL_STOP; - } - if (lgr_attrs[SMC_NLA_LGR_D_ID]) - lgr->v1.linkid = nla_get_u32(lgr_attrs[SMC_NLA_LGR_D_ID]); - if (lgr_attrs[SMC_NLA_LGR_D_VLAN_ID]) - lgr->vlan_id = nla_get_u8(lgr_attrs[SMC_NLA_LGR_D_VLAN_ID]); - if (lgr_attrs[SMC_NLA_LGR_D_CONNS_NUM]) - lgr->conns_num = nla_get_u32(lgr_attrs[SMC_NLA_LGR_D_CONNS_NUM]); - if (lgr_attrs[SMC_NLA_LGR_D_PNETID]) - snprintf((char*)lgr->pnet_id, sizeof(lgr->pnet_id), "%s", - nla_get_string(lgr_attrs[SMC_NLA_LGR_D_PNETID])); - if (lgr_attrs[SMC_NLA_LGR_D_SNDBUF_ALLOC]) - lgr->sndbuf_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_D_SNDBUF_ALLOC]); - if (lgr_attrs[SMC_NLA_LGR_D_DMB_ALLOC]) - lgr->dmb_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_D_DMB_ALLOC]); - if (lgr_attrs[SMC_NLA_LGR_D_V2_COMMON]) { - struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_V2_MAX + 1]; - - if (nla_parse_nested(v2_lgr_attrs, SMC_NLA_LGR_V2_MAX, - lgr_attrs[SMC_NLA_LGR_D_V2_COMMON], - smc_gen_lgr_v2_sock_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_lgr_v2_sock_policy\n"); - return NL_STOP; - } - fill_lgr_v2_common_struct(&lgr->v2_lgr_info, v2_lgr_attrs); - } - return NL_OK; -} - -static int show_lgr_smcr_info_lgr_details_first_loop = 1; - -static void show_lgr_smcr_info_lgr_details(struct smc_diag_lgr *lgr) -{ - if (!show_lgr_smcr_info_lgr_details_first_loop) - printf("\n"); /* separator line between link groups */ - else - show_lgr_smcr_info_lgr_details_first_loop = 0; - - printf("LG-ID : %08x\n", *(__u32*)lgr->lgr_id); - printf("LG-Role : %s\n", lgr->lgr_role ? "SERV" : "CLNT"); - printf("LG-Type : %s\n", smc_lgr_type(lgr->lgr_type)); - printf("VLAN : %x\n", lgr->vlan_id); - printf("PNET-ID : %s\n", trim_space((char *)lgr->pnet_id)); - printf("Version : %d\n", (lgr->v2_lgr_info.v2_lgr_info_received ? lgr->v2_lgr_info.smc_version : 1)); - if (lgr->v2_lgr_info.v2_lgr_info_received) { - printf("Peer-Rel : %d\n", lgr->v2_lgr_info.peer_smc_release); - printf("Peer-Host: %s\n", trim_space((char *)lgr->v2_lgr_info.peer_hostname)); - printf("Peer-OS : %s\n", smc_peer_os(lgr->v2_lgr_info.peer_os)); - printf("Direct : %s\n", (lgr->v2_lgr_info.smcr_direct ? "Yes" : "No")); - printf("EID : %s\n", lgr->v2_lgr_info.negotiated_eid); - } - printf("#Conns : %d\n", lgr->conns_num); - printf("Sndbuf : %lld B\n", lgr->sndbuf_alloc); - printf("RMB : %lld B\n", lgr->rmb_alloc); -} - -static int show_lgr_smcr_info(struct nlattr **attr) -{ - struct smc_diag_linkinfo_v2 link = {0}; - static struct smc_diag_lgr lgr = {0}; - int rc = NL_OK; - - if (attr[SMC_GEN_LGR_SMCR]) - rc = fill_lgr_struct(&lgr, attr); - - if (attr[SMC_GEN_LINK_SMCR]) - rc = fill_link_struct(&link, attr); - - if (attr[SMC_GEN_LGR_SMCR] && show_links) - return rc; - - if (filter_smcr_item(&link, &lgr)) - return rc; - - if (!show_links && d_level >= SMC_DETAIL_LEVEL_V) { - show_lgr_smcr_info_lgr_details(&lgr); - /* clear the (static) lgr struct for next lgr */ - memset(&lgr, 0, sizeof(lgr)); - return rc; - } - - printf("%08x ", *(__u32*)lgr.lgr_id); - printf("%-8s ", lgr.lgr_role ? "SERV" : "CLNT"); - printf("%-8s ", smc_lgr_type(lgr.lgr_type)); - if (show_links) { - if (strnlen((char*)link.netdev, sizeof(link.netdev)) > (IFNAMSIZ - 1)) - printf("%-.15s ", link.netdev); - else - printf("%-15s ", link.netdev); - printf("%-15s ", smc_link_state(link.link_state)); - printf("%6d ", link.conn_cnt); - if (d_level >= SMC_DETAIL_LEVEL_V) { - printf("%08x ", ntohl(*(__u32*)link.link_uid)); - printf("%08x ", ntohl(*(__u32*)link.peer_link_uid)); - if (strnlen((char*)link.v1.ibname, sizeof(link.v1.ibname)) > SMC_MAX_IBNAME) - printf("%-.8s ", link.v1.ibname); - else - printf("%-8s ", link.v1.ibname); - printf("%4d ", link.v1.ibport); - if (d_level >= SMC_DETAIL_LEVEL_VV) { - printf("%-40s ", link.v1.gid); - printf("%s ", link.v1.peer_gid); - } - } - } else { - printf("%#4x ", lgr.vlan_id); - printf(" %6d ", lgr.conns_num); - printf(" %-16s ", trim_space((char *)lgr.pnet_id)); - } - printf("\n"); - - return rc; -} - -static int show_lgr_smcd_info_lgr_details_first_loop = 1; - -static void show_lgr_smcd_info_lgr_details(struct smcd_diag_dmbinfo_v2 *lgr) -{ - if (!show_lgr_smcd_info_lgr_details_first_loop) - printf("\n"); /* separator line between link groups */ - else - show_lgr_smcd_info_lgr_details_first_loop = 0; - - printf("LG-ID : %08x\n", lgr->v1.linkid); - printf("VLAN : %x\n", lgr->vlan_id); - printf("PNET-ID : %s\n", trim_space((char *)lgr->pnet_id)); - printf("Version : %d\n", (lgr->v2_lgr_info.v2_lgr_info_received ? lgr->v2_lgr_info.smc_version : 1)); - if (lgr->v2_lgr_info.v2_lgr_info_received) { - printf("Peer-Rel : %d\n", lgr->v2_lgr_info.peer_smc_release); - printf("Peer-Host: %s\n", trim_space((char *)lgr->v2_lgr_info.peer_hostname)); - printf("Peer-OS : %s\n", smc_peer_os(lgr->v2_lgr_info.peer_os)); - printf("EID : %s\n", lgr->v2_lgr_info.negotiated_eid); - } - printf("#Conns : %d\n", lgr->conns_num); - printf("Sndbuf : %lld B\n", lgr->sndbuf_alloc); - printf("DMB : %lld B\n", lgr->dmb_alloc); -} - -static int show_lgr_smcd_info(struct nlattr **attr) -{ - struct smcd_diag_dmbinfo_v2 lgr = {0}; - int rc = NL_OK; - - if (attr[SMC_GEN_LGR_SMCD]) - rc = fill_lgr_smcd_struct(&lgr, attr); - - if(filter_smcd_item(&lgr)) - return rc; - - if (d_level >= SMC_DETAIL_LEVEL_V) { - show_lgr_smcd_info_lgr_details(&lgr); - return rc; - } - - printf("%08x ", lgr.v1.linkid); - printf("%#4x ", lgr.vlan_id); - printf("%6d ", lgr.conns_num); - printf("%-16s ", trim_space((char *)lgr.pnet_id)); - printf("\n"); - return rc; -} - -static int handle_gen_lgr_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - static int header_printed = 0; - int rc = NL_OK; - - if (!header_printed) { - if (lgr_smcd) - print_lgr_smcd_header(); - else - print_lgr_smcr_header(); - header_printed = 1; - } - - if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, - (struct nla_policy *)smc_gen_net_policy) < 0) { - fprintf(stderr, "Error: Invalid data returned: smc_gen_net_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - if (!attrs[SMC_GEN_LGR_SMCR] && !attrs[SMC_GEN_LINK_SMCR] && !attrs[SMC_GEN_LGR_SMCD]) - return NL_STOP; - - if (lgr_smcr && (attrs[SMC_GEN_LGR_SMCR] || attrs[SMC_GEN_LINK_SMCR])) - rc = show_lgr_smcr_info(&attrs[0]); - - if (lgr_smcd && attrs[SMC_GEN_LGR_SMCD]) - rc = show_lgr_smcd_info(&attrs[0]); - return rc; -} - -static void handle_cmd_params(int argc, char **argv) -{ - if (((argc == 1) && (contains(argv[0], "help") == 0)) || (argc > 4)) - usage(); - - if (argc > 0) { - if (contains(argv[0], "show") == 0) - show_links=0; - else if (contains(argv[0], "link-show") == 0) - show_links=1; - else - PREV_ARG(); /* no object given, so use the default "show" */ - } - - while (NEXT_ARG_OK()) { - NEXT_ARG(); - if (ibdev_entered) { - snprintf(target_ibdev, sizeof(target_ibdev), "%s", argv[0]); - ibdev_entered = 0; - break; - } else if (netdev_entered) { - snprintf(target_ndev, sizeof(target_ndev), "%s", argv[0]); - netdev_entered = 0; - break; - } else if (type_entered) { - snprintf(target_type, sizeof(target_type), "%s", argv[0]); - if (strncmp(target_type, "smcd", SMC_TYPE_STR_MAX) == 0) { - lgr_smcd = 1; - lgr_smcr = 0; - } else if ((strnlen(target_type, sizeof(target_type)) < 4) || - (strncmp(target_type, "smcr", SMC_TYPE_STR_MAX) != 0)) { - print_type_error(); - } - type_entered = 0; - break; - } else if (contains(argv[0], "help") == 0) { - usage(); - } else if (contains(argv[0], "all") == 0) { - all_entered=1; -#if !defined(SMCD) && !defined(SMCR) - } else if (contains(argv[0], "type") == 0) { - type_entered=1; -#endif -#if !defined(SMCD) - } else if (contains(argv[0], "ibdev") == 0) { - ibdev_entered =1; - } else if (contains(argv[0], "netdev") == 0) { - netdev_entered =1; -#endif - } else if (!all_entered){ - char *endptr = NULL; - - unmasked_trgt_lgid = (unsigned int)strtol(argv[0], &endptr, 16); - if (argv[0] == endptr) /* string doesn't contain any digits */ - unmasked_trgt_lgid = SMC_INVALID_LINK_ID; - else - target_lgid = (unmasked_trgt_lgid & SMC_MASK_LINK_ID); - break; - } else { - usage(); - } - } - /* Too many parameters or wrong sequence of parameters */ - if (NEXT_ARG_OK()) - usage(); -} - -int invoke_lgs(int argc, char **argv, int detail_level) -{ - int rc = EXIT_SUCCESS; - - d_level = detail_level; - handle_cmd_params(argc, argv); - if (lgr_smcd) - rc = gen_nl_handle_dump(SMC_NETLINK_GET_LGR_SMCD, handle_gen_lgr_reply, NULL); - else if (show_links) - rc = gen_nl_handle_dump(SMC_NETLINK_GET_LINK_SMCR, handle_gen_lgr_reply, NULL); - else - rc = gen_nl_handle_dump(SMC_NETLINK_GET_LGR_SMCR, handle_gen_lgr_reply, NULL); - - return rc; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/linkgroup.h b/testcases/feature-test/oeaware/smc-tools-main/linkgroup.h deleted file mode 100644 index bb709f72f..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/linkgroup.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Guvenc Gulce - * - * User space program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#ifndef LINKGROUP_H_ -#define LINKGROUP_H_ -extern struct rtnl_handle rth; - -int invoke_lgs(int argc, char **argv, int detail_level); - -#endif /* LINKGROUP_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/seid.c b/testcases/feature-test/oeaware/smc-tools-main/seid.c deleted file mode 100644 index fe95ecd2f..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/seid.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "util.h" -#include "libnetlink.h" -#include "seid.h" - -static int enable_cmd = 0; -static int disable_cmd = 0; -static int show_cmd = 0; - -extern int smc_id; -extern struct nl_sock *sk; - -const struct nla_policy -smc_gen_seid_policy[SMC_NLA_SEID_TABLE_MAX + 1] = { - [SMC_NLA_SEID_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_SEID_ENTRY] = { .type = NLA_NUL_STRING }, - [SMC_NLA_SEID_ENABLED] = { .type = NLA_U8 }, -}; - -static void usage(void) -{ - fprintf(stderr, - "Usage: smcd seid [show]\n" - " smcd seid enable\n" - " smcd seid disable\n" - ); - exit(-1); -} - -/* arg is an (int *) */ -static int is_seid_defined_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - int *is_seid = (int *)arg; - - if (genlmsg_parse(hdr, 0, attrs, SMC_NLA_SEID_TABLE_MAX, - (struct nla_policy *)smc_gen_seid_policy) < 0) { - fprintf(stderr, "Error: Invalid data returned: smc_gen_seid_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - - if (!attrs[SMC_NLA_SEID_ENTRY]) - *is_seid = 0; - else - *is_seid = 1; - - return NL_OK; -} - -static int is_seid_defined(int *is_seid) -{ - *is_seid = 0; - return gen_nl_handle_dump(SMC_NETLINK_DUMP_SEID, is_seid_defined_reply, is_seid); -} - -static int handle_gen_seid_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *attrs[SMC_NLA_SEID_TABLE_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - int rc = NL_OK; - char *state; - - if (!show_cmd) - return rc; - - if (genlmsg_parse(hdr, 0, attrs, SMC_NLA_SEID_TABLE_MAX, - (struct nla_policy *)smc_gen_seid_policy) < 0) { - fprintf(stderr, "Error: invalid data returned: smc_gen_seid_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - - if (!attrs[SMC_NLA_SEID_ENTRY] || !attrs[SMC_NLA_SEID_ENABLED]) { - printf("n/a\n"); - return NL_STOP; - } - - if (nla_get_u8(attrs[SMC_NLA_SEID_ENABLED])) - state = "[enabled]"; - else - state = "[disabled]"; - - printf("%s %s\n", nla_get_string(attrs[SMC_NLA_SEID_ENTRY]), state); - return rc; -} - -int gen_nl_seid_handle(int cmd, char dump, int (*cb_handler)(struct nl_msg *msg, void *arg)) -{ - int rc = EXIT_FAILURE, nlmsg_flags = 0; - struct nl_msg *msg; - - nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, NULL); - - /* Allocate a netlink message and set header information. */ - msg = nlmsg_alloc(); - if (!msg) { - nl_perror(NLE_NOMEM, "Error"); - rc = EXIT_FAILURE; - goto err; - } - - if (dump) - nlmsg_flags = NLM_F_DUMP; - - if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, smc_id, 0, nlmsg_flags, - cmd, SMC_GENL_FAMILY_VERSION)) { - nl_perror(rc, "Error"); - rc = EXIT_FAILURE; - goto err; - } - - /* Send message */ - rc = nl_send_auto(sk, msg); - if (rc < 0) { - nl_perror(rc, "Error"); - rc = EXIT_FAILURE; - goto err; - } - - /* Receive reply message, returns number of cb invocations. */ - rc = nl_recvmsgs_default(sk); - - if (rc < 0) { - /* For cmd "SEID disable" the kernel might return ENOENT when - * no UEID is defined and the SEID cannot be disabled. - * This is mapped to NLE_OBJ_NOTFOUND in libnl, lib/error.c. - */ - if (rc == -NLE_OPNOTSUPP) { - fprintf(stderr, "Error: operation not supported by kernel\n"); - } else if (cmd == SMC_NETLINK_DISABLE_SEID && rc == -NLE_OBJ_NOTFOUND) { - fprintf(stderr, "Error: System EID cannot be disabled because no User EID is defined\n"); - } else { - nl_perror(rc, "Error"); - } - rc = EXIT_FAILURE; - goto err; - } - - nlmsg_free(msg); - return EXIT_SUCCESS; -err: - nlmsg_free(msg); - return rc; -} - -static void handle_cmd_params(int argc, char **argv) -{ - if (argc == 0) { - show_cmd = 1; /* no object given, so use the default "show" */ - return; - } - - while (1) { - if (contains(argv[0], "help") == 0) { - usage(); - } else if (contains(argv[0], "enable") == 0) { - enable_cmd = 1; - } else if (contains(argv[0], "disable") == 0) { - disable_cmd = 1; - } else if (contains(argv[0], "show") == 0) { - show_cmd = 1; - break; - } else { - usage(); - } - if (!NEXT_ARG_OK()) - break; - NEXT_ARG(); - } - /* Too many parameters or wrong sequence of parameters */ - if (NEXT_ARG_OK()) - usage(); - - /* Only single cmd expected */ - if ((enable_cmd + disable_cmd + show_cmd) != 1) - usage(); -} - -int invoke_seid(int argc, char **argv, int detail_level) -{ - int rc = EXIT_SUCCESS; - - handle_cmd_params(argc, argv); - - if (enable_cmd || disable_cmd) { - int is_seid = 0; - - is_seid_defined(&is_seid); - if (!is_seid) { - printf("Error: System EID not available\n"); - return EXIT_FAILURE; - } - } - - if (enable_cmd) { - rc = gen_nl_seid_handle(SMC_NETLINK_ENABLE_SEID, 0, handle_gen_seid_reply); - } else if (disable_cmd) { - rc = gen_nl_seid_handle(SMC_NETLINK_DISABLE_SEID, 0, handle_gen_seid_reply); - } else if (show_cmd) { - rc = gen_nl_seid_handle(SMC_NETLINK_DUMP_SEID, 1, handle_gen_seid_reply); - } else { - printf("Error: unknown command\n"); /* we should never come here ... */ - } - - return rc; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/seid.h b/testcases/feature-test/oeaware/smc-tools-main/seid.h deleted file mode 100644 index 6181a7574..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/seid.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#ifndef SEID_H_ -#define SEID_H_ - -extern struct rtnl_handle rth; - -int invoke_seid(int argc, char **argv, int detail_level); - -#endif /* SEID_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-device.8 b/testcases/feature-test/oeaware/smc-tools-main/smc-device.8 deleted file mode 100644 index 171e089e8..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc-device.8 +++ /dev/null @@ -1,162 +0,0 @@ -.\" smc-device.8 -.\" -.\" -.\" Copyright IBM Corp. 2020 -.\" Author(s): Guvenc Gulce -.\" ---------------------------------------------------------------------- -.\" -.TH SMC-DEVICE 8 "June 2020" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smc-device \- Print information about SMC devices -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smc -.RI "[ " OPTIONS " ]" -.B device -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.ti -8 -.BR "smc device" -.RI "[" -.B "show" -.RI "] [" -.B "all" -.RI "] [ " -.B type -.IR TYPE " ] [ " -.B netdev -.IR NETDEV " ] [ " -.B ibdev -.IR IBDEV " ] - -.ti -8 -.IR TYPE " := [ " -.BR smcr " | " -.BR smcd " ]" - -.SH "DESCRIPTION" -The -.B smc device -command displays SMC devices and their properties. Devices can be -listed for SMC-R and SMC-D. The command operates with SMC-R type -per default on all command levels. - -.SS smc device show - look at the device properties - -.TP -.B all (default) -Show all the devices. - -.TP -.BI type " TYPE" -List only the devices of the given type. - -.TP -.BI netdev " NETDEV" -List only the device with the given network device name. - -.TP -.BI ibdev " IBDEV" -List only the device ports with the given RoCE (InfiniBand) device name. - -.SH OUTPUT - -.SS "Net-Dev" -Network device name. -.SS "IB-Dev" -RoCE (InfiniBand) device name. -.SS "IB-P" -InfiniBand port of the RoCE device. -.SS "IB-State" -State of the RoCE device port. -.TP -.I -INACTIVE -The RoCE device port is inactive. -.TP -.I -ACTIVE -The RoCE device port is active. -.SS "Type" -Type of the underlying PCI device. -.TP -.I -RoCE_Express -Underlying used device is RoCE Express. -.TP -.I -RoCE_Express2 -Underlying used device is RoCE Express 2. -.TP -.I -RoCE_Express3 -Underlying used device is RoCE Express 3. -.TP -.I -ISM -Underlying used device is ISM. -.SS "Crit" -Show whether the device is critical i.e. without failover possibility. -.TP -.I -Yes -In case of SMC-R, there is at least one linkgroup running on the -device with state "SINGLE" or locally "ASYMMETRIC" which -means the linkgroups do not have any fail-over device in case of -a failure. -In case of SMC-D, there is at least one linkgroup running on the -ISM device. -.TP -.I -No -In case of SMC-R, there is no linkgroup running on the device with -state "SINGLE" or locally "ASYMMETRIC" which means the linkgroup(s) -have a fallback device in case of a failure. -In case of SMC-D, there is no linkgroup running on the ISM device. -.SS "FID" -Functional ID of the PCI device. -.SS "PCI-ID" -ID of the PCI device. -.SS "PCHID" -Physical channel ID of the PCI device. -.SS "#Links" -Number of links(SMC-R)/linkgroups(SMC-D) on the device. -.SS "PNET-ID" -PNET-ID of the device. "*" means PNET-ID is set by the user. - -.SH "EXAMPLES" -.br -1. Show all devices of the type smcd: -.br - -\fB# smc device show all type smcd\fP -.br - -2. Show all devices of the type smcr: -.br - -\fB# smc devices show all type smcr\fP -.br - -3. Shows all devices with RoCE (InfiniBand) device name "mlx4_0": -.br - -\fB# smc device show ibdev mlx4_0\fP -.br - -4. Shows all devices with network device name "eth0": -.br - -\fB# smc device show netdev eth0\fP -.br - -.SH SEE ALSO -.br -.BR smcd (8), -.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 b/testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 deleted file mode 100644 index 4d296ac69..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc-linkgroup.8 +++ /dev/null @@ -1,216 +0,0 @@ -.\" smc-linkgroup.8 -.\" -.\" -.\" Copyright IBM Corp. 2020 -.\" Author(s): Guvenc Gulce -.\" ---------------------------------------------------------------------- -.\" -.TH SMC-LINKGROUP 8 "June 2020" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smc-linkgroup \- Print information about SMC linkgroups and links -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smc -.RI "[ " OPTIONS " ]" -.B linkgroup -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.ti -8 -.BR "smc linkgroup" " { " show " | " link-show " } [" -.B "all " -.RI "| " LG-ID " ] [ " -.B type -.IR TYPE " ] [ " -.B netdev -.IR NETDEV " ] [ " -.B ibdev -.IR IBDEV " ] - -.ti -8 -.IR TYPE " := [ " -.BR smcr " | " -.BR smcd " ]" - -.SH "DESCRIPTION" -The -.B smc linkgroup -command displays linkgroups, links and their properties. Links can be -listed only for SMC-R linkgroups. The command operates with type smcr -per default on all command levels. - -.SS smc linkgroup show - look at the linkgroup properties - -.TP -.B all (default) -Show all the linkgroups. - -.TP -.I LG-ID -Show the linkgroup with the id -.I LG-ID - -.TP -.BI type " TYPE" -List only linkgroups of the given type. - -.TP -.BI netdev " NETDEV" -List linkgroups making use of the given network device only. - -.TP -.BI ibdev " IBDEV" -List only linkgroups of the given RoCE (infiniband) device. - -.SS smc linkgroup link-show - look at the link properties (SMC-R only) - -.TP -.B all (default) -Show all the links of the linkgroups. - -.TP -.I LG-ID -Show links of the linkgroup with the id -.I LG-ID - -.TP -.BI type " TYPE" -List only links of the linkgroups of the given type. - -.TP -.BI netdev " NETDEV" -List only links of the linkgroups making use of the given network device. - -.TP -.BI ibdev " IBDEV" -List only links of the linkgroups of the given RoCE (InfiniBand) device. - -.SH OUTPUT - -.SS "LG-ID" -ID of the linkgroup. -.SS "LG-Role" -Role of the linkgroup. -.TP -.I -SERV -The linkgroup has a SERVER role. -.TP -.I -CLNT -The linkgroup has a CLIENT role. -.SS "LG-Type" -Linkgroup type of the linkgroup. -.TP -.I -NONE -The linkgroup has the initial type. -.TP -.I -SINGLE -The linkgroup has only a single link, i.e. -the local and the peer system can offer one device port only for this linkgroup, -which means a link outage on any side cannot be covered. -.TP -.I -SYM -The linkgroup has two symmetric links, i.e. -the local and the peer system can offer two device ports for this linkgroup, -which means a link outage on any side can be covered. -.TP -.I -ASYMP -The linkgroup has asymmetric links, i.e. -the peer system can offer one device port only for this linkgroup, -which means a link outage on the peer side cannot be covered. -.TP -.I -ASYML -The linkgroup has asymmetric links, i.e. -the local system can offer one device port only for this linkgroup, -which means a link outage on the local side cannot be covered. -.SS "VLAN" -VLAN the linkgroup belongs to. -.SS "#Conns" -Number of connections(sockets) running on the link/linkgroup. -.SS "PNET-ID" -PNET-ID of the linkgroup. "*" means PNET-ID is set by the user. -.SS "Net-Dev" -Network device name corresponding to the link. -.SS "Link-State" -The state of the link. -.TP -.I -LINK_UNUSED -The link is not in use and in initial state. -.TP -.I -LINK_INACTIVE -The link is inactive and will go away. -.TP -.I -LINK_ACTIVATING -The link is being activated with the peer. -.TP -.I -LINK_ACTIVE -The link is active and operates on an established link with the peer. -Data is being exchanged via RDMA. -.SS "Link-UID" -Unique identifier of the link. This identifier consists of linkgroup id and -link id. -.SS "Peer-UID" -Unique identifier of the link on peer side. This identifier consists of -linkgroup id and link id. -.SS "IB-Dev" -Name of the RoCE device used by the link. -.SS "IB-P" -Port of the RoCE device used by the link. -.SS "Local-GID" -GID of the RoCE port used by the link. -.SS "Peer-GID" -GID of the peer RoCE port used by the link. - -.SH "EXAMPLES" - -.br - -1. Show all linkgroups of the type smcd: -.br - -\fB# smc linkgroup show all type smcd\fP -.br - -2. Show all links of the linkgroups with type smcr: -.br - -\fB# smc linkgroup link-show all type smcr\fP -.br - -3. Show all links with linkgroup id 40: -.br - -\fB# smc linkgroup link-show 40\fP -.br - -4. Show all links on RoCE device "mlx4_0": -.br - -\fB# smc linkgroup link-show ibdev mlx4_0\fP -.br - -5. Shows all links on network device "eth0": -.br - -\fB# smc linkgroup link-show netdev eth0\fP -.br - -.SH SEE ALSO -.br -.BR smcd (8), -.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-preload.c b/testcases/feature-test/oeaware/smc-tools-main/smc-preload.c deleted file mode 100644 index 55c7e5c89..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc-preload.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2016, 2018 - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define DLOPEN_FLAG RTLD_LAZY - -#ifndef AF_SMC -#define AF_SMC 43 -#endif - -#ifndef SMCPROTO_SMC -#define SMCPROTO_SMC 0 /* SMC protocol, IPv4 */ -#define SMCPROTO_SMC6 1 /* SMC protocol, IPv6 */ -#endif - -int (*orig_socket)(int domain, int type, int protocol) = NULL; -static void *dl_handle = NULL; -static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - -static void initialize(void); - -static int debug_mode = 0; - -#define GET_FUNC(x) \ -if (dl_handle) { \ - char *err; \ - dlerror(); \ - orig_ ## x=dlsym(dl_handle,#x); \ - if ((!orig_ ## x)&&(err=dlerror())) { \ - fprintf(stderr, "dlsym failed on " #x ": %s\n",err); \ - orig_ ## x=&emergency_ ## x; \ - } \ -} else { \ - orig_ ## x=&emergency_ ## x; \ -} - -static void dbg_msg(FILE *f, const char *format, ...) -{ - va_list vl; - - if (debug_mode) { - va_start(vl, format); - vfprintf(f, format, vl); - va_end(vl); - } -} - -static int emergency_socket(int domain, int type, int protocol) -{ - errno = EINVAL; - return -1; -} - -static void set_bufsize(int socket, int opt, const char *envname) { - char *val, *end; - int size; - int rc; - - val = getenv(envname); - if (!val) - return; - size = strtol(val, &end, 10); - if (end != NULL) { - switch (toupper(*end)) { - case 'K': size *= 1024; - break; - case 'M': size *= 1048576; - break; - default: break; - } - } - rc = setsockopt(socket, SOL_SOCKET, opt, &size, sizeof(size)); - dbg_msg(stderr, "sockopt %d set to %d\n", opt, size, rc); -} - -int socket(int domain, int type, int protocol) -{ - int rc; - - if (!orig_socket) - initialize(); - - /* check if socket is eligible for AF_SMC */ - if ((domain == AF_INET || domain == AF_INET6) && - // see kernel code, include/linux/net.h, SOCK_TYPE_MASK - (type & 0xf) == SOCK_STREAM && - (protocol == IPPROTO_IP || protocol == IPPROTO_TCP)) { - dbg_msg(stderr, "libsmc-preload: map sock to AF_SMC\n"); - if (domain == AF_INET) - protocol = SMCPROTO_SMC; - else /* AF_INET6 */ - protocol = SMCPROTO_SMC6; - - domain = AF_SMC; - } - - rc = (*orig_socket)(domain, type, protocol); - if (rc != -1) { - set_bufsize(rc, SO_SNDBUF, "SMC_SNDBUF"); - set_bufsize(rc, SO_RCVBUF, "SMC_RCVBUF"); - } - - return rc; -} - -static void set_debug_mode(const char *var_name) -{ - char *var_value; - - var_value = getenv(var_name); - debug_mode = 0; - if (var_value != NULL) - debug_mode = (var_value[0] != '0'); -} - -static void initialize(void) -{ - pthread_mutex_lock(&mutex); - if (orig_socket) { - pthread_mutex_unlock(&mutex); - return; - } - - set_debug_mode("SMC_DEBUG"); - - dl_handle = dlopen(LIBC_SO, DLOPEN_FLAG); - if (!dl_handle) - dbg_msg(stderr, "dlopen failed: %s\n", dlerror()); - GET_FUNC(socket); - pthread_mutex_unlock(&mutex); -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete b/testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete deleted file mode 100644 index 40e979a5f..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc-tools.autocomplete +++ /dev/null @@ -1,140 +0,0 @@ -_smc() -{ - local cur prev opts - COMPREPLY=() - cur="${COMP_WORDS[COMP_CWORD]}" - prev="${COMP_WORDS[COMP_CWORD-1]}" - opts="device linkgroup info stats ueid -a -d -dd -v" - opts_smcd="device linkgroup info stats ueid seid -a -d -v" - opts_short="device linkgroup" - opts_show="show link-show" - opts_show_smcd="show" - opts_stats="show reset" - opts_ueid="show add del flush" - opts_seid="show enable disable" - opts_type="smcd smcr" - opts_final="all netdev ibdev" - opts_final_smcd="all" - case "${prev}" in - -v) - if [ $1 = "smcr" ]; then - COMPREPLY=( $(compgen -W "${opts_short}" -- ${cur})) - fi - return 0 - ;; - -vv) - if [ $1 = "smcr" ]; then - COMPREPLY=( $(compgen -W "${opts_short}" -- ${cur})) - fi - return 0 - ;; - device) - if [ $1 = "smcr" ]; then - COMPREPLY=( $(compgen -W "${opts_show}" -- ${cur})) - else - COMPREPLY=( $(compgen -W "${opts_show_smcd}" -- ${cur})) - fi - return 0 - ;; - linkgroup) - if [ $1 = "smcr" ]; then - COMPREPLY=( $(compgen -W "${opts_show}" -- ${cur}) ) - else - COMPREPLY=( $(compgen -W "${opts_show_smcd}" -- ${cur}) ) - fi - return 0 - ;; - info) - COMPREPLY=( $(compgen -W "${opts_show_smcd}" -- ${cur}) ) - return 0 - ;; - show) - if [ $1 = "smcr" ]; then - COMPREPLY=( $(compgen -W "${opts_final}" -- ${cur}) ) - else - COMPREPLY=( $(compgen -W "${opts_final_smcd}" -- ${cur}) ) - fi - return 0 - ;; - link-show) - COMPREPLY=( $(compgen -W "${opts_final}" -- ${cur}) ) - return 0 - ;; - smcd) - COMPREPLY=( $(compgen -W "${opts_smcd}" -- ${cur}) ) - return 0 - ;; - smcr) - COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) - return 0 - ;; - stats) - COMPREPLY=( $(compgen -W "${opts_stats}" -- ${cur}) ) - return 0 - ;; - ueid) - COMPREPLY=( $(compgen -W "${opts_ueid}" -- ${cur}) ) - return 0 - ;; - seid) - COMPREPLY=( $(compgen -W "${opts_seid}" -- ${cur}) ) - return 0 - ;; - *) - ;; - esac -} - -function _smc_pnet_complete_() { - case "${COMP_WORDS[COMP_CWORD-1]}" in - --interface*|-I*) - COMPREPLY=($(compgen -W "$(ls -1 /sys/class/net/)" -- "${COMP_WORDS[COMP_CWORD]}")) - return;; - --ibdevice*|-D*) - which smc_rnics >/dev/null - if [ $? -eq 0 ]; then - COMPREPLY=($(compgen -W "$(smc_rnics | tail -n +3 | awk '{print($3)}' | uniq)" -- "${COMP_WORDS[COMP_CWORD]}")) - else - COMPREPLY=($(compgen -W "$(ls -1 /sys/bus/pci/devices)" -- "${COMP_WORDS[COMP_CWORD]}")) - fi - return;; - --ibport*|-P*) - ;; - esac - - COMPREPLY=($(compgen -W "--help --version --add --delete --show --flush --interface --ibdevice --ibport" -- "${COMP_WORDS[COMP_CWORD]}")) -} - -function _smc_rnics_complete_() { - case "${COMP_WORDS[COMP_CWORD-1]}" in - --enable|-e) - COMPREPLY=($(compgen -W "$(smc_rnics | grep -e "^ [[:space:]0-9a-f]\{2\} 0" | awk '{print($1)}')" -- "${COMP_WORDS[COMP_CWORD]}")) - return;; - --disable|-d) - COMPREPLY=($(compgen -W "$(smc_rnics | grep -e "^ [[:space:]0-9a-f]\{2\} 1" | awk '{print($1)}')" -- "${COMP_WORDS[COMP_CWORD]}")) - return;; - esac - - COMPREPLY=($(compgen -W "--help --version --disable --enable --rawids" -- "${COMP_WORDS[COMP_CWORD]}")) -} - -function _smc_chk_complete_() { - case "${COMP_WORDS[COMP_CWORD-1]}" in - --pnetid|-i) - COMPREPLY=($(compgen -W "$(ip link show | grep -e "^[0-9]\+:" | awk '{print($2)}' | sed s'/:$//') $(ip link show up | grep -e "^\s*altname" | awk '{print($2)}')" -- "${COMP_WORDS[COMP_CWORD]}")) - return;; - --connect|-C|--port|-p) - COMPREPLY=() - return;; - esac - - COMPREPLY=($(compgen -W "$(ip link show up | grep -e "^[0-9]\+:" | awk '{print($2)}' | sed s'/:$//') $(ip link show up | grep -e "^\s*altname" | awk '{print($2)}') --connect --help --version --debug --pnetid --port --server --static-analysis --live-test --ipv6" -- "${COMP_WORDS[COMP_CWORD]}")) -} - -complete -W "--help --tgz --version" smc_dbg -complete -W "--help --version --all --listening --debug --wide --smcd --smcr" smcss -complete -F _smc smcd -complete -F _smc smcr -complete -F _smc_pnet_complete_ smc_pnet -complete -F _smc_rnics_complete_ smc_rnics -complete -F _smc_chk_complete_ smc_chk diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc.8 b/testcases/feature-test/oeaware/smc-tools-main/smc.8 deleted file mode 100644 index c1ec64d8f..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc.8 +++ /dev/null @@ -1,110 +0,0 @@ -.\" smc.8 -.\" -.\" -.\" Copyright IBM Corp. 2020 -.\" Author(s): Guvenc Gulce -.\" ---------------------------------------------------------------------- -.\" -.TH SMC 8 "June 2020" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smc \- Print information about SMC linkgroups, links, devices - -.SH SYNOPSIS -.B smc -.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " -.BR help " }" -.sp - -.IR OBJECT " := { " -.BR device " | " info " | " linkgroup " | " stats " }" -.sp - -.IR OPTIONS " := { " -\fB\-V\fR[\fIersion\fR] | -\fB\-a\fR[\fIbsolute\fR] | -\fB\-v\fR[\fIerbose\fR] | -\fB\-vv\fR[\fIerbose\fR]} - -.SH OPTIONS - -.TP -.BR "\-V" , " -Version" -Print the version of the -.B smc -utility and exit. - -.TP -.BR "\-a", " \-absolute" -Print absolute statistic value (valid only for stats). - -.TP -.BR "\-v", " \-verbose" -Print detailed information. - -.TP -.BR "\-vv", " \-vverbose" -Print more detailed information. - -.SH SMC - COMMAND SYNTAX - -.SS -.I OBJECT - -.B device -Device(s) as used by SMC - -.TP -.B info -Generic SMC information - -.TP -.B linkgroup -Linkgroup(s) or link(s) as used by SMC - -.TP -.B stats -SMC statistics - -.PP -The names of all objects can be abbreviated down to -a unique stem. For example, -.B device -can be abbreviated to -.B dev -or just -.B d. -Man pages in -.B SEE ALSO -section contain more -information for individual objects. - -.SS -.I COMMAND - -Specifies the action to perform on the object. -The set of possible actions depends on the object type. -As a rule, it is possible to -.BR " show " or " link-show" -objects, but some objects do not allow all of these operations. The -.B help -command is available for all objects. It prints -out a list of available commands and argument syntax conventions. -.sp -If no command is given, a default command -is assumed. - -.SH RETURN CODES -Successful -.IR smc -commands return 0 and display the requested information. -If an error occurs, -.IR smc -writes a message to stderr and completes with a return code other than 0. -.P -.SH SEE ALSO -.BR af_smc (7), -.BR smc-device (8), -.BR smc-info (8), -.BR smc-linkgroup (8) -.BR smc-stats (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc.c b/testcases/feature-test/oeaware/smc-tools-main/smc.c deleted file mode 100644 index 3bff02d43..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "libnetlink.h" -#include "util.h" -#include "linkgroup.h" -#include "dev.h" -#include "ueid.h" -#include "seid.h" -#include "info.h" -#include "stats.h" - -static int option_detail = 0; -#if defined(SMCD) -char *myname = "smcd"; -#elif defined(SMCR) -char *myname = "smcr"; -#else -char *myname = "smc"; -#endif - -static void version(void) -{ - fprintf(stderr, - "%s utility, smc-tools-%s\n", myname, RELEASE_STRING); - exit(-1); -} -static void usage(void) -{ - fprintf(stderr, - "Usage: %s [ OPTIONS ] OBJECT {COMMAND | help}\n" -#if defined(SMCD) - "where OBJECT := {info | linkgroup | device | stats | ueid | seid}\n" - " OPTIONS := {-v[ersion] | -d[etails] | -a[bsolute]}\n", myname); -#else - "where OBJECT := {info | linkgroup | device | stats | ueid}\n" - " OPTIONS := {-v[ersion] | -d[etails] | -dd[etails] | -a[bsolute]}\n", myname); -#endif -} - -static int invoke_help(int argc, char **argv, int k) -{ - usage(); - return 0; -} - -static const struct cmd { - const char *cmd; - int (*func)(int argc, char **argv, int option_detail); -} cmds[] = { - { "device", invoke_devs }, - { "linkgroup", invoke_lgs }, - { "info", invoke_info }, - { "stats", invoke_stats }, - { "ueid", invoke_ueid }, -#if defined(SMCD) - { "seid", invoke_seid }, -#endif - { "help", invoke_help }, - { 0 } -}; - -static int run_cmd(const char *argv0, int argc, char **argv) -{ - const struct cmd *c; - - for (c = cmds; c->cmd; ++c) { - if (contains(argv0, c->cmd) == 0) - return -(c->func(argc-1, argv+1, option_detail)); - } - -#if defined(SMCR) - /* Special warning for those who mixed up smcd and smcr */ - if (contains(argv0, "seid") == 0) { - fprintf(stderr, - "Error: Object \"%s\" is valid for SMC-D only, try \"%s help\".\n", - argv0, myname); - return EXIT_FAILURE; - } -#endif - - fprintf(stderr, "Error: Object \"%s\" is unknown, try \"%s help\".\n", argv0, myname); - return EXIT_FAILURE; -} - -int main(int argc, char **argv) -{ - int rc = 0; - - while (argc > 1) { - char *opt = argv[1]; - - if (strcmp(opt, "--") == 0) { - argc--; argv++; - break; - } - if (opt[0] != '-') - break; - if (opt[1] == '-') - opt++; - - if ((strncmp(opt, "-ad", 3) == 0) || (strncmp(opt, "-da", 3) == 0)) { - option_detail = SMC_OPTION_DETAIL_ABS; - } else if (contains(opt, "-absolute") == 0) { - option_detail = SMC_OPTION_ABS; - } else if (contains(opt, "-version") == 0) { - version(); - } else if (contains(opt, "-details") == 0) { - option_detail = SMC_DETAIL_LEVEL_V; - } else if (contains(opt, "-ddetails") == 0) { - option_detail = SMC_DETAIL_LEVEL_VV; - } else if (contains(opt, "-help") == 0) { - usage(); - goto out; - } else { - fprintf(stderr, - "Error: Option \"%s\" is unknown, try \"%s help\".\n", - opt, myname); - exit(-1); - } - argc--; argv++; - } - - if (gen_nl_open(myname)) - exit(1); - if (argc > 1) { - rc = run_cmd(argv[1], argc-1, argv+1); - goto out; - } - usage(); -out: - gen_nl_close(); - return rc; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_chk b/testcases/feature-test/oeaware/smc-tools-main/smc_chk deleted file mode 100755 index ac005a37d..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_chk +++ /dev/null @@ -1,572 +0,0 @@ -#!/bin/bash - -# Copyright IBM Corp. 2021 - -VERSION="1.8.4"; - - -function usage() { - echo; - echo "Usage: smc_chk [OPTIONS] -C "; - echo " smc_chk [OPTIONS] -S"; - echo " smc_chk -i "; - echo; - echo "Check SMC setup"; - echo; - echo " -C, --connect connect to specified IP"; - echo " -d, --debug show debug messages"; - echo " -h, --help display this message"; - echo " -i, --pnetid print PNET ID and exit"; - echo " -p, --port use the next free port starting"; - echo " with PORT (default: $PRT_DFT)"; - echo " -S, --server start server only"; - echo " -v, --version display version info"; - echo " -6, --ipv6 IP address is IPv6"; - echo; -} - -function debug() { - if [ $dbg -gt 0 ]; then - echo "[DEBUG] $@"; - fi -} - -function get_free_port() { - local i; - - for ((i=$1;; i=i+1)); do - ss -tan | awk '{print($4)}' | sed 's/.*://' | sort | uniq | grep -w $i >/dev/null - [ $? -ne 0 ] && break - done - echo $i; -} - -# Params: -# $1 Port -# $2 Set to '-6' for IPv6 -function run_server() { - local i; - - cmd="smc_run $srv -p $1 $2"; - debug "Starting server: $cmd"; - $cmd >/dev/null 2>&1 & - pidsrv=$!; - for (( i=0; i<100; i++ )); do # wait 10s max - ss -tln | awk '{print($4)}' | sed 's/.*://' | grep -w $1 >/dev/null - [ $? -eq 0 ] && break; - sleep 0.1; - done -} - -# Implicit params: -# $1 IP -# $2 Port -# $3 Set to '-6' for IPv6 -function run_client() { - local mode; - local i; - - cmd="smc_run $clt $1 -p $2 $3"; - debug "Running client: $cmd"; - $cmd >/dev/null 2>&1 & - pidclt=$!; - for (( i=0; i<100; i++ )); do # wait 10s max - res="`smcss | awk -v id="$1:$2" '$5 == id {print($7" "$8)}'`"; - [ "$res" != "" ] && break; - sleep 0.1; - done - kill -INT $pidclt >/dev/null 2>&1; - debug "Client result: $res"; - if [ "$res" == "" ]; then - echo " Failed, no connection" - else - mode=`echo $res | awk '{print($1)}'`; - err_clt="`echo $res | awk '{print($2)}' | sed 's#/.*##'`"; - if [ `echo $res | awk '{print($2)}' | grep -c /` -eq 1 ]; then - err_srv="`echo $res | awk '{print($2)}' | sed 's#.*/##'`"; - else - err_srv=""; - fi - if [ "$mode" == "TCP" ]; then - echo " Failed (TCP fallback), reasons:" - res="`man smcss | grep $err_clt`"; - if [ "$res" == "" ]; then - res="$err_srv (Unkown error code)"; - fi - echo " Client: $res"; - if [ "$err_srv" != "" ]; then - res="`man smcss | grep $err_srv`"; - if [ "$res" == "" ]; then - res=" $err_srv (Unknown error code or non-Linux OS)"; - fi - echo " Server: $res"; - fi - else - echo " Success, using ${mode:0:3}-${mode:3:1}"; - fi - fi -} - -function is_python3_available() { - if ! which python3 >/dev/null; then - echo "Error: python3 is not available"; - signal_handler; - fi -} - -function init_server() { - if [ $init_srv -ne 0 ]; then - return; - fi - init_srv=1; - is_python3_available; - port=`get_free_port $port`; - port6=`get_free_port $(expr $port + 1)`; - srv=`mktemp /tmp/echo-srv.XXXXXX`; - cat <<-EOF > $srv -#!/usr/bin/env python3 - -import argparse -import signal -import socket -import sys - -def receiveSignal(signalNumber, frame): - if conn: - conn.close() - s.close() - sys.exit(0) - -signal.signal(signal.SIGINT, receiveSignal) -conn = None -parser = argparse.ArgumentParser(description='Echo server implemented in python3') -parser.add_argument('-p', '--port', required=True, dest='port', action='store', help='listen port') -parser.add_argument('-6', '--ipv6', dest='ipv6', action='store_true', help='IPv6 mode') -args = parser.parse_args() - -host = '' # Symbolic name meaning all available interfaces -if args.ipv6: - s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) -else: - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -s.bind((host, int(args.port))) -s.listen(1) -while True: - conn, addr = s.accept() - print('Connected from', addr) - while True: - data = conn.recv(1024) - if not data: - break - conn.close() -EOF - chmod +x $srv; -} - -function init_client() { - if [ $init_clt -ne 0 ]; then - return; - fi - init_clt=1; - is_python3_available; - clt=`mktemp /tmp/echo-clt.XXXXXX`; - cat <<-EOF > $clt -#!/usr/bin/env python3 - -import argparse -import socket -import signal -import sys -import time - -def receiveSignal(signalNumber, frame): - s.close() - sys.exit(0) - -signal.signal(signal.SIGINT, receiveSignal) -parser = argparse.ArgumentParser(description='Echo client implemented in python3') -parser.add_argument('-p', '--port', required=True, dest='port', action='store', help='target port') -parser.add_argument(dest='dest', action='store', help='destination address') -parser.add_argument('-6', '--ipv6', dest='ipv6', action='store_true', help='IPv6 mode') -args = parser.parse_args() - -if args.ipv6: - s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) -else: - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -s.connect((args.dest, int(args.port))) -time.sleep(10) -EOF - chmod +x $clt; -} - -function test_init() { - init_client; - init_server; -} - -function test_deinit() { - debug "Cleaning up PIDs: $pidsrv $pidsrv6 $pidclt"; - kill -INT $pidsrv 2>/dev/null - [ "$pidsrv6" != "" ] && kill -INT $pidsrv6 2>/dev/null - kill -INT $pidclt 2>/dev/null - [ "$clt" != "" ] && [ -e $clt ] && rm $clt; - [ "$srv" != "" ] && [ -e $srv ] && rm $srv; -} - -function signal_handler() { - test_deinit; - exit 1; -} - -function test_iface() { - local i; - - if [ $mode -eq $MODE_CONNECT ]; then - echo " Live test (SMC-D and SMC-R)"; - else - echo " Live test (SMC-D and SMC-R, EXPERIMENTAL)"; - fi - if [ "$1" != "" ]; then - debug "Determine IP for interface $1"; - ip="`get_netmasks $1 | head -1 | sed 's#/.*##'`"; - if [ "$ip" == "" ]; then - echo " No usable IP address configured, skipping"; - echo; - return; - fi - fi - if [[ $ip == *:* ]]; then - run_client $ip $port6 "-6"; - else - run_client $ip $port; - fi - echo; -} - -function get_netmasks() { - # filter out link-locals - ip addr show $1 | grep -we "inet[6]\?" | grep -v "scope link" | awk '{print($2)}'; -} - -function set_pnetid() { - debug "Determine PNET ID for $1"; - smc_rnics | grep -e "$1\$" >/dev/null; - if [ $? -eq 0 ]; then - # PCI device - use smc_rnics for easy PNET_ID access - debug "PCI device, retrieve PNET ID via smc_rnics"; - pnetid="`smc_rnics | grep -e "$1\$" | awk '{print($7)}'`"; - [ "$pnetid" != "" ] && return; - fi - if [ -e /sys/class/net/$1/device/portno ] && [ -e /sys/class/net/$1/device/chpid ]; then - # CCW device - debug "CCW device, retrieve PNET ID via sysfs"; - portno=`cat /sys/class/net/$1/device/portno`; - chpid=`cat /sys/class/net/$1/device/chpid`; - chpid=${chpid,,}; - pnetids="`cat /sys/devices/css0/chp0.$chpid/util_string | sed 's/\x0/\x40/g' | iconv -f IBM-1047 -t ASCII 2>/dev/null`"; - (( idx=16*$portno+1 )) - (( end=$idx+15 )) - pnetid="`echo "$pnetids" | cut -c $idx-$end | sed 's/ //g'`"; - [ "$pnetid" != "" ] && return; - fi - # Check for a software-defined PNET ID - debug "No luck so far - try the SW PNET table"; - pnetid="`smc_pnet | awk -v id="$1" '$2 == id {print($1)}'`"; - if [ "$pnetid" != "" ]; then - pnetid="$pnetid*"; - fi - debug "PNET ID is '$pnetid'"; -} - -function is_smcd_available() { - # Verify version availability via new 'smcd info' command - smcd info | grep -e "^SMC-D Features:" | grep -w "$1" >/dev/null - - return $?; -} - -# Returns ISM device with PNET ID == $1 -function set_ism() { - is_smcd_available "v1"; - [ $? -ne 0 ] && return; - ism="`smc_rnics | awk -v pn="$1" '$5 == "ISM" && $7 == pn {print($1)}' | sed 's/ $//'`"; -} - -# Returns all ISMv2-eligible devices (PNET ID not set or same as *some* NIC) -function set_ismv2() { - local pnet; - local i; - - is_smcd_available "v2"; - [ $? -ne 0 ] && return; - debug "Determine all PNET IDs in use"; - all_pnets="`smc_pnet | awk '{print($1)}'`"; - for i in `get_iface_realname`; do - set_pnetid $i; - all_pnets="$all_pnets"$'\n'"$pnetid"; - done - all_pnets="`echo "$all_pnets" | sort | uniq`"; - debug "All pnets found: `echo $all_pnets | tr '\n' ' '`"; - ismv2=""; - while read line; do - [ "$line" == "" ] && return; - pnet=`echo $line | awk '{print($2)}'`; - if [ "$pnet" != "n/a" ]; then - echo "$all_pnets" | grep -w $pnet >/dev/null; - [ $? -ne 0 ] && continue; - fi - ismv2="$ismv2 `echo $line | awk '{print($1)}'`"; - done <<< $(smc_rnics | awk '$5 == "ISM" {print($1" "$7)}') - ismv2="`echo $ismv2`"; # strip leading blank -} - -function get_mode_param() { - case $1 in - $MODE_STATIC) echo "'-s/--static-analysis'";; - $MODE_LIVE) echo "'-l/--live-test'";; - $MODE_PPNETID) echo "'-i/--pnetid'";; - $MODE_CONNECT) echo "'-C/--connect'";; - $MODE_SERVER) echo "'-S/--server'";; - esac -} - -function set_mode() { - if [ $mode -eq $1 ]; then - return; - fi - if [ $mode -eq $MODE_LIVE ] && [ $1 -eq $MODE_STATIC ]; then - mode=$MODE_ALL; - return; - fi - if [ $mode -lt 0 ]; then - mode=$1; - else - echo "Error: Cannot combine options `get_mode_param $mode` and `get_mode_param $1`"; - exit 1; - fi -} - -function analyze_iface() { - local smcd_configured=0; - local tab=0; - local i; - local TAB1=25; - local TAB2=25; - - echo " Static Analysis (SMC-D only, EXPERIMENTAL)"; - set_pnetid $1; - set_ism $pnetid; - - # SMC version - echo -n " Configuration: "; - if [ "$ism" != "" ]; then - smcd_configured=1; - tab=$TAB1; - echo "SMC-Dv1 (ISMv1 FID(s): $ism)"; - fi - if [ "$ismv2" != "" ]; then - smcd_configured=2; - printf "%*sSMC-Dv2 (ISMv2 FID(s): %s\n" $tab "" "$ismv2)"; - fi - if [ $smcd_configured -eq 0 ]; then - echo "SMC-D not configured"; - echo; - return; - fi - - # PNET ID - echo " PNET ID: $pnetid"; - - # (S) EID in use - tab=0; - smcd seid show >/dev/null 2>&1; - if [ $? -eq 0 ]; then - seid="`smcd seid show | awk '$2 == "[enabled]" {print($1)}'`"; - if [ "$seid" != "" ]; then - echo " Advertising SEID: $seid"; - fi - for i in `smcd ueid show`; do - [ $tab -eq 0 ] && echo -n " Advertising UEIDs: "; - printf "%*s%s\n" $tab " " $i; - tab=$TAB2; - done - fi - - # Reachable IP subnets - echo -n " Reachable subnets: "; - tab=0; - case $smcd_configured in - 0) echo "None";; # Shouldn't happen, but... - 1) for i in `get_netmasks $1`; do - printf "%*s%s\n" $tab "" $i; - tab=$TAB1; - done;; - 2) echo "Any";; - esac - - echo; -} - -# Returns the real name of interface $1 (in case $1 is an altname) -# Call with $1 == "" for a list of all interfaces -# Call with $1 == "up" for a list of all active interfaces -function get_iface_realname() { - ip link show $1 | grep -e "^[0-9]\+:" | awk '{print($2)}' | sed s'/:$//'; -} - - -trap signal_handler SIGINT SIGTERM; -pid=""; -pidclt=""; -pidsrv=""; -pidsrv6=""; -MODE_ALL=0; -MODE_STATIC=1; -MODE_LIVE=2; -MODE_PPNETID=3; -MODE_CONNECT=4; -MODE_SERVER=5; -MODE_DFT=$MODE_LIVE; -PRT_DFT=37373 -port=$PRT_DFT; -ipv6=""; -fb=$(tput bold 2>/dev/null) # bold font -fn=$(tput sgr0 2>/dev/null) # normal font -init_clt=0; -init_srv=0; -args=`getopt -u -o C:dhi:lp:sSv6 -l connect:,debug,help,port:,pnetid:,server,static-analysis,live-test,version,ipv6 -- $*`; -[ $? -ne 0 ] && exit 2; -set -- $args; -tgt=""; -mode=-1; -dbg=0; -rc=0; -while [ $# -gt 0 ]; do - case $1 in - "-C" | "--connect" ) - set_mode $MODE_CONNECT; - ip="`getent ahosts $2 | awk '{print($1)}' | head -1`"; - if [ "$ip" == "" ]; then - echo "Error: Unknown destination '$2'"; - exit 1; - fi - ifaces="`ip route get $ip 2>/dev/null | grep -oP '(?<=dev )\w+'`"; - if [ "$ifaces" == "" ]; then - echo "Error: No route to host: $2"; - exit 1; - fi - shift;; - "-d" | "--debug" ) - let dbg++;; - "-h" | "--help" ) - usage; - exit 0;; - "-i" | "--pnetid" ) - set_mode $MODE_PPNETID; - tgt="$2"; - shift;; - "-l" | "--live-test" ) - set_mode $MODE_LIVE;; - "-p" | "--port" ) - port="$2"; - shift;; - "-s" | "--static-analysis" ) - set_mode $MODE_STATIC;; - "-S" | "--server" ) - set_mode $MODE_SERVER; - ifaces="`ip link show up | head -1 | awk '{print($2)}' | sed s'/:$//'`";; - "-v" | "--version" ) - echo "smc_chk utility, smc-tools-$VERSION"; - exit 0;; - "-6" | "--ipv6" ) - ipv6="-6";; - "--" ) ;; - * ) - if [ $mode == $MODE_PPNETID ]; then - echo "Error: Option -P/--print-PNETID takes no extra targets"; - exit 1; - fi - if [ "$tgt" == "" ]; then - tgt="$1"; - else - tgt="$tgt $1"; - fi - esac - shift -done - -if [ $mode -lt 0 ]; then - usage; - exit 0; -fi - -if [ $mode -le $MODE_PPNETID ]; then - if [ "$tgt" != "" ]; then - ipv6=""; # we got an interface - if '-6' was specified, it is moot - up="up"; - for i in $tgt; do - ip link show $i >/dev/null 2>&1; - if [ $? -ne 0 ]; then - echo "Error: Interface $i does not exist"; - exit 1; - fi - if [ $mode -ne $MODE_PPNETID ]; then - if [ `ip link show up $i | wc -l` -eq 0 ]; then - echo "Error: $i is not an active interface"; - exit 2; - fi - fi - done - ifaces="$tgt"; - else - ifaces="`get_iface_realname "up"`"; - fi -fi -debug "Interfaces to check: $ifaces"; - -if [ $mode -eq $MODE_ALL ] || [ $mode -eq $MODE_LIVE ]; then - test_init; - run_server $port6 "-6"; # We cannot know whether we need to check an interface with IPv6, - pidsrv6=$pidsrv; # so we start servers for both to be on the safe side - run_server $port; -fi - -for i in $ifaces; do - i=`get_iface_realname $i`; - case $mode in - $MODE_ALL ) - echo "Checking active link: ${fb}$i${fn}"; - analyze_iface $i; - test_iface $i;; - $MODE_STATIC ) - echo "Checking active link: ${fb}$i${fn}"; - set_ismv2; - analyze_iface $i;; - $MODE_LIVE ) - echo "Checking active link: ${fb}$i${fn}"; - test_iface $i;; - $MODE_PPNETID ) - set_pnetid $i; - [ "$pnetid" != "" ] && echo $pnetid;; - $MODE_CONNECT ) - echo "Test with target IP $ip and port $port"; - port6=$port; - init_client; - test_iface;; - $MODE_SERVER ) - init_server $port; - if [ "$ipv6" == "" ]; then - run_server $port; - p=$port; - else - run_server $port6 "-6"; - p=$port6; - fi - echo "Server started on port $p"; - wait $pidsrv;; - esac -done -test_deinit; - -exit 0; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 deleted file mode 100644 index aada36c0a..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_chk.8 +++ /dev/null @@ -1,115 +0,0 @@ -.\" Copyright IBM Corp. 2021 - -.TH SMC_CHK 8 "January 2021" "smc-tools" "Linux Programmer's Manual" - - -.SH NAME -smc_chk \- SMC support diagnostics - - -.SH SYNOPSIS -.nf -.BI "smc_chk [OPTIONS] -C " IP -.BI "smc_chk [OPTIONS] -S" -.BI "smc_chk -i "INTERFACE - -.SH DESCRIPTION -Use -.B -C/--connect -to obtain diagnostic information about the SMC support of a service that runs at a -given -.IR IP -address. -Otherwise, you can use -.B -S/--server -to start a server before connecting with -.IR -C . -Use -.B -i/--pnetid -to print the PNET ID of a specified -.IR INTERFACE . - - -.SH OPTIONS -.TP -.BI "\-C, \-\-connect " IP -Test SMC-D and SMC-R connectivity to -.IR IP . -Use option -.B -p/--port -to specify a -.IR PORT . -.I IP -can specify any service, including remote services. -By default, -.I IP -is assumed to be in IPv4 format. -Specify -.B -6/--IPv6 -if -.I IP -is an address in IPv6 format. -.TP -.BR "\-d, \-\-debug " -Show debug messages. -.TP -.BR "\-h, \-\-help" -Display a brief -.B smc_chk -usage information. -.TP -.BI "\-i, \-\-pnetid " INTERFACE -Print the PNET ID of interface -.I INTERFACE -and exit. An appended asterisk * indicates that the PNET ID was defined via -.BR smc_pnet . -.TP -.BI "\-p, \-\-port " PORT -Use port -.I PORT -for any live tests. When starting a server via -.BR "\-S, \-\-server" , -and if -.I PORT -is already in use, the next free port is used. -.TP -.BR "\-S, \-\-server" -Start a server for manual tests. Use option -.B -p/--port -to specify a port. -.TP -.BR "\-v, \-\-version" -Display version information. -.TP -.BR "\-6, \-\-ipv6" -.I IP -address provided is in IPv6 format. - - -.SH Examples -.SS "Check whether a z/OS instance running at 192.168.37.1 is enabled for \ -SMC using the 3270 console service running on port 23" -smc_chk -C 192.168.37.1 -p 23 - -.SS "Print PNET ID of interface eth0" -smc_chk -i eth0 - -.SS "Start server on port 45901 (or the next successive free port) for smc_chk -C to connect to" -smc_chk -S -p 45901 - - -.SH RETURN CODES -On success, -.B smc_chk -returns 0. -If an error occurs, a return code other than 0 is returned. -.P - - -.SH SEE ALSO -.BR af_smc (7), -.BR smc_pnet (8), -.BR smc_run (8), -.BR smcd (8), -.BR smcr (8), -.BR smcss (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_dbg b/testcases/feature-test/oeaware/smc-tools-main/smc_dbg deleted file mode 100755 index c1bb756ca..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_dbg +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash - -# Copyright IBM Corp. 2019 - -VERSION="1.8.4"; - - -function usage() { - echo; - echo "Usage: smc_dbg [ OPTIONS ]"; - echo; - echo "Collect debug information"; - echo; - echo " -h, --help display this message"; - echo " -t, --tgz generate .tgz file"; - echo " -v, --version display version info"; - echo; -} - -function redirect() { - if [ "$tgz" == "on" ]; then - exec &>$tmpdir/$1; - else - echo; - fi -} - -tgz="off"; -ARCH=`uname -m | cut -c1-4`; -args=`getopt -u -o hvt -l help,version,tgz -- $*`; -[ $? -ne 0 ] && exit 1; -set -- $args; -while [ $# -gt 0 ]; do - case $1 in - "-h" | "--help" ) - usage; - exit 0;; - "-t" | "--tgz" ) - tgz="on";; - "-v" | "--version" ) - echo "smc_dbg utility, smc-tools-$VERSION"; - exit 0;; - * ) - esac - shift; -done -if [ "$tgz" == "on" ]; then - exec 3>&1 4>&2 - tmpdir=`mktemp -d /tmp/smc_dbg-XXXXXX`; -fi - -redirect version.txt; -smcss -v -smc_dbg -v -smc_pnet -v -smc_rnics -v -smc_chk -v -smcd -v -smcr -v - -if [ "$ARCH" == "s390" ]; then - redirect devices.txt; - echo "CCW Devices:" - printf " Device CHPID Port PNET ID\n"; - echo " -------------------------------------------"; - for device in `ls -1 /sys/bus/ccwgroup/devices`; do - chpid=`cat /sys/bus/ccwgroup/devices/$device/chpid | tr [A-F] [a-f]`; - osaport=`cat /sys/bus/ccwgroup/devices/$device/portno`; - iface=`cat /sys/bus/ccwgroup/devices/$device/if_name`; - printf " %8s %4s %-4s %s\n" $device 0x$chpid $osaport `smc_chk -i $iface`; - done - echo; - - echo "PCI Devices:" - smc_rnics | sed 's/^/ /'; - - redirect smcss_smcd; - smcss --smcd; -fi - -redirect smcss_all.txt; -smcss --all --debug; - -redirect smcss_smcr; -smcss --smcr; - -redirect pnet_table.txt; -smc_pnet --show; - -redirect smcr_links.txt; -smcr -d linkgroup link-show; - -redirect smcd_lgs.txt; -smcd -d linkgroup show; - -redirect smcd_info.txt; -smcd info; - -redirect smcd_stats.txt; -smcd -d stats; - -redirect smcr_stats.txt; -smcr -d stats; - - -if [ "$tgz" == "on" ]; then - exec >&3 2>&4 - cd /tmp; - tar cvfz $tmpdir.tgz `basename $tmpdir` >/dev/null 2>&1; - rm -rf $tmpdir; - echo "Debug output written to $tmpdir.tgz"; -fi -exit 0; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 deleted file mode 100644 index 233c219ab..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.8 +++ /dev/null @@ -1,177 +0,0 @@ -.\" smc_pnet.8 -.\" -.\" -.\" Copyright IBM Corp. 2017, 2019 -.\" Author(s): Thomas Richter -.\" Ursula Braun -.\" ---------------------------------------------------------------------- -.\" - -.TH SMC_PNET 8 "January 2017" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smc_pnet \- create, destroy, and change the SMC PNET table - -.SH SYNOPSIS - -.B smc_pnet -{ \fB\-a\fR | \fB\-\-add\fR \fI\fR } -{ \fB\-I\fR | \fB\-\-interface\fR } -.P -.B smc_pnet -{ \fB\-a\fR | \fB\-\-add\fR \fI\fR } -{ \fB\-D\fR | \fB\-\-ibdevice\fR } -[ \fB\-P\fR | \fB\-\-ibport\fR ] -.P -.B smc_pnet -{ \fB\-a\fR | \fB\-\-add\fR \fI\fR } -{ \fB\-I\fR | \fB\-\-interface\fR } -{ \fB\-D\fR | \fB\-\-ibdevice\fR } -[ \fB\-P\fR | \fB\-\-ibport\fR ] -.P -.B smc_pnet -{ \fB\-s\fR | \fB\-\-show\fR \fI\fR } -.P -.B smc_pnet -{ \fB\-d\fR | \fB\-\-delete\fR \fI\fR } -.P -.B smc_pnet -{ \fB\-f\fR | \fB\-\-flush\fR } -.P -.B smc_pnet -{ \fB\-v\fR | \fB\-\-version\fR } -.P -.B smc_pnet -{ \fB\-h\fR | \fB\-\-help\fR } - -.SH DESCRIPTION -The SMC protocol requires grouping of standard Ethernet and RoCE networks or ISM -devices. -Such groups are called \fIPhysical Networks\fR (PNETs). The mapping is configured -within a table called \fIpnet table\fR. Any available Ethernet interface can be -combined with an available RDMA-capable network interface card (RNIC) or a -DMA-capable ISM device, if they -belong to the same Converged Ethernet fabric. To configure mapping of a RoCE Adapter -port or an ISM device to a standard Ethernet interface, both devices need to have -the same PNET ID; either hardware-defined or user-defined using the pnet table. -Hardware-defined PNET IDs cannot be overwritten. -.P -The -.B smc_pnet -command configures the pnet table. - -.SH OPTIONS -By default, -.B smc_pnet -shows all entries of the pnet table. -.TP -.IR -defines a name for a grouping of Ethernet interface and RNICs or ISM devices. -A PNET ID consists of up to 16 alphanumeric uppercase characters without blanks. -.TP -.BR "\-a, \-\-add" -creates a new PNET ID definition to the pnet table (if it does not already exist). -Only one PNET ID can be defined for a certain -Ethernet interface, a certain InfiniBand device port or a certain ISM device. -Adding more than one PNET ID fails. Hardware defined PNET IDs cannot be overwritten. -.TP -.BR "\-s, \-\-show" -shows a certain PNET ID definition in the pnet table. -.TP -.BR "\-d, \-\-delete" -deletes an existing PNET ID definition from the pnet table. -.TP -.BR "\-f, \-\-flush" -removes all PNET ID definitions from the pnet table. -.TP -.BR "\-I, \-\-interface " -specifies the name of the Ethernet interface to be added for a certain PNET -ID -definition. -.TP -.BR "\-D, \-\-ibdevice " -specifies the ID of the InfiniBand device or ISM device. -.TP -.BR "\-P, \-\-ibport " -specifies the port number of the InfiniBand device port. Valid numbers are -1 or 2. -The default value is 1. -.TP -.BR "\-v, \-\-version" -displays smc_pnet program version. -.TP -.BR "\-h, \-\-help" -displays a brief smc_pnet usage information. - -.SH EXAMPLES -.B Define PNET ID ABC for the ethernet device names encf500 and bond0, and define -.B PNET ID ABC for the InfiniBand device ID 0001:00:00.0 (port 2) and the ISM -.B device ID 0004:00:00.0: -.RS 4 -.PP -.nf -$ smc_pnet \-a ABC \-I encf500 -$ smc_pnet \-a ABC \-I bond0 -$ smc_pnet \-a ABC \-D 0001:00:00:00.0 \-P 2 -$ smc_pnet \-a ABC \-D 0004:00:00:00.0 -.RE -.PP -. -.B Show all pnet table entries: -.RS 4 -.PP -.nf -$ smc_pnet -ABC encf500 n/a 255 -ABC bond0 n/a 255 -ABC n/a 0001:00:00.0 2 -ABC n/a 0004:00:00.0 1 -.RE -.PP -. -.B Define PNET ID XYZ for the ethernet interface name vlan0201 and the InfiniBand -.B device ID 0001:00:00.0 (port 1): -.RS 4 -.PP -$ smc_pnet \-a XYZ \-I vlan0201 \-D 0001:00:00.0 \-P 1 -.RE -.PP -. -.B Show all entries for PNET ID XYZ: -.RS 4 -.PP -.nf -$ smc_pnet \-s XYZ -XYZ vlan0201 n/a 255 -XYZ n/a 0001:00:00.0 1 -.RE -.PP -. -.B Delete all pnet table entries with PNET ID named ABC: -.RS 4 -.PP -$ smc_pnet \-d ABC -.RE -.PP -. -.B Delete all entries in the pnet table: -.RS 4 -.PP -$ smc_pnet \-f -.RE -.PP -. -. -.SH RETURN CODES -Successful \fBsmc_pnet\fR commands return 0. -If an error occurs, \fBsmc_pnet\fR writes a message to stderr and -completes with a return code other than 0. -.P -.SH SEE ALSO -.BR af_smc (7), -.BR smc_chk (8) -.BR smc_rnics (8), -.BR smc_run (8), -.BR smcd (8), -.BR smcr (8), -.BR smcss (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c b/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c deleted file mode 100644 index 25ed2da49..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_pnet.c +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Shared Memory Communications over RDMA (SMC-R) and RoCE - * - * Copyright IBM Corp. 2017 - * - * Author(s): Thomas Richter - * - * User space program for SMC-R PNET Table manipulation with generic netlink. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "smctools_common.h" - -static char *progname; - -static struct pnetentry { - char *pnetid; /* Pnetid */ - char *ethname; /* Ethernet device name */ - char *ibname; /* Infiniband/ISM device name */ - int ibport; /* Infiniband device port number */ - unsigned char cmd; /* Command to execute */ -} pnetcmd; - -static void _usage(FILE *dest) -{ - fprintf(dest, -"Usage: %s [ OPTIONS ] [pnetid]\n" -"\t-h, --help this message\n" -"\t-v, --version show version information\n" -"\t-a, --add add a pnetid entry, requires interface or ib/ism device\n" -"\t-d, --delete delete a pnetid entry\n" -"\t-s, --show show a pnetid entry\n" -"\t-f, --flush flush the complete pnet table\n" -"\t-I, --interface Ethernet interface name of a pnetid entry\n" -"\t-D, --ibdevice Infiniband/ISM device name of a pnetid entry\n" -"\t-P, --ibport Infiniband device port (default: 1)\n" -"\t\n" -"\tno OPTIONS show complete pnet table\n", - progname); -} - -static void help(void) __attribute__((noreturn)); -static void help(void) -{ - _usage(stdout); - exit(EXIT_SUCCESS); -} - -static void usage(void) __attribute__((noreturn)); -static void usage(void) -{ - _usage(stderr); - exit(EXIT_FAILURE); -} - -static int convert(char *string) -{ - unsigned long no; - char *endp; - - no = strtoul(string, &endp, 0); - if (*endp != '\0' || no > 2) { - fprintf(stderr, "%s invalid ib port:%s\n", progname, string); - usage(); - } - return no; -} - -static const struct option long_opts[] = { - { "interface", 1, 0, 'I' }, - { "ibdevice", 1, 0, 'D' }, - { "ibport", 1, 0, 'P' }, - { "flush", 0, 0, 'f' }, - { "add", 0, 0, 'a'}, - { "show", 0, 0, 's'}, - { "delete", 0, 0, 'd'}, - { "version", 0, 0, 'v' }, - { "help", 0, 0, 'h' }, - { NULL, 0, NULL, 0} -}; - -static struct nla_policy smc_pnet_policy[SMC_PNETID_MAX + 1] = { - [SMC_PNETID_NAME] = { - .type = NLA_STRING, - .maxlen = 17 - }, - [SMC_PNETID_ETHNAME] = { - .type = NLA_STRING, - .maxlen = 16 - }, - [SMC_PNETID_IBNAME] = { - .type = NLA_STRING, - .maxlen = 64 - }, - [SMC_PNETID_IBPORT] = { - .type = NLA_U8, - .maxlen = 1 - } -}; - - -/* Netlink library call back handler to be called on data reception. */ -static int cb_handler(struct nl_msg *msg, void *arg) -{ - struct nlattr *attrs[SMC_PNETID_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - - if (genlmsg_validate(hdr, 0, SMC_PNETID_MAX, smc_pnet_policy) || - genlmsg_parse(hdr, 0, attrs, SMC_PNETID_MAX, smc_pnet_policy) < 0) { - fprintf(stderr, "%s: invalid data returned\n", progname); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - printf("%s %s %s %d\n", nla_get_string(attrs[SMC_PNETID_NAME]), - nla_get_string(attrs[SMC_PNETID_ETHNAME]), - nla_get_string(attrs[SMC_PNETID_IBNAME]), - nla_get_u8(attrs[SMC_PNETID_IBPORT])); - return NL_OK; -} - -static int genl_command(void) -{ - int rc = EXIT_FAILURE, id, nlmsg_flags = 0; - struct nl_sock *sk; - struct nl_msg *msg; - - /* Allocate a netlink socket and connect to it */ - sk = nl_socket_alloc(); - if (!sk) { - nl_perror(NLE_NOMEM, progname); - return rc; - } - rc = genl_connect(sk); - if (rc) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out1; - } - id = genl_ctrl_resolve(sk, SMCR_GENL_FAMILY_NAME); - if (id < 0) { - rc = EXIT_FAILURE; - if (id == -NLE_OBJ_NOTFOUND) - fprintf(stderr, "%s: SMC module not loaded\n", - progname); - else - nl_perror(id, progname); - goto out2; - } - nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, NULL); - - /* Allocate a netlink message and set header information. */ - msg = nlmsg_alloc(); - if (!msg) { - nl_perror(NLE_NOMEM, progname); - rc = EXIT_FAILURE; - goto out2; - } - - if ((pnetcmd.cmd == SMC_PNETID_DEL || pnetcmd.cmd == SMC_PNETID_GET) && - !pnetcmd.pnetid) /* List all */ - nlmsg_flags = NLM_F_DUMP; - - if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, id, 0, nlmsg_flags, - pnetcmd.cmd, SMCR_GENL_FAMILY_VERSION)) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out3; - } - - switch (pnetcmd.cmd) { /* Start message construction */ - case SMC_PNETID_ADD: - if (pnetcmd.ethname) - rc = nla_put_string(msg, SMC_PNETID_ETHNAME, - pnetcmd.ethname); - if (rc < 0) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out3; - } - - if (pnetcmd.ibname) - rc = nla_put_string(msg, SMC_PNETID_IBNAME, - pnetcmd.ibname); - if (rc < 0) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out3; - } - - if (pnetcmd.ibname) - rc = nla_put_u8(msg, SMC_PNETID_IBPORT, pnetcmd.ibport); - if (rc < 0) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out3; - } - /* Fall through intended */ - case SMC_PNETID_DEL: - case SMC_PNETID_GET: - if (!pnetcmd.pnetid) /* List all */ - break; - rc = nla_put_string(msg, SMC_PNETID_NAME, pnetcmd.pnetid); - if (rc < 0) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out3; - } - } - - /* Send message */ - rc = nl_send_auto(sk, msg); - if (rc < 0) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out3; - } - - /* Receive reply message, returns number of cb invocations. */ - rc = nl_recvmsgs_default(sk); - /* Kernel commit a9d8b0b1e3d689346b016316bd91980d60c6885d - * introduced a misbehavior that a FLUSH of an empty table - * returned -ENOENT. Fix it in smc-tools as long as kernel patch did'nt - * land in the distros. - */ - if (pnetcmd.cmd == SMC_PNETID_FLUSH && rc != -NLE_OBJ_NOTFOUND) - rc = 0; - if (rc < 0) { - nl_perror(rc, progname); - rc = EXIT_FAILURE; - goto out3; - } - rc = EXIT_SUCCESS; -out3: - nlmsg_free(msg); -out2: - nl_close(sk); -out1: - nl_socket_free(sk); - return rc; -} - -int main(int argc, char **argv) -{ - char *slash; - int rc, ch; - - progname = (slash = strrchr(argv[0], '/')) ? slash + 1 : argv[0]; - while ((ch = getopt_long(argc, argv, "I:D:P:fasdhv", long_opts, - NULL )) != EOF) { - switch (ch) { - case 'f': - if (pnetcmd.cmd) - usage(); - pnetcmd.cmd = SMC_PNETID_FLUSH; - break; - case 's': - if (pnetcmd.cmd) - usage(); - pnetcmd.cmd = SMC_PNETID_GET; - pnetcmd.pnetid = optarg; - break; - case 'd': - if (pnetcmd.cmd) - usage(); - pnetcmd.cmd = SMC_PNETID_DEL; - pnetcmd.pnetid = optarg; - break; - case 'a': - if (pnetcmd.cmd) - usage(); - pnetcmd.cmd = SMC_PNETID_ADD; - pnetcmd.pnetid = optarg; - break; - case 'I': - pnetcmd.ethname = optarg; - break; - case 'D': - pnetcmd.ibname = optarg; - break; - case 'P': - pnetcmd.ibport = convert(optarg); - break; - case 'v': - printf("smc_pnet utility, smc-tools-%s\n", - RELEASE_STRING); - exit(0); - case 'h': - help(); - case '?': - default: - usage(); - } - } - - if (optind + 1 < argc) { - fprintf(stderr, "%s too many parameters\n", progname); - usage(); - } - if (optind + 1 == argc) - pnetcmd.pnetid = argv[optind]; - if (!pnetcmd.cmd) { - if (optind < argc) { - fprintf(stderr, "%s: parameters without option\n", - progname); - usage(); - } - pnetcmd.cmd = SMC_PNETID_GET; - } - if (pnetcmd.cmd == SMC_PNETID_FLUSH) { - if (optind < argc) { - fprintf(stderr, "%s: -f takes no parameters\n", - progname); - usage(); - } - } - - if (pnetcmd.cmd == SMC_PNETID_ADD) { - if (!pnetcmd.ethname && !pnetcmd.ibname) { - fprintf(stderr, "%s: interface or device missing\n", - progname); - usage(); - } - if (!pnetcmd.ibport) - pnetcmd.ibport = 1; - } - - if (pnetcmd.cmd == SMC_PNETID_GET || pnetcmd.cmd == SMC_PNETID_DEL) { - if (pnetcmd.ethname) { - fprintf(stderr, "%s: interface %s ignored\n", progname, - pnetcmd.ethname); - pnetcmd.ethname = NULL; - } - if (pnetcmd.ibname) { - fprintf(stderr, "%s: device %s ignored\n", progname, - pnetcmd.ibname); - pnetcmd.ibname = NULL; - } - if (pnetcmd.ibport) { - fprintf(stderr, "%s: ibport %d ignored\n", progname, - pnetcmd.ibport); - pnetcmd.ibport = 0; - } - } - rc = genl_command(); - return rc; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_rnics b/testcases/feature-test/oeaware/smc-tools-main/smc_rnics deleted file mode 100755 index 6359cab2c..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_rnics +++ /dev/null @@ -1,301 +0,0 @@ -#!/bin/bash - -# Copyright IBM Corp. 2018, 2022 - -VERSION="1.8.4"; - - -function usage() { - echo; - echo "Usage: smc_rnics [ OPTIONS ] [ FID ]"; - echo; - echo "List RNICs"; - echo; - echo " -a, --all include disabled devices in output"; - echo " -d, --disable disable the specified FID"; - echo " -e, --enable enable the specified FID"; - echo " -h, --help display this message"; - echo " -I, --IB-dev display IB-dev instead of netdev attributes"; - echo " -r, --rawids display 'type' as raw vendor/device IDs"; - echo " -v, --version display version info"; - echo; -} - -function print_header() { - if [ $IBdev -eq 0 ]; then - printf " FID Power PCI_ID PCHID Type PPrt PNET_ID Net-Dev\n"; - else - printf " FID Power PCI_ID PCHID Type IPrt PNET_ID IB-Dev\n"; - fi - echo '------------------------------------------------------------------------------------------'; -} - -function get_softset_pnet_id() { - local res="n/a"; - local line; - local id; - local iface; - local dev; - local prt; - - while read -r line; do - read id iface dev prt <<< $line; - if [[ ("$iface" != "n/a" && "$iface" == "$int") || ("$dev" != "n/a" && "$dev" == "$addr") ]]; then - if [ "$prt" != "255" ] && [ "$prt" != "$iport" ]; then - continue; - fi - res="$id*"; - fi - done <<< "$(smc_pnet)" - - echo "$res"; -} - -function get_pnet_from_port() { - local idx; - local end; - local lport=$port; - local iport; - local res; - - if [ "$lport" == "" ]; then - echo ""; - return; - fi - if [ "$lport" == "n/a" ] || [ "$dev_type" != "RoCE_Express" ]; then - lport=0; - else - [ $IBdev -ne 0 ] && let lport=$lport-1; - fi - (( iport=$lport+1 )) - (( idx=16*$lport+1 )) - (( end=$idx+15 )) - res="`echo "$pnetids" | cut -c $idx-$end | sed 's/ //g'`"; - if [ "$res" == "" ]; then - res="`get_softset_pnet_id`"; - fi - echo $res; -} - -function print_rnic() { - printf "%8x %-5s %-12s %-4s %-14s %-4s %-17s %s\n" "$((16#$fid))" "$power" "$addr" "$pchid" "$dev_type" "$port" "`get_pnet_from_port`" "$int"; - (( printed++ )); -} - -function set_RoCE_dev_and_port() { - dev_type="$1"; - if [ -e port ]; then - port=`cat port`; - if [ $port -eq 0 ]; then - port="n/a"; - else - if [ $IBdev -eq 0 ]; then - let port=$port-1; - else - port=1; - fi - fi - fi; -} - -function set_by_firmware_lvl() { - local iface; - local name; - local lvl; - - name="Mlx_$id"; - which ethtool >/dev/null 2>&1; - if [ $? -eq 0 ] && [ "$int" != "n/a" ] && [ -d "net" ]; then - iface="`ls -1 net | head -1`"; - lvl="`ethtool -i $iface | grep -e "^firmware-version:" | awk '{print($2)}'`"; - if [ "${lvl%%.*}" == "22" ]; then - name="RoCE_Express3"; - fi - fi - set_RoCE_dev_and_port $name; -} - -function print_rnics() { - # iterate over slots, as powered-off devices won't show elsewhere - for fid in `ls -1 /sys/bus/pci/slots`; do - cd /sys/bus/pci/slots/$fid; - fid="$fid"; - if [ "$target" != "" ] && [ "$fid" != "$target" ]; then - continue; - fi - power=`cat power`; - interfaces=""; - port="n/a"; - addr=""; - int=""; - if [ $power -eq 0 ]; then - # device not yet hotplugged - if [ $all -ne 0 ]; then - dev_type=""; - pchid=""; - pnet=""; - port=""; - print_rnic; - fi - continue; - fi - # device is hotplugged - locate it - for dev in `ls -1 /sys/bus/pci/devices`; do - cd /sys/bus/pci/devices/$dev; - if [ "`cat function_id`" == "0x$fid" ]; then - addr=$dev; - break; - fi - done - if [ "$addr" == "" ]; then - echo "Error: No matching device found for FID $fid" >&2; - continue; - fi - cd /sys/bus/pci/devices/$addr; - id=`cat device`; - vend=`cat vendor`; - dev_type="${vend#0x}:${id#0x}"; - if [ $rawIDs -eq 0 ]; then - case "$vend" in - "0x1014" ) # IBM - case "$id" in - "0x04ed") dev_type="ISM"; - int="n/a";; - *) - continue; - esac;; - "0x15b3" ) # Mellanox - case "$id" in - "0x1003" | \ - "0x1004") dev_type="RoCE_Express";; - "0x1016") set_RoCE_dev_and_port "RoCE_Express2";; - "0x101e") set_by_firmware_lvl;; - *) set_RoCE_dev_and_port "Mlx_$id";; - esac;; - *) [ $all -eq 0 ] && continue - esac - fi - pchid="`cat pchid | sed 's/^0x//'`"; - pnetids="`cat util_string | sed 's/\x0/\x40/g' | iconv -f IBM-1047 -t ASCII`"; - if [ $IBdev -eq 0 ]; then - if [ -d "net" ]; then - interfaces="`ls -1 net`"; - else - int="n/a"; - print_rnic; - continue; - fi - # one device can have multiple interfaces (one per port) - for int in $interfaces; do - cd /sys/bus/pci/devices/$addr/net/$int; - if [ "$dev_type" == "RoCE_Express" ] && [ -e dev_port ]; then - port=`cat dev_port`; - fi - print_rnic; - done - else - if [ -d "infiniband" ]; then - int="`ls -1 infiniband`"; - else - int="n/a"; - print_rnic; - continue; - fi - # only one IB interface per card - cd /sys/bus/pci/devices/$addr/infiniband/$int - for port in `ls -1 ports`; do - print_rnic; - done - fi - done -} - -function format_fid() { - res="${1#0x}"; - - if [[ ! "$res" =~ ^[[:xdigit:]]+$ ]]; then - printf "Error: '%s' is not a valid FID\n" "$res" >&2; - exit 3; - fi - - res="`printf "%08x" $((16#$res))`"; -} - -args=`getopt -u -o hIrvae:d: -l all,enable:,disable:,help,IB-dev,rawids,version -- $*`; -[ $? -ne 0 ] && exit 2; -set -- $args; -action="print"; -rawIDs=0; -all=0; -target=""; -IBdev=0; -printed=0; -while [ $# -gt 0 ]; do - case $1 in - "-a" | "--all" ) - all=1;; - "-e" | "--enable" ) - action="enable"; - fid=$2; - shift;; - "-d" | "--disable" ) - action="disable"; - fid=$2; - shift;; - "-h" | "--help" ) - usage; - exit 0;; - "-I" | "--IB-dev" ) - IBdev=1;; - "-r" | "--rawids" ) - rawIDs=1;; - "-v" | "--version" ) - echo "smc_rnics utility, smc-tools-$VERSION"; - exit 0;; - "--" ) ;; - * ) format_fid "$1"; - target="$res"; - esac - shift; -done - -if [ "`uname -m`" != "s390x" ] && [ "`uname -m`" != "s390" ]; then - printf "Error: s390/s390x supported only\n" >&2; - exit 1; -fi - -if [ "$action" != "print" ]; then - if [ "$target" != "" ]; then - usage; - exit 4; - fi - format_fid "$fid"; - fid="$res"; - ufid=`printf "%x" $((16#$fid))`; # representation without leading zeros - if [ ! -d /sys/bus/pci/slots/$fid ]; then - echo "Error: FID $ufid does not exist" >&2; - exit 5; - fi - power=`cat /sys/bus/pci/slots/$fid/power 2>/dev/null`; - val=0; - [ "$action" == "enable" ] && val=1; - if [ $power -eq $val ]; then - echo "Error: FID $ufid is already ${action}d" >&2; - exit 6; - fi - echo $val > /sys/bus/pci/slots/$fid/power 2>/dev/null; - if [ $? -ne 0 ]; then - echo "Error: Failed to $action FID $ufid" >&2; - exit 7; - fi - exit 0; -fi - -print_header; -print_rnics | sort -k 1; - -if [ "$target" != "" ] && [ $printed -eq 0 ]; then - exit 8; -fi - -exit 0; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 deleted file mode 100644 index d4f4f1d7c..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_rnics.8 +++ /dev/null @@ -1,123 +0,0 @@ -.\" Copyright IBM Corp. 2018 - -.TH SMC_RNICS 8 "October 2018" "smc-tools" "Linux Programmer's Manual" - - -.SH NAME -smc_rnics \- list, enable and disable (R)NICS as used by SMC-R and SMC-D - - -.SH SYNOPSIS -.B smc_rnics -.RB [ \-ahrv ] -.RB [ \-d -.IR FID ] -.RB [ \-e -.IR FID ] -.RI [ FID ] - - -.SH DESCRIPTION -The SMC protocol requires an (R)NIC for the (R)DMA traffic. -Use -.B smc_rnics -to handle, and to identify hotplugged (R)NICs. - - -.SH OPTIONS -By default, -.B smc_rnics -shows all enabled (R)NICs in the system. -.TP -.I FID -Limit output to the specified function ID -.RI ( FID ). -.TP -.BR "\-a, \-\-all" -Include disabled and unknown devices in output -.TP -.BR "\-d, \-\-disable " \fIFID -Set (R)NIC -.I FID -offline. -.TP -.BR "\-e, \-\-enable " \fIFID -Set (R)NIC -.I FID -online. Note that devices other than (R)NICs are not displayed by default and -therefore, once enabled, will not appear in further output unless option -.BR -a -or -.BR -r -is specified. -.TP -.BR "\-h, \-\-help" -Display a brief -.B smc_rnics -usage information. -.TP -.BR "\-I, \-\-IB-dev" -Display IB device information. -.TP -.BR "\-r, \-\-rawids" -Display raw PCI vendor and device codes in column. Note that this will -also include unknown devices. -.TP -.BR "\-v, \-\-version" -Display version information. - -.SH OUTPUT -.SS "FID" -Function ID. - -.SS "Power" -Indicates whether the PCI slot is on (1) or off (0). See option -.B -e -on how to enable a device that is offline. - -.SS "PCI_ID" -PCI ID in BDF (Bus:Device.Function) notation. - -.SS "PCHID" -Physical channel identifier, or virtual channel identifier (VCHID) for -ISM devices. - -.SS "Type" -Device type in human readable form. See option -.B -r -to switch to display of PCI vendor and device instead. - -.SS "PPrt" -Corresponding physical port of an RNIC, if applicable. Starts counting at 0. - -.SS "IPrt" -Corresponding Infiniband port of an RNIC, if applicable. Starts counting at 1. - -.SS "PNET_ID" -Physical network ID. Has an asterisk -.B * -appended if defined via -.BR smc_pnet . - -.SS "Net-Dev" -Network interface in Linux, if applicable. - -.SS "IB-Dev" -Infiniband interface in Linux, if applicable. - - -.SH RETURN CODES -On success, -.B smc_rnics -returns 0. -If an error occurs, a return code other than 0 is returned. -.P - - -.SH SEE ALSO -.BR af_smc (7), -.BR smc_pnet (8), -.BR smc_run (8), -.BR smcd (8), -.BR smcr (8), -.BR smcss (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_run b/testcases/feature-test/oeaware/smc-tools-main/smc_run deleted file mode 100755 index 889462df9..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_run +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash -# -# SMC Tools - Shared Memory Communication Tools -# -# Copyright IBM Corp. 2017, 2018 -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -# -LIB_NAME="libsmc-preload.so" -VERSION="1.8.4"; - - -function usage() { - echo; - echo "Usage: smc_run [ OPTIONS ] COMMAND"; - echo; - echo "Run COMMAND using SMC for TCP sockets"; - echo; - echo " -d enable debug mode"; - echo " -h display this message"; - echo " -r request receive buffer size in Bytes"; - echo " -t request transmit buffer size in Bytes"; - echo " -v display version info"; -} - -function check_size() { - if [[ ! "$1" =~ ^[0-9]+[k|K|m|M]?$ ]]; then - echo "Error: Invalid buffer size specified: '$1'"; - exit 1; - fi - return -} - -function adjust_core_net_max() { - case ${2: -1} in - k | K) (( OPTARG=${2%?}*1024 ));; - m | M) (( OPTARG=${2%?}*1048576 ));; - *) - esac - if [ `sysctl -n net.core.$1_max` -lt $OPTARG ]; then - sysctl -w net.core.$1_max=$OPTARG >/dev/null; - fi -} - -# -# Verify command line arguments and specify the preload library debug mode -# if necessary. -# -SMC_DEBUG=0; -while getopts "dhr:t:v" opt; do - case $opt in - d) - SMC_DEBUG=1;; - h) usage; - exit 0;; - r) check_size $OPTARG; - adjust_core_net_max rmem $OPTARG; - export SMC_RCVBUF=$OPTARG;; - t) check_size $OPTARG; - adjust_core_net_max wmem $OPTARG; - export SMC_SNDBUF=$OPTARG;; - v) echo "smc_run utility, smc-tools-$VERSION"; - exit;; - \?) echo "`basename "$0"`: Error: Invalid option: -$OPTARG"; - exit 1;; - esac -done - -shift $(expr $OPTIND - 1); -if [ $# -eq 0 ]; then - echo "`basename "$0"`: Error: Missing command parameter"; - exit 1; -fi - -export SMC_DEBUG; -# -# Execute the specified command. -# -export LD_PRELOAD=$LD_PRELOAD:$LIB_NAME; - -exec "$@" -exit $?; diff --git a/testcases/feature-test/oeaware/smc-tools-main/smc_run.8 b/testcases/feature-test/oeaware/smc-tools-main/smc_run.8 deleted file mode 100644 index 7b579fb9d..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smc_run.8 +++ /dev/null @@ -1,112 +0,0 @@ -.\" smc_run.8 -.\" -.\" -.\" Copyright IBM Corp. 2017 -.\" Author(s): Ursula Braun -.\" ---------------------------------------------------------------------- -.\" -.TH SMC_RUN 8 "January 2017" "smc-tools" "Linux Programmer's Manual " -.SH NAME -smc_run \- start a TCP socket program with the capability to use SMC as -networking protocol - -.SH SYNOPSIS - -.B smc_run -.RB [ \-dhrtv ] [ \-r -.IR SIZE ] -.RB [-t -.IR SIZE ] -.I program -.I parameters - -.SH DESCRIPTION -.B smc_run -starts a -.IR program -specified as argument with its -.IR parameters , -allowing to use the SMC protocol for program-used TCP socket connections. -.br -The script specifies libsmc-preload.so as a preload shared library for the -Linux program loader, and may adjust transmit and receive buffer sizes to -.I SIZE -by setting socket options SO_RCVBUF and SO_SNDBUF respectively. -.I SIZE -can be specified in Bytes or using metric prefixes k and m, e.g. -8k...1024k/1m. -.br -The preload library libsmc-preload.so intercepts a few TCP socket calls and -triggers the equivalent execution through SMC. -.br -Note: If it is not possibile to use -.IR smc_run , -the libsmc-preload.so may be installed as apreload library via environment -variable LD_PRELOAD. Use environment varibles SMC_SNDBUF and SMC_RCVBUF to -request specific transmit and receive buffer sizes respectively. Supports -metric prefixes k and m. - -The following options can be specified: -.TP -.BR "\-d" -Display additional diagnostic messages during the program execution. -.TP -.BR "\-h" -Display a brief usage information. -.TP -.BR "\-r " \fISIZE -Request receive buffer size -.IR SIZE . -.br -.BR Notes : -.RS -.IP \[bu] 2 -May be overridden by the application. -.IP \[bu] -Increases net.core.rmem_max if necessary. -.RE -.TP -.BR "\-t " \fISIZE -Request transmit buffer size -.IR SIZE . -.br -.BR Notes : -.RS -.IP \[bu] 2 -May be overridden by the application. -.IP \[bu] -Increases net.core.wmem_max if necessary. -.RE -.TP -.BR "\-v" -Display version information. -.SH RETURN CODES -On success, the -.IR smc_run -command returns 0. -If an error occurs -.IR smc_run -writes a message to stdout and completes with a return code other -than 0. - -.TP -.B 1 -An invalid option was specified. -.P - -.SH EXAMPLES -.B Run program foo using SMC, requesting a receive buffer size of 512KB -.RS 4 -.PP -$ smc_run -r 512k ./foo -.P - -.SH SEE ALSO -.BR af_smc (7), -.BR smc_chk (8) -.BR smc_pnet (8), -.BR smc_rnics (8), -.BR smcd (8), -.BR smcr (8), -.BR smcss (8), -.BR tcp (7) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd b/testcases/feature-test/oeaware/smc-tools-main/smcd deleted file mode 100755 index 3b7f16be19b954fd52630b2ffd9fd44a05388cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221344 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

-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%0Dc-ln$@M!tcF&i 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

P&f{1#fc@O~OB3Ky%e%7TJz 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 L`?}Y_E2{qwQ-8|_ diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcr.8 b/testcases/feature-test/oeaware/smc-tools-main/smcr.8 deleted file mode 100644 index f93a5ad16..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcr.8 +++ /dev/null @@ -1,124 +0,0 @@ -.\" smcr.8 -.\" -.\" -.\" Copyright IBM Corp. 2020 -.\" Author(s): Guvenc Gulce -.\" ---------------------------------------------------------------------- -.\" -.TH SMCR 8 "June 2020" "smc-tools" "Linux Programmer's Manual" - -.SH NAME - -smcr \- Print information about SMC-R link groups, links and devices - -.SH SYNOPSIS -.B smcr -.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " -.BR help " }" -.sp - -.IR OBJECT " := { " -.BR info " | " linkgroup " | " device " | " stats " | " ueid " }" -.sp - -.IR OPTIONS " := { " -\fB\-v\fR[\fIersion\fR] | -\fB\-a\fR[\fIbsolute\fR] | -\fB\-d\fR[\fIetails\fR] | -\fB\-dd\fR[\fIetails\fR] } - -.SH OPTIONS - -.TP -.BR "\-v" , " -version" -Print the version of the -.B smcr -utility and exit. - -.TP -.BR "\-a", " \-absolute" -Print absolute statistic value (valid only for stats). - -.TP -.BR "\-d", " \-details" -Print detailed information. - -.TP -.BR "\-dd", " \-ddetails" -Print more detailed information. - -.SH SMCR - COMMAND SYNTAX - -.SS -.I OBJECT - -.TP -.B device -One or more SMC-R devices. - -.TP -.B info -Generic SMC information. - -.TP -.B linkgroup -One or more SMC-R link groups or links. - -.TP -.B stats -SMC-R statistics. - -.TP -.B ueid -Work with User defined Enterprise IDs (UEID). - -.PP -The names of all objects can be abbreviated down to -a unique stem. For example -.B device -can be abbreviated to -.B dev -or just -.B d. -For more information about individual objects see the man pages in -.B SEE ALSO -section. - -.SS -.I COMMAND - -Specifies the action to perform on the object. -The set of possible actions depends on the object type. -For most objects you can specify the -.BR " show " or " link-show" -command. Use the -.B help -command for an object to print information about the available actions and the specific syntax for that object. -.sp -If no command is given, a default command -is assumed. - -.SH RETURN CODES -Successful -.IR smcr -commands return 0 and display the -requested link group, link or device information. -If an error occurs, -.IR smcr -writes a message to stderr and completes with a return code other than 0. Possible -error messages to stderr in case of non-zero return code: -.TP -.BR "SMC module not loaded" -Either kernel is not supporting the -.IR smcr -tool or the smc kernel module is not loaded. -.P -.SH SEE ALSO -.BR af_smc (7), -.BR smcd (8), -.BR smcr (8), -.BR smcr-device (8), -.BR smcr-info (8), -.BR smcr-linkgroup (8) -.BR smcr-stats (8), -.BR smcr-ueid (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcss.8 b/testcases/feature-test/oeaware/smc-tools-main/smcss.8 deleted file mode 100644 index 49fcc2927..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcss.8 +++ /dev/null @@ -1,407 +0,0 @@ -.\" smcss.8 -.\" -.\" -.\" Copyright IBM Corp. 2017, 2018 -.\" Author(s): Ursula Braun -.\" ---------------------------------------------------------------------- -.\" - -.TH SMCSS 8 "June 2018" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smcss \- print information about the AF_SMC sockets and link groups - -.SH SYNOPSIS - -.B smcss -.RB [ \-\-debug | \-d ] -.RB [ \-\-smcd | \-D ] -.RB [ \-\-wide | \-W ] -.P -.B smcss -.RB { \-\-all | -a } -.RB [ \-\-debug | \-d ] -.RB [ \-\-smcd | \-D ] -.RB [ \-\-wide | \-W ] -.P -.B smcss -.RB [ \-\-debug | \-d ] -.RB [ \-\-smcr | \-R ] -.RB [ \-\-wide | \-W ] -.P -.B smcss -.RB { \-\-all | -a } -.RB [ \-\-debug | \-d ] -.RB [ \-\-smcr | \-R ] -.RB [ \-\-wide | \-W ] -.P -.B smcss -.RB { \-\-listening | \-l } -.RB [ \-\-wide | \-W ] -.P -.B smcss -.RB { \-\-version | \-v } -.P -.B smcss -.RB { \-\-help | \-h } - -.SH DESCRIPTION - -.B smcss -prints information about the Linux AF_SMC sockets and link groups. -The type of information printed is controlled by the first argument, as follows: -.TP -.BR (none) -.br -displays a list of connecting, closing, or connected SMC sockets with basic -information. - -.TP -.BR "\-a, \-\-all" -displays all types of SMC sockets: listening, opening, closing, and connected. - -.TP -.BR "\-l, \-\-listening" -shows listening sockets only. These are omitted by default. - -.SH OPTIONS - -.TP -.BR "\-d, \-\-debug" -displays additional debug information, such as shutdown state. - -.TP -.BR "\-D, \-\-smcd -displays additional SMC-D specific information. Shows SMC-D sockets only. - -.TP -.BR "\-h, \-\-help" -displays usage information. - -.TP -.BR "\-R, \-\-smcr -displays additional SMC-R specific information. Shows SMC-R sockets only. - -.TP -.BR "\-v, \-\-version" -displays program version. - -.TP -.BR "\-W, \-\-wide" -do not truncate IP addresses. - -.SH OUTPUT - -.SS "State" -The state of the socket. -The state can be one of these values: -.TP -.I -INIT -The SMC socket is being initialized. It is not connected nor -listening yet. -.TP -.I -CLOSED -The SMC socket is closed. It is not connected nor listening -anymore. -.TP -.I -LISTEN -The SMC socket is a listening socket, waiting for incoming connection requests. -.TP -.I -ACTIVE -The SMC socket has an established connection. -In this state, the TCP connection is fully established, -rendezvous processing has been completed, and SMC peers -can exchange data via RDMA. -.TP -.I -PEERCLW1 -No further data will be sent to the peer. -.TP -.I -PEERCLW2 -No further data will be sent to or received from the peer. -.TP -.I -APPLCLW1 -No further data will be received from the peer. -.TP -.I -APPLCLW2 -No further data will be received from or sent to the peer. -.TP -.I -APPLFINCLW -The peer has closed the socket. -.TP -.I -PEERFINCLW -The socket is closed locally. -.TP -.I -PEERABORTW -The socket was abnormally closed locally. -.TP -.I -PROCESSABORT -The peer has closed the socket abnormally. -.SS "UID" -User ID of the SMC socket. -.SS "Inode" -Inode attribute of the socket. -.SS "Local Address" -Address and port number of the local end of the SMC socket. -The displayed address is truncated when it ends with '..'. -.BR "-W, --wide" -can be used to display addresses untruncated. -.SS "Peer Address" -Address and port number of the remote end of the socket. -Analogous to "Local Address". -.SS "Intf" -When the socket is explicitly bound with setsockopt option SO_BINDTODEVICE then -Intf shows the interface number of the Ethernet device to which the socket is bound. -.SS "Mode" -.TP -.I -SMCD -The SMC socket uses SMC-D for data exchange. -.TP -.I -SMCR -The SMC socket uses SMC-R for data exchange. -.TP -.I -TCP -The SMC socket uses the TCP protocol for data exchange, because an SMC connection -could not be established. -.TP -In case of an error during connection setup, respective error codes will be displayed in the format /. -.HP -Linux error codes: -.TP 13 -.I -0x01010000 -Out of memory -.TP 13 -.I -0x02010000 -Timeout while waiting for confirm link message over RDMA device -.TP -.I -0x02020000 -Timeout while waiting for RDMA device to be added -.TP -.I -0x03000000 -Configuration error -.TP -.I -0x03010000 -Peer does not support SMC -.TP -.I -0x03020000 -Connection uses IPsec -.TP -.I -0x03030000 -No SMC devices found (R and D) -.TP -.I -0x03030001 -No ISM device for SMC-D found -.TP -.I -0x03030002 -No RDMA device for SMC-R found -.TP -.I -0x03030003 -Hardware has no ISMv2 support -.TP -.I -0x03030004 -Peer sent no SMCv2 extension -.TP -.I -0x03030005 -Peer sent no SMC-Dv2 extension -.TP -.I -0x03030006 -Peer sent no ISMv2 SEID -.TP -.I -0x03030007 -No SMC-Dv2 device found, but required -.TP -.I -0x03030008 -Peer sent no UEID -.TP -.I -0x03040000 -SMC modes mismatch (R or D) -.TP -.I -0x03050000 -Peer has eyecatcher in RMBE -.TP -.I -0x03060000 -Fastopen sockopt not supported -.TP -.I -0x03070000 -IP prefix / subnet mismatch -.TP -.I -0x03080000 -Error retrieving VLAN ID of IP device -.TP -.I -0x03090000 -Error while registering VLAN ID on ISM device -.TP -.I -0x030a0000 -No active SMC-R link in link group -.TP -.I -0x030b0000 -SMC-R link from server not found -.TP -.I -0x030c0000 -SMC version mismatch -.TP -.I -.I -0x030d0000 -SMC-D connection limit reached -.TP -.I -.TP -.I -0x030e0000 -SMC-Rv2 connection found no route to peer -.TP -.I -0x030f0000 -SMC-Rv2 connection mismatch direct/indirect with peer -0x04000000 -Synchronization error -.TP -.I -0x05000000 -Peer declined during handshake -.TP -.I -0x09990000 -Internal error -.TP -.I -0x09990001 -rtoken handling failed -.TP -.I -0x09990002 -RDMA link failed -.TP -.I -0x09990003 -RMB registration failed - -.SS "ShutD" -.TP -.I -<-> -The SMC socket has not been shut down. -.TP -.I -R-> -The SMC socket is shut down one-way and cannot receive data. -.TP -.I -<-W -The SMC socket is shut down one-way and cannot send data. -.TP -.I -R-W -The SMC socket is shut down in both ways and cannot receive or send data. -.SS "Token" -Unique ID of the SMC socket connection. -.SS "Sndbuf" -Size of the to-be-sent window of the SMC socket connection. -.SS "Rcvbuf" -Size of the receiving window of the SMC socket connection (filled by peer). -.SS "Peerbuf" -Size of the peer receiving window of the SMC socket connection (to fill -during RDMA-transfer). -.SS "rxprod-Cursor" -Describes the current cursor location of the "Rcvbuf" for data to be received -from the peer. -.SS "rxcons-Cursor" -Describes the current cursor location of the "Peerbuf" for data sent to peer -and confirmed by the peer. -.SS "rxFlags" -SMC socket connection flags set by and received from the peer. -.SS "txprod-Cursor" -Describes the current cursor location of the "Peerbuf" for data sent to peer. -.SS "txcons-Cursor" -Describes the current cursor location of the "Rcvbuf" for data received from -the peer and confirmed to the peer. -.SS "txFlags" -SMC socket connection flags set locally and sent to the peer. -.SS "txprep-Cursor" -Describes the current cursor location of the "Sndbuf" for data to be sent. -The data is to be moved to the "Peerbuf". -.SS "txsent-Cursor" -Describes the current cursor location of the "Sndbuf" for data sent. -The data was moved to the "Peerbuf". -.SS "txfin-Cursor" -Describes the current cursor location of the "Sndbuf" for data sent and -send completion confirmed. -The data was moved to the "Peerbuf" and completion was confirmed. -.SS "Role" -.TP -.I -CLNT -The link group of the SMC socket is used for client connections. -.TP -.I -SERV -The link group of the SMC socket is used for server connections. -.SS "IB-Device" -Name of the RoCE device used by the link group to which the SMC socket belongs. -.SS "Port" -Port of the RoCE device used by the link group to which the SMC socket belongs. -.SS "Linkid" -Unique link ID of the link within the link group to which the SMC socket belongs. -.SS "GID" -Gid of the RoCE port used by the link group to which the SMC socket belongs. -.SS "Peer-GID" -Gid of the Foreign RoCE port used by the link group to which the SMC socket belongs. -.SS "VLAN" -tbd. -.SH RETURN CODES -Successful -.IR smcss -commands return 0 and display the -requested socket state table or link group information. -If an error occurs, -.IR smcss -writes a message to stderr and completes with a return code other than 0. -.P -.SH SEE ALSO -.BR af_smc (7), -.BR smc_chk (8) -.BR smc_rnics (8), -.BR smc_run (8), -.BR smc_pnet (8), -.BR smcd (8), -.BR smcr (8) - diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcss.c b/testcases/feature-test/oeaware/smc-tools-main/smcss.c deleted file mode 100644 index 2593b33e5..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcss.c +++ /dev/null @@ -1,423 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2017, 2018 - * - * Author(s): Ursula Braun - * - * User space program for SMC Socket display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "libnetlink.h" - -#define ADDR_LEN_SHORT 23 - -static char *progname; -int show_debug; -int show_smcr; -int show_smcd; -int show_wide; -int listening = 0; -int all = 0; - -static void print_header(void) -{ - printf("State "); - printf("UID "); - printf("Inode "); - printf("Local Address "); - printf("Peer Address "); - printf("Intf "); - printf("Mode "); - - if (show_debug) { - printf("Shutd "); - printf("Token "); - printf("Sndbuf "); - printf("Rcvbuf "); - printf("Peerbuf "); - printf("rxprod-Cursor "); - printf("rxcons-Cursor "); - printf("rxFlags "); - printf("txprod-Cursor "); - printf("txcons-Cursor "); - printf("txFlags "); - printf("txprep-Cursor "); - printf("txsent-Cursor "); - printf("txfin-Cursor "); - } - - if (show_smcr) { - printf("Role "); - printf("IB-device "); - printf("Port "); - printf("Linkid "); - printf("GID "); - printf("Peer-GID"); - } - - if (show_smcd) { - printf("GID "); - printf("Token "); - printf("Peer-GID "); - printf("Peer-Token "); - printf("Linkid"); - } - - printf("\n"); -} - -static const char *smc_state(unsigned char x) -{ - static char buf[16]; - - switch (x) { - case 1: return "ACTIVE"; - case 2: return "INIT"; - case 7: return "CLOSED"; - case 10: return "LISTEN"; - case 20: return "PEERCLOSEWAIT1"; - case 21: return "PEERCLOSEWAIT2"; - case 22: return "APPCLOSEWAIT1"; - case 23: return "APPCLOSEWAIT2"; - case 24: return "APPFINCLOSEWAIT1"; - case 25: return "PEERFINCLOSEWAIT"; - case 26: return "PEERABORTWAIT"; - case 27: return "PROCESSABORT"; - default: sprintf(buf, "%#x?", x); return buf; - } -} - -/* format one sockaddr / port */ -static void addr_format(char *buf, size_t buf_len, size_t short_len, - __be32 addr[4], int port) -{ - char addr_buf[INET6_ADDRSTRLEN + 1], port_buf[16]; - int addr_len, port_len; - int af; - - /* There was an upstream discussion about the content of the - * diag_family field. Originally it was AF_SMC, but was changed with - * IPv6 support to indicate AF_INET or AF_INET6. Upstream complained - * later that there is no way to separate AF_INET from AF_SMC diag msgs. - * We now change back the value of the diag_family field to be always - * AF_SMC. We now 'parse' the IP address type. - * Note that smc_diag.c in kernel always clears the whole addr field - * before the ip address is copied into and we can rely on that here. - */ - if (addr[1] == 0 && addr[2] == 0 && addr[3] == 0) - af = AF_INET; - else - af = AF_INET6; - - if (buf_len < 20) - return; /* no space for errmsg */ - - if (!inet_ntop(af, addr, addr_buf, sizeof(addr_buf))) { - strcpy(buf, "(inet_ntop error)"); - return; - } - sprintf(port_buf, "%d", port); - addr_len = strlen(addr_buf); - port_len = strlen(port_buf); - if (!show_wide && (addr_len + 1 + port_len > short_len)) { - if (buf_len < short_len + 1) { - strcpy(buf, "(buf to small)"); - return; - } - /* truncate addr string */ - addr_len = short_len - 1 - port_len - 2; - strncpy(buf, addr_buf, addr_len); - buf[addr_len] = '\0'; - strcat(buf, ".."); /* indicate truncation */ - strcat(buf, ":"); - strcat(buf, port_buf); - } else { - if (buf_len < addr_len + 1 + port_len + 1) { - strcpy(buf, "(buf to small)"); - return; - } - snprintf(buf, buf_len, "%s:%s", addr_buf, port_buf); - } -} - -static void show_one_smc_sock(struct nlmsghdr *nlh) -{ - struct smc_diag_msg *r = NLMSG_DATA(nlh); - struct rtattr *tb[SMC_DIAG_MAX + 1]; - unsigned long long inode; - char txtbuf[128]; - - parse_rtattr(tb, SMC_DIAG_MAX, (struct rtattr *)(r+1), - nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*r))); - - if (listening) { - if ( r->diag_state != 10) - return; - } else { - if (!all && (r->diag_state == 10 || r->diag_state == 2)) - return; - } - if (show_smcr && r->diag_mode != SMC_DIAG_MODE_SMCR) - return; /* show only SMC-R sockets */ - if (show_smcd && r->diag_mode != SMC_DIAG_MODE_SMCD) - return; /* show only SMC-D sockets */ - - printf("%-14s ", smc_state(r->diag_state)); - printf("%05d ", r->diag_uid); - inode = r->diag_inode; - printf("%07llu ", inode); - if (r->diag_state == 2) /* INIT state */ - goto newline; - - addr_format(txtbuf, sizeof(txtbuf), ADDR_LEN_SHORT, - r->id.idiag_src, ntohs(r->id.idiag_sport)); - printf("%-*s ", (int)MAX(ADDR_LEN_SHORT, strlen(txtbuf)), txtbuf); - if (r->diag_state == 10) /* LISTEN state */ - goto newline; - - addr_format(txtbuf, sizeof(txtbuf), ADDR_LEN_SHORT, - r->id.idiag_dst, ntohs(r->id.idiag_dport)); - printf("%-*s ", (int)MAX(ADDR_LEN_SHORT, strlen(txtbuf)), txtbuf); - printf("%04x ", r->id.idiag_if); - if (r->diag_state == 7) /* CLOSED state */ - goto newline; - - if (r->diag_mode == SMC_DIAG_MODE_FALLBACK_TCP) { - printf("TCP "); - /* when available print local and peer fallback reason code */ - if (tb[SMC_DIAG_FALLBACK] && - tb[SMC_DIAG_FALLBACK]->rta_len >= sizeof(struct smc_diag_fallback)) - { - struct smc_diag_fallback fallback; - - fallback = *(struct smc_diag_fallback *)RTA_DATA(tb[SMC_DIAG_FALLBACK]); - printf("0x%08x", fallback.reason); - if (fallback.peer_diagnosis) - printf("/0x%08x", fallback.peer_diagnosis); - } - goto newline; - - } else if (r->diag_mode == SMC_DIAG_MODE_SMCD) - printf("%4s ", "SMCD"); - else - printf("%4s ", "SMCR"); - - if (show_debug) { - if (tb[SMC_DIAG_SHUTDOWN] && - tb[SMC_DIAG_SHUTDOWN]->rta_len >= sizeof(__u8)) - { - unsigned char mask; - - mask = *(__u8 *)RTA_DATA(tb[SMC_DIAG_SHUTDOWN]); - printf(" %c-%c ", mask & 1 ? 'R' : '<', mask & 2 ? 'W' : '>'); - } - - if (tb[SMC_DIAG_CONNINFO] && - tb[SMC_DIAG_CONNINFO]->rta_len >= sizeof(struct smc_diag_conninfo)) - { - struct smc_diag_conninfo cinfo; - - cinfo = *(struct smc_diag_conninfo *)RTA_DATA(tb[SMC_DIAG_CONNINFO]); - printf("%08x ", cinfo.token); - printf("%08x ", cinfo.sndbuf_size); - printf("%08x ", cinfo.rmbe_size); - printf("%08x ", cinfo.peer_rmbe_size); - - printf("%04x:%08x ", cinfo.rx_prod.wrap, cinfo.rx_prod.count); - printf("%04x:%08x ", cinfo.rx_cons.wrap, cinfo.rx_cons.count); - printf("%02x:%02x ", cinfo.rx_prod_flags, cinfo.rx_conn_state_flags); - printf("%04x:%08x ", cinfo.tx_prod.wrap, cinfo.tx_prod.count); - printf("%04x:%08x ", cinfo.tx_cons.wrap, cinfo.tx_cons.count); - printf("%02x:%02x ", cinfo.tx_prod_flags, cinfo.tx_conn_state_flags); - printf("%04x:%08x ", cinfo.tx_prep.wrap, cinfo.tx_prep.count); - printf("%04x:%08x ", cinfo.tx_sent.wrap, cinfo.tx_sent.count); - printf("%04x:%08x ", cinfo.tx_fin.wrap, cinfo.tx_fin.count); - } - } - - if (show_smcr) { - if (tb[SMC_DIAG_LGRINFO] && - tb[SMC_DIAG_LGRINFO]->rta_len >= sizeof(struct smc_diag_lgrinfo)) - { - struct smc_diag_lgrinfo linfo; - - linfo = *(struct smc_diag_lgrinfo *)RTA_DATA(tb[SMC_DIAG_LGRINFO]); - printf("%4s ", linfo.role ? "SERV" : "CLNT"); - printf("%-15s ", linfo.lnk[0].ibname); - printf("%02x ", linfo.lnk[0].ibport); - printf("%02x ", linfo.lnk[0].link_id); - printf("%-40s ", linfo.lnk[0].gid); - printf("%s", linfo.lnk[0].peer_gid); - } - } - - if (show_smcd) { - if (tb[SMC_DIAG_DMBINFO] && - tb[SMC_DIAG_DMBINFO]->rta_len >= sizeof(struct smcd_diag_dmbinfo)) - { - struct smcd_diag_dmbinfo dinfo; - - dinfo = *(struct smcd_diag_dmbinfo *)RTA_DATA(tb[SMC_DIAG_DMBINFO]); - printf("%016llx ", dinfo.my_gid); - printf("%016llx ", dinfo.token); - printf("%016llx ", dinfo.peer_gid); - printf("%016llx ", dinfo.peer_token); - printf("%08x ", dinfo.linkid); - } - } - -newline: - printf("\n"); -} - -static int smc_show_netlink() -{ - struct rtnl_handle rth; - unsigned char cmd = 0; - int rc = 0; - - if ((rc = rtnl_open(&rth))) - return EXIT_FAILURE; - - rth.dump = MAGIC_SEQ; - - if (show_debug) - cmd |= (1<<(SMC_DIAG_CONNINFO-1)); - - if (show_smcr) - cmd |= (1<<(SMC_DIAG_LGRINFO-1)); - - if (show_smcd) - cmd |= (1<<(SMC_DIAG_DMBINFO-1)); - - if ((rc = sockdiag_send(rth.fd, cmd))) - goto exit; - - print_header(); - - rc = rtnl_dump(&rth, show_one_smc_sock); - -exit: - rtnl_close(&rth); - return rc; -} - -static const struct option long_opts[] = { - { "all", 0, 0, 'a' }, - { "debug", 0, 0, 'd' }, - { "listening", 0, 0, 'l' }, - { "smcd", 0, 0, 'D' }, - { "smcr", 0, 0, 'R' }, - { "version", 0, 0, 'v' }, - { "wide", 0, 0, 'W' }, - { "help", 0, 0, 'h' }, - { NULL, 0, NULL, 0} -}; - -static void _usage(FILE *dest) -{ - fprintf(dest, -"Usage: %s [ OPTIONS ]\n" -"\t-h, --help this message\n" -"\t-v, --version show version information\n" -"\t-a, --all show all sockets\n" -"\t-l, --listening show listening sockets\n" -"\t-d, --debug show debug socket information\n" -"\t-W, --wide do not truncate IP addresses\n" -"\t-D, --smcd show detailed SMC-D information (shows only SMC-D sockets)\n" -"\t-R, --smcr show detailed SMC-R information (shows only SMC-R sockets)\n" -"\tno OPTIONS show all connected sockets\n", - progname); -} - -static void help(void) __attribute__((noreturn)); -static void help(void) -{ - _usage(stdout); - exit(EXIT_SUCCESS); -} - -static void usage(void) __attribute__((noreturn)); -static void usage(void) -{ - _usage(stderr); - exit(EXIT_FAILURE); -} - -int main(int argc, char *argv[]) -{ - char *slash; - int ch; - - progname = (slash = strrchr(argv[0], '/')) ? slash + 1 : argv[0]; - - while ((ch = getopt_long(argc, argv, "aldDRhvW", long_opts, NULL)) != EOF) { - switch (ch) { - case 'a': - all++; - break; - case 'l': - listening++; - break; - case 'd': - show_debug++; - break; - case 'D': - show_smcd++; - break; - case 'R': - show_smcr++; - break; - case 'v': - printf("smcss utility, smc-tools-%s\n", RELEASE_STRING); - exit(0); - case 'W': - show_wide++; - break; - case 'h': - help(); - case '?': - default: - usage(); - } - } - - if (show_smcr && show_smcd) { - fprintf(stderr, "--smcd together with --smcr is not supported\n"); - usage(); - } - if (listening && show_debug) { - fprintf(stderr, "--listening together with --debug is not supported\n"); - usage(); - } - if (listening && all) { - fprintf(stderr, "--listening together with --all is not supported\n"); - usage(); - } - if (listening && show_smcr) { - fprintf(stderr, "--listening together with --smcr is not supported\n"); - usage(); - } - if (listening && show_smcd) { - fprintf(stderr, "--listening together with --smcd is not supported\n"); - usage(); - } - return smc_show_netlink(); -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/smctools_common.h b/testcases/feature-test/oeaware/smc-tools-main/smctools_common.h deleted file mode 100644 index f1940cc82..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smctools_common.h +++ /dev/null @@ -1,545 +0,0 @@ -/* - * smc-tools/smctools_common.h - * - * Copyright IBM Corp. 2017 - * - * Author(s): Ursula Braun (ubraun@linux.ibm.com) - * - * Copyright IBM Corp. 2017 - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#ifndef SMCTOOLS_COMMON_H -#define SMCTOOLS_COMMON_H - -#define STRINGIFY_1(x) #x -#define STRINGIFY(x) STRINGIFY_1(x) - -#define RELEASE_STRING "1.8.4" - -#define PF_SMC 43 - -#include - -/*********************************************************** - * Mimic definitions in kernel/include/uapi/linux/smc.h - ***********************************************************/ - -#define SMC_MAX_PNETID_LEN 16 /* Max. length of PNET id */ -#define SMC_LGR_ID_SIZE 4 -#define SMC_MAX_IBNAME 8 -#define SMC_MAX_HOSTNAME_LEN 32 /* Max length of hostname */ -#define SMC_MAX_EID_LEN 32 /* Max length of eid */ -#define SMC_MAX_UEID 8 /* Max number of eids */ -#define SMC_MAX_PORTS 2 /* Max # of ports per ib device */ -#define SMC_PCI_ID_STR_LEN 16 /* Max length of pci id string */ - -/* Netlink SMC_PNETID attributes */ -enum { - SMC_PNETID_UNSPEC, - SMC_PNETID_NAME, - SMC_PNETID_ETHNAME, - SMC_PNETID_IBNAME, - SMC_PNETID_IBPORT, - __SMC_PNETID_MAX, - SMC_PNETID_MAX = __SMC_PNETID_MAX - 1 -}; - -enum { /* SMC PNET Table commands */ - SMC_PNETID_GET = 1, - SMC_PNETID_ADD, - SMC_PNETID_DEL, - SMC_PNETID_FLUSH -}; - -#define SMCR_GENL_FAMILY_NAME "SMC_PNETID" -#define SMCR_GENL_FAMILY_VERSION 1 -/* Use for accessing non-socket information like */ -/* SMC links, linkgroups and devices */ -#define SMC_GENL_FAMILY_NAME "SMC_GEN_NETLINK" -#define SMC_GENL_FAMILY_VERSION 1 - -/* SMC_GENL_FAMILY commands */ -enum { - SMC_NETLINK_GET_SYS_INFO = 1, - SMC_NETLINK_GET_LGR_SMCR, - SMC_NETLINK_GET_LINK_SMCR, - SMC_NETLINK_GET_LGR_SMCD, - SMC_NETLINK_GET_DEV_SMCD, - SMC_NETLINK_GET_DEV_SMCR, - SMC_NETLINK_GET_STATS, - SMC_NETLINK_GET_FBACK_STATS, - SMC_NETLINK_DUMP_UEID, - SMC_NETLINK_ADD_UEID, - SMC_NETLINK_REMOVE_UEID, - SMC_NETLINK_FLUSH_UEID, - SMC_NETLINK_DUMP_SEID, - SMC_NETLINK_ENABLE_SEID, - SMC_NETLINK_DISABLE_SEID, -}; - -/* SMC_GENL_FAMILY top level attributes */ -enum { - SMC_GEN_UNSPEC, - SMC_GEN_SYS_INFO, /* nest */ - SMC_GEN_LGR_SMCR, /* nest */ - SMC_GEN_LINK_SMCR, /* nest */ - SMC_GEN_LGR_SMCD, /* nest */ - SMC_GEN_DEV_SMCD, /* nest */ - SMC_GEN_DEV_SMCR, /* nest */ - SMC_GEN_STATS, /* nest */ - SMC_GEN_FBACK_STATS, /* nest */ - __SMC_GEN_MAX, - SMC_GEN_MAX = __SMC_GEN_MAX - 1 -}; - -/* SMC_GEN_SYS_INFO attributes */ -enum { - SMC_NLA_SYS_UNSPEC, - SMC_NLA_SYS_VER, /* u8 */ - SMC_NLA_SYS_REL, /* u8 */ - SMC_NLA_SYS_IS_ISM_V2, /* u8 */ - SMC_NLA_SYS_LOCAL_HOST, /* string */ - SMC_NLA_SYS_SEID, /* string */ - SMC_NLA_SYS_IS_SMCR_V2, /* u8 */ - __SMC_NLA_SYS_MAX, - SMC_NLA_SYS_MAX = __SMC_NLA_SYS_MAX - 1 -}; - -/* SMC_NLA_LGR_D_V2_COMMON and SMC_NLA_LGR_R_V2_COMMON nested attributes */ -enum { - SMC_NLA_LGR_V2_VER, /* u8 */ - SMC_NLA_LGR_V2_REL, /* u8 */ - SMC_NLA_LGR_V2_OS, /* u8 */ - SMC_NLA_LGR_V2_NEG_EID, /* string */ - SMC_NLA_LGR_V2_PEER_HOST, /* string */ - __SMC_NLA_LGR_V2_MAX, - SMC_NLA_LGR_V2_MAX = __SMC_NLA_LGR_V2_MAX - 1 -}; - -/* SMC_NLA_LGR_R_V2 nested attributes */ -enum { - SMC_NLA_LGR_R_V2_UNSPEC, - SMC_NLA_LGR_R_V2_DIRECT, /* u8 */ - __SMC_NLA_LGR_R_V2_MAX, - SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1 -}; - -/* SMC_GEN_LGR_SMCR attributes */ -enum { - SMC_NLA_LGR_R_UNSPEC, - SMC_NLA_LGR_R_ID, /* u32 */ - SMC_NLA_LGR_R_ROLE, /* u8 */ - SMC_NLA_LGR_R_TYPE, /* u8 */ - SMC_NLA_LGR_R_PNETID, /* string */ - SMC_NLA_LGR_R_VLAN_ID, /* u8 */ - SMC_NLA_LGR_R_CONNS_NUM, /* u32 */ - SMC_NLA_LGR_R_V2_COMMON, /* nest */ - SMC_NLA_LGR_R_V2, /* nest */ - SMC_NLA_LGR_R_NET_COOKIE, /* u64 */ - SMC_NLA_LGR_R_PAD, /* flag */ - SMC_NLA_LGR_R_BUF_TYPE, /* u8 */ - SMC_NLA_LGR_R_SNDBUF_ALLOC, /* uint */ - SMC_NLA_LGR_R_RMB_ALLOC, /* uint */ - __SMC_NLA_LGR_R_MAX, - SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1 -}; - -/* SMC_GEN_LINK_SMCR attributes */ -enum { - SMC_NLA_LINK_UNSPEC, - SMC_NLA_LINK_ID, /* u8 */ - SMC_NLA_LINK_IB_DEV, /* string */ - SMC_NLA_LINK_IB_PORT, /* u8 */ - SMC_NLA_LINK_GID, /* string */ - SMC_NLA_LINK_PEER_GID, /* string */ - SMC_NLA_LINK_CONN_CNT, /* u32 */ - SMC_NLA_LINK_NET_DEV, /* string */ - SMC_NLA_LINK_UID, /* u32 */ - SMC_NLA_LINK_PEER_UID, /* u32 */ - SMC_NLA_LINK_STATE, /* u32 */ - __SMC_NLA_LINK_MAX, - SMC_NLA_LINK_MAX = __SMC_NLA_LINK_MAX - 1 -}; - -/* SMC_GEN_LGR_SMCD attributes */ -enum { - SMC_NLA_LGR_D_UNSPEC, - SMC_NLA_LGR_D_ID, /* u32 */ - SMC_NLA_LGR_D_GID, /* u64 */ - SMC_NLA_LGR_D_PEER_GID, /* u64 */ - SMC_NLA_LGR_D_VLAN_ID, /* u8 */ - SMC_NLA_LGR_D_CONNS_NUM, /* u32 */ - SMC_NLA_LGR_D_PNETID, /* string */ - SMC_NLA_LGR_D_CHID, /* u16 */ - SMC_NLA_LGR_D_PAD, /* flag */ - SMC_NLA_LGR_D_V2_COMMON, /* nest */ - SMC_NLA_LGR_D_EXT_GID, /* u64 */ - SMC_NLA_LGR_D_PEER_EXT_GID, /* u64 */ - SMC_NLA_LGR_D_SNDBUF_ALLOC, /* uint */ - SMC_NLA_LGR_D_DMB_ALLOC, /* uint */ - __SMC_NLA_LGR_D_MAX, - SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1 -}; - -/* SMC_NLA_DEV_PORT nested attributes */ -enum { - SMC_NLA_DEV_PORT_UNSPEC, - SMC_NLA_DEV_PORT_PNET_USR, /* u8 */ - SMC_NLA_DEV_PORT_PNETID, /* string */ - SMC_NLA_DEV_PORT_NETDEV, /* string */ - SMC_NLA_DEV_PORT_STATE, /* u8 */ - SMC_NLA_DEV_PORT_VALID, /* u8 */ - SMC_NLA_DEV_PORT_LNK_CNT, /* u32 */ - __SMC_NLA_DEV_PORT_MAX, - SMC_NLA_DEV_PORT_MAX = __SMC_NLA_DEV_PORT_MAX - 1 -}; - -/* SMC_GEN_DEV_SMCD and SMC_GEN_DEV_SMCR attributes */ -enum { - SMC_NLA_DEV_UNSPEC, - SMC_NLA_DEV_USE_CNT, /* u32 */ - SMC_NLA_DEV_IS_CRIT, /* u8 */ - SMC_NLA_DEV_PCI_FID, /* u32 */ - SMC_NLA_DEV_PCI_CHID, /* u16 */ - SMC_NLA_DEV_PCI_VENDOR, /* u16 */ - SMC_NLA_DEV_PCI_DEVICE, /* u16 */ - SMC_NLA_DEV_PCI_ID, /* string */ - SMC_NLA_DEV_PORT, /* nest */ - SMC_NLA_DEV_PORT2, /* nest */ - SMC_NLA_DEV_IB_NAME, /* string */ - __SMC_NLA_DEV_MAX, - SMC_NLA_DEV_MAX = __SMC_NLA_DEV_MAX - 1 -}; - -/* SMC_NLA_STATS_T_TX(RX)_RMB_SIZE nested attributes */ -/* SMC_NLA_STATS_TX(RX)PLOAD_SIZE nested attributes */ -enum { - SMC_NLA_STATS_PLOAD_PAD, - SMC_NLA_STATS_PLOAD_8K, /* u64 */ - SMC_NLA_STATS_PLOAD_16K, /* u64 */ - SMC_NLA_STATS_PLOAD_32K, /* u64 */ - SMC_NLA_STATS_PLOAD_64K, /* u64 */ - SMC_NLA_STATS_PLOAD_128K, /* u64 */ - SMC_NLA_STATS_PLOAD_256K, /* u64 */ - SMC_NLA_STATS_PLOAD_512K, /* u64 */ - SMC_NLA_STATS_PLOAD_1024K, /* u64 */ - SMC_NLA_STATS_PLOAD_G_1024K, /* u64 */ - __SMC_NLA_STATS_PLOAD_MAX, - SMC_NLA_STATS_PLOAD_MAX = __SMC_NLA_STATS_PLOAD_MAX - 1 -}; - -/* SMC_NLA_STATS_T_TX(RX)_RMB_STATS nested attributes */ -enum { - SMC_NLA_STATS_RMB_PAD, - SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT, /* u64 */ - SMC_NLA_STATS_RMB_SIZE_SM_CNT, /* u64 */ - SMC_NLA_STATS_RMB_FULL_PEER_CNT, /* u64 */ - SMC_NLA_STATS_RMB_FULL_CNT, /* u64 */ - SMC_NLA_STATS_RMB_REUSE_CNT, /* u64 */ - SMC_NLA_STATS_RMB_ALLOC_CNT, /* u64 */ - SMC_NLA_STATS_RMB_DGRADE_CNT, /* u64 */ - __SMC_NLA_STATS_RMB_MAX, - SMC_NLA_STATS_RMB_MAX = __SMC_NLA_STATS_RMB_MAX - 1 -}; - -/* SMC_NLA_STATS_SMCD_TECH and _SMCR_TECH nested attributes */ -enum { - SMC_NLA_STATS_T_PAD, - SMC_NLA_STATS_T_TX_RMB_SIZE, /* nest */ - SMC_NLA_STATS_T_RX_RMB_SIZE, /* nest */ - SMC_NLA_STATS_T_TXPLOAD_SIZE, /* nest */ - SMC_NLA_STATS_T_RXPLOAD_SIZE, /* nest */ - SMC_NLA_STATS_T_TX_RMB_STATS, /* nest */ - SMC_NLA_STATS_T_RX_RMB_STATS, /* nest */ - SMC_NLA_STATS_T_CLNT_V1_SUCC, /* u64 */ - SMC_NLA_STATS_T_CLNT_V2_SUCC, /* u64 */ - SMC_NLA_STATS_T_SRV_V1_SUCC, /* u64 */ - SMC_NLA_STATS_T_SRV_V2_SUCC, /* u64 */ - SMC_NLA_STATS_T_SENDPAGE_CNT, /* u64 */ - SMC_NLA_STATS_T_SPLICE_CNT, /* u64 */ - SMC_NLA_STATS_T_CORK_CNT, /* u64 */ - SMC_NLA_STATS_T_NDLY_CNT, /* u64 */ - SMC_NLA_STATS_T_URG_DATA_CNT, /* u64 */ - SMC_NLA_STATS_T_RX_BYTES, /* u64 */ - SMC_NLA_STATS_T_TX_BYTES, /* u64 */ - SMC_NLA_STATS_T_RX_CNT, /* u64 */ - SMC_NLA_STATS_T_TX_CNT, /* u64 */ - SMC_NLA_STATS_T_RX_RMB_USAGE, /* uint */ - SMC_NLA_STATS_T_TX_RMB_USAGE, /* uint */ - __SMC_NLA_STATS_T_MAX, - SMC_NLA_STATS_T_MAX = __SMC_NLA_STATS_T_MAX - 1 -}; - -/* SMC_GEN_STATS attributes */ -enum { - SMC_NLA_STATS_PAD, - SMC_NLA_STATS_SMCD_TECH, /* nest */ - SMC_NLA_STATS_SMCR_TECH, /* nest */ - SMC_NLA_STATS_CLNT_HS_ERR_CNT, /* u64 */ - SMC_NLA_STATS_SRV_HS_ERR_CNT, /* u64 */ - __SMC_NLA_STATS_MAX, - SMC_NLA_STATS_MAX = __SMC_NLA_STATS_MAX - 1 -}; - -/* SMC_GEN_FBACK_STATS attributes */ -enum { - SMC_NLA_FBACK_STATS_PAD, - SMC_NLA_FBACK_STATS_TYPE, /* u8 */ - SMC_NLA_FBACK_STATS_SRV_CNT, /* u64 */ - SMC_NLA_FBACK_STATS_CLNT_CNT, /* u64 */ - SMC_NLA_FBACK_STATS_RSN_CODE, /* u32 */ - SMC_NLA_FBACK_STATS_RSN_CNT, /* u16 */ - __SMC_NLA_FBACK_STATS_MAX, - SMC_NLA_FBACK_STATS_MAX = __SMC_NLA_FBACK_STATS_MAX - 1 -}; - -/* SMC_NETLINK_UEID attributes */ -enum { - SMC_NLA_EID_TABLE_UNSPEC, - SMC_NLA_EID_TABLE_ENTRY, /* string */ - __SMC_NLA_EID_TABLE_MAX, - SMC_NLA_EID_TABLE_MAX = __SMC_NLA_EID_TABLE_MAX - 1 -}; - -/* SMC_NETLINK_SEID attributes */ -enum { - SMC_NLA_SEID_UNSPEC, - SMC_NLA_SEID_ENTRY, /* string */ - SMC_NLA_SEID_ENABLED, /* u8 */ - __SMC_NLA_SEID_TABLE_MAX, - SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1 -}; - -/*********************************************************** - * Mimic definitions in kernel/include/uapi/linux/smc_diag.h - ***********************************************************/ -#include -#include -#include - -#define SMC_DIAG_EXTS_PER_CMD 16 -/* Sequence numbers */ -enum { - MAGIC_SEQ = 123456, - MAGIC_SEQ_V2, - MAGIC_SEQ_V2_ACK, -}; - -/* Request structure */ -struct smc_diag_req { - __u8 diag_family; - __u8 pad[2]; - __u8 diag_ext; /* Query extended information */ - struct inet_diag_sockid id; -}; - -/* Request structure v2 */ -struct smc_diag_req_v2 { - __u8 diag_family; - __u8 pad[2]; - __u8 diag_ext; /* Query extended information */ - struct inet_diag_sockid id; - __u32 cmd; - __u32 cmd_ext; - __u8 cmd_val[8]; -}; - -/* Base info structure. It contains socket identity (addrs/ports/cookie) based - * on the internal clcsock, and more SMC-related socket data - */ -struct smc_diag_msg { - __u8 diag_family; - __u8 diag_state; - __u8 diag_mode; - __u8 diag_shutdown; - struct inet_diag_sockid id; - - __u32 diag_uid; - __u64 diag_inode; -}; - -/* Mode of a connection */ -enum { - SMC_DIAG_MODE_SMCR, - SMC_DIAG_MODE_FALLBACK_TCP, - SMC_DIAG_MODE_SMCD, -}; - -/* GET_SOCK_DIAG command extensions */ - -enum { - SMC_DIAG_NONE, - SMC_DIAG_CONNINFO, - SMC_DIAG_LGRINFO, - SMC_DIAG_SHUTDOWN, - SMC_DIAG_DMBINFO, - SMC_DIAG_FALLBACK, - __SMC_DIAG_MAX, -}; - -/* V2 Commands */ -enum { - SMC_DIAG_GET_LGR_INFO = SMC_DIAG_EXTS_PER_CMD, - SMC_DIAG_GET_DEV_INFO, - SMC_DIAG_GET_SYS_INFO, - __SMC_DIAG_EXT_MAX, -}; - -/* SMC_DIAG_GET_LGR_INFO command extensions */ -enum { - SMC_DIAG_LGR_INFO_SMCR = 1, - SMC_DIAG_LGR_INFO_SMCR_LINK, - SMC_DIAG_LGR_INFO_SMCD, -}; - -/* SMC_DIAG_GET_DEV_INFO command extensions */ -enum { - SMC_DIAG_DEV_INFO_SMCD = 1, - SMC_DIAG_DEV_INFO_SMCR, -}; - -/* SMC_DIAG_GET_SYS_INFO command extensions */ -enum { - SMC_DIAG_SYS_INFO = 1, -}; - -#define SMC_DIAG_MAX (__SMC_DIAG_MAX - 1) -#define SMC_DIAG_EXT_MAX (__SMC_DIAG_EXT_MAX - 1) - -/* SMC_DIAG_CONNINFO */ -#define IB_DEVICE_NAME_MAX 64 - -struct smc_diag_cursor { - __u16 reserved; - __u16 wrap; - __u32 count; -}; - -struct smc_diag_conninfo { - __u32 token; /* unique connection id */ - __u32 sndbuf_size; /* size of send buffer */ - __u32 rmbe_size; /* size of RMB element */ - __u32 peer_rmbe_size; /* size of peer RMB element */ - /* local RMB element cursors */ - struct smc_diag_cursor rx_prod; /* received producer cursor */ - struct smc_diag_cursor rx_cons; /* received consumer cursor */ - /* peer RMB element cursors */ - struct smc_diag_cursor tx_prod; /* sent producer cursor */ - struct smc_diag_cursor tx_cons; /* sent consumer cursor */ - __u8 rx_prod_flags; /* received producer flags */ - __u8 rx_conn_state_flags; /* recvd connection flags*/ - __u8 tx_prod_flags; /* sent producer flags */ - __u8 tx_conn_state_flags; /* sent connection flags*/ - /* send buffer cursors */ - struct smc_diag_cursor tx_prep; /* prepared to be sent cursor */ - struct smc_diag_cursor tx_sent; /* sent cursor */ - struct smc_diag_cursor tx_fin; /* confirmed sent cursor */ -}; - -struct smc_v2_lgr_info { - __u8 v2_lgr_info_received; - __u8 smc_version; - __u8 peer_smc_release; - __u8 peer_os; /* peer operating system */ - __u8 negotiated_eid[SMC_MAX_EID_LEN + 1]; - __u8 peer_hostname[SMC_MAX_HOSTNAME_LEN + 1]; - /* SMC-R v2 specific */ - __u8 smcr_direct; -}; - -/* unused -struct smc_system_info { - __u8 smc_version; - __u8 smc_release; - __u8 ueid_count; - __u8 smc_ism_is_v2; - __u32 reserved; - __u8 local_hostname[SMC_MAX_HOSTNAME_LEN]; - __u8 seid[SMC_MAX_EID_LEN]; - __u8 ueid[SMC_MAX_UEID][SMC_MAX_EID_LEN]; -}; -*/ - -/* SMC_DIAG_LINKINFO */ - -struct smc_diag_linkinfo { - __u8 link_id; /* link identifier */ - __u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */ - __u8 ibport; /* RDMA device port number */ - __u8 gid[40]; /* local GID */ - __u8 peer_gid[40]; /* peer GID */ -}; - -struct smc_diag_linkinfo_v2 { - struct smc_diag_linkinfo v1; - __u32 conn_cnt; - __u8 netdev[IFNAMSIZ]; - __u8 link_uid[4]; - __u8 peer_link_uid[4]; - __u32 link_state; -}; - -struct smc_diag_lgrinfo { - struct smc_diag_linkinfo lnk[1]; - __u8 role; -}; - -struct smc_diag_fallback { - __u32 reason; - __u32 peer_diagnosis; -}; - -struct smcd_diag_dmbinfo { /* SMC-D Socket internals */ - __u32 linkid; /* Link identifier */ - __u64 peer_gid; /* Peer GID */ - __u64 my_gid; /* My GID */ - __u64 token; /* Token of DMB */ - __u64 peer_token; /* Token of remote DMBE */ -}; - -struct smcd_diag_dmbinfo_v2 { - struct smcd_diag_dmbinfo v1; - __u8 pnet_id[SMC_MAX_PNETID_LEN]; - __u32 conns_num; - __u16 chid; - __u8 vlan_id; - __u64 sndbuf_alloc; - __u64 dmb_alloc; - struct smc_v2_lgr_info v2_lgr_info; -}; - -struct smc_diag_dev_info { - __u8 pnet_id[SMC_MAX_PORTS][SMC_MAX_PNETID_LEN]; - __u8 pnetid_by_user[SMC_MAX_PORTS]; - __u32 use_cnt; - __u8 is_critical; - __u32 pci_fid; - __u16 pci_pchid; - __u16 pci_vendor; - __u16 pci_device; - __u8 pci_id[SMC_PCI_ID_STR_LEN]; - __u8 dev_name[IB_DEVICE_NAME_MAX]; - __u8 netdev[SMC_MAX_PORTS][IFNAMSIZ]; - __u8 port_state[SMC_MAX_PORTS]; - __u8 port_valid[SMC_MAX_PORTS]; - __u32 lnk_cnt_by_port[SMC_MAX_PORTS]; /* # lnks per port */ -}; - - -struct smc_diag_lgr { - __u8 lgr_id[SMC_LGR_ID_SIZE]; - __u8 lgr_role; - __u8 lgr_type; - __u8 pnet_id[SMC_MAX_PNETID_LEN]; - __u8 vlan_id; - __u32 conns_num; - __u64 sndbuf_alloc; - __u64 rmb_alloc; - struct smc_v2_lgr_info v2_lgr_info; -}; -#endif /* SMCTOOLS_COMMON_H */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/stats.c b/testcases/feature-test/oeaware/smc-tools-main/stats.c deleted file mode 100644 index dcf4ad0e8..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/stats.c +++ /dev/null @@ -1,1071 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2021 - * - * Author(s): Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "util.h" -#include "libnetlink.h" -#include "stats.h" - -#if defined(SMCD) -static int is_smcd = 1; -#else -static int is_smcd = 0; -#endif -static int d_level = 0; -static int is_abs = 0; - -static int show_cmd = 0; -static int reset_cmd = 0; -static int json_cmd = 0; -static int cache_file_exists = 0; - -struct smc_stats smc_stat; /* kernel values, might contain merged values */ -struct smc_stats smc_stat_c; /* cache file values */ -struct smc_stats smc_stat_org; /* original kernel values */ -struct smc_stats_rsn smc_rsn; -struct smc_stats_rsn smc_rsn_c; -struct smc_stats_rsn smc_rsn_org; -FILE *cache_fp = NULL; -char *cache_file_path = NULL; - -static char* j_output[65] = {"SMC_INT_TX_BUF_8K", "SMC_INT_TX_BUF_16K", "SMC_INT_TX_BUF_32K", "SMC_INT_TX_BUF_64K", "SMC_INT_TX_BUF_128K", - "SMC_INT_TX_BUF_256K", "SMC_INT_TX_BUF_512K", "SMC_INT_TX_BUF_1024K", "SMC_INT_TX_BUF_G_1024K", - "SMC_INT_RX_BUF_8K", "SMC_INT_RX_BUF_16K", "SMC_INT_RX_BUF_32K", "SMC_INT_RX_BUF_64K", "SMC_INT_RX_BUF_128K", - "SMC_INT_RX_BUF_256K", "SMC_INT_RX_BUF_512K", "SMC_INT_RX_BUF_1024K", "SMC_INT_RX_BUF_G_1024K", - "SMC_USR_TX_BUF_8K", "SMC_USR_TX_BUF_16K", "SMC_USR_TX_BUF_32K", "SMC_USR_TX_BUF_64K", "SMC_USR_TX_BUF_128K", - "SMC_USR_TX_BUF_256K", "SMC_USR_TX_BUF_512K", "SMC_USR_TX_BUF_1024K", "SMC_USR_TX_BUF_G_1024K", - "SMC_USR_RX_BUF_8K", "SMC_USR_RX_BUF_16K", "SMC_USR_RX_BUF_32K", "SMC_USR_RX_BUF_64K", "SMC_USR_RX_BUF_128K", - "SMC_USR_RX_BUF_256K", "SMC_USR_RX_BUF_512K", "SMC_USR_RX_BUF_1024K", "SMC_USR_RX_BUF_G_1024K", - "SMC_INT_TX_BUF_SIZE_SM_PEER_CNT", "SMC_INT_TX_BUF_SIZE_SM_CNT", "SMC_INT_TX_BUF_FULL_PEER_CNT", - "SMC_INT_TX_BUF_FULL_CNT", "SMC_INT_TX_BUF_REUSE_CNT", "SMC_INT_TX_BUF_ALLOC_CNT", "SMC_INT_TX_BUF_DGRADE_CNT", - "SMC_INT_RX_BUF_SIZE_SM_PEER_CNT", "SMC_INT_RX_BUF_SIZE_SM_CNT", "SMC_INT_RX_BUF_FULL_PEER_CNT", - "SMC_INT_RX_BUF_FULL_CNT", "SMC_INT_RX_BUF_REUSE_CNT", "SMC_INT_RX_BUF_ALLOC_CNT", "SMC_INT_RX_BUF_DGRADE_CNT", - "SMC_CLNT_V1_SUCC_CNT", "SMC_CLNT_V2_SUCC_CNT", "SMC_SRV_V1_SUCC_CNT", "SMC_SRV_V2_SUCC_CNT", - "SMC_SENDPAGE_CNT", "SMC_URG_DATA_CNT", "SMC_SPLICE_CNT", "SMC_CORK_CNT", "SMC_NDLY_CNT", - "SMC_RX_BYTES", "SMC_TX_BYTES", "SMC_RX_CNT", "SMC_TX_CNT", "SMC_RX_RMB_USAGE", "SMC_TX_RMB_USAGE" -}; - -static struct nla_policy smc_gen_stats_policy[SMC_NLA_STATS_MAX + 1] = { - [SMC_NLA_STATS_PAD] = { .type = NLA_UNSPEC }, - [SMC_NLA_STATS_SMCD_TECH] = { .type = NLA_NESTED }, - [SMC_NLA_STATS_SMCR_TECH] = { .type = NLA_NESTED }, - [SMC_NLA_STATS_CLNT_HS_ERR_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_SRV_HS_ERR_CNT] = { .type = NLA_U64 }, -}; - -static struct nla_policy smc_gen_stats_fback_policy[SMC_NLA_FBACK_STATS_MAX + 1] = { - [SMC_NLA_FBACK_STATS_PAD] = { .type = NLA_UNSPEC }, - [SMC_NLA_FBACK_STATS_TYPE] = { .type = NLA_U8 }, - [SMC_NLA_FBACK_STATS_SRV_CNT] = { .type = NLA_U64 }, - [SMC_NLA_FBACK_STATS_CLNT_CNT] = { .type = NLA_U64 }, - [SMC_NLA_FBACK_STATS_RSN_CODE] = { .type = NLA_U32 }, - [SMC_NLA_FBACK_STATS_RSN_CNT] = { .type = NLA_U16 }, -}; - -static struct nla_policy smc_gen_stats_tech_policy[SMC_NLA_STATS_T_MAX + 1] = { - [SMC_NLA_STATS_T_PAD] = { .type = NLA_UNSPEC }, - [SMC_NLA_STATS_T_TX_RMB_SIZE] = { .type = NLA_NESTED }, - [SMC_NLA_STATS_T_RX_RMB_SIZE] = { .type = NLA_NESTED }, - [SMC_NLA_STATS_T_TXPLOAD_SIZE] = { .type = NLA_NESTED }, - [SMC_NLA_STATS_T_RXPLOAD_SIZE] = { .type = NLA_NESTED }, - [SMC_NLA_STATS_T_CLNT_V1_SUCC] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_CLNT_V2_SUCC] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_SRV_V1_SUCC] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_SRV_V2_SUCC] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_SENDPAGE_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_SPLICE_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_CORK_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_URG_DATA_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_NDLY_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_RX_BYTES] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_TX_BYTES] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_RX_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_T_TX_CNT] = { .type = NLA_U64 }, -}; - -static struct nla_policy smc_gen_stats_rmb_policy[SMC_NLA_STATS_RMB_MAX + 1] = { - [SMC_NLA_STATS_RMB_PAD] = { .type = NLA_UNSPEC }, - [SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_RMB_SIZE_SM_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_RMB_FULL_PEER_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_RMB_FULL_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_RMB_REUSE_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_RMB_ALLOC_CNT] = { .type = NLA_U64 }, - [SMC_NLA_STATS_RMB_DGRADE_CNT] = { .type = NLA_U64 }, -}; - -static struct nla_policy smc_gen_stats_pload_policy[SMC_NLA_STATS_PLOAD_MAX + 1] = { - [SMC_NLA_STATS_PLOAD_PAD] = { .type = NLA_UNSPEC }, - [SMC_NLA_STATS_PLOAD_8K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_16K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_32K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_64K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_128K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_256K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_512K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_1024K] = { .type = NLA_U64 }, - [SMC_NLA_STATS_PLOAD_G_1024K] = { .type = NLA_U64 }, -}; - -static void usage(void) -{ - fprintf(stderr, -#if defined(SMCD) - "Usage: smcd stats [show | reset]\n" -#elif defined(SMCR) - "Usage: smcr stats [show | reset]\n" -#else - "Usage: smc stats [show | reset]\n" -#endif - ); - exit(-1); -} - -static char* get_fbackstr(int code) -{ - char* str; - - switch (code) { - case SMC_CLC_DECL_PEERNOSMC: - str = "PEER_NO_SMC"; - break; - case SMC_CLC_DECL_MEM: - str = "MEMORY"; - break; - case SMC_CLC_DECL_TIMEOUT_CL: - str = "TIMEOUT_CL"; - break; - case SMC_CLC_DECL_TIMEOUT_AL: - str = "TIMEOUT_AL"; - break; - case SMC_CLC_DECL_CNFERR: - str = "CNF_ERR"; - break; - case SMC_CLC_DECL_IPSEC: - str = "IPSEC"; - break; - case SMC_CLC_DECL_NOSMCDEV: - str = "NOSMCDEV"; - break; - case SMC_CLC_DECL_NOSMCDDEV: - str = "NOSMCDDEV"; - break; - case SMC_CLC_DECL_NOSMCRDEV: - str = "NOSMCRDEV"; - break; - case SMC_CLC_DECL_NOISM2SUPP: - str = "NOISM2SUPP"; - break; - case SMC_CLC_DECL_NOV2EXT: - str = "NOV2EXT"; - break; - case SMC_CLC_DECL_PEERDECL: - str = "PEERDECL"; - break; - case SMC_CLC_DECL_SYNCERR: - str = "SYNCERR"; - break; - case SMC_CLC_DECL_MAX_DMB: - str = "MAX_DMB"; - break; - case SMC_CLC_DECL_VERSMISMAT: - str = "VERSMISMAT"; - break; - case SMC_CLC_DECL_NOSRVLINK: - str = "NOSRVLINK"; - break; - case SMC_CLC_DECL_NOSEID: - str = "NOSEID"; - break; - case SMC_CLC_DECL_NOSMCD2DEV: - str = "NOSMCD2DEV"; - break; - case SMC_CLC_DECL_MODEUNSUPP: - str = "MODEUNSUPP"; - break; - case SMC_CLC_DECL_RMBE_EC: - str = "RMBE_EC"; - break; - case SMC_CLC_DECL_OPTUNSUPP: - str = "OPTUNSUPP"; - break; - case SMC_CLC_DECL_DIFFPREFIX: - str = "DIFFPREFIX"; - break; - case SMC_CLC_DECL_GETVLANERR: - str = "GETVLANERR"; - break; - case SMC_CLC_DECL_ISMVLANERR: - str = "ISMVLANERR"; - break; - case SMC_CLC_DECL_NOACTLINK: - str = "NOACTLINK"; - break; - case SMC_CLC_DECL_NOV2DEXT: - str = "NOV2DEXT"; - break; - default: - str = "[unknown]"; - break; - } - return str; -} - -static void bubble_sort(struct smc_stats_fback *fback) -{ - struct smc_stats_fback temp; - int i, j; - - for (i = 0; i < SMC_MAX_FBACK_RSN_CNT; i++) { - for (j = 0; j < SMC_MAX_FBACK_RSN_CNT - 1; j++) { - if (fback[j + 1].count > fback[j].count) { - temp = fback[j]; - fback[j] = fback[j + 1]; - fback[j + 1] = temp; - } - } - } -} - -static void print_fback_details(struct smc_stats_fback *fback, int is_srv) -{ - int caption_printed = 0; - char *fback_str = NULL; - int i, count = 0; - - bubble_sort(fback); - for (i = 0; i < SMC_MAX_FBACK_RSN_CNT; i++) { - if (fback[i].fback_code != 0) { - if (!caption_printed) { - caption_printed = 1; - if (is_srv) - printf(" Server\n"); - else - printf(" Client\n"); - } - fback_str = get_fbackstr(fback[i].fback_code); - printf(" %-12s %12d\n", fback_str, fback[i].count); - count++; - if (count == 3) - break; - } - } -} - -static void print_fbackstr() -{ - struct smc_stats_fback *server, *client; - - server = smc_rsn.srv; - client = smc_rsn.clnt; - - print_fback_details(server, 1); - print_fback_details(client, 0); -} - -static void fillbuffer(struct smc_stats_memsize *mem, char buf[][7]) -{ - get_abbreviated(mem->buf[SMC_BUF_8K], 6, buf[SMC_BUF_8K]); - get_abbreviated(mem->buf[SMC_BUF_16K], 6, buf[SMC_BUF_16K]); - get_abbreviated(mem->buf[SMC_BUF_32K], 6, buf[SMC_BUF_32K]); - get_abbreviated(mem->buf[SMC_BUF_64K], 6, buf[SMC_BUF_64K]); - get_abbreviated(mem->buf[SMC_BUF_128K], 6, buf[SMC_BUF_128K]); - get_abbreviated(mem->buf[SMC_BUF_256K], 6, buf[SMC_BUF_256K]); - get_abbreviated(mem->buf[SMC_BUF_512K], 6, buf[SMC_BUF_512K]); - get_abbreviated(mem->buf[SMC_BUF_G_1024K] + mem->buf[SMC_BUF_1024K], 6, - buf[SMC_BUF_1024K]); -} - -static void print_as_json() -{ - int size, i; - __u64 *src; - - size = sizeof(struct smc_stats_tech) / sizeof(__u64); - if (is_smcd) { - src = (__u64 *)&smc_stat.smc[SMC_TYPE_D]; - printf("{\"SMCD\": {"); - } else { - src = (__u64 *)&smc_stat.smc[SMC_TYPE_R]; - printf("{\"SMCR\": {"); - } - for (i = 0; i < size; i++) { - printf("\"%s\":%llu",j_output[i] ,*src); - if (i != size - 1) - printf(","); - src++; - } - printf("}}\n"); -} - -static void print_as_text() -{ - __u64 smc_conn_cnt = 0, special_calls = 0, total_req_cn = 0; - __u64 total_conn = 0, fback_count = 0, hshake_err_cnt = 0; - float buf_small = 0, buf_small_r = 0, buf_rx_full = 0; - __u64 smc_c_cnt_v1 = 0, smc_c_cnt_v2 = 0; - float buf_full = 0, buf_full_r = 0; - struct smc_stats_tech *tech; - float avg_req_p_conn = 0; - char buf[SMC_BUF_MAX][7]; - char temp_str[7]; - int tech_type; - - if (is_smcd) { - printf("SMC-D Connections Summary\n"); - tech_type = SMC_TYPE_D; - } else { - printf("SMC-R Connections Summary\n"); - tech_type = SMC_TYPE_R; - } - tech = &smc_stat.smc[tech_type]; - - smc_c_cnt_v1 = tech->clnt_v1_succ_cnt + tech->srv_v1_succ_cnt; - smc_c_cnt_v2 = tech->clnt_v2_succ_cnt + tech->srv_v2_succ_cnt; - smc_conn_cnt += tech->clnt_v1_succ_cnt; - smc_conn_cnt += tech->clnt_v2_succ_cnt; - smc_conn_cnt += tech->srv_v1_succ_cnt; - smc_conn_cnt += tech->srv_v2_succ_cnt; - total_conn += smc_conn_cnt; - hshake_err_cnt += smc_stat.clnt_hshake_err_cnt; - hshake_err_cnt += smc_stat.srv_hshake_err_cnt; - total_conn += hshake_err_cnt; - fback_count += smc_rsn.clnt_fback_cnt; - fback_count += smc_rsn.srv_fback_cnt; - total_conn += fback_count; - total_req_cn = tech->rx_cnt + tech->tx_cnt; - if (smc_conn_cnt) - avg_req_p_conn = total_req_cn / (double)smc_conn_cnt; - special_calls += tech->cork_cnt; - special_calls += tech->ndly_cnt; - special_calls += tech->sendpage_cnt; - special_calls += tech->splice_cnt; - special_calls += tech->urg_data_cnt; - if (tech->tx_cnt) { - buf_full = tech->rmb_tx.buf_full_cnt / (double)tech->tx_cnt * 100; - buf_full_r = tech->rmb_tx.buf_full_peer_cnt / (double)tech->tx_cnt * 100; - buf_small = tech->rmb_tx.buf_size_small_cnt / (double)tech->tx_cnt * 100; - buf_small_r = tech->rmb_tx.buf_size_small_peer_cnt / (double)tech->tx_cnt * 100; - } - if (tech->rx_cnt) - buf_rx_full = tech->rmb_rx.buf_full_cnt / (double)tech->rx_cnt * 100; - - printf(" Total connections handled %12llu\n", total_conn); - if (d_level) { - printf(" SMC connections %12llu (client %llu, server %llu)\n", - smc_conn_cnt, tech->clnt_v1_succ_cnt + tech->clnt_v2_succ_cnt, - tech->srv_v1_succ_cnt + tech->srv_v2_succ_cnt); - printf(" v1 %12llu\n", smc_c_cnt_v1); - printf(" v2 %12llu\n", smc_c_cnt_v2); - } else { - printf(" SMC connections %12llu\n", smc_conn_cnt); - } - if (d_level) { - printf(" Handshake errors %12llu (client %llu, server %llu)\n", - hshake_err_cnt, smc_stat.clnt_hshake_err_cnt, smc_stat.srv_hshake_err_cnt); - } else { - printf(" Handshake errors %12llu\n", hshake_err_cnt); - } - printf(" Avg requests per SMC conn %14.1f\n", avg_req_p_conn); - if (d_level) { - printf(" TCP fallback %12llu (client %llu, server %llu)\n", - fback_count, smc_rsn.clnt_fback_cnt, smc_rsn.srv_fback_cnt); - print_fbackstr(); - } else { - printf(" TCP fallback %12llu\n", fback_count); - } - printf("\n"); - printf("RX Stats\n"); - get_abbreviated(smc_stat.smc[tech_type].rx_bytes, 6, temp_str); - printf(" Data transmitted (Bytes) %14llu (%s)\n", - smc_stat.smc[tech_type].rx_bytes, temp_str); - printf(" Total requests %12llu\n", tech->rx_cnt); - get_abbreviated(smc_stat.smc[tech_type].rx_rmbuse, 6, temp_str); - printf(" Buffer usage (Bytes) %12llu (%s)\n", tech->rx_rmbuse, temp_str); - printf(" Buffer full %12llu (%.2f%%)\n", tech->rmb_rx.buf_full_cnt, - buf_rx_full); - if (d_level) { - printf(" Buffer downgrades %12llu\n", tech->rmb_rx.dgrade_cnt); - printf(" Buffer reuses %12llu\n", tech->rmb_rx.reuse_cnt); - } - fillbuffer(&tech->rx_rmbsize, buf); - printf(" 8KB 16KB 32KB 64KB 128KB 256KB 512KB >512KB\n"); - printf(" Bufs %6s %6s %6s %6s %6s %6s %6s %6s\n", - buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], - buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); - fillbuffer(&tech->rx_pd, buf); - printf(" Reqs %6s %6s %6s %6s %6s %6s %6s %6s\n", - buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], - buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); - printf("\n"); - printf("TX Stats\n"); - get_abbreviated(smc_stat.smc[tech_type].tx_bytes, 6, temp_str); - printf(" Data transmitted (Bytes) %14llu (%s)\n", - smc_stat.smc[tech_type].tx_bytes, temp_str); - printf(" Total requests %12llu\n", tech->tx_cnt); - get_abbreviated(smc_stat.smc[tech_type].tx_rmbuse, 6, temp_str); - printf(" Buffer usage (Bytes) %12llu (%s)\n", tech->tx_rmbuse, temp_str); - printf(" Buffer full %12llu (%.2f%%)\n", tech->rmb_tx.buf_full_cnt, - buf_full); - printf(" Buffer full (remote) %12llu (%.2f%%)\n", tech->rmb_tx.buf_full_peer_cnt, - buf_full_r); - printf(" Buffer too small %12llu (%.2f%%)\n", tech->rmb_tx.buf_size_small_cnt, - buf_small); - printf(" Buffer too small (remote) %12llu (%.2f%%)\n", tech->rmb_tx.buf_size_small_peer_cnt, - buf_small_r); - if (d_level) { - printf(" Buffer downgrades %12llu\n", tech->rmb_tx.dgrade_cnt); - printf(" Buffer reuses %12llu\n", tech->rmb_tx.reuse_cnt); - } - fillbuffer(&tech->tx_rmbsize, buf); - printf(" 8KB 16KB 32KB 64KB 128KB 256KB 512KB >512KB\n"); - printf(" Bufs %6s %6s %6s %6s %6s %6s %6s %6s\n", - buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], - buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); - fillbuffer(&tech->tx_pd, buf); - printf(" Reqs %6s %6s %6s %6s %6s %6s %6s %6s\n", - buf[SMC_BUF_8K], buf[SMC_BUF_16K], buf[SMC_BUF_32K], buf[SMC_BUF_64K], - buf[SMC_BUF_128K], buf[SMC_BUF_256K], buf[SMC_BUF_512K], buf[SMC_BUF_1024K]); - printf("\n"); - printf("Extras\n"); - printf(" Special socket calls %12llu\n", special_calls); - if (d_level) { - printf(" cork %12llu\n", tech->cork_cnt); - printf(" nodelay %12llu\n", tech->ndly_cnt); - printf(" sendpage %12llu\n", tech->sendpage_cnt); - printf(" splice %12llu\n", tech->splice_cnt); - printf(" urgent data %12llu\n", tech->urg_data_cnt); - } -} - -static int show_tech_pload_info(struct nlattr **attr, int type, int direction) -{ - struct nlattr *tech_pload_attrs[SMC_NLA_STATS_PLOAD_MAX + 1]; - struct smc_stats_memsize *tmp_memsize; - uint64_t trgt = 0; - int rc = NL_OK; - int tech_type; - - if (type == SMC_NLA_STATS_SMCD_TECH) - tech_type = SMC_TYPE_D; - else - tech_type = SMC_TYPE_R; - - if (direction == SMC_NLA_STATS_T_TXPLOAD_SIZE) - tmp_memsize = &smc_stat.smc[tech_type].tx_pd; - else if (direction == SMC_NLA_STATS_T_RXPLOAD_SIZE) - tmp_memsize = &smc_stat.smc[tech_type].rx_pd; - else if (direction == SMC_NLA_STATS_T_TX_RMB_SIZE) - tmp_memsize = &smc_stat.smc[tech_type].tx_rmbsize; - else if (direction == SMC_NLA_STATS_T_RX_RMB_SIZE) - tmp_memsize = &smc_stat.smc[tech_type].rx_rmbsize; - else - return NL_STOP; - - if (nla_parse_nested(tech_pload_attrs, SMC_NLA_STATS_PLOAD_MAX, - attr[direction], - smc_gen_stats_pload_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_stats_pload_policy\n"); - return NL_STOP; - } - - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_8K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_8K]); - tmp_memsize->buf[SMC_BUF_8K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_16K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_16K]); - tmp_memsize->buf[SMC_BUF_16K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_32K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_32K]); - tmp_memsize->buf[SMC_BUF_32K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_64K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_64K]); - tmp_memsize->buf[SMC_BUF_64K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_128K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_128K]); - tmp_memsize->buf[SMC_BUF_128K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_256K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_256K]); - tmp_memsize->buf[SMC_BUF_256K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_512K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_512K]); - tmp_memsize->buf[SMC_BUF_512K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_1024K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_1024K]); - tmp_memsize->buf[SMC_BUF_1024K] = trgt; - } - if (tech_pload_attrs[SMC_NLA_STATS_PLOAD_G_1024K]) { - trgt = nla_get_u64(tech_pload_attrs[SMC_NLA_STATS_PLOAD_G_1024K]); - tmp_memsize->buf[SMC_BUF_G_1024K] = trgt; - } - return rc; -} - -static int show_tech_rmb_info(struct nlattr **attr, int type, int direction) -{ - struct nlattr *tech_rmb_attrs[SMC_NLA_STATS_RMB_MAX + 1]; - struct smc_stats_rmbcnt *tmp_rmb_stats; - uint64_t trgt = 0; - int rc = NL_OK; - int tech_type; - - if (type == SMC_NLA_STATS_SMCD_TECH) - tech_type = SMC_TYPE_D; - else - tech_type = SMC_TYPE_R; - - if (direction == SMC_NLA_STATS_T_TX_RMB_STATS) - tmp_rmb_stats = &smc_stat.smc[tech_type].rmb_tx; - else - tmp_rmb_stats = &smc_stat.smc[tech_type].rmb_rx; - - if (nla_parse_nested(tech_rmb_attrs, SMC_NLA_STATS_RMB_MAX, - attr[direction], - smc_gen_stats_rmb_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_stats_rmb_policy\n"); - return NL_STOP; - } - - if (tech_rmb_attrs[SMC_NLA_STATS_RMB_REUSE_CNT]) { - trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_REUSE_CNT]); - tmp_rmb_stats->reuse_cnt = trgt; - } - if (tech_rmb_attrs[SMC_NLA_STATS_RMB_ALLOC_CNT]) { - trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_ALLOC_CNT]); - tmp_rmb_stats->alloc_cnt = trgt; - } - if (tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT]) { - trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT]); - tmp_rmb_stats->buf_size_small_peer_cnt = trgt; - } - if (tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_CNT]) { - trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_SIZE_SM_CNT]); - tmp_rmb_stats->buf_size_small_cnt = trgt; - } - if (tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_PEER_CNT]) { - trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_PEER_CNT]); - tmp_rmb_stats->buf_full_peer_cnt = trgt; - } - if (tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_CNT]) { - trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_FULL_CNT]); - tmp_rmb_stats->buf_full_cnt = trgt; - } - if (tech_rmb_attrs[SMC_NLA_STATS_RMB_DGRADE_CNT]) { - trgt = nla_get_u64(tech_rmb_attrs[SMC_NLA_STATS_RMB_DGRADE_CNT]); - tmp_rmb_stats->dgrade_cnt = trgt; - } - - return rc; -} - -static int fill_tech_info(struct nlattr **attr, int type) -{ - struct nlattr *tech_attrs[SMC_NLA_STATS_T_MAX + 1]; - uint64_t trgt = 0; - int tech_type; - - if (type == SMC_NLA_STATS_SMCD_TECH) - tech_type = SMC_TYPE_D; - else - tech_type = SMC_TYPE_R; - - if (nla_parse_nested(tech_attrs, SMC_NLA_STATS_T_MAX, - attr[type], - smc_gen_stats_tech_policy)) { - fprintf(stderr, "Error: Failed to parse nested attributes: smc_gen_stats_fback_policy\n"); - return NL_STOP; - } - - if (tech_attrs[SMC_NLA_STATS_T_SRV_V1_SUCC]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SRV_V1_SUCC]); - smc_stat.smc[tech_type].srv_v1_succ_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_SRV_V2_SUCC]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SRV_V2_SUCC]); - smc_stat.smc[tech_type].srv_v2_succ_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_CLNT_V1_SUCC]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_CLNT_V1_SUCC]); - smc_stat.smc[tech_type].clnt_v1_succ_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_CLNT_V2_SUCC]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_CLNT_V2_SUCC]); - smc_stat.smc[tech_type].clnt_v2_succ_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_RX_BYTES]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_RX_BYTES]); - smc_stat.smc[tech_type].rx_bytes = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_TX_BYTES]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_TX_BYTES]); - smc_stat.smc[tech_type].tx_bytes = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_RX_RMB_USAGE]) { - trgt = nl_attr_get_uint(tech_attrs[SMC_NLA_STATS_T_RX_RMB_USAGE]); - smc_stat.smc[tech_type].rx_rmbuse = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_TX_RMB_USAGE]) { - trgt = nl_attr_get_uint(tech_attrs[SMC_NLA_STATS_T_TX_RMB_USAGE]); - smc_stat.smc[tech_type].tx_rmbuse = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_RX_CNT]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_RX_CNT]); - smc_stat.smc[tech_type].rx_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_TX_CNT]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_TX_CNT]); - smc_stat.smc[tech_type].tx_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_SENDPAGE_CNT]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SENDPAGE_CNT]); - smc_stat.smc[tech_type].sendpage_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_SPLICE_CNT]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_SPLICE_CNT]); - smc_stat.smc[tech_type].splice_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_CORK_CNT]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_CORK_CNT]); - smc_stat.smc[tech_type].cork_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_NDLY_CNT]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_NDLY_CNT]); - smc_stat.smc[tech_type].ndly_cnt = trgt; - } - if (tech_attrs[SMC_NLA_STATS_T_URG_DATA_CNT]) { - trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_URG_DATA_CNT]); - smc_stat.smc[tech_type].urg_data_cnt = trgt; - } - - if (show_tech_rmb_info(tech_attrs, type, SMC_NLA_STATS_T_TX_RMB_STATS) != NL_OK) - goto errout; - if (show_tech_rmb_info(tech_attrs, type, SMC_NLA_STATS_T_RX_RMB_STATS) != NL_OK) - goto errout; - if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_TXPLOAD_SIZE) != NL_OK) - goto errout; - if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_RXPLOAD_SIZE) != NL_OK) - goto errout; - if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_TX_RMB_SIZE) != NL_OK) - goto errout; - if (show_tech_pload_info(tech_attrs, type, SMC_NLA_STATS_T_RX_RMB_SIZE) != NL_OK) - goto errout; - - return NL_OK; -errout: - return NL_STOP; -} - -static int handle_gen_stats_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *stats_attrs[SMC_NLA_STATS_MAX + 1]; - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - uint64_t trgt = 0; - int rc = NL_OK; - - if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, - (struct nla_policy *)smc_gen_net_policy) < 0) { - fprintf(stderr, "%s: invalid data returned\n", "smc"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - if (!attrs[SMC_GEN_STATS]) - return NL_STOP; - - if (nla_parse_nested(stats_attrs, SMC_NLA_STATS_MAX, - attrs[SMC_GEN_STATS], - smc_gen_stats_policy)) { - fprintf(stderr, "failed to parse nested attributes!\n"); - return NL_STOP; - } - memset(&smc_stat, 0, sizeof(smc_stat)); - if (stats_attrs[SMC_NLA_STATS_CLNT_HS_ERR_CNT]) { - trgt = nla_get_u64(stats_attrs[SMC_NLA_STATS_CLNT_HS_ERR_CNT]); - smc_stat.clnt_hshake_err_cnt = trgt; - } - - if (stats_attrs[SMC_NLA_STATS_SRV_HS_ERR_CNT]) { - trgt = nla_get_u64(stats_attrs[SMC_NLA_STATS_SRV_HS_ERR_CNT]); - smc_stat.srv_hshake_err_cnt = trgt; - } - - if (stats_attrs[SMC_NLA_STATS_SMCR_TECH]) - rc = fill_tech_info(&stats_attrs[0], SMC_NLA_STATS_SMCR_TECH); - if (stats_attrs[SMC_NLA_STATS_SMCD_TECH]) - rc = fill_tech_info(&stats_attrs[0], SMC_NLA_STATS_SMCD_TECH); - return rc; -} - -static int fback_array_last_pos(struct smc_stats_fback *fback) -{ - int k; - - for (k = 0; k < SMC_MAX_FBACK_RSN_CNT; k++) - if (fback[k].fback_code == 0) - return k; - - return SMC_MAX_FBACK_RSN_CNT - 1; -} - -static int handle_gen_fback_stats_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *stats_fback_attrs[SMC_NLA_FBACK_STATS_MAX + 1]; - struct nlattr *attrs[SMC_GEN_MAX + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - struct smc_stats_fback *smc_fback; - unsigned short type = 0, last_pos; - uint64_t trgt64 = 0; - int rc = NL_OK; - int trgt = 0; - - if (genlmsg_parse(hdr, 0, attrs, SMC_GEN_MAX, - (struct nla_policy *)smc_gen_net_policy) < 0) { - fprintf(stderr, "%s: invalid data returned\n", "smc"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - if (!attrs[SMC_GEN_FBACK_STATS]) - return NL_STOP; - - if (nla_parse_nested(stats_fback_attrs, SMC_NLA_FBACK_STATS_MAX, - attrs[SMC_GEN_FBACK_STATS], - smc_gen_stats_fback_policy)) { - fprintf(stderr, "failed to parse nested attributes!\n"); - return NL_STOP; - } - - if (stats_fback_attrs[SMC_NLA_FBACK_STATS_SRV_CNT]) { - trgt64 = nla_get_u64(stats_fback_attrs[SMC_NLA_FBACK_STATS_SRV_CNT]); - smc_rsn.srv_fback_cnt = trgt64; - } - if (stats_fback_attrs[SMC_NLA_FBACK_STATS_SRV_CNT]) { - trgt64 = nla_get_u64(stats_fback_attrs[SMC_NLA_FBACK_STATS_CLNT_CNT]); - smc_rsn.clnt_fback_cnt = trgt64; - } - if (stats_fback_attrs[SMC_NLA_FBACK_STATS_TYPE]) { - type = nla_get_u8(stats_fback_attrs[SMC_NLA_FBACK_STATS_TYPE]); - if (type) - smc_fback = smc_rsn.srv; - else - smc_fback = smc_rsn.clnt; - - last_pos = fback_array_last_pos(smc_fback); - if (stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CODE]) { - trgt = nla_get_u32(stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CODE]); - smc_fback[last_pos].fback_code = trgt; - } - - if (stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CNT]) { - trgt = nla_get_u16(stats_fback_attrs[SMC_NLA_FBACK_STATS_RSN_CNT]); - smc_fback[last_pos].count = trgt; - } - } - - return rc; -} - -static void handle_cmd_params(int argc, char **argv) -{ - - memset(&smc_rsn, 0, sizeof(smc_rsn)); - if (argc == 0) { - show_cmd = 1; /* no object given, so use the default "show" */ - return; - } - - while (1) { - if (contains(argv[0], "help") == 0) { - usage(); - } else if (contains(argv[0], "show") == 0) { - show_cmd = 1; - break; - } else if (contains(argv[0], "reset") == 0) { - reset_cmd = 1; - break; - } else if (contains(argv[0], "json") == 0) { - json_cmd = 1; - break; - }else { - usage(); - } - if (!NEXT_ARG_OK()) - break; - NEXT_ARG(); - } - /* Too many parameters or wrong sequence of parameters */ - if (NEXT_ARG_OK()) - usage(); -} - -static void read_cache_file(FILE *fp) -{ - int count = 0, idx = 0, rc, size_fback = 0; - int size, val_err, val_cnt; - unsigned long long val; - __u64 *trgt, *fbck_cnt; - char buf[4096]; - int *trgt_fbck; - - /* size without fallback reasons */ - size = sizeof(smc_stat_c) / sizeof(__u64); - trgt = (__u64 *)&smc_stat_c; - size_fback = size + 2*SMC_MAX_FBACK_RSN_CNT; - trgt_fbck = (int *)&smc_rsn_c; - fbck_cnt = (__u64 *)&smc_rsn_c.srv_fback_cnt; - - while (fgets(buf, sizeof(buf), fp) != NULL) { - if (count < size) { - rc = sscanf(buf, "%d%llu", &idx, &val); - if (rc < 2) { - perror("Error: parsing cache file(stats)"); - exit(-1); - } - if (idx != count) { - perror("Error: unexpected value in cache file"); - exit(-1); - } - *trgt = val; - trgt++; - } else if (count < size_fback) { - rc = sscanf(buf, "%d%d%d", &idx, &val_err, &val_cnt); - if (rc < 3) { - perror("Error: parsing cache file (fback stats)"); - exit(-1); - } - if (idx > SMC_MAX_FBACK_RSN_CNT * 2) { - perror("Error: unexpected value in cache file (fback stats)"); - exit(-1); - } - *trgt_fbck = val_err; - trgt_fbck++; - *trgt_fbck = val_cnt; - trgt_fbck++; - } else if (count < size_fback + 2) { - rc = sscanf(buf, "%llu", &val); - if (rc < 1) { - perror("Error: parsing cache file(fback counters)"); - exit(-1); - } - *fbck_cnt = val; - fbck_cnt++; - } else { - perror("Error: cache file corrupt"); - exit(-1); - } - cache_file_exists = 1; - count++; - } -} - -static int get_fback_err_cache_count(struct smc_stats_fback *fback, int trgt) -{ - int i; - - for (i = 0; i < SMC_MAX_FBACK_RSN_CNT; i++) { - if (fback[i].fback_code == trgt) - return fback[i].count; - } - - return 0; -} - -/* Check whether there were wrap arounds or really old data in the cache */ -static int is_data_consistent () -{ - int size, i, size_fback, val_err, val_cnt, cache_cnt; - struct smc_stats_fback *kern_fbck; - __u64 *kernel, *cache; - - size = sizeof(smc_stat) / sizeof(__u64); - kernel = (__u64 *)&smc_stat; - cache = (__u64 *)&smc_stat_c; - for (i = 0; i < size; i++) { - if (*kernel < *cache) - return 0; - kernel++; - cache++; - } - - size_fback = 2 * SMC_MAX_FBACK_RSN_CNT; - kern_fbck = (struct smc_stats_fback *)&smc_rsn; - for (i = 0; i < size_fback; i++) { - val_err = kern_fbck->fback_code; - if (i < SMC_MAX_FBACK_RSN_CNT) - cache_cnt = get_fback_err_cache_count(smc_rsn_c.srv, val_err); - else - cache_cnt = get_fback_err_cache_count(smc_rsn_c.clnt, val_err); - val_cnt = kern_fbck->count; - kern_fbck++; - if (val_cnt < cache_cnt) - return 0; - } - - if ((smc_rsn.srv_fback_cnt < smc_rsn_c.srv_fback_cnt) || - (smc_rsn.clnt_fback_cnt < smc_rsn_c.clnt_fback_cnt)) - return 0; - - return 1; -} - -static void merge_cache () -{ - int size, i, size_fback, val_err, cache_cnt; - struct smc_stats_fback *kern_fbck; - __u64 *kernel, *cache; - - if (!is_data_consistent()) { - unlink(cache_file_path); - return; - } - - size = sizeof(smc_stat) / sizeof(__u64); - kernel = (__u64 *)&smc_stat; - cache = (__u64 *)&smc_stat_c; - for (i = 0; i < size; i++) - *(kernel++) -= *(cache++); - - size_fback = 2 * SMC_MAX_FBACK_RSN_CNT; - kern_fbck = (struct smc_stats_fback *)&smc_rsn; - for (i = 0; i < size_fback; i++) { - val_err = kern_fbck->fback_code; - if (i < SMC_MAX_FBACK_RSN_CNT) - cache_cnt = get_fback_err_cache_count(smc_rsn_c.srv, val_err); - else - cache_cnt = get_fback_err_cache_count(smc_rsn_c.clnt, val_err); - kern_fbck->count -= cache_cnt; - kern_fbck++; - } - - smc_rsn.srv_fback_cnt -= smc_rsn_c.srv_fback_cnt; - smc_rsn.clnt_fback_cnt -= smc_rsn_c.clnt_fback_cnt; -} - -static void open_cache_file() -{ - int fd; - - cache_file_path = malloc(128); - sprintf(cache_file_path, "/tmp/.smcstats.u%d", getuid()); - - fd = open(cache_file_path, O_RDWR|O_CREAT|O_NOFOLLOW, 0600); - - if (fd < 0) { - perror("Error: open cache file"); - exit(-1); - } - - if ((cache_fp = fdopen(fd, "r+")) == NULL) { - perror("Error: cache file r+"); - exit(-1); - } - if (flock(fileno(cache_fp), LOCK_EX)) { - perror("Error: cache file lock"); - exit(-1); - } -} - -static void init_cache_file() -{ - open_cache_file(); - read_cache_file(cache_fp); -} - - -static void fill_cache_file() -{ - int size, i, val_err, val_cnt; - int *fback_src; - __u64 *src; - - if (ftruncate(fileno(cache_fp), 0) < 0) - perror("Error: ftruncate"); - - size = sizeof(smc_stat) / sizeof(__u64); - src = (__u64 *)&smc_stat_org; - for (i = 0; i < size; i++) { - fprintf(cache_fp, "%-12d%-16llu\n",i ,*src); - src++; - } - - fback_src = (int*)&smc_rsn_org; - size = 2 * SMC_MAX_FBACK_RSN_CNT; - for (i = 0; i < size; i++) { - val_err = *(fback_src++); - val_cnt = *(fback_src++); - fprintf(cache_fp, "%-12d%-16d%-16d\n",i , val_err, val_cnt); - } - - fprintf(cache_fp, "%16llu\n", smc_rsn_org.srv_fback_cnt); - fprintf(cache_fp, "%16llu\n", smc_rsn_org.clnt_fback_cnt); -} - -int invoke_stats(int argc, char **argv, int option_details) -{ - if (option_details == SMC_DETAIL_LEVEL_V || option_details == SMC_DETAIL_LEVEL_VV) { - d_level = 1; - } else if (option_details == SMC_OPTION_ABS) { - is_abs = 1; - } else if (option_details == SMC_OPTION_DETAIL_ABS) { - is_abs = 1; - d_level = 1; - } - - handle_cmd_params(argc, argv); - if (!is_abs) - init_cache_file(); - if (gen_nl_handle_dump(SMC_NETLINK_GET_FBACK_STATS, handle_gen_fback_stats_reply, NULL)) - goto errout; - if (gen_nl_handle_dump(SMC_NETLINK_GET_STATS, handle_gen_stats_reply, NULL)) - goto errout; - memcpy(&smc_stat_org, &smc_stat, sizeof(smc_stat_org)); - memcpy(&smc_rsn_org, &smc_rsn, sizeof(smc_rsn_org)); - - if (!is_abs && cache_file_exists) - merge_cache(); - if (!json_cmd) - print_as_text(); - else - print_as_json(); - if (reset_cmd) { - unlink(cache_file_path); - if (cache_fp) { - fclose(cache_fp); - cache_fp = NULL; - } - free(cache_file_path); - cache_file_path = NULL; - open_cache_file(); - fill_cache_file(); - } -errout: - if (cache_fp) - fclose(cache_fp); - free(cache_file_path); - return 0; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/stats.h b/testcases/feature-test/oeaware/smc-tools-main/stats.h deleted file mode 100644 index a728596b1..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/stats.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2021 - * - * Author(s): Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#ifndef SMC_SYSTEM_H_ -#define SMC_SYSTEM_H_ - -#define SMC_CLC_DECL_MEM 0x01010000 /* insufficient memory resources */ -#define SMC_CLC_DECL_TIMEOUT_CL 0x02010000 /* timeout w4 QP confirm link */ -#define SMC_CLC_DECL_TIMEOUT_AL 0x02020000 /* timeout w4 QP add link */ -#define SMC_CLC_DECL_CNFERR 0x03000000 /* configuration error */ -#define SMC_CLC_DECL_PEERNOSMC 0x03010000 /* peer did not indicate SMC */ -#define SMC_CLC_DECL_IPSEC 0x03020000 /* IPsec usage */ -#define SMC_CLC_DECL_NOSMCDEV 0x03030000 /* no SMC device found (R or D) */ -#define SMC_CLC_DECL_NOSMCDDEV 0x03030001 /* no SMC-D device found */ -#define SMC_CLC_DECL_NOSMCRDEV 0x03030002 /* no SMC-R device found */ -#define SMC_CLC_DECL_NOISM2SUPP 0x03030003 /* hardware has no ISMv2 support */ -#define SMC_CLC_DECL_NOV2EXT 0x03030004 /* peer sent no clc v2 extension */ -#define SMC_CLC_DECL_NOV2DEXT 0x03030005 /* peer sent no clc SMC-Dv2 ext. */ -#define SMC_CLC_DECL_NOSEID 0x03030006 /* peer sent no SEID */ -#define SMC_CLC_DECL_NOSMCD2DEV 0x03030007 /* no SMC-Dv2 device found */ -#define SMC_CLC_DECL_MODEUNSUPP 0x03040000 /* smc modes do not match (R or D)*/ -#define SMC_CLC_DECL_RMBE_EC 0x03050000 /* peer has eyecatcher in RMBE */ -#define SMC_CLC_DECL_OPTUNSUPP 0x03060000 /* fastopen sockopt not supported */ -#define SMC_CLC_DECL_DIFFPREFIX 0x03070000 /* IP prefix / subnet mismatch */ -#define SMC_CLC_DECL_GETVLANERR 0x03080000 /* err to get vlan id of ip device*/ -#define SMC_CLC_DECL_ISMVLANERR 0x03090000 /* err to reg vlan id on ism dev */ -#define SMC_CLC_DECL_NOACTLINK 0x030a0000 /* no active smc-r link in lgr */ -#define SMC_CLC_DECL_NOSRVLINK 0x030b0000 /* SMC-R link from srv not found */ -#define SMC_CLC_DECL_VERSMISMAT 0x030c0000 /* SMC version mismatch */ -#define SMC_CLC_DECL_MAX_DMB 0x030d0000 /* SMC-D DMB limit exceeded */ -#define SMC_CLC_DECL_SYNCERR 0x04000000 /* synchronization error */ -#define SMC_CLC_DECL_PEERDECL 0x05000000 /* peer declined during handshake */ -#define SMC_CLC_DECL_INTERR 0x09990000 /* internal error */ -#define SMC_CLC_DECL_ERR_RTOK 0x09990001 /* rtoken handling failed */ -#define SMC_CLC_DECL_ERR_RDYLNK 0x09990002 /* ib ready link failed */ -#define SMC_CLC_DECL_ERR_REGRMB 0x09990003 /* reg rmb failed */ - -#define SMC_TYPE_R 0 -#define SMC_TYPE_D 1 -#define SMC_SERVER 1 -#define SMC_CLIENT 0 - -#define SMC_MAX_FBACK_RSN_CNT 30 - -enum { - SMC_BUF_8K, - SMC_BUF_16K, - SMC_BUF_32K, - SMC_BUF_64K, - SMC_BUF_128K, - SMC_BUF_256K, - SMC_BUF_512K, - SMC_BUF_1024K, - SMC_BUF_G_1024K, - SMC_BUF_MAX, -}; - -struct smc_stats_fback { - int fback_code; - int count; -}; - -struct smc_stats_rsn { - struct smc_stats_fback srv[SMC_MAX_FBACK_RSN_CNT]; - struct smc_stats_fback clnt[SMC_MAX_FBACK_RSN_CNT]; - __u64 srv_fback_cnt; - __u64 clnt_fback_cnt; -}; - -struct smc_stats_rmbcnt { - __u64 buf_size_small_peer_cnt; - __u64 buf_size_small_cnt; - __u64 buf_full_peer_cnt; - __u64 buf_full_cnt; - __u64 reuse_cnt; - __u64 alloc_cnt; - __u64 dgrade_cnt; -}; - -struct smc_stats_memsize { - __u64 buf[SMC_BUF_MAX]; -}; - -struct smc_stats_tech { - struct smc_stats_memsize tx_rmbsize; - struct smc_stats_memsize rx_rmbsize; - struct smc_stats_memsize tx_pd; - struct smc_stats_memsize rx_pd; - struct smc_stats_rmbcnt rmb_tx; - struct smc_stats_rmbcnt rmb_rx; - __u64 clnt_v1_succ_cnt; - __u64 clnt_v2_succ_cnt; - __u64 srv_v1_succ_cnt; - __u64 srv_v2_succ_cnt; - __u64 sendpage_cnt; - __u64 urg_data_cnt; - __u64 splice_cnt; - __u64 cork_cnt; - __u64 ndly_cnt; - __u64 rx_bytes; - __u64 tx_bytes; - __u64 rx_cnt; - __u64 tx_cnt; - __u64 rx_rmbuse; - __u64 tx_rmbuse; -}; - -struct smc_stats { - struct smc_stats_tech smc[2]; - __u64 clnt_hshake_err_cnt; - __u64 srv_hshake_err_cnt; -}; - -int invoke_stats(int argc, char **argv, int detail_level); - -#endif /* SMC_SYSTEM_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/ueid.c b/testcases/feature-test/oeaware/smc-tools-main/ueid.c deleted file mode 100644 index 4215b061c..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/ueid.c +++ /dev/null @@ -1,266 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include -#include -#include - -#include "smctools_common.h" -#include "util.h" -#include "libnetlink.h" -#include "ueid.h" - -static int add_cmd = 0; -static int del_cmd = 0; -static int flush_cmd = 0; -static int show_cmd = 0; - -static char target_eid[SMC_MAX_EID_LEN + 1] = {0}; - -extern int smc_id; -extern struct nl_sock *sk; - -const struct nla_policy -smc_gen_ueid_policy[SMC_NLA_EID_TABLE_MAX + 1] = { - [SMC_NLA_EID_TABLE_UNSPEC] = { .type = NLA_UNSPEC }, - [SMC_NLA_EID_TABLE_ENTRY] = { .type = NLA_NUL_STRING }, -}; - -static void usage(void) -{ - fprintf(stderr, - "Usage: smcd ueid [show]\n" - " smcd ueid add \n" - " smcd ueid del \n" - " smcd ueid flush\n" - ); - exit(-1); -} - -static int gen_nl_ueid_handle(int cmd, char *ueid, int (*cb_handler)(struct nl_msg *msg, void *arg)) -{ - int rc = EXIT_FAILURE, nlmsg_flags = 0; - struct nl_msg *msg; - - nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, cb_handler, NULL); - - /* Allocate a netlink message and set header information. */ - msg = nlmsg_alloc(); - if (!msg) { - nl_perror(NLE_NOMEM, "Error"); - rc = EXIT_FAILURE; - goto err; - } - - if (cmd == SMC_NETLINK_DUMP_UEID) - nlmsg_flags = NLM_F_DUMP; - - if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, smc_id, 0, nlmsg_flags, - cmd, SMC_GENL_FAMILY_VERSION)) { - nl_perror(rc, "Error"); - rc = EXIT_FAILURE; - goto err; - } - - if (ueid && ueid[0]) { - rc = nla_put_string(msg, SMC_NLA_EID_TABLE_ENTRY, ueid); - if (rc < 0) { - nl_perror(rc, "Error"); - rc = EXIT_FAILURE; - goto err; - } - - } - - /* Send message */ - rc = nl_send_auto(sk, msg); - if (rc < 0) { - nl_perror(rc, "Error"); - rc = EXIT_FAILURE; - goto err; - } - - /* Receive reply message, returns number of cb invocations. */ - rc = nl_recvmsgs_default(sk); - - if (rc < 0) { - /* For cmd "UEID remove" the kernel might return ENOENT when - * the specified UEID is not in the list. - * This is mapped to NLE_OBJ_NOTFOUND in libnl, lib/error.c. - */ - if (rc == -NLE_OPNOTSUPP) { - fprintf(stderr, "Error: operation not supported by kernel\n"); - } else if (cmd == SMC_NETLINK_REMOVE_UEID) { - if (rc == -NLE_OBJ_NOTFOUND) { - fprintf(stderr, "Error: specified User EID is not defined\n"); - } else if (rc == -NLE_AGAIN) { - fprintf(stderr, "Info: the System EID was activated because the last User EID was removed\n"); - } else { - fprintf(stderr, "Error: specified User EID is not defined\n"); - } - } else if (cmd == SMC_NETLINK_ADD_UEID) { - if (rc == -NLE_INVAL) { - fprintf(stderr, "Error: specified User EID was rejected by the kernel\n"); - } else if (rc == -NLE_NOMEM) { - fprintf(stderr, "Error: kernel reported an out of memory condition\n"); - } else if (rc == -NLE_RANGE) { - fprintf(stderr, "Error: specified User EID was rejected because the maximum number of User EIDs is reached\n"); - } else if (rc == -NLE_EXIST) { - fprintf(stderr, "Error: specified User EID is already defined\n"); - } else { - nl_perror(rc, "Error"); - } - } else { - nl_perror(rc, "Error"); - } - rc = EXIT_FAILURE; - goto err; - } - - nlmsg_free(msg); - return EXIT_SUCCESS; -err: - nlmsg_free(msg); - return rc; -} - -static int handle_gen_ueid_reply(struct nl_msg *msg, void *arg) -{ - struct nlattr *attrs[SMC_NLA_EID_TABLE_ENTRY + 1]; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - int rc = NL_OK; - - if (genlmsg_parse(hdr, 0, attrs, SMC_NLA_EID_TABLE_ENTRY, - (struct nla_policy *)smc_gen_ueid_policy) < 0) { - fprintf(stderr, "Error: invalid data returned: smc_gen_ueid_policy\n"); - nl_msg_dump(msg, stderr); - return NL_STOP; - } - - if (!attrs[SMC_NLA_EID_TABLE_ENTRY]) - return NL_STOP; - - printf("%s\n", nla_get_string(attrs[SMC_NLA_EID_TABLE_ENTRY])); - return rc; -} - -static char ueid_valid(char *ueid) -{ - char *end = ueid + SMC_MAX_EID_LEN; - - while (--end >= ueid && isspace(*end)) - ; - if (end < ueid) { - fprintf(stderr, "Error: Invalid User EID specified: EID is empty\n"); - return 0; - } - if (!isalnum(*ueid)) { - fprintf(stderr, "Error: Invalid User EID specified: first character must be alphanumeric\n"); - return 0; - } - if (strstr(ueid, "..")) { - fprintf(stderr, "Error: Invalid User EID specified: consecutive dots not allowed\n"); - return 0; - } - while (ueid <= end) { - if ((!isalnum(*ueid) || islower(*ueid)) && *ueid != '.' && *ueid != '-') { - fprintf(stderr, "Error: Invalid User EID specified: unsupported character: '%c'\n", *ueid); - fprintf(stderr, " Supported characters are: A-Z, 0-9, '.' and '-'\n"); - return 0; - } - ueid++; - } - return 1; -} - -static void set_eid(char *eid) -{ - if (strlen(eid) > SMC_MAX_EID_LEN) { - fprintf(stderr, "Error: Invalid User EID specified: EID is longer than 32 characters\n"); - exit(-1); - } - /* pad to 32 byte using blanks */ - sprintf(target_eid, "%-32s", eid); - - if (!ueid_valid(target_eid)) - exit(-1); -} - -static void handle_cmd_params(int argc, char **argv) -{ - if (argc == 0) { - show_cmd = 1; /* no object given, so use the default "show" */ - return; - } - - while (1) { - if (add_cmd) { - set_eid(argv[0]); - break; - } else if (del_cmd) { - set_eid(argv[0]); - break; - } else if (contains(argv[0], "help") == 0) { - usage(); - } else if (contains(argv[0], "add") == 0) { - add_cmd = 1; - } else if (contains(argv[0], "del") == 0) { - del_cmd = 1; - } else if (contains(argv[0], "flush") == 0) { - flush_cmd = 1; - break; - } else if (contains(argv[0], "show") == 0) { - show_cmd = 1; - break; - } else { - usage(); - } - if (!NEXT_ARG_OK()) - break; - NEXT_ARG(); - } - /* Too many parameters or wrong sequence of parameters */ - if (NEXT_ARG_OK()) - usage(); - - /* Only single cmd expected */ - if ((add_cmd + del_cmd + flush_cmd + show_cmd) != 1) - usage(); - - /* eid required for command */ - if (!target_eid[0] && (add_cmd || del_cmd)) - usage(); -} - -int invoke_ueid(int argc, char **argv, int detail_level) -{ - int rc = EXIT_SUCCESS; - - handle_cmd_params(argc, argv); - - if (add_cmd) { - rc = gen_nl_ueid_handle(SMC_NETLINK_ADD_UEID, target_eid, handle_gen_ueid_reply); - } else if (del_cmd) { - rc = gen_nl_ueid_handle(SMC_NETLINK_REMOVE_UEID, target_eid, handle_gen_ueid_reply); - } else if (flush_cmd) { - rc = gen_nl_ueid_handle(SMC_NETLINK_FLUSH_UEID, NULL, handle_gen_ueid_reply); - } else if (show_cmd) { - rc = gen_nl_ueid_handle(SMC_NETLINK_DUMP_UEID, NULL, handle_gen_ueid_reply); - } else { - printf("Error: Unknown command\n"); /* we should never come here ... */ - } - - return rc; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/ueid.h b/testcases/feature-test/oeaware/smc-tools-main/ueid.h deleted file mode 100644 index f9b9d9da4..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/ueid.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -#ifndef UEID_H_ -#define UEID_H_ - -extern struct rtnl_handle rth; - -int invoke_ueid(int argc, char **argv, int detail_level); - -#endif /* UEID_H_ */ diff --git a/testcases/feature-test/oeaware/smc-tools-main/util.c b/testcases/feature-test/oeaware/smc-tools-main/util.c deleted file mode 100644 index 236cd5115..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/util.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#include -#include -#include -#include - -#include "util.h" - -void print_unsup_msg(void) -{ - fprintf(stderr, "Error: Kernel does not support this parameter !\n"); - exit(-1); -} - -void print_type_error(void) { - fprintf(stderr, "Error: You entered an invalid type. Possible values are smcd and smcr !\n"); - exit(-1); -} - -char* trim_space(char *str) -{ - char *end; - - while (isspace(*str)) { - str = str + 1; - } - /* remove trailing whitespace */ - end = str + strlen((const char*)str) - 1; - while (end > str && isspace(*end)) { - end = end - 1; - } - *(end+1) = '\0'; - return str; -} - -int contains(const char *prfx, const char *str) -{ - if (!*prfx) - return 1; - while (*str && *prfx == *str) { - prfx++; - str++; - } - - return !!*prfx; -} - -static void determine_mag_factor(int leading_places, char *magnitude, - double *factor) -{ - if (leading_places < 7) { - *magnitude = 'K'; - *factor = 1000; - } - else if (leading_places < 10) { - *magnitude = 'M'; - *factor = 1000000; - } - else if (leading_places < 13) { - *magnitude = 'G'; - *factor = 1000000000; - } - else { - // this is quite expensive, hence we avoid if possible - *factor = pow(1000, leading_places/3); - if (leading_places < 16) - *magnitude = 'T'; - else if (leading_places < 19) - *magnitude = 'P'; - else - *magnitude = '?'; - } -} - - -static void determine_digs(int leading_places, int max_digs, - int *num_full_digs, int *num_places) -{ - *num_full_digs = leading_places % 3; - if (*num_full_digs == 0) - *num_full_digs = 3; - *num_places = max_digs - *num_full_digs - 2; - if (*num_places <= 0) { - *num_places = 0; - *num_full_digs = max_digs - 1; - } -} - - -int get_abbreviated(uint64_t num, int max_digs, char *res) -{ - int num_full_digs, leading_places; - char magnitude; - int num_places; - double factor; - char tmp[128]; - - if (num == 0) { - snprintf(res, max_digs + 1, "0"); - return 1; - } - - leading_places = sprintf(tmp, "%lld", (long long int)num); - if (leading_places < 4) { - snprintf(res, max_digs + 1, "%lu", num); - return leading_places; - } - - determine_digs(leading_places, max_digs, &num_full_digs, &num_places); - determine_mag_factor(leading_places, &magnitude, &factor); - - double tmpnum = num / factor; - if (tmpnum + 5 * pow(10, -1 - num_places) >= pow(10, num_full_digs)) { - if (num_places > 0) - // just strip down one decimal place, - // e.g. 9.96... with 1.1 format would result in - // 10.0 otherwise - num_places--; - else { - // indicate that we need one more leading place - // e.g. 999.872 with 3.0 format digits would result - // in 1.000K otherwise - leading_places++; - determine_digs(leading_places, max_digs, &num_full_digs, &num_places); - determine_mag_factor(leading_places, &magnitude, &factor); - tmpnum = num / factor; - } - } - - snprintf(res, max_digs + 1, "%*.*lf%c", max_digs - 1, num_places, num / factor, magnitude); - return 0; -} diff --git a/testcases/feature-test/oeaware/smc-tools-main/util.h b/testcases/feature-test/oeaware/smc-tools-main/util.h deleted file mode 100644 index 065b778c2..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/util.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SMC Tools - Shared Memory Communication Tools - * - * Copyright IBM Corp. 2020 - * - * Author(s): Guvenc Gulce - * - * Userspace program for SMC Information display - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -#ifndef UTIL_H_ -#define UTIL_H_ -#include -#include -#define SMC_DETAIL_LEVEL_V 1 -#define SMC_DETAIL_LEVEL_VV 2 -#define SMC_OPTION_ABS -1 -#define SMC_OPTION_DETAIL_ABS -2 -#define SMC_TYPE_STR_MAX 5 - - -#define NEXT_ARG() do { argv++; argc--; } while(0) -#define NEXT_ARG_OK() (argc - 1 > 0) -#define PREV_ARG() do { argv--; argc++; } while(0) - -void print_unsup_msg(void); -void print_type_error(void); -char* trim_space(char *str); -int get_abbreviated(uint64_t num, int max_digs, char *res); -int contains(const char *prfx, const char *str); - -static inline int is_str_empty(char *str) -{ - if (str && str[0] == '\0') - return 1; - else - return 0; -} - -#endif /* UTIL_H_ */ diff --git a/testcases/feature-test/oeaware/test b/testcases/feature-test/oeaware/test deleted file mode 100644 index e69de29bb..000000000 -- Gitee From afac94f075fbab3d6a95b0c07f93feb4a4abec59 Mon Sep 17 00:00:00 2001 From: 13906515865 Date: Fri, 25 Jul 2025 09:11:55 +0800 Subject: [PATCH 6/7] renewed --- suite2cases/oeaware_temp.json | 27 ++++++++++++++ suite2cases/oeaware_temp.json_bak | 35 ------------------- .../oeaware/oe_test_oeAware_72.sh | 6 ++-- .../oeaware/oe_test_oeAware_73.sh | 3 +- .../oeaware/oe_test_oeAware_76.sh | 2 +- .../oeaware/oe_test_oeAware_87.sh | 9 +++-- 6 files changed, 38 insertions(+), 44 deletions(-) delete mode 100644 suite2cases/oeaware_temp.json_bak diff --git a/suite2cases/oeaware_temp.json b/suite2cases/oeaware_temp.json index 625f6c08d..f5a88866a 100644 --- a/suite2cases/oeaware_temp.json +++ b/suite2cases/oeaware_temp.json @@ -1,8 +1,35 @@ { "path": "$OET_PATH/testcases/feature-test/oeaware", "cases": [ + { + "name": "oe_test_oeAware_61" + }, + { + "name": "oe_test_oeAware_72" + }, + { + "name": "oe_test_oeAware_73" + }, + { + "name": "oe_test_oeAware_74" + }, + { + "name": "oe_test_oeAware_75" + }, + { + "name": "oe_test_oeAware_76" + }, { "name": "oe_test_oeAware_81" + }, + { + "name": "oe_test_oeAware_82" + }, + { + "name": "oe_test_oeAware_83" + }, + { + "name": "oe_test_oeAware_87" } ] } diff --git a/suite2cases/oeaware_temp.json_bak b/suite2cases/oeaware_temp.json_bak deleted file mode 100644 index f5a88866a..000000000 --- a/suite2cases/oeaware_temp.json_bak +++ /dev/null @@ -1,35 +0,0 @@ -{ - "path": "$OET_PATH/testcases/feature-test/oeaware", - "cases": [ - { - "name": "oe_test_oeAware_61" - }, - { - "name": "oe_test_oeAware_72" - }, - { - "name": "oe_test_oeAware_73" - }, - { - "name": "oe_test_oeAware_74" - }, - { - "name": "oe_test_oeAware_75" - }, - { - "name": "oe_test_oeAware_76" - }, - { - "name": "oe_test_oeAware_81" - }, - { - "name": "oe_test_oeAware_82" - }, - { - "name": "oe_test_oeAware_83" - }, - { - "name": "oe_test_oeAware_87" - } - ] -} diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_72.sh b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh index 60fe59329..909d25aa9 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_72.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_72.sh @@ -17,8 +17,10 @@ function run_test() { LOG_INFO "Start to run test." oeawarectl analysis -t 3 | grep "use dynamic smt" CHECK_RESULT $? 0 0 "Check SMT suggestion failed." - local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') - local thresh=$(awk '/dynamic_smt:/ {getline; print $2}' /etc/oeAware/analysis_config.yaml) + local cpu_count + cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') + local thresh + thresh=$(awk '/dynamic_smt:/ {getline; print $2}' /etc/oeAware/analysis_config.yaml) stress-ng --cpu $(( cpu_count*(thresh+3)/100 )) -t 30 & oeawarectl analysis -t 3 | grep "use dynamic smt" CHECK_RESULT $? 0 1 "Check SMT suggestion failed." diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_73.sh b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh index 0062e5609..22db64018 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_73.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_73.sh @@ -16,7 +16,8 @@ function pre_test() { function run_test() { LOG_INFO "Start to run test." - local cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') + local cpu_count + cpu_count=$(lscpu | grep -w 'CPU:' | awk '{print $2}') local thresh=70 sed -i "/dynamic_smt:/ { n; s/\( *threshold:\)[[:space:]]*.*/ threshold: ${thresh}/; }" /etc/oeAware/analysis_config.yaml oeawarectl analysis -t 3 | grep "use dynamic smt" diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_76.sh b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh index 2add2cb89..5386d5496 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_76.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_76.sh @@ -43,7 +43,7 @@ function run_test() { function post_test() { LOG_INFO "Start to restore the test environment." - rm -rf ${temp_dir} + rm -rf "${temp_dir}" DNF_REMOVE "$@" LOG_INFO "End to restore the test environment." } diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh index b9bfb2be2..c69929a79 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh @@ -21,15 +21,14 @@ function run_test() { LOG_INFO "Start to run test." oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "PARAL" + grep "PARAL" /sys/kernel/debug/sched_features CHECK_RESULT $? 0 0 "Check disabling numa failed" oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "NO_PARAL" + grep "NO_PARAL" /sys/kernel/debug/sched_features CHECK_RESULT $? 0 0 "Check disabling numa failed" echo PARAL > /sys/kernel/debug/sched_features - CHECK_RESULT $? 0 0 "Check disabling numa failed" oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." CHECK_RESULT $? 0 0 "Check disabling numa failed" tail -n 10 /var/log/oeAware/server.log | grep "\[NUMA_SCHED\] numa sched is already enabled on system" @@ -43,11 +42,11 @@ function run_test() { CHECK_RESULT $? 0 0 "Check disabling numa failed" oeawarectl -e numa_sched_tune | grep "Instance enabled successfully." CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "PARAL" + grep "PARAL" /sys/kernel/debug/sched_features CHECK_RESULT $? 0 0 "Check disabling numa failed" oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "NO_PARAL" + grep "NO_PARAL" /sys/kernel/debug/sched_features CHECK_RESULT $? 0 0 "Check disabling numa failed" LOG_INFO "End to run test." } -- Gitee From 2997003760a10b1c3e3f27ed5335aec07fdbbda0 Mon Sep 17 00:00:00 2001 From: 13906515865 Date: Fri, 25 Jul 2025 09:28:02 +0800 Subject: [PATCH 7/7] new --- testcases/feature-test/oeaware/oe_test_oeAware_87.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh index c69929a79..5ef88be77 100644 --- a/testcases/feature-test/oeaware/oe_test_oeAware_87.sh +++ b/testcases/feature-test/oeaware/oe_test_oeAware_87.sh @@ -35,7 +35,7 @@ function run_test() { CHECK_RESULT $? 0 0 "Check disabling numa failed" oeawarectl -d numa_sched_tune | grep "Instance disabled successfully." CHECK_RESULT $? 0 0 "Check disabling numa failed" - cat /sys/kernel/debug/sched_features | grep "PARAL" + grep "PARAL" /sys/kernel/debug/sched_features CHECK_RESULT $? 0 0 "Check disabling numa failed" echo NO_PARAL > /sys/kernel/debug/sched_features -- Gitee

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 qqQ?s3p7Xk1CK -.\" ---------------------------------------------------------------------- -.\" -.TH SMCD-DEVICE 8 "June 2020" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smcd-device \- Print information about SMC-D devices - -smcr-device \- Print information about SMC-R devices - -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smcd -.RI "[ " OPTIONS " ]" -.B device -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.ti -8 -.BR "smcd device" -.RI "[" -.B "show" -.RI "] [" -.B "all" -.RI "] " - -.ti -8 -.B smcr -.RI "[ " OPTIONS " ]" -.B device -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.ti -8 -.BR "smcr device" -.RI "[" -.B "show" -.RI "] [" -.B "all" -.RI "] [ " -.B netdev -.IR NETDEV " ] [ " -.B ibdev -.IR IBDEV " ] - -.SH "DESCRIPTION" -The -.B smcd device -command displays SMC-D devices and their properties. -The -.B smcr device -command displays SMC-R devices and their properties. - -.SS smcd,smcr device show -inspect the device properties - -.TP -.B all (default) -List all devices. - -.TP -.BI netdev " NETDEV" -.B SMC-R -only: limit the command output to the device with the specified network device name. - -.TP -.BI ibdev " IBDEV" -.B SMC-R -only: limit the command output to the device port with the specified RoCE device name. - -.SH OUTPUT - -.SS "Net-Dev" -Network device name. -.SS "IB-Dev" -RoCE (InfiniBand) device name. -.SS "IB-P" -InfiniBand port of the RoCE device. According to the InfiniBand conventions, the port count starts at 1. Consequently, devices where each port is represented as a separate device will indicate the port as the first port for all ports. -.SS "IB-State" -State of the RoCE device port. -.TP -.I -INACTIVE -The RoCE device port is inactive. -.TP -.I -ACTIVE -The RoCE device port is active. -.SS "Type" -Type of the underlying PCI device. -.TP -.I -RoCE_Express -Underlying used device is RoCE Express. -.TP -.I -RoCE_Express2 -Underlying used device is RoCE Express 2. -.TP -.I -ISM -Underlying used device is ISM. -.SS "Crit / InUse" -Show whether the device is critical i.e. without failover possibility(SMC-R) or -whether the device is in use.(SMC-D) -.TP -.I -Yes -For SMC-R, there is at least one link group running on the -device with state "SINGLE" or locally "ASYMMETRIC" which -means one or more link groups without a failover device in case of a link failure. -In case of SMC-D, there is at least one link group running on the -ISM device. -.TP -.I -No -For SMC-R, there is no link group running on the device with -state "SINGLE" or locally "ASYMMETRIC" which means the link group(s) -have a fallback device in case of a failure. -In case of SMC-D, there is no link group running on the ISM device. -.SS "FID" -Function ID of the PCI device. -.SS "PCI-ID" -ID of the PCI device. -.SS "PCHID" -Physical channel ID of the PCI device. -.SS "#Links" -Number of links (SMC-R)/link groups (SMC-D) on the device. -.SS "PNET-ID" -PNET ID of the device. Leading asterisk "*" means PNET ID is set by the user. (e.g "*PNET-ID") - -.SH "EXAMPLES" -.br -.HP 2 -1. Show all SMC-D devices: -.br -\fB# smcd device show all\fP -.br -.HP 2 -2. Show all SMC-R devices: -.br -\fB# smcr devices show all\fP -.br -.HP 2 -3. Show all SMC-R devices with RoCE (InfiniBand) device name "mlx4_0": -.br -\fB# smcr device show ibdev mlx4_0\fP -.br -.HP 2 -4. Show all SMC-R devices with network device name "eth0": -.br -\fB# smcr device show netdev eth0\fP -.br -.SH SEE ALSO -.br -.BR smcd (8), -.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 deleted file mode 100644 index 04e531e8a..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcd-info.8 +++ /dev/null @@ -1,71 +0,0 @@ -.\" smcd-info.8 -.\" -.\" -.\" Copyright IBM Corp. 2021 -.\" ---------------------------------------------------------------------- -.\" -.TH SMCD-INFO 8 "January 2021" "smc-tools" "Linux Programmer's Manual" - - -.SH NAME -smcd-info \- Print generic information about SMC - -smcr-info \- Print generic information about SMC - - -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smcd -.RI "[ " OPTIONS " ]" -.B info -.RI " { " -.BR show " | " -.BR help " }" -.sp - -.ti -8 -.B smcr -.RI "[ " OPTIONS " ]" -.B info -.RI " { " -.BR show " | " -.BR help " } " -.sp - - -.SH "DESCRIPTION" -The -.B smcd info -and -.B smcr info -commands display generic SMC information from the kernel and the hardware. - -.SS smcd,smcr info show -show the information output -.TP -.SS Kernel Capabilities -Shows the Linux kernel's SMC capabilities independent of any hardware -prerequisites -.TP -.SS Hardware Capabilities -Shows the hardware's capabilities independent of support in Linux - - -.SH "EXAMPLES" - -.HP 2 -1. Show the SMC information -.br -\fB# smcd info\fP -.br -\fB# smcr info\fP -.br - - -.SH SEE ALSO -.br -.BR smcd (8), -.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 deleted file mode 100644 index f5b5eeba4..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcd-linkgroup.8 +++ /dev/null @@ -1,222 +0,0 @@ -.\" smcd-linkgroup.8 -.\" -.\" -.\" Copyright IBM Corp. 2020 -.\" Author(s): Guvenc Gulce -.\" ---------------------------------------------------------------------- -.\" -.TH SMCD-LINKGROUP 8 "June 2020" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smcd-linkgroup \- Print information about SMC-D link groups - -smcr-linkgroup \- Print information about SMC-R link groups and links - -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smcd -.RI "[ " OPTIONS " ]" -.B linkgroup -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.ti -8 -.BR "smcd linkgroup" " [ " show " ] [" -.B "all " -.RI "| " LG-ID " -.RI ] - -.ti -8 -.B smcr -.RI "[ " OPTIONS " ]" -.B linkgroup -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.ti -8 -.BR "smcr linkgroup" " { " show " | " link-show " } [" -.B "all " -.RI "| " LG-ID " ] [ " -.B netdev -.IR NETDEV " ] [ " -.B ibdev -.IR IBDEV " ] - -.SH "DESCRIPTION" -The -.B smcd linkgroup -command displays SMC-D link groups and their properties. -The -.B smcr linkgroup -command displays SMC-R link groups and links with their properties. - -.SS smcd,smcr linkgroup show -inspect the link group properties - -.TP -.B all (default) -Show all link groups. - -.TP -.I LG-ID -Show the link group with the ID -.I LG-ID - -.TP -.BI netdev " NETDEV" -.B SMC-R -only: list the link groups for the specified network device. - -.TP -.BI ibdev " IBDEV" -.B SMC-R -only: list the link groups for the specified RoCE device. - -.SS smcr linkgroup link-show -SMC-R only: Inspect the link properties - -.TP -.B all (default) -List all links of all link groups. - -.TP -.I LG-ID -Show links of the link group with the id. -.I LG-ID - -.TP -.BI netdev " NETDEV" -List the links of the link groups for the specified network device. - -.TP -.BI ibdev " IBDEV" -List the links of the link groups for the specified RoCE device. - -.SH OUTPUT - -.SS "LG-ID" -ID of the link group. -.SS "LG-Role" -Role of the link group. -.TP -.I -SERV -The link group has a SERVER role. -.TP -.I -CLNT -The link group has a CLIENT role. -.SS "LG-Type" -Type of the link group. -.TP -.I -NONE -The link group has the initial type. -.TP -.I -SINGLE -The link group has only a single link, i.e. -the local and the peer system can offer one device port only for this link group, -which means a link outage on either side cannot be recovered. -.TP -.I -SYM -The link group has two symmetric links, i.e. -the local and the peer system can offer two device ports for this link group, -which means a link outage on either side can be recovered. -.TP -.I -ASYMP -The link group has asymmetric links, i.e. -the peer system can offer one device port only for this link group, -which means a link outage on the peer side cannot be recovered. -.TP -.I -ASYML -The link group has asymmetric links, i.e. -the local system can offer one device port only for this link group, -which means a link outage on the local side cannot be recovered. -.SS "VLAN" -The VLAN to which the link group belongs. -.SS "#Conns" -Number of connections(sockets) running on the link or link group. -.SS "PNET-ID" -PNET ID of the link group. Asterisk "*" means PNET ID is set by the user. -.SS "Net-Dev" -Network device name corresponding to the link. -.SS "Link-State" -The state of the link. -.TP -.I -LINK_UNUSED -The link is not in use and in initial state. -.TP -.I -LINK_INACTIVE -The link is inactive and will go away. -.TP -.I -LINK_ACTIVATING -The link is being activated with the peer. -.TP -.I -LINK_ACTIVE -The link is active and operates on an established link with the peer. -Data is being exchanged via RDMA. -.SS "Link-UID" -Unique identifier of the link. This identifier consists of link group id and -link id. -.SS "Peer-UID" -Unique identifier of the link on the peer side. This identifier consists of -link group id and link id. -.SS "IB-Dev" -Name of the RoCE device used by the link. -.SS "IB-P" -Port of the RoCE device used by the link. -.SS "Local-GID" -GID of the RoCE port used by the link. -.SS "Peer-GID" -GID of the peer RoCE port used by the link. - -.SH "EXAMPLES" - -.HP 2 -1. Show all SMC-D link groups: -.br -\fB# smcd linkgroup show all\fP -.br -.HP 2 -2. Show all SMC-D link groups with link group id 50: -.br -\fB# smcd linkgroup show 50\fP -.br -.HP 2 -3. Show all SMC-R links: -.br -\fB# smcr linkgroup link-show all\fP -.br -.HP 2 -4. Show all SMC-R links with link group ID 40: -.br -\fB# smcr linkgroup link-show 40\fP -.br -.HP 2 -5. Show all SMC-R links on RoCE device "mlx4_0": -.br -\fB# smcr linkgroup link-show ibdev mlx4_0\fP -.br -.HP 2 -6. Show all SMC-R links on network device "eth0": -.br -\fB# smcr linkgroup link-show netdev eth0\fP -.br - -.SH SEE ALSO -.br -.BR smcd (8), -.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 deleted file mode 100644 index 86fa414ed..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcd-seid.8 +++ /dev/null @@ -1,59 +0,0 @@ -.\" smcd-seid.8 -.\" -.\" -.\" Copyright IBM Corp. 2021 -.\" ---------------------------------------------------------------------- -.\" -.TH SMCD-SEID 8 "January 2021" "smc-tools" "Linux Programmer's Manual" - - -.SH NAME -smcd-seid \- Control the system EID - - -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smcd -.RI "[ " OPTIONS " ]" -.B seid -.RI " { " -.BR show " | " -.BR enable " | " -.BR disable " | " -.BR help " }" -.sp - - -.SH "DESCRIPTION" -Use the -.B smcd seid -command to control the system enterprise ID (EID). -You can disable the system EID while at least one user defined EID entry exists. -A disabled system EID is automatically enabled when the last user defined EID entry is deleted. - -.SS smcd seid show -show the system EID - -.SS smcd seid enable -enable the system EID - -.SS smcd seid disable -disable the system EID - - -.SH "EXAMPLES" - -.HP 2 -1. Disable the system EID -.br -\fB# smcd seid disable\fP -.br - - -.SH SEE ALSO -.br -.BR smcd (8), -.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 deleted file mode 100644 index de6125af8..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcd-stats.8 +++ /dev/null @@ -1,201 +0,0 @@ -.TH SMCD-STATS 8 "June 2021" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smcd-stats \- Print statistics about SMC-D usage - -smcr-stats \- Print statistics about SMC-R usage - -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smcd -.RI "[ " OPTIONS " ]" -.B stats -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.ti -8 -.B smcr -.RI "[ " OPTIONS " ]" -.B stats -.RI " { " COMMAND " | " -.BR help " }" -.sp - -.SH DESCRIPTION -The smcd stats and smcr stats commands display statistics about SMC-D and -SMC-R, respectively. Data includes number of connections, number of failed -connections, buffer information, and special calls. -Statistics are collected at various data points in the smc kernel module. -Therefore, minor inconsistencies in the data can occur and are to be -expected. - -.SH COMMANDS - -.TP -.BR "show " (default) -Display statistics on respective SMC mode usage. Values displayed are -cumulative since last reset, unless option -.B -a/--absolute -is specified. - -.TP -.BR reset -Display current statistics and reset all counters to zero. - -.TP -.BR json -Display current statistics in JSON format. - -.SH OPTIONS - -.TP -.B \-d, \-\-details -Display additional fields and information in the output. - -.TP -.B \-a, \-\-absolute -Display values since smc module load, ignoring any resets. - -.SH OUTPUT -The -.B -d/--details -option displays a number of additional fields as indicated in the following. -It also breaks up a number of counters in section -.I Connections Summary -into separate counts for client and server. - -.SS "Total connections handled" -Total number of connections handled by the SMC module. Includes -.I TCP fallback -connections as well as -.IR "handshake errors" . - -.SS "SMC connections" -Number of connections that successfully entered the respective SMC mode. -.B -d/--details -breaks up connections by SMC versions. - -.SS Handshake errors -Number of connections that failed due to errors during the handshaking -phase, e.g. peer no longer responding. - -.SS Avg requests per SMC conn -Average number of requests sent and received (including -.IR "special socket calls" ) -per SMC connection. - -.SS TCP fallback -Number of connections that fell back to TCP/IP. - -.SS Data transmitted -Amount of data sent (TX) or received (RX) in Bytes. - -.SS Total requests -Total number of individual send (TX) or receive (RX) requests handled. -Includes requests that ended with errors or did not transfer any data. - -.SS Buffer full -Number of occurrences where the respective send buffer (TX) could not contain -all data to be sent, or did not contain as much data as requested in a -receive call (RX). - -.SS Buffer full (remote) (\-\-details only) -Number of occurrences where the peer's receive buffer was exceeded by -writing data. That is, requests that fill the buffer up to the last bit are not -included in the count. - -.SS Buffer too small (\-\-details only) -Number of occurrences where a send request was larger than the local send -buffer's total capacity. - -.SS Buffer too small (remote) (\-\-details only) -Number of occurrences where a send request exceeded the total capacity of the -peer's receive buffer. - -.SS Buffer downgrades (\-\-details only) -Number of occurrences where a buffer of the requested size could not be -allocated for a new connection, and a smaller buffer was used. - -.SS Buffer reuses (\-\-details only) -Number of occurrences where a buffer was provided as requested for a new -connection by reusing a buffer from a previous connection. - -.SS Bufs -Histogram of buffer sizes for all connections, including -.I buffer downgrades -and -.IR "buffer reuses" . -The histogram scale presents exact buffer sizes. - -.SS Reqs -Histogram of request sizes. The histogram scale includes upper boundaries of -request sizes. Counts reflect requested send sizes for TX, and actual receive -sizes for RX. Difference to -.I "Total requests" -is due to requests not transferring any data and/or erroneous requests. - -.SS Special socket calls -Summarizes the total number of sockets calls that require special handling -in SMC. -To categorize these calls into individual counters as follows, use the -.I -d/\-\-details -option. - -.TP -.I cork -Counts occurrences of sockopt TCP_CORK enablements. That is, does not reflect -the number of send requests with TCP_CORK enabled. -.TP -.I nodelay -Counts occurrences of sockopt TCP_NODELAY enablements. That is, does not -reflect the number of send requests with TCP_CORK enabled. -.TP -.I sendpage -Counts occurrences of the AF_SMC implementation of the sendpage call. -.TP -.I splice -Counts number of calls of the splice() system call. -.TP -.I urgent data -Counts number of send and receive calls with MSG_OOB set. - -.SH "EXAMPLES" - -.HP 2 -1. Show SMC-D statistics: -.br -\fB# smcd stats\fP -.br -.HP 2 -2. Show detailed SMC-R statistics: -.br -\fB# smcr -d stats show\fP -.br -.HP 2 -3. Show detailed SMC-R statistics and reset SMC-R statistics counters: -.br -\fB# smcr -d stats reset\fP -.br -.HP 2 -4. Show detailed SMC-D statistics since module load in JSON format: -.br -\fB# smcd -da stats json\fP -.br -.HP 2 -.HP 2 -5. Show SMC-R statistics since module load: -.br -\fB# smcr -a stats\fP -.br -.HP 2 - - -.P -.SH SEE ALSO -.BR smcd (8), -.BR smcr (8) - diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 deleted file mode 100644 index 596058b46..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcd-ueid.8 +++ /dev/null @@ -1,90 +0,0 @@ -.\" smcd-ueid.8 -.\" -.\" -.\" Copyright IBM Corp. 2021 -.\" ---------------------------------------------------------------------- -.\" -.TH SMCD-UEID 8 "January 2021" "smc-tools" "Linux Programmer's Manual" - - -.SH NAME -smcd-ueid \- Manage user defined EIDs - -smcr-ueid \- Manage user defined EIDs - - -.SH "SYNOPSIS" -.sp -.ad l -.in +8 -.ti -8 -.B smcd -.RI "[ " OPTIONS " ]" -.B ueid -.RI " { " -.BR show " | " -.BR add " | " -.BR del " | " -.BR flush " | " -.BR help " }" -.sp - -.ti -8 -.B smcr -.RI "[ " OPTIONS " ]" -.B ueid -.RI " { " -.BR show " | " -.BR add " | " -.BR del " | " -.BR flush " | " -.BR help " }" -.sp - - -.SH "DESCRIPTION" -Use the -.B smcd ueid -and -.B smcr ueid -commands to manage user defined enterprise IDs (EIDs). - -.SS smcd,smcr ueid show -show all user defined EID entries - -.SS smcd,smcr ueid add [ueid] -add an entry with the specified EID - -For [ueid], specify up to 32 uppercase alphabetic characters (A-Z), numerals (0-9), hyphens (-), and dots (.). -The first character must be alphanumeric, and dots must not be consecutive. An invalid [ueid] is rejected. - -.SS smcd,smcr ueid del [ueid] -delete the specified user defined EID - -.SS smcd,smcr ueid flush -delete all user defined EIDs - - -.SH "EXAMPLES" - -.HP 2 -1. Add a user defined EID -.br -\fB# smcd ueid add LOCATION-WEST\fP -.br - -.HP 2 -2. Show the user defined EIDs -.br -\fB# smcd ueid show\fP -.br -\fBLOCATION-WEST\fP -.br -\fBLOCAL-WEST\fP -.br - - -.SH SEE ALSO -.br -.BR smcd (8), -.BR smcr (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcd.8 b/testcases/feature-test/oeaware/smc-tools-main/smcd.8 deleted file mode 100644 index 2fe9bcfab..000000000 --- a/testcases/feature-test/oeaware/smc-tools-main/smcd.8 +++ /dev/null @@ -1,123 +0,0 @@ -.\" smcd.8 -.\" -.\" -.\" Copyright IBM Corp. 2020 -.\" Author(s): Guvenc Gulce -.\" ---------------------------------------------------------------------- -.\" -.TH SMCD 8 "June 2020" "smc-tools" "Linux Programmer's Manual" - -.SH NAME -smcd \- Print information about SMC-D link groups and devices - -.SH SYNOPSIS -.B smcd -.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " -.BR help " }" -.sp - -.IR OBJECT " := { " -.BR info " | " linkgroup " | " device " | " stats " | " ueid " | " seid " }" -.sp - -.IR OPTIONS " := { " -\fB\-v\fR[\fIersion\fR] | -\fB\-d\fR[\fIetails\fR] | -\fB\-a\fR[\fIbsolute\fR]} - - -.SH OPTIONS - -.TP -.BR "\-v" , " -version" -Print the version of the -.B smcd -utility and exit. - -.TP -.BR "\-d", " \-details" -Print detailed information (valid only for stats). - -.TP -.BR "\-a", " \-absolute" -Print absolute statistic value (valid only for stats). - -.SH SMCD - COMMAND SYNTAX - -.SS -.I OBJECT - -.TP -.B device -One or more SMC-D devices. - -.TP -.B info -Generic SMC information. - -.TP -.B linkgroup -One or more SMC-D link groups or links. - -.TP -.B stats -SMC-D statistics. - -.TP -.B ueid -Work with User defined Enterprise IDs (UEID). - -.TP -.B seid -Maintain the System defined Enterprise ID (SEID). - -.PP -The names of all objects can be abbreviated down to -a unique stem. For example -.B device -can be abbreviated to -.B dev -or just -.B d. -For more information about individual objects see the man pages in -.B SEE ALSO -section. - -.SS -.I COMMAND - -Specifies the action to perform on the object. -The set of possible actions depends on the object type. -For most objects you can specify the -.BR " show " or " link-show" -command. Use the -.B help -command for an object to print information about the available actions and the specific syntax for that object. -.sp -If no command is given, a default command -is assumed. - -.SH RETURN CODES -Successful -.IR smcd -commands return 0 and display the -requested link group or device information. -If an error occurs, -.IR smcd -writes a message to stderr and completes with a return code other than 0. -Possible error messages to stderr in case of non-zero return code: -.TP -.BR "SMC module not loaded" -Either kernel is not supporting the -.IR smcd -tool or the smc kernel module is not loaded. -.P -.SH SEE ALSO -.BR af_smc (7), -.BR smcr (8), -.BR smcd-device (8), -.BR smcd-info (8), -.BR smcd-linkgroup (8), -.BR smcd-stats (8), -.BR smcd-ueid (8), -.BR smcd-seid (8) diff --git a/testcases/feature-test/oeaware/smc-tools-main/smcr b/testcases/feature-test/oeaware/smc-tools-main/smcr deleted file mode 100755 index d1e4eadf90f8de383e487ab144a69ff21311a047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222608 zcmeFadwkTz)jvM_*(4+(B6mVS@<|YZ$ej=fAna}u2oM4$0TF1kn+p&LNysJ$Vr3J2 z)QYY7lyLC^EZ9CJskS^7TjNvfg4V}ARg0*A*4j<*LWTChD@4KlzR%2jb|;rr+t=^+ zUlukq=gc{0&YYP!b7nr5-IkRzPqSE<`O(;K89~0`HjWa18C$yA%3=CrV>4I`{*GeT zvnaq397iQoX6uk%mZHrxnwK(0(ui+{CJ-|;8_$^OFo9-fYHCPnq%0GOO+q3a{!0Ox zDdVjXe@WM;uZr@guiAOWOdER%{JP;HHTg(A;(JN*y(Ia}lu7-~)NCKMjlKo4yg;)7 zBG^U=%jADUDbdnr>H9S$l>g~I4kESjjG4Y84PmAx-_777J-_RxuO!Tq^@X!bw$$HD z&3>3zURE@*ykvZNSw-#U@h(?&@w&9s3GT`XlSR7+LO%8J{M==1_-E^W*z|!Tuk_aI z7W`phS>?NTq>UiGNe7ZgH1r{Q*$v#B*?_5>w@XyawIO`^Cp&^Y1+dG<1U+0y?+cN=bg|MM{PNn!Mf4;ngtmw}sL3rZDskVd(!Ere1FtIUj|=zY+%jKp6Z==+lqIv!#&^ zZVEGgV1)|`78jP3R+p|VbJvts7c9;wudFC7a21u8vckf(8!9Ub-8HW2n!-Xs+AZPQ z(u(rJ;+pF6!s=3YW%;I3MwkumwS`r#YPSN_*6@wDO(&8E>h+O66mBq-r3d>6? zkU~oFCUCo<*cw-DxkIqa@TUNr*A~#XsKPA*RYf37skho<^FTj~f3Mf&GETEQr1}{v~WwFehl# zzeGp>EHb4$;jH*;%23k~p2{tiGW9*o`nYibcw86qUCr<@tH- zfFf95rTo<{m4Y|- zYE-;g!S_?>Jqli3KkrlU0~GoO1y6f5^RrjM4>FNRy$XJ?f7mq_%RB8hJqif;B5*%MZsq)_!|}c zQUy=3ocURy;K!Rtq)r7tLBX$6@Dmk$m4ct7;5RFH95n<#9tA%oh-K_P1wU26Hz@d2 z1;1CpPgC$-1)rwi4=Z?Dhs@6r1wX??B7IuHrz?1$f}g42UsCY16#NMVKU=|{QSfsV zykEi3Rq*E&yiLJhRPbWu5QUc&ycqG4Nehkt3`I_~g3na&eHDC`f{$15^Axhqrfa?`F4e%iao(cH40?z^5roaxsnii^m9^hmJUI^Hsz`1~n6gUrXy#g-> zd`N*;0zR(5-v`{Lz(s&HYpDJ;fRh#YHoy)At^i!5z}0~36?hZiLkfHc;NuE>7vMGp zt_Q3|gzCQsaIym557?o=KL%W+z&`<8ufV$jA5!3l0UuZ3{easP_z++%GF1P60!~)o zX21>w{w3fd1^zYQdIkOs;6n=h4B+Dm{CmJ{3Va-}78R=hMZn1l{J(%53j8YIA_YDP zxL$!z0Y0R_Zv#HA!0!TXQ{XnhTCY(39{^5P;Ew=16!@Qjixl`1!1W6J1>i#p{3YPy z3j8(THU-w~s6RSXe-z+k1&#&mP~bj*ixjv&;Cca@e&@TUSGWF-`>s#(Elrn-txbs$ zY~%P|tN?4tiO;Mo<WxI;yGQ8r29GOXw3XC(UbkC zeYPP+ChDSb=+zi+huKfmM~>n4cB*rhl(8GU)K;QFtjp~~G{yR0-k(Xf!Nw%eGK|wH zUkCP_m9%ZLzGBcOIfroC8zkKr(9zhZ{u+h6xo)fJb8)UR1O+t#; z>AVkf2JnfbbMxC>;JJu7$q-jaSsmzM$3G=s+4j0Uu5L%t75mO(pofi4I4;g_FXFsf zkeBMby7l+MAM|GJpQ27@(Xw<8W7FP+J;(;mqCx4O_O`WO-FlqQf%jxPOnoU9GW&pH zBCFU;B1^o}zhrVtmd*1;%S5a0=E9xEudcSoLpMNx_u5Nve z*NuJ4iMF#A<8IIOhSlQ9vw&_d_?+>Vr?+L;+8tj9Fb^yS^|Kx2#Vp2Hjq=Yio}7bd z4ni;Q2;hnNS1=Zc{|?k^dEv)-_9$<4 z-EI2QB!lxZ-MEEh&$6{22mdkfw}HPE{2uiGqu@&%&Z;eaFs4i%r*13+j}0~}K+5I# zbmOm}<@!&zwd>LB=*=iI^^c`GpuZD-oaDIc2MOKvBx5?th|d{iYw<;~X*3>^yu)SN zl8lKc-xOhxck^zh!(yP+rR-SI_5p-k4X9>j3pZ*d0nCLaA_EgM=>Udmime4 zr(--EfH*M#|VLbG~K(tIu^A1`GwXR>i8_%NUQzl*vBz4RZ5C;V16 zP3Z2))18qmQ?X7t`!nO-D6C-?Hmzt1GhFcbPOMG$6AtSlt+B0vz(w*eNoWOPQ>!0{CP;d-BkMQ+ooxV_=bGoThwb!Az?(8+nm?Z7>lc2qx4f#L#g4rmC zUpvyaof&ttG-D*%Wx=-yc(3L1bpH@ryC3tm8Zh-YY%kmWJokyVPVi^Y-=XyXcItmN z+UNuRI^OpKn&%@=eE&qBtMMT0$9*yR$0E|#!#+M7%L?Rrc_fLAH9m*@quOAD#?TKy z^A5f{?_x$>6nkwjv$aPcCUGObO|zWWBN5Xf2K3$G-0TcgPXDd8Jl#KH+v{)M=G?q2 zGCqxD@P4t~XnYMhX8~(=Paej~QPDr_h!*WR$(%O^`=0894f@YPdOJfLDdn~P1~I6n z#U{ZQ&qYl8)BCgUNV2km;s|DJV*}1NeH|#E@j~l~@E;Xp5u^D@m;Vy z2IVXzSpE#ku}1Rw)@B_d#+_%J;e?F`z`iu^bm~{x7tAx>cmh1HfrsW-J=$f?E1F}> zKic>i%BgL=kkZ%^b`7H80W48`Rv#TT0edwWh6@iAa&qB%fg=UVXJg)jA| z2YwrExcJ-+Y-6O;llKAE)sgWFTYkn4B#Z_v`13I5_?T+~kGB^)T7&WCp?<^sq&iv= zFF8==kGMRY;9nt+bs&Y&_(a)Gz|fnIOR-*yv6(oAO|~JXeQpBV=)qWcE(Ni>h8TW0 z@G(dSvdIi_f1=JN`v{I_laEO2YM@1UIXVGMCTHpxf<{*=N;bC&5-f_%v+ ze^n_zMCG>0!SV!@zo?WudZV084VL#u`R`GFb*u0Xv#6Co>!3pHQ8+~ysmGIogwrR#H;Jg?cXiMI~8(7N$&9eSN6f1Zv zHf!upr`TF-%z{f75%^kr)Bf@pe29H79Kik)|b`ENGg3g@JM4txwppMRI#uVttBE`PTJAt)O zTMxj`{{w#BjWvk&Uv%4M0*spv{xI4y(r0ip6khuFz+zQUmL0=EnC2F&G3TydLEyud`bw8yX_V^phUC^bo|2_;IXe=fj z&1yLad5DL39BuAl`C9WB)*5}bk%78k_q_ihy)n1_h^r8X9rY(---xsy@DwW&p7*^c z&6tYu?{=ga?*4TTze07v$I$wq1JAtEji-SlnVstu<-?6^l-s*0?{?ktr5R4po9os? zlJ`$&d&obEcqJKgt4qA%n{F%x4}(wr^_OP6(xR-tmS)<2tO8AUcBuoNufb@)A3iY& zdP7zo?)7V-KE1m2fA|`V_@M(#F_^jr^B9b!8{;9*jK9_(Z-Xqc20z<$)~Yp=FE@QW z*4c|8zs^$9u&#OGd&#zY(3U9hlYjR|3IF~#&GhdBg@5nc)xS>$k1v89B{}5NUx6HE zy*!=ZnJ6>;c_QUek2=5j9u@waVcZ{>!#1+$oS8|Aucq~k`O|~`=M%`LSb&ck_|*>p zlV6U8Y`q)VL`Qh?!G8g*>6g6{cM3T2%dKJjER~-_`PHq@1pAkKUirI7DCbtu6|A34jQGqCBvUxwUE+AM?CmqD)&#$Lsf_a$)NDEK$bcig`f^czn2 zfmWP@48@!@eIuQX4FasgKZ)|8&HVr~_|*>bVuifNuLcUNzs+j#-eVh!djWbo;42H^ zEA8-=bmoMs+9@9Rr+m=7&ixqXmv5G_S=ceSH*Q~_iE;QMABSyji(x^m;DwJ#LaY)f zWGyTD;w-BWeiMGyi~ShWgum55NB-7f8)c9T8dqEncvr)Y)b?f44z}M$ay|b7yf+qW z#8(0Cv%|^oL&hS|()j62Lvx7gAsxxbldbp|fsgwGbhTmsM|D#ioPl}|Xx8<(7qNhJ zp|i88!0YHQW}9V9`vzNl3EwEfS17^=OPvT)72keLRrusD}8ev>he&`iL)67ySp^l6#68=uAP0d4fre2 z3%>YBvW&rD`v&fd(T@K`9i}g~LN3vhe+g`le(ma3792Cg@79KhxEucV1o0)?T5zV+ zd=N1S)~zF+-#BP~VeQ7abXpD4pXWVR2nfF?a^Jd;>HO`rN-DjCU3I$yiG)z)PCc(mIfAJ6q>7UM-z52wX=-pqR~hR@9VEXK2Do@vH2 zX5OY5zeV1O*a-JGY>XQxVrJ&oj6cG@w8!&jL>M%m0)bvlfstCe8}y!;m`@MlngQ0? z)0eSUJZNe0?-cO=5u6c~?%yNeKNGwM<&OwBAN>BQ)-C=60$xJ!bij`ZcoD&~0RLQ! zn*)FmS2ib;Ew@G)4!_l~Xr7aAL2lbGZ0*~VErvfsGmc?QzX}$R3 zu}Fi)-;Y!|SPx7&|3msM5q0}0KQb!4b&tJ;+twCoRD!Ql?|d_*B*>z$KW!F|`W zg2JN%Hu_Uofd_ts@O8k!H#Q`B=i+RO9l2B=iGBBw=0flvdz)d6!g%vW8mj=ePR-cD zVPB+i3t)f7ymV@x!^1GI*%9iCBq#EH>mMc=m*CeH6W@bUFMp)5fcQqvOFxUY_(!r- zZXeJ(Sd@_j`xw*~z_YGpjZ{XlpG}W4W`U2!X%H1S|diCc#R-zecdq@2?On``zp_ z9XgtQ?}H7^K3hq&Pm1v|M5Rfv2pafGsvq}69BIV(xC9$*J!>_-M0y$Dq41s5HWoK@ zho;-wi-xkJVyugC^bB}CNn#B7(YCJvlOAo>Vc5$iG}HJ?CmrOtnSwmqj`K*YF=UJW z1jmDam4H(Send;h+Rn>wAowxB#faTO9|ibW?9d(hQob@`7 zGed*EV^N0_*RE(CApQSw2|nG%KDG=IbDqwHnJvnA5_HF5M+owc_St{zysXS<~_ut%rE~?R`3$eyZQVAzd65-0cXxH9X4TlFXKMq#oQs7<_*LA!CaJc z$MZ0!v-L9W0-fpOo}f6`oZrq~#_cFm=cgNRaDIAv8I@EX8^43g!n{j*+}3g%aQ=E* z`t}6vH7Bki^0|lcWX`=`qkS~KR`=;R_f~_C=H42lm!hz*g>B*^*;BZNdy>wBc^yv8 z$U`~Ldo*K-nfGZ%j+uvl#(r{0I{0$IM{V~ZCP~tH``5E~0=VwLuhZe2CDOQy+j~Is z+u#Ye#?qPdMbL?Lc5pL|mm<)UkD!?ID|c4Y_W>tj+}?sZkNqQ%x(+G%7-~QH9GahQ z$Y=u{&4s1N+lOh!Pmtc!jh?=bJL*{gI@;^pCukdzJadgFAd7UHOEO_owXPMQ|4%75 z$LFB=ph4;8E=uC*vW+kI zMT+@zAr9w%*hg)^{!#9^8q#2|OW22e|QilC1FnB4D_TA*M}$`@`6^JW4>@W`WiNn>Vh4PBClXW(39rjFF`{(@j2=1WqbkHi?cj}iROO5iE-@XKjQ3?`cTj%7#D!I zAr72_b{zOIYxyhcknL+o!XB&yc;6?1RM`GC*uEe2)h?CBn_#RGHZ{)#Ip1>NJfC;u zyBB!*O(Po;-(^XX#@6hOSr9evrm3 z_E~%lT?X5Dq8MGb>zG?VQ$9D$4>G;mXcUDv2L)N|#_0ahYTZWioy|DQkXs3S`V*T3%e1YJ< zM5g<(&!IkfnP4}{v9F<+{4ivged6C98I14Rh;EPILCn(Ve~z`A`-jy8KaZGX2ks$& z41Y29{McjF!8SQkC*LewGXx&7yitkkgwAApiwE#!5E z#T#zOX#GnTk13cx!KftIEz6zp#(Kb{Ybo@gxz6KiHq0mmp4N7vM~oFb^SQe9Z~V-_ znQJ2*rkV9Vj(>}dktaSU;weFEF&3HS&TEY9U_Q>sB3e0C zE~L_R8ta>+kDwRhrW$jZ`kUtSCGHO!sCSOY142=|L%o;8^B?6dcT{tP9i!{Y!F=s5Cp|-W@c&e)uP;EA2J9J8<0(HZwFFwZ`Tl9E12ejUKX4` zx1#?w^!-EBuecY6=nleuq&NCFwKby`?h&!_J!S)Fd|wC}x(A2)k7DItB9DDXgL$^c zaJ|Gl+bh6)I|)9q?-A4BSH2cF+7s14X6spd3$L#}-WZB=f~08QN~-fkqWRF?LV3a+ z2Q2pQLz_SSl=z1>)BZgM`)S@LZ@kgMdH6clz>m~Z5k8!_AW4qS47x{UR>w>>*M|>#H8My6yvhA~> zn|Bk|-+mZNn^;S5E@Ld+PIX`oV=ZrRVE)oPPQ)H4iO=DBIzvF61C0%!Gw1Pr*e{v$ zShQ!LQHt_lpJP0_NG|$#mD zwBI+#7zjRg+G6xkZN>&0eSmM9I4|86!ER2Bh9AZKCoj}njJg%h%c6e<8emHh-gKLXCVTQlB^ zQG5;bd=L1dK8~QC=dgc120fD$J^w;92^pa^!_(!=3iENW@fzq{{WUQM*%0Fuz+1z$ z$JdXy#{-(T&>rf;LZog7KTj6>N!(w3(7IC{FCJ>Dujo!tS2v&^f{(z+UAXVL#yDzCT6C zH_s6~SnE7=jRor$?MXHGrX<`aT2{;eVMGoY$mfuJjqzlzcx?J7*hr^_o z2XbGBJUUnKAT}Z&MSh*)v4_xC2V~oDXLJGGZ^h}b7IQjzKJg&YL09E`0)7tX6L`kx zAnKs8e-CJA{EKskUdF3{VUOVXL=j-~e1h5_=n{+^%Vu-=8jTq0*G|_!DE@oLo=Mz>t z-8W%rO1g98BZUL;JPhu8)6NuKrZZEDSKP-(7;c;g`M2XN18^&Ni*0?4Uqc7JKcMT% z(7}l~_7&i8|5ZC(? z5yhLBp9K`tI&q#(XZ>D+;hU3i4Wb-Og6@z zkNRK*!6N`q7jOZ=$$*1>AnqyZ(k`6+(X%q0@pLab+5b>y`}=in|GtplS@zYfziy&) zH1hOhzR{i6dU&2jQ?s+^ZVGfT*c4M+1bXjTat zOE{VfpeYnImp>Ldcd6?lXx0mwGrd?NwW|xw70}52?4QHYFiSgKgQIr+HC$bvLC#u1 z^F}zD%b=MrX#NzA<_u`C=cT%ihokX>W{IF_2}koDXz~Tkk#IEUKy!A(~kKZh`8T5uL(!#xrv?l^FC|D+e^=O(TQxGTUh1y>K;CE(x( zf^^BieFB^hKHlVY0QV2zY*;UB$kVz>_r6@+`l`662D;I_U`Y9MB!?YXFFYp~LI2?M zMGC#}=f4TXCzvAzpuHaByA9_!ciWPKXQFoiZ|fz_MB8wm(DSH+&mXLV)c!i?a}#Jj z#hH%>vB4WCZ-np1Tx{0v_MEh!{QZm2L;8_C(0XFEps&v*xDR0XZZG@>$+Ux~AI=_0 zCi!?1k2d8YE){sIxVPx)*8k-;Q125manxr;IH#sEvW@W9Be}nbK)qOty_-o^0PW^BeXOHRM}b$5 zflV>a>TzFV(5B7^!+(}hY>{^ky!@U4^5JAVjD0KkUWZ<^w$l3TuJ3C&KVj{4WH+px zUxCN@1;#IIiJ0){D!^uc(EY6*$3UYIJdOQ54-dfjh`_o+*PgZ=w|>lUHdJ?;`{_D7 zS84k6iQxC#HuY)p>C^{}+JGIu1`hXt^~c)M(s6A4iT4Bf(C+XgbHH_;lg_Jwr!K%| z)Hl>8)IY)Nc6bg2eSC5s>i9coNO!X@s2@D&59$k|{|q#BfGM7O1$nx@L)R3@mdTJw z{=Qhw1FDBPuQ%=`-4WmX{r>`c;`-E|3>1(1lX?%7X)D+Uaje!v*A{jkPvmF5dmQn` zUQHM0Opupu9mDTC>X>8O`e+-=aqW)A;91B@Vxx>U-1A6un@Ap=Ga%lg z`yCV6fb|D)PddqF_p-}mH{yG5C-|H<7-zRzg1l>q7jecv(AS*zqPV}i)tWQ5Rbyi> zVJy%yxnvvlo+;Y@(wPP9wS(@R;`a29F&={*$)3A-3LEQVjQtYV5X6l#9+J2nCeCw% z(I|2Em^gj3@u0-jnK<7l<9>;|6Y15h|J`KuT8%$gac?F1SFGp!+Exnn7sab|4oLIy zGW-wuAWMX;MT@hwAl6;~1Y%tc_a{a~@aK2hwFt{trZXdvS3E8Pdtdl{fz{jm($DdgLL9Pkbj_m>rf6{HC-q14q^pA z!dW5p#UbE}I9^+?+a{o|Y5gC^&pEYTww83coe##s#S1AU_LOR^8j64~JOPMnc$z%$!+m(Yvh%<2NhNvqV;hw{ac zWs&7x=$9n(mj1Af)P?jTeUkKX#@CQfI^iDi&~rs{JkVZ?#)HMQ1I~8n8T%v&dvMlZ zmwC&z!WK#18x4Av;Go2NaUbw8nNPyK$J{plamF)5BX#qG<{B#Vh<0KBS77mqydCGe zf@gy91bFJCth(M3?;CH>GuSRE%LaSY$-E141@DcdS+O(>Wcx z(P#u+l1=tIY-yKymr3ItYwREzMHa>NoFC82+)ZV=;CEr(a=dSXaToA{CdHt$3Z8e4 zGd7!f-;Db^Zv2M3Nx>dHBHuq05eo5sCQSCN7S3>-Dv~3?! zU7nGc*S~qccqSQmFoOHgOrFv@HQ87!adS-^n`~rD+)SioU);C$S_aPau5Pt7UCkh0 zsPQ(`AU61X74A8J&R@XZ+u+j{r15>`WIy~L_L-Agk?PRPGo??9C#_G56~2ta$a@eU zXmdo|c01~N3TGKUoEM;dC+JLOFzo7GqTp~Q(+@bj0B#zcTfLl%ds@v@vzTHHs9>$?#+yO@OQQzqUMYxto@8Std97uV4c^YXaSqorfrjcEGkKd{b2CyzFn z>-7;}E+28UCpo9Z2mQ8VU1l<#VdT#}eLr^I#0u(fb6&QrE4~che;)VX7kJQbZPI?8 zIk_#)32Ykg2Q~%I21MdMt*EARqkC=mXkzq+3)5pZ+ydIz2zKp5MYlH9#jb4H6YFUA z^l`MOTP-`{t=f({Eu;Mso~_;;mC-)a8o#5y{`*a*aOTmf4c?K&5_Y_em?;C}&1Nm$ ze;X^_zi_B?#6o+~h`V!FH*J60*8U$K+1iU)#E!f1-WInOxx=klcNA+8JI>~_cHAp_ zbjOsu4GeturR8tXd!IYG{w>#C58!KIYxhSZeFES0kof?<(fB@r@A??mhzIbE#`g() z*Q34%@Qudz34CMF9=f*s!)I()ZIDfJN#0n<8Vmlh;28@#F+QglcfkgpDY-4S8)4_z zTbo*Ouj1V&5o=&xFny{~#IzmTPvKr-X5HZiEyX>eEY+w4O!-!8d^7W<8tYA2V_0fE zY)NI?VNdc!49^4?quh2ZS=5bZtO_N)ego(+2I#)0FK}NBmv5V4WJG_zX*p=3+^hDA&=Jx@U-f zX!AItCp(VB7~gI+aK?svQQ3*#U|$zMa*pxEjfnkWr)Qv}ALSoh8(~Dhz>ERInGspV zjEDl9xy@k4hy0$E0nO*EtR2q%#3jdEgXGcmt8)*=Hodo}chd)JS$kj9$Lqm4(LU61 z?!kpk#QWZ!Mexf5nm<^JGeGc>oWW?{Da3wcM-6;rw>YHSZp>orqB-|TsI6nEtr8|1 zeU9?FFNIw`AzHlm$FvJxNZ(i|VX_O&UoY8Zzp%>(fEmFL%Q0m`>`XEUw_Dp9L?sCC;Yk{Sj0~GCqK;&b)$WaPtxHkR7Q% zxg9-LBZK7ROZ^eY{v0sr?;8MLHZ!-SeSH>u&^-8{`S3y6@IebU&^280_vE{tB>IGT z{Cw@=1)NP|ogus(_ybt47C|>Ee;;L-11Glv?;Ut~I`!`!_|sFzqYc{kk-W2axG!TI zq!2y!BYbWh0R6W9+Q&)ol{?{YiSIJncuI>g_SDZXh_Cn_+tb*ya6X!kbnjfr@xrGY zh*ukO-U43jQ|$G?%VihEKsN46MY(nfV-9)3-wpUuab^?cZSa%7gU-~JKET75mhhFG)k-j5-DWm|uY^J%<81XF?5&R#|y_(|`gw=>#LIg$%jI>HuAWz&WQGiNN6;X-G7D_BD2WL~nfK@O==tV153{#$>7wV~E!`r%wxAE3SKy zkFyiZKijwla_W9BVb4uQ4B)>J%?ENU+9HeyqQQCueJ(P8guw{L8pUBxq;Umpu4|Jp zuD4$%_+1I(8u({`DGsb_<~UyO{}Ih038UWgfCqzy%XDHa0=^aSe;n#-+=u=3d)CP2 zd$r+)2Yc=tFb0kxzNz;VK0UVv_h=yguLBL8StMbNpUZlk*Ae66y(ZY(S=S?$El9>* zug+KaG}im|kNW}zcZ2Rl#PIa&X{)sto;wx1i0RKW>`hc&^mj|W-q?aZ zzaMM-17Bve7h2-ZTY>)}*7|zH8#}(vpl4K1&b9PDpYbeWi`!afC#`Fn&F*fk@Z5HA zc9IP`A`Y=buZUw--X5Ai&!bI;&?eGn8`?Dn?P|3~2X&jvBF^J1v4d{Zu7l7miD`=t z`Vw&~uxSH!-iv*Q+K$e&)D8xkpGjNLyIv5J zf1+)9bUlb@e}R-@vF>7|$MBphwTqs=kI=k%R@M;Qo6|X%3;Y&~x4IrF!#VqV*G7&V zkA8P*ti=;~dHUHW>3txcyf%E3@O|+-%5dK3)NCzh9}{I7{3w+@hcX|Y->$(usM{Ru zGRdQOu^#0IVp$8WUu+@1AAwGf5;C@g8up|XaJ+#IQQtwHb%rRy2FFHdJMWu zg?(>Dc?Qlzv$R&9~nk-VdDF7E#aofBmwCkFXMmazUM$itp? zi|6X-w6k=U348LG3-2IuLN~RZR@^u5{{`;TiyD)L8?W++p2kBmXo-*ZiTU86Yv4r3 z0u!fWUpwtn*qGi;$LoH8ZN$z0V%@?X^0%<#cWFP_(SdrXK88Iiotsmg)4!wrh@b0< zb6Dn_7~~%<`N;>-m^IJNP5(h>dg9#Gl9B|!{RR41obhS6f8CmreCH2#TEO=j+Oe$< z?v=nk7GrH-qhr(#f;YgvcWbsS|AGEEYmG?x8T#Y^`m7B2ZCb?o80=a~_e{U|@1j)U(St@}T@fq6eEMGUe7 zv_Hfg3*fo|jrl+zqA3uF#5WpokfmuV>`&LBFJ!PSfg3SjCR&?58p+!KzKFG)TS9bE zO&>netLc3_XWBXuU#rCk1Y&@XZ3_H1YiWSZyzKIC$?n2$z0A+<=$fg4ve2~)7QOBhEFQQ;dUDS1iLb`24*&$}`}? zSHf;b==}$eaG6={Xj|S-kq_x0pJ%{3X>|0NN&ldvZ$(PiUOvV+@`9K6O`3bUk#kIr z$3rxxy`gu{YzHk}ixA`QcTMkEt=I!-{P_zSho`82shwzJ5x1MTeoSNV;@<;%3c*in zoF2)J(z~Qi!v^%;q4!}^^PNLyV{!h>^+O+n-izxpB#+|Y(SUt8J0iFdd0oC|XbbXY zKhgM7-{ZvJHKf>NA!wF0yv{9%(L& zt|uQkH#%y=N3+;f_t&o1-BAO2@6-mYclY-se4!0kbPDgJy<$yEp?B7d$65b@1e}lJ znn4tM>EsB)I=2Ww8oaOms-Bhnxr&-rv^z$j$kM_+`4JS@M16#Z}O4Rc#aCm1` zKNsw6hpmetv+k~gkLXuiuP0w|zK(Iw+k^L8vA)|AaLsa28e*|i(1!GR06rj6+V*|e zwh6W+dp-r3^qiAvBW@pCnt>PTaQk$&jj1QuWIW<0vdIP5=4a9-KZ8w7*>v3~Qnuj_ zXoHF8_wb_)7U*L`J6fTS4t*Yug^#?;`v^mOEUaim1$2l(U(>sWUctTNxUX?z0%-ib zaCZ5mCt(ZZ+wZjGE07Z58q*rJKr%OOe43Y1O!q)|Qr){2*2rAF~o-9=~Z- zX|)@_gY-R6jW1bMTH`7!cMG5crHy{D0i}62GJGkD=KfV7^l}%Zy_YNR`LW0ccbYf)8s3<4L<`GXjAc(65V-u>9fc4fY3Bjt_McrMyd!QkM`co5f(0YJ#1$HcFT;U8J5(B4rCj z+92T*IN+eqUI{x_3)m~+s?h>IY|>vRV6b%fR7`YnSlVYng)m8ptHz~Q<7c_5D@sdd zQjZnlSFZ3AXElXYmE~o{Tg-lweDg4FN=x*bN}c}}nl63|O?TDc2g-^tY}_FkWQmZF zMWv{rT+eV-xr%6bl$E-wN02a<8kr{d=Z489^kWi(Szf)n%odN_Et1&hX;O+KL*%8lIjs>4rh5 z`5pd7a~knC=&zuE33n^H)L$AWgm;yc=(91%=a_ycR8)cv4^yIJ?k)o2%9LLMtrPVsRPrVPJy7phm^Pz$iARCkqEL8sacrPXD{!ErG`{N5?YR z-}zlB+&ZSwOx-?y{)arH4wktSO#BZ(l3CQnTgIV)$_ODXBju}UccQ1<%(e#{FYw{OkM1% zb(eCYau;kL6iIZ|r5h?Yh2({=Ul7x>LNd2-aUtC$pFlvUv?s<~Wo?aKxkktD6;@)= zLZ_9$`&CxR27K50ls0T|Z7$nTyFtg$DZ;>pY_mab8t>JmuHtpU28EXoQdc>MOSY&s z#dN0W#V~hy$|ovvQqD550HYZjHlVLL3I3S9!Pu(O3i^r9lJCi)RV8I^6(Qw(%Y3KR zyyJYwTF)J8$gh^@MAe;N;&`D)2dBjGQXf-esgLPL!mNi~^^ttapu;ao()h&0Hk%wA zc@>qxE}|Y%hpC(L7L4aPPQ(Cb6Uav9AdtsqKu7^TH>-dX zN(5&|UdTti6`16lZ$9T5CBi3jy!?y(OWvuQPDXvBCZ%rHDIK{Pf02$)74?muJcTm6 zoYH9}I+dqLMf6eQC#SiAA3tI8G@kN=;28js@`Q~_E#ZxZ{JF$G3TPCgeDYK-pZ)?N z>M>JJ0xHDS7@3q}&{4wp;6f?}4@Z5+KjGq?YGsebhd8!O6y=ZS0URIhz~szFZ++8n z4h;&P`>wN~Gh63Lk)M^foEn&slUqP3*Mpb{z-M`mJ(qxy8Tch+VOowi#}^0i2Yh*z z<-uW0usPH?2@Owkq$}bX$1meUSja6ctsbwy!Fi+eVwQs+;4L3NKQsk8H82DU`lTd~ zlMDD?_h02}t7&NC4}QTn=)e9wIh&?*loDJA|AqNR`cxNomh^AvgC6OoVZuzIaey<1 zNi#N^%Uh_Q>Ffd6U_VP(j2H9*VB#{z3Bg1!_hh`Bf-c@ac?j%L9)xLwCh5%pVGJfX zuIUN-CHb76)TkHt(sd#F< z4vJA}($5eKgz!VU@IxF%rY7eji$T z7}QOloCUdy3YXBXHqNZebc{?V$#jNHZ8FW4=~9`VxkvDylj&ud zM$7VlyRB27{AYxR>sPgjKpgrhR2ftvi7t
r=N@;!?|fH^N(zAZAIy3 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