#!/bin/bash
function doKill {
    if [ $(lsof -l /dev/ilid | wc -l) -gt 0 ];then
        PROCESSES=$(lsof -F p /dev/ilid | sed "s/^p//")
        echo "process ids are ${PROCESSES}"
        PROCESSESGROUPS=$(ps -o pgrp= -p ${PROCESSES} | sort -u)
        echo "process groups are ${PROCESSESGROUPS}"

        if [ -n "${PROCESSESGROUPS}" ]; then
            for GROUP in ${PROCESSESGROUPS}; do
                echo $(pgrep -lg ${GROUP})
                echo "kill process group ${GROUP} with $1"
                pkill -${1} -g ${GROUP}
            done
        fi

        if [ -n "${PROCESSES}" ]; then
            for PROCESS in ${PROCESSES}; do
                if ps --pid ${PROCESS} &>/dev/null; then
                    echo $(ps -o command= -p ${PROCESS})
                    echo "kill process ${PROCESS} with $1"
                    pkill -${1} ${PROCESS}
                fi
            done
        fi
        sleep 5
    fi
}

if [ -e /dev/ilid ]; then
    . /tmp/cmdline

    #if [ "$HWTYPE" = "AtomBox" ]; then
        if [ ! -f /tmp/noled ] ;then echo "led 0 1830000" | tee /tmp/led | /usr/bin/confTool /dev/ilid 0.a/X >/dev/null 2>&1; fi
    #fi

    # kill all processes currently accessing ILID device
    if [ -e /dev/ilid ]; then
        echo "stop following processes still using ilid"
        lsof /dev/ilid
        doKill SIGTERM
        doKill SIGHUP
        doKill SIGINT
        doKill SIGKILL
    fi

    for i in ilidloop hfc_4s8s tdmdsp falc56 tdm_dma tdmilid ilidmdm ilid26 tdm_spi tdm_i2c tdm_xbar tdmFpga cfgspc pci2slot; do

            if  lsmod | grep -q ${i} ; then
                    if ! rmmod ${i} ; then
                            echo "please reboot to solve this issue!"
                            exit 1
                    fi
            fi
    done
fi
exit 0
