| #!/bin/bash |
| |
| |
| ############################################################## |
| # |
| # Copyright (c) International Business Machines Corp., 2003 |
| # |
| # 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 : sysfs.sh |
| # USAGE : sysfs.sh [ -k <kernel_module> ] |
| # |
| # DESCRIPTION : A script that will test sysfs on Linux system. |
| # REQUIREMENTS: CONFIG_DUMMY must have been used to build kernel, and the |
| # dummy network module must exist. |
| # |
| # HISTORY : |
| # 06/24/2003 Prakash Narayana (prakashn@us.ibm.com) |
| # |
| # CODE COVERAGE: 31.3% - fs/sysfs (Total Coverage) |
| # |
| # 0.0% - fs/sysfs/bin.c |
| # 61.8% - fs/sysfs/dir.c |
| # 27.5% - fs/sysfs/file.c |
| # 40.4% - fs/sysfs/inode.c |
| # 41.2% - fs/sysfs/mount.c |
| # 58.1% - fs/sysfs/symlink.c |
| # |
| ############################################################## |
| |
| |
| MNT_POINT="/tmp/sysfs_$$" |
| |
| KERNEL_NAME=`uname -a | awk ' { print $3 } '` |
| KERN_MODULE=/lib/modules/$KERNEL_NAME/kernel/drivers/net/dummy.ko |
| USAGE="$0 [ -k <kernel_module> ]" |
| |
| |
| ############################################################## |
| # |
| # Make sure that uid=root is running this script. |
| # Validate the command line arguments. |
| # |
| ############################################################## |
| |
| if [ $UID != 0 ] |
| then |
| echo "FAILED: Must have root access to execute this script" |
| exit 1 |
| fi |
| |
| while getopts k: args |
| do |
| case $args in |
| k) KERN_MODULE=$OPTARG ;; |
| \?) echo $USAGE ; exit 1 ;; |
| esac |
| done |
| |
| if [ -z "$KERN_MODULE" ] |
| then |
| echo $USAGE |
| echo "FAILED: kernel module to insert not specified" |
| exit 1 |
| fi |
| |
| # Here is the code coverage for fs/sysfs |
| # insmod/rmmod net/dummy.ko creates and deletes a directory |
| # under sysfs. |
| # In kernel, 2.5.73 or higher, insert/delete base/firmware_class.ko |
| |
| mkdir -p -m 777 $MNT_POINT |
| mount -t sysfs sysfs $MNT_POINT |
| if [ $? != 0 ] |
| then |
| echo "FAILED: sysfs mount failed" |
| exit 1 |
| fi |
| |
| insmod $KERN_MODULE |
| if [ $? != 0 ] |
| then |
| umount $MNT_POINT |
| rm -rf $MNT_POINT |
| echo "FAILED: insmod failed" |
| exit 1 |
| fi |
| |
| rmmod $KERN_MODULE |
| if [ $? != 0 ] |
| then |
| umount $MNT_POINT |
| rm -rf $MNT_POINT |
| echo "FAILED: rmmod failed" |
| exit 1 |
| fi |
| |
| |
| ####################################################### |
| # |
| # Just before exit, perform the cleanup. |
| # |
| ####################################################### |
| |
| umount $MNT_POINT |
| rm -rf $MNT_POINT |
| |
| echo "PASSED: $0 passed!" |
| exit 0 |