Perguntas sobre 'interrupt'

1
resposta

Cada pacote de rede causa uma interrupção na CPU?

Embora eu saiba que muito processamento de pacotes (cálculos de CRC, manipulação de segmentação de pacotes, etc) pode ser descarregado para a NIC, então cada pacote ainda causa uma interrupção na CPU? Há alguma diferença se a NIC estiver em modo...
12.11.2014 / 15:23
2
respostas

Como detectar programaticamente quando um dispositivo gera uma interrupção? ______ qstntxt ___

Como detectar programaticamente quando um dispositivo gera uma interrupção? Isso pode acontecer quando um dispositivo é conectado ou desconectado.

E também neste caso: por exemplo: quando um dedo é segurado sobre um scanner de impressão digital, uma interrupção é levantada. Como detectar e possivelmente interceptar essa interrupção?

Eu quero escrever um aplicativo usando Gtkmm de modo que quando um evento ocorre como um CD sendo inserido ou um pendrive sendo conectado, eu pego a interrupção que esses dispositivos geram e uso para fazer algo no meu aplicativo, envolvendo esses dispositivos.

Se isso não puder ser feito em Gtkmm, posso interceptar a interrupção em um nível inferior e informar o aplicativo Gtkmm?

Eu estava verificando como o GParted se comporta. Inicialmente estava mostrando %code% e quando conectei meu pendrive, ele abriu automaticamente o aplicativo %code% . Quando chequei o GParted, o pendrive não estava presente no menu suspenso de dispositivos. Ele apareceu apenas quando eu selecionei “Refresh Devices” no menu do GParted ou Ctrl + R .

    
______ azszpr144883 ___
%bl0ck_qu0te%

Não, essa é uma atividade espaço do kernel . Felizmente, o kernel reporta o resultado de certos eventos através de interfaces acessíveis a partir da userland.

É um pouco ambíguo em sua pergunta se você deseja detectar quando um dispositivo de bloco está conectado, ou quando um sistema de arquivos é montado (embora pareça ser mais o antigo). Se o seu sistema usa automontagem (eles geralmente fazem por padrão), ele montará sistemas de arquivos de dispositivos de bloco quando eles estiverem conectados, caso contrário você terá que fazê-lo manualmente (por exemplo, com %code% ).

De qualquer forma, você deseja pesquisar / analisar / varrer uma interface baseada no nó de arquivo do kernel. Eu fiz isso antes em um aplicativo (na verdade, um C ++ GTK) que rastreia os dispositivos de bloco conectados e os sistemas de arquivos montados via %code% e %code% . Este é um método simples e independente de linguagem. Algumas pessoas acham isso um pouco desagradável no início porque envolve a leitura de arquivos / diretórios, mas essas interfaces não existem no disco, portanto não há sobrecarga de E / S pesada e lembre-se: %code% é uma chamada do sistema. A leitura dos nós de arquivos nas interfaces do kernel equivale à mesma coisa que uma API de %code% style, exceto, novamente, que é independente de idioma. Quando você vai ler esses nós, o kernel passa as informações que eles representam diretamente.

O diretório %code% lista os dispositivos conectados como arquivos especiais do nó do dispositivo - por exemplo, %código%. Eles são adicionados e removidos pelo kernel à medida que os dispositivos são plugados e removidos, portanto, se você rastreá-lo pesquisando em intervalos (digamos, a cada 5 segundos), é possível detectar o que há de novo e o que foi. A única complicação aqui é que, como não há API de estilo de retorno de chamada, você precisa criar seu próprio thread para isso, se quiser uma verificação contínua (talvez porque %code% exige que você clique em %code% ).

Uma alternativa provavelmente melhor para %code% seria o material em %code% . Observe que há uma diferença significativa entre %code% e %code% (veja abaixo) ou %code% na medida em que os nós do último contêm informações sobre coisas como dispositivos, enquanto os nós em %code% é uma conexão real com o dispositivo (assim, se você verificar %code% , não se incomode em ler os arquivos individuais, apenas note que eles existem).

%code% now-a-days é um link simbólico (veja também a opção %code% em %code% ) codificar%; %code% é uma interface principal do kernel do canivete suíço (consulte %code% ). Isto lista sistemas de arquivos montados ; Se você usar a montagem automática, as coisas aparecerão e desaparecerão quando o material estiver conectado / desconectado. As informações em %code% e %code% geralmente estão na forma de texto ASCII, portanto, você pode examinar esses arquivos com %code% , etc e analisá-los com funções de sequência (fluxo).

O WRT para outros tipos de dispositivos, como um scanner de impressão digital, %code% é um bom lugar para começar - %code% contém um diretório %code% e um %code% . Dispositivos de bloco são geralmente armazenamento; as informações neles podem ser acessadas aleatoriamente . Dispositivos char trocam informações com o sistema em um fluxo, o que inclui coisas como scanners, câmeras, coisas HID (dispositivo de interface humana, por exemplo, mouses e teclados). Percebo que o gtkmm tem algumas coisas de alto nível para coisas HID anexadas, presumivelmente, uma vez que elas são significativas na interação com a GUI.

    
______ azszpr146272 ___

Eu aprovo a resposta por %code% . Mas, em vez de usar a chamada do sistema %code% para verificar as alterações no sistema de arquivos, pode-se usar %code% .

Sua página man é aqui e aqui .

Há uma excelente explicação e exemplo dos criadores (desenvolvedores) de %code% aqui .

    
___

Como detectar programaticamente quando um dispositivo gera uma interrupção? Isso pode acontecer quando um dispositivo é conectado ou desconectado. E também neste caso: por exemplo: quando um dedo é segurado sobre um scanner de impressão digit...
16.07.2014 / 16:34
1
resposta

Salvando dados do módulo do kernel no userspace

então eu tenho jogado em torno da programação do kernel por um tempo e quero criar essa simples interface de aquisição de dados com algum hardware customizado. Para portabilidade e reutilização, faço a coisa toda no meu Raspberry Pi. A parte...
11.05.2018 / 20:44
1
resposta

O que faz a opção “nointremap” do Linux?

O Ubuntu 12.10 alpha 2 funciona perfeitamente no meu novo MacBook Air de 11 ", mas apenas quando eu inicializo com a opção" nointremap ". Supostamente isso não é bom para usar como uma solução permanente. O que exatamente essa opção faz, e porqu...
20.07.2012 / 00:27
2
respostas

O que determina se uma interrupção é IO-APIC-edge ou IO-APIC-level?

Olhando o conteúdo de /proc/interrupts em um x86 Linux, vejo que algumas das interrupções são IO-APIC-edge , enquanto outras são IO-APIC-level . Eu me pergunto o que determina o tipo de interrupção, é o dispositivo de geração de interr...
17.06.2011 / 21:31
1
resposta

Interromper a expansão da linha de comandos da shell

Aviso: NÃO tente os comandos listados nesta pergunta sem saber suas implicações. Desculpe se esta é uma duplicata. Estou surpreso em saber que um comando tão simples como echo $(yes) congela o meu computador (na verdade, ele fica mui...
13.03.2018 / 04:23
1
resposta

Além de USR1 e USR2, quais sinais posso usar com segurança para um comportamento de interrupção personalizado? (em python)

Eu tenho um aplicativo complexo com USR1 e USR2 já definidos como tendo um propósito bem definido e não substituível. Existem toneladas de sinais diferentes no linux. Pode haver outro (talvez um obsoleto) que possa ser usado com segurança sem...
02.09.2016 / 09:29
2
respostas

muda a interrupção smp_affinity

Como você pode ver abaixo, a nvidia está compartilhando a intrerrupt e a interrupção está usando apenas o CPU0, como posso alterar a interrupção para a nvidia e como posso fazer com que ela use ambas as CPUs? Aqui é um artigo descrevendo a se...
12.07.2011 / 14:08
1
resposta

Por que o SIGINT não funciona em um processo de segundo plano em um script?

Eu tenho o seguinte em um script: yes >/dev/null & pid=$! echo $pid sleep 2 kill -INT $pid sleep 2 ps aux | grep yes Quando eu executo, a saída mostra que yes ainda está em execução no final do script. No entanto, se eu executar...
21.06.2017 / 19:45
1
resposta

Os threads que estão executando chamadas do sistema de bloqueio são interrompidos por interrupções?

Eu tenho lido um pouco sobre tópicos e interrupções. E há uma seção que diz que a programação paralela usando threads é mais simples porque não precisamos nos preocupar com interrupções. No entanto, qual é o mecanismo no qual os sinais de lib...
27.03.2013 / 14:47