--- rtirq-20090626/rtirq.sh 2009-06-25 23:52:29.000000000 +0100 +++ rtirq-20090807/rtirq.sh 2009-08-07 17:42:51.000000000 +0100 @@ -116,8 +116,16 @@ function rtirq_exec_num () fi # And now do the proper threading prioritization... if [ -z "`echo ${RTIRQ_TRAIL} | grep :${IRQ}:`" ] - then - PIDS=`ps -eo pid,comm | egrep "IRQ.${IRQ}\$" | awk '{print $1}'` + then + # Special for kernel-rt >= 2.6.31, where one can + # prioritize shared IRQs by device driver (NAME2)... + PIDS=`ps -eo pid,comm | egrep "irq/${IRQ}-${NAME2:0:8}\$" | awk '{print $1}'` + if [ -z "${PIDS}" ] + then + # Backward compability for older kernel-rt < 2.6.31... + PIDS=`ps -eo pid,comm | egrep "IRQ.${IRQ}\$" | awk '{print $1}'` + RTIRQ_TRAIL=":${IRQ}${RTIRQ_TRAIL}" + fi for PID in ${PIDS} do PREPEND="Setting IRQ priorities: ${ACTION} [${NAME2}] irq=${IRQ} pid=${PID}" @@ -148,7 +156,6 @@ function rtirq_exec_num () esac PRI2=$((${PRI2} - 1)) done - RTIRQ_TRAIL=":${IRQ}${RTIRQ_TRAIL}" fi } @@ -164,7 +171,7 @@ function rtirq_exec_name () IRQS=`grep "${NAME2}" /proc/interrupts | awk -F: '{print $1}'` for IRQ in ${IRQS} do - rtirq_exec_num ${ACTION} ${NAME1} ${NAME2} ${PRI1} ${IRQ} + rtirq_exec_num ${ACTION} "${NAME1}" "${NAME2}" ${PRI1} ${IRQ} PRI1=$((${PRI1} - 1)) done } @@ -224,21 +231,22 @@ function rtirq_exec () case ${NAME} in snd) PRI1=${PRI0} - IRQS=`grep irq /proc/asound/cards | tac | sed 's/.* irq \(.*\)/\1/'` - for IRQ in ${IRQS} + grep irq /proc/asound/cards | tac | \ + sed 's/\(.*\) at .* irq \(.*\)/\2 \1/' | \ + while read IRQ NAME2 do - rtirq_exec_num ${ACTION} ${NAME} ${NAME} ${PRI1} ${IRQ} + rtirq_exec_num ${ACTION} "${NAME}" "${NAME2}" ${PRI1} ${IRQ} PRI1=$((${PRI1} - 1)) done ;; usb) - rtirq_exec_name ${ACTION} ${NAME} "ohci_hcd" ${PRI0} - rtirq_exec_name ${ACTION} ${NAME} "uhci_hcd" ${PRI0} - rtirq_exec_name ${ACTION} ${NAME} "ehci_hcd" ${PRI0} + rtirq_exec_name ${ACTION} "${NAME}" "ohci_hcd" ${PRI0} + rtirq_exec_name ${ACTION} "${NAME}" "uhci_hcd" ${PRI0} + rtirq_exec_name ${ACTION} "${NAME}" "ehci_hcd" ${PRI0} ;; *) - rtirq_exec_name ${ACTION} ${NAME} ${NAME} ${PRI0} - ;; + rtirq_exec_name ${ACTION} "${NAME}" "${NAME}" ${PRI0} + ;; esac [ ${PRI0} -gt ${DECR} ] && PRI0=$((${PRI0} - ${DECR})) done