#!/bin/bash # # rtirq_power: save and restore irq process priorities # # This script is called when a change in power status happens, when # suspending it saves a list of all irq process priorities, when # resuming it changes the priorities of the proper irq processes # to the saved values # # Copyright (c) 2012 Fernando Lopez-Lezcano # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. . "${PM_FUNCTIONS}" case $1 in hibernate|suspend) /bin/ps -eo rtprio=,comm= --sort -rtprio | /bin/egrep ' irq/[0-9]*' | savestate rtirq ;; thaw|resume) restorestate rtirq | while read IRQPRIO IRQCOMM ; do if [ -n "${IRQPRIO}" -a -n "${IRQCOMM}" ] ; then IRQPID=`/bin/ps -e -o pid,comm | grep " ${IRQCOMM}" | awk '{print $1}'` if [ -n "${IRQPID}" ] ; then PRIO=`/bin/ps -p ${IRQPID} -o rtprio=` if [ ${PRIO} -ne ${IRQPRIO} ] ; then /usr/bin/chrt -f -p ${IRQPRIO} ${IRQPID} fi fi fi done ;; *) exit $NA ;; esac