Gestion des Interruptions hardware

HellCook

Membre confirmé
5 Mars 2010
11
1
Bonjour à tous!

Voilà, j'ai quelques questions (sur un mb pro, 10.6, mais je pense qu'on s'en fout).
1) Lorsque le cable d'alim est débranché, le proc reçoit il une interruption?
Si oui
____2a) Connaissez vous un moyen de modifier le traitement de l'interruption pour exécuter du code de son cru?
Si non
____2b) Y a t il une façon de réaliser la question 2a autrement qu'avec un traitement d'interruption (et bien sûr sans avoir un programme en tâche de fond qui bouffe des ressources inutilement)?
3) De manière plus générale, sauriez vous où je chopper ce type d'infos?

Merci d'avance!


HC
 
Bonjour à tous!

Voilà, j'ai quelques questions (sur un mb pro, 10.6, mais je pense qu'on s'en fout).
1) Lorsque le cable d'alim est débranché, le proc reçoit il une interruption?
Si oui
____2a) Connaissez vous un moyen de modifier le traitement de l'interruption pour exécuter du code de son cru?
Si non
____2b) Y a t il une façon de réaliser la question 2a autrement qu'avec un traitement d'interruption (et bien sûr sans avoir un programme en tâche de fond qui bouffe des ressources inutilement)?
3) De manière plus générale, sauriez vous où je chopper ce type d'infos?

Merci d'avance!


HC

le proc reçoit il une interruption ?

proc processus ? quelle processus

// Connaissez vous un moyen de modifier le traitement de l'interruption pour exécuter du
// code de son cru?


oui avec ton propre kernel, ou alors si possible avec une kernel extension, et cela depend de quel code.

____2b) Y a t il une façon de réaliser la question 2a autrement qu'avec un traitement d'interruption (et bien sûr sans avoir un programme en tâche de fond qui bouffe des ressources inutilement)?

non, et ca ne bouffe rien, tu peux avoir directement acces a certaines notifications concernant le hardware via le IOKit. Userspace le kernel ne yield'ra pas pour ton code, soit ton traitement est assez rapide, soit ca ne marchera pas.

en te lisant il te manque beaucoup de bases que tu devrais combler avant d'aller plus loin, de plus ce que tu racontes est si evasif qu'il est difficile d'apporter une reponse concrete.
 
Hello,

Merci de me répondre.

le proc reçoit il une interruption ?

proc processus ? quelle processus
Je pensais plutôt au processeur.


// Connaissez vous un moyen de modifier le traitement de l'interruption pour exécuter du
// code de son cru?


oui avec ton propre kernel, ou alors si possible avec une kernel extension, et cela depend de quel code.

____2b) Y a t il une façon de réaliser la question 2a autrement qu'avec un traitement d'interruption (et bien sûr sans avoir un programme en tâche de fond qui bouffe des ressources inutilement)?

non, et ca ne bouffe rien, tu peux avoir directement acces a certaines notifications concernant le hardware via le IOKit. Userspace le kernel ne yield'ra pas pour ton code, soit ton traitement est assez rapide, soit ca ne marchera pas.

en te lisant il te manque beaucoup de bases que tu devrais combler avant d'aller plus loin,
Je suis bien d'accord, mais ne les sachant pas, il m'est difficile de savoir lesquelles...;)
Je me renseigne sur les kernels extensions, merci de la piste.
de plus ce que tu racontes est si evasif qu'il est difficile d'apporter une reponse concrete.
Erf, je pensais pourtant que si, en gros l'idée serait d'exécuter un bout de code maison à chaque fois que le chargeur est déconnecté.
 
On ne sait même pas ce que tu compte faire en récupérant tes interruptions hardware. En général, quand on veut vraiment modifier ce que fait le système par rapport à d'habitude sur une interruption, on recompile son propre noyau. Mais la plupart du temps on n'a besoin d'aller aussi loin, une simple gestion des messages système suffit à savoir ce qu'il se passe en terme de hardware et ainsi exécuter le code voulu dans l'application sans avoir à faire plein de modifications bas niveau ou a intercepter les messages et interruptions pour les détourner et faire ainsi du codage de porcin. :p :D :D
 
depend du code que tu veux executer, qu'es ce que ce code est suppose faire?, connaitre les interruptions du processeur ou le switch de core a core ce n'est pas ton probleme (par ailleurs meme kernel side c'est pas possible et ca sert a rien)

il y a plusieurs voies (depend du code que tu veux executer)

1- je peux faire une operation dans le user space concernant l'utilisateur en session

2- j'ai besoin d'un high priviledge access concernant tout le systeme -> kern ext

3- j'ai besoin d'avoir access a differentes informations qui ne sont accessibles que dans le public-kernel-space, network, video, sound buffer ecetera -> kern ext

4- je peux faire cette operation dans le user space et le kernel space, mais j'ai besoin de dire au systeme, let me do something before you (yield: ou cedez le passage) -> kern ext

donc tu vois tout depend de ce que tu veux faire

// les lacunes:

excellent mon mentor:

http://www.informit.com/store/product.aspx?isbn=0201702452

Amit's book, tres moyen, mais pour l'instant c'est le seul disponible...

http://www.amazon.com/Mac-OS-Internals-Systems-Approach/dp/0321278542

toute personne developpant sous unix-like/ bsd-like (system level) a lu le livre suivant, pas pour les exemples obsoletes, mais pour les conceptes toujours en vigueur meme pour GNU-linux: culture generale

http://www.informit.com/store/product.aspx?isbn=0201549794