add 'swap_ksyms' module
[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 MAJOR=`sed "/${DEVICE_NAME}/ ! d" /proc/devices | sed "s/ ${DEVICE_NAME}//"`
18 if [ "${MAJOR}" != "" ] ; then
19     echo "SWAP Driver is already loaded!"
20     exit 1
21     rmmod ${MODULE_FILE}
22     MAJOR=`sed "/${DEVICE_NAME}/ ! d" /proc/devices | sed "s/ ${DEVICE_NAME}//"`
23     if [ "${MAJOR}" != "" ] ; then
24         echo "Error: Unable to unload driver module '${MODULE_FILE}'"
25         exit 1
26     fi
27 fi
28
29 if [ ! -c ${DEVICE_FILE} ] ; then
30         echo "WARNING: Creating device node with major number [${DEVICE_MAJOR}]!"
31         mknod ${DEVICE_FILE} c ${DEVICE_MAJOR} 0
32         if [ $? -ne 0 ]; then
33             echo "Error: Unable to create device node!"
34             exit 1
35         fi
36         chmod a+r ${DEVICE_FILE}
37 else
38         # stat is better, but DTV doesn't have stat
39         DEVICE_MAJOR=`ls -l ${DEVICE_FILE} | awk '{sub(/,/,"",$5); print $5}'`
40 fi
41
42 # load driver module
43 echo "loading module '${MODULE_FILE}'"
44 ./bin/insmod.sh ${MODULE_FILE}.ko device_name=${DEVICE_NAME} device_major=${DEVICE_MAJOR}
45 if [ $? -ne 0 ]; then
46     echo "Error: Unable to load Swap Driver!"
47     exit 1
48 fi
49 MAJOR=`sed "/${DEVICE_NAME}/ ! d" /proc/devices | sed "s/ ${DEVICE_NAME}//"`
50