From: Subrata M. <su...@li...> - 2008-10-17 12:57:39
|
On Fri, 2008-10-17 at 14:50 +0530, Nageswara R Sastry wrote: > The Power Management basic testcases are aimed at the user level testing > of the features like cpufrequency and sched_mc. More details are at README > > Signed-Off-By: Nageswara R Sastry <rns...@li...> Thanks Sastri for this contribution. I will test out and let you know soon. Regards-- Subrata > > Thanks and Regards > R.Nageswara Sastry > plain text document attachment (ltp_pwmng_testcases.patch) > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/change_freq.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/change_freq.sh > --- ltp-full-20080930/testcases/kernel/pwmng/change_freq.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/change_freq.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,33 @@ > +#!/bin/bash > + > +. pm_include.sh > +available_freq=$(get_supporting_freq) > +RC=0 > + > +total_cpus=$(no_of_cpus) > +(( total_cpus-=1 )) > + > +for cpu in $(seq 0 "${total_cpus}" ) > +do > + echo userspace > /sys/devices/system/cpu/cpu${cpu}/cpufreq/scaling_governor > + if [ $? -ne 0 ] ; then > + RC=1 > + fi > +done > +if [ ${RC} -ne 1 ] ; then > + for cpu in $(seq 0 "${total_cpus}" ) > + do > + for freq in ${available_freq} > + do > + echo ${freq} > /sys/devices/system/cpu/cpu${cpu}/cpufreq/scaling_setspeed > + if [ "$?" -ne "0" ] ; then > + echo "${0}: FAIL: Unable to set frequency -- ${freq} for cpu${cpu}" > + RC=1 > + fi > + done > + done > +fi > +if [ ${RC} -eq 0 ] ; then > + echo "${0}: PASS: Changing cpu frequencies" > +fi > +#return $RC > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/change_govr.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/change_govr.sh > --- ltp-full-20080930/testcases/kernel/pwmng/change_govr.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/change_govr.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,24 @@ > +#!/bin/bash > + > +. pm_include.sh > +available_govr=$(get_supporting_govr) > + > +total_cpus=$(no_of_cpus) > +(( total_cpus-=1 )) > +RC=0 > + > +for cpu in $(seq 0 "${total_cpus}" ) > +do > + for govr in ${available_govr} > + do > + echo ${govr} > /sys/devices/system/cpu/cpu${cpu}/cpufreq/scaling_governor > + if [ "$?" -ne "0" ] ; then > + echo "${0}: FAIL: Unable to set governor -- ${govr} for cpu${cpu}" > + RC=1 > + fi > + done > +done > +if [ ${RC} -eq 0 ] ; then > + echo "${0}: PASS: Changing cpu governors" > +fi > +#return $RC > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/check_config.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/check_config.sh > --- ltp-full-20080930/testcases/kernel/pwmng/check_config.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/check_config.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,32 @@ > +#!/bin/bash > + > +. pm_include.sh > + > +if [ $# -lt 1 ] ; then > + echo "Usage: ${0} <filename>" > + RC=1 > + return ${RC} > +fi > +filename=${1} > + > +RC=0 > +grep_command=grep > +config_file=/boot/config-$(uname -r) > +if [ ! -f ${config_file} ]; then > + echo "MISSING_FILE: can't find the required config file at /boot/config-$(uname -r)" > + echo "Trying for alternate file at /proc/config.gz" > + config_file=/proc/config.gz > +fi > +if [ ! -f ${config_file} ]; then > + echo "MISSING_FILE: can't find the required config file at /proc/config.gz" > + RC=1 > +fi > +if [ "${config_file}" = "/proc/config.gz" ] ; then > + grep_command=zgrep > +fi > + > +while read config_option > +do > + check_config_options "${config_option}=*" ${config_file} ${grep_command} > +done < ${filename} > +#return ${RC} > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/check_cpufreq_sysfs_files.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/check_cpufreq_sysfs_files.sh > --- ltp-full-20080930/testcases/kernel/pwmng/check_cpufreq_sysfs_files.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/check_cpufreq_sysfs_files.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,24 @@ > +#!/bin/bash > + > +. pm_include.sh > + > +total_cpus=$(no_of_cpus) > +(( total_cpus-=1 )) > +RC=0 > + > +for cpu in $(seq 0 "${total_cpus}" ) > +do > + cpufiles=$(find /sys/devices/system/cpu/cpu"${cpu}"/cpufreq/ -name "*" -type f) > + for files in ${cpufiles} > + do > + cat ${files} 2>&1 >/dev/null > + if [ $? -ne 0 ] ; then > + echo "${0}: FAIL: cat ${files}" > + RC=1 > + fi > + done > +done > +if [ ${RC} -eq 0 ] ; then > + echo "${0}: PASS: Checking cpu freq sysfs files" > +fi > +#return $RC > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/check_kv_arch.c ltp-full-20080930.pwmng/testcases/kernel/pwmng/check_kv_arch.c > --- ltp-full-20080930/testcases/kernel/pwmng/check_kv_arch.c 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/check_kv_arch.c 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,41 @@ > +/************************************************************************ > +* Copyright (c) International Business Machines Corp., 2008 > +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > +* > +***************************************************************************/ > +#include <stdio.h> > +#include <test.h> > + > +int kernel_is_too_old(void) { > + if (tst_kvercmp(2,6,21) < 0) > + return 1; > + return 0; > +} > + > +/* > + * yeah, to make the makefile coding easier, do_check returns > + * 1 if unshare is not supported, 0 if it is > + */ > +#ifdef __i386__ > +int do_check(void) { return kernel_is_too_old(); } > +#elif __x86_64__ > +int do_check(void) { return kernel_is_too_old(); } > +#else > +int do_check(void) { return 1; } > +#endif > + > +int main() { > + return do_check(); > +} > + > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/config_cpu_freq ltp-full-20080930.pwmng/testcases/kernel/pwmng/config_cpu_freq > --- ltp-full-20080930/testcases/kernel/pwmng/config_cpu_freq 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/config_cpu_freq 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,7 @@ > +CONFIG_CPU_FREQ > +CONFIG_CPU_FREQ_TABLE > +CONFIG_CPU_FREQ_DEBUG > +CONFIG_CPU_FREQ_STAT > +CONFIG_CPU_FREQ_STAT_DETAILS > +CONFIG_CPU_FREQ_DEFAULT_GOV_* > +CONFIG_CPU_FREQ_GOV_* > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/config_cpu_idle ltp-full-20080930.pwmng/testcases/kernel/pwmng/config_cpu_idle > --- ltp-full-20080930/testcases/kernel/pwmng/config_cpu_idle 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/config_cpu_idle 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,3 @@ > +CONFIG_CPU_IDLE > +CONFIG_CPU_IDLE_GOV_LADDER > +CONFIG_CPU_IDLE_GOV_MENU > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/config_sched_mc ltp-full-20080930.pwmng/testcases/kernel/pwmng/config_sched_mc > --- ltp-full-20080930/testcases/kernel/pwmng/config_sched_mc 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/config_sched_mc 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1 @@ > +CONFIG_SCHED_MC > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/Makefile ltp-full-20080930.pwmng/testcases/kernel/pwmng/Makefile > --- ltp-full-20080930/testcases/kernel/pwmng/Makefile 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/Makefile 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,42 @@ > +################################################################################ > +## ## > +## Copyright (c) International Business Machines Corp., 2008 ## > +## ## > +## 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## > +## ## > +################################################################################ > + > +all: > + @set -e; $(MAKE) check_kv_arch ; > + > +check_kv_arch: check_kv_arch.c > + $(CC) -o $@ $< ../../../lib/tst_kvercmp.c -I../../../include > + > +install: > + @set -e; ln -f check_kv_arch ../../bin/check_kv_arch; \ > + ln -f change_freq.sh ../../bin/change_freq.sh; \ > + ln -f change_govr.sh ../../bin/change_govr.sh; \ > + ln -f check_cpufreq_sysfs_files.sh ../../bin/check_cpufreq_sysfs_files.sh; \ > + ln -f check_config.sh ../../bin/check_config.sh; \ > + ln -f pwkm_load_unload.sh ../../bin/pwkm_load_unload.sh; \ > + ln -f pm_include.sh ../../bin/pm_include.sh; \ > + ln -f runpwtests.sh ../../bin/runpwtests.sh; \ > + ln -f test_sched_mc.sh ../../bin/test_sched_mc.sh; \ > + ln -f config_cpu_freq ../../bin/config_cpu_freq; \ > + ln -f config_cpu_idle ../../bin/config_cpu_idle; \ > + ln -f config_sched_mc ../../bin/config_sched_mc; > +clean: > + rm -f check_kv_arch > + > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/pm_include.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/pm_include.sh > --- ltp-full-20080930/testcases/kernel/pwmng/pm_include.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/pm_include.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,63 @@ > +#!/bin/bash > + > +TMPDIR=/tmp > + > +PASS=0 > +FAIL=1 > +NOSUPPORT=2 > +MISSING_FILE=3 > +UNTESTED=4 > + > +function cleanup() { > + if [ -f ${1} ] ; then > + rm -f ${1} > + fi > +} > +function check_config_options() { > + if ( ! ${3} "${1}" ${2} | grep -v "#" > /dev/null ) ; then > + echo "NOSUPPORT: current system dosen't support ${1}" > + fi > +} > +function no_of_cpus() { > + echo $(cat /proc/cpuinfo | grep processor | wc -l) > +} > +function get_topology() { > + declare -a cpus > + declare -a phyid > + > + total_cpus=$(no_of_cpus) > + (( total_cpus-=1 )) > + for cpu in $(seq 0 "${total_cpus}" ) > + do > + cpus[$cpu]=cpu${cpu} > + phyid[$cpu]=$(cat /sys/devices/system/cpu/cpu${cpu}/topology/physical_package_id) > + done > + j=0 > + while [ "${j}" -lt "${total_cpus}" ] > + do > + (( k = $j + 1 )) > + if [ ${phyid[$j]} -eq ${phyid[$k]} ] ; then > + echo "${cpus[$j]} -P ${cpus[$k]}" | sed -e "s/cpu//g" > + fi > + (( j+=1 )) > + done > +} > +function check_cpufreq() { > + total_cpus=$(no_of_cpus) > + (( total_cpus-=1 )) > + > + for cpu in $(seq 0 "${total_cpus}" ) > + do > + if [ ! -d /sys/devices/system/cpu/cpu${cpu}/cpufreq ] ; then > + echo "NOSUPPORT: cpufreq support not found please check Kernel configuration or BIOS settings" > + exit $NOSUPPORT > + fi > + done > +} > +function get_supporting_freq() { > + cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies | uniq > +} > +function get_supporting_govr() { > + cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors | uniq > +} > + > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/pwkm_load_unload.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/pwkm_load_unload.sh > --- ltp-full-20080930/testcases/kernel/pwmng/pwkm_load_unload.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/pwkm_load_unload.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,19 @@ > +#!/bin/bash > + > +#Loading modules > +for module in cpufreq_conservative cpufreq_powersave cpufreq_userspace > +do > + #echo -n "Loading $module ... " > + modprobe $module >/dev/null > + if [ $? -ne 0 ] ; then > + echo "${0}: FAIL: Loading of module $module or check whether you compiled as module or not" > + fi > +done > +for module in cpufreq_conservative cpufreq_powersave cpufreq_userspace > +do > + #echo -n "Unloading $module ... " > + modprobe -r $module >/dev/null > + if [ $? -ne 0 ] ; then > + echo "${0}: FAIL: Loading of module $module or check whether you compiled as module or not" > + fi > +done > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/README ltp-full-20080930.pwmng/testcases/kernel/pwmng/README > --- ltp-full-20080930/testcases/kernel/pwmng/README 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/README 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,67 @@ > +################################################################################ > +## ## > +## Copyright (c) International Business Machines Corp., 2007 ## > +## ## > +## 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## > +## ## > +################################################################################ > + > +POWER MANAGEMENT TESTS AUTOMATION SUITE > +---------------------------------------- > +The tests requires the Kernel to be compiled with the following config's > + > +for CPU FREQUENCY tests: > + > +CONFIG_CPU_FREQ > +CONFIG_CPU_FREQ_TABLE > +CONFIG_CPU_FREQ_DEBUG > +CONFIG_CPU_FREQ_STAT > +CONFIG_CPU_FREQ_STAT_DETAILS > +CONFIG_CPU_FREQ_DEFAULT_GOV_* > +CONFIG_CPU_FREQ_GOV_* > + > +for CPU IDLE tests: > + > +CONFIG_CPU_IDLE > +CONFIG_CPU_IDLE_GOV_LADDER > +CONFIG_CPU_IDLE_GOV_MENU > + > +for SCHED_MC tests: > + > +CONFIG_SCHED_MC > + > +The power management test automation suite helps run the power management functionality > +(e.g: cpu frequency, cpu idle etc..) tests and report results. > + > +Test Scripts for CPU FREQUENCY: > +change_freq.sh > +change_govr.sh > +check_cpufreq_sysfs_files.sh > + > +Test Scripts for CPU IDLE: > +will be added soon > + > +Test Scripts for SCHED_MC: > +test_sched_mc.sh > + > +Common functionality: > +pm_include.sh > +check_kv_arch.c > +pwkm_load_unload.sh > + > +To run your tests you can execute the runpwtests.sh > + > +To run the tests individually : > + > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/runpwtests.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/runpwtests.sh > --- ltp-full-20080930/testcases/kernel/pwmng/runpwtests.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/runpwtests.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,97 @@ > +################################################################################ > +## ## > +## Copyright (c) International Business Machines Corp., 2001 ## > +## ## > +## 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## > +## ## > +################################################################################ > +# > +# File : test_powermanagement.sh > +# > +# Description: > +# > +# Author: Nageswara R Sastry <nas...@in...> > +# > +# History: 26 Aug 2008 - Created this file > +# > +#! /bin/sh > + > +# Exporting Required variables > + > +export TST_TOTAL=1 > +LTPTMP=${TMP} > +LTPROOT=../../bin > +export PATH=${PATH}:. > +export TCID="Power Management" > +export TST_COUNT=0 > + > +# Function: main > +# > +# Description: - Execute all tests, exit with test status. > +# > +# Exit: - zero on success > +# - non-zero on failure. > +# > +RC=0 #Return status > + > +# Checking required kernel version and architecture > +check_kv_arch || RC=$? > +if [ $RC -eq 1 ] ; then > + tst_resm TFAIL "Kernel version or Architecture not supported: Not running testcases" > + #exit 0 > +fi > + > +# Checking sched_mc sysfs interface > +check_config.sh config_sched_mc || RC=$? > +if [ $RC -ne 0 ] ; then > + tst_resm TFAIL "Required kernel configuration for SCHED_MC NOT set" > + #exit 0 > +else > + test_sched_mc.sh || RC=$? > + if [ $RC -eq 1 ] ; then > + tst_resm TFAIL "SCHED_MC sysfs tests failed" > + fi > +fi > + > +# Checking cpufreq sysfs interface files > +check_config.sh config_cpu_freq || RC=$? > +if [ $RC -ne 0 ] ; then > + tst_resm TFAIL "Required kernel configuration for CPU_FREQ NOT set" > + #exit 0 > +else > + check_cpufreq_sysfs_files.sh || RC=$? > + if [ $RC -eq 1 ] ; then > + tst_resm TFAIL "CPUFREQ sysfs tests failed" > + fi > + > + # Changing governors > + change_govr.sh || RC=$? > + if [ $RC -eq 1 ] ; then > + tst_resm TFAIL "Changing governors failed" > + fi > + > + # Changing frequencies > + change_freq.sh || RC=$? > + if [ $RC -eq 1 ] ; then > + tst_resm TFAIL "Changing frequncies failed" > + fi > + > + # Loading and Unloading governor related kernel modules > + pwkm_load_unload.sh || RC=$? > + if [ $RC -eq 1 ] ; then > + tst_resm TFAIL "Loading and Unloading of governor kernel modules got failed" > + fi > +fi > + > diff -uprN ltp-full-20080930/testcases/kernel/pwmng/test_sched_mc.sh ltp-full-20080930.pwmng/testcases/kernel/pwmng/test_sched_mc.sh > --- ltp-full-20080930/testcases/kernel/pwmng/test_sched_mc.sh 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20080930.pwmng/testcases/kernel/pwmng/test_sched_mc.sh 2008-10-07 15:06:04.000000000 +0530 > @@ -0,0 +1,45 @@ > +#!/bin/bash > + > +. pm_include.sh > + > +valid_input="0 1" > +invalid_input="a 2 abcefg x1999 xffff -1 -00000 200000000000000000000000000000000000000000000000000000000000000000000000000000 ox324 -0xfffffffffffffffffffff" > +test_file="/sys/devices/system/cpu/sched_mc_power_savings" > +if [ ! -f ${test_file} ] ; then > + echo "MISSING_FILE: missing file ${test_file}" > + exit $MISSING_FILE > +fi > + > +function check_input() { > + validity_check=${2:-valid} > + if [ "${validity_check}" = "invalid" ] ; then > + PASS="Testcase FAIL - Able to execute" > + FAIL="Testcase PASS - Unable to execute" > + else > + PASS="Testcase PASS" > + FAIL="Testcase FAIL" > + fi > + for input in ${1} > + do > + echo ${input} > ${test_file} 2>/dev/null > + return_value=$? > + output=$(cat ${test_file}) > + if [ "${return_value}" = "0" -a "${input}" = "${output}" ] ; then > + echo "${0}: ${PASS}: echo ${input} > ${test_file}" > + if [ "${validity_check}" = "invalid" ] ; then > + RC=1 > + fi > + else > + echo "${0}: ${FAIL}: echo ${input} > ${test_file}" > + if [ "${validity_check}" = "valid" ] ; then > + RC=1 > + fi > + fi > + done > +} > +RC=0 > +echo "${0}: ---Valid test cases---" > +check_input "${valid_input}" > +echo "${0}: ---Invalid test cases---" > +check_input "${invalid_input}" invalid > +#return $RC > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ Ltp-list mailing list Ltp...@li... https://lists.sourceforge.net/lists/listinfo/ltp-list |