4993ff706be05094f369d5106c9813b459f19a4a
[kernel/swap-modules.git] / driver / swap_driver.sh
1 #!/bin/sh
2
3
4 # name of the file with module
5 MODULE_FILE=swap_driver
6
7 # device name
8 DEVICE=__DEV_NAME__
9 DEVICE_MAJOR=__DEV_MAJOR__
10
11 # name of device visible in /proc/devices
12 DEVICE_NAME=${DEVICE}
13
14 # name of the device
15 DEVICE_FILE=__DEV_DIR__/${DEVICE}
16
17 KSYMS=kallsyms_lookup_name
18
19 # ADDRESS for "kallsyms_lookup_name" function taken from /proc/kallsyms
20 ADDRESS=0x`sed "/ kallsyms_lookup_name/ ! d" /proc/kallsyms | sed "s/ T kallsyms_lookup_name//"`
21
22 if [ "${ADDRESS}" = "0x" ]; then
23     if [ "$1" = "" ]; then
24         echo "Enter kallsyms_lookup_name as parameter:"
25         echo "insmod.sh <kallsyms_lookup_name address>"
26         exit
27     else
28         ADDRESS=$1
29         echo "kallsyms_lookup_name address is ${ADDRESS}"
30     fi
31 fi
32
33 MAJOR=`sed "/${DEVICE_NAME}/ ! d" /proc/devices | sed "s/ ${DEVICE_NAME}//"`
34 if [ "${MAJOR}" != "" ] ; then
35     echo "SWAP Driver is already loaded!"
36     exit 1
37     rmmod ${MODULE_FILE}
38     MAJOR=`sed "/${DEVICE_NAME}/ ! d" /proc/devices | sed "s/ ${DEVICE_NAME}//"`
39     if [ "${MAJOR}" != "" ] ; then
40         echo "Error: Unable to unload driver module '${MODULE_FILE}'"
41         exit 1
42     fi
43 fi
44
45 if [ ! -c ${DEVICE_FILE} ] ; then
46         echo "WARNING: Creating device node with major number [${DEVICE_MAJOR}]!"
47         mknod ${DEVICE_FILE} c ${DEVICE_MAJOR} 0
48         if [ $? -ne 0 ]; then
49             echo "Error: Unable to create device node!"
50             exit 1
51         fi
52         chmod a+r ${DEVICE_FILE}
53 else
54         # stat is better, but DTV doesn't have stat
55         DEVICE_MAJOR=`ls -l ${DEVICE_FILE} | awk '{sub(/,/,"",$5); print $5}'`
56 fi
57
58 # load driver module
59 echo "loading module '${MODULE_FILE}'"
60 ./bin/insmod.sh ${MODULE_FILE}.ko device_name=${DEVICE_NAME} device_major=${DEVICE_MAJOR}
61 if [ $? -ne 0 ]; then
62     echo "Error: Unable to load Swap Driver!"
63     exit 1
64 fi
65 MAJOR=`sed "/${DEVICE_NAME}/ ! d" /proc/devices | sed "s/ ${DEVICE_NAME}//"`
66