Condição de corrida possível ao criar um script de evento de plug-in de fone de ouvido

2

Atualmente, estou tentando criar um script do evento plug-in / out de fone de ouvido. Descobri que posso criar scripts facilmente, como um evento acpi .

Eu criei um arquivo em /etc/acpi/events/ com o evento event=jack[ /]headphone , que apenas chama meu script.

Eu também determinei o arquivo e a linha exata, que contém informações sobre se os fones de ouvido estão conectados ou não. No arquivo /proc/asound/card0/codec#0 um específico Pin-ctls: é 0x00 se conectado e 0x40: OUT se desconectado.

Agora, o problema que vejo aqui é quando eu verifico o status atual do fone de ouvido, assim que o evento acpi é acionado, o arquivo codec#0 já contém o valor atual? Posso ter uma condição de corrida aqui? Ou é seguro usar assim?

    
por boolean.is.null 09.12.2015 / 15:12

1 resposta

0

Descobri que o problema pode ser facilmente contornado, verificando o evento plug / unplug específico no conector. A solução abaixo fornecerá ao script as informações sobre os eventos de entrada específicos, que silenciarão o som quando o conector for desconectado.

/etc/acpi/events/jack :

event=jack[ /]headphone
action=/etc/acpi/actions/jack.sh "%e"

/etc/acpi/actions/jack.sh :

#!/bin/bash

event=$(echo "$1" | cut -d " " -f 3)

case "$event" in
    plug)
        ;;
    unplug)
    amixer set Master mute
        ;;
    *)  
        #null
esac
    
por 20.01.2016 / 16:37