Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Passage de données au handler d'un timer
Envoyé par: Sylvain Rousseau

Bonjour !

J'ai besoin d'un timer pour un code sous linux, pour cela j'utilise setitimer.
J'ai besoin de passer des données au Handler de mon timer.
Je veux utiliser uniquement l'API système.

Avec setitimer, il semble que cela ne soit pas possible puisque la signature du handler à fournir à la structure sigaction est void ( *handler)(int iSignal )

NB : Mon code existe déjà en version windows et s'appuie uniquement sur l'API système. Je suppose donc que sur ce point , le système linux n'est pas moins bien conçu que windows et qu'il existe donc une solution native sans passer par des bibliothèques supplémentaires.

Une idée ?

Cordialement

Sylvain

Poste le Thursday 28 February 2008 10:26:37
Répondre     Citer    
Re: Passage de données au handler d'un timer

Citation
Sylvain Rousseau
Avec setitimer, il semble que cela ne soit pas
possible puisque la signature du handler à fournirà la structure sigaction est void ( *handler)(int iSignal )

Ce n'est pas possible au niveau des appels systèmes (ceux du chapitre 2 des pages de man). Et il n'y a pas de raison que le noyau s'encombre d'une donnée supplémentaire.

Sous Linux, traditionnellement, ce sont les bibliothèques qui se chargent de gérer les fermetures (lambda closures), car c'est elles qui gèrent finement la mémoire (en fournissant ou utilisant malloc ou autre, comme GC_malloc ou new ou un ramasse miettes, qui est bâti par dessus l'appel système mmap).

La philosophie de Windows et de Linux sont différentes. Il me semble d'ailleurs que sous Windows -que je ne connais que par la lecture d'un ou deux livres généralistes sur les OS- la notion d'appel système est mal définie (car propriétaire), et je ne suis pas sûr que la liste des appels systèmes Windowsiens soit publique (l'équivalent de <asm/unistd.h> ou <asm/unistd_64.h>). D'ailleurs a-t-on légalement le droit de faire un appel système Windowsien sans passer par les *.dll fournis par Microsoft (mais uniquement par l'instruction machine, syscall ou int sur AMD64, convenable)?

Si quelqu'un a la référence de la documentation précise des appels systèmes Windowsiens, je suis preneur à titre de curiosité. Mais je refuse de la payer.

La manière de faire un appel système Linuxien (c'est pénible mais faisable) sans passer par aucune librarie (pas même l'omniprésente libc) est documentée, notamment sur [url= [url]http://tldp.org/HOWTO/Assembly-HOWTO/linux.html[/url]]Assembly HOWTO[/url] et évidemment dans le code source du noyau. J'ignore si la partie du code source du noyau Windows qui gère les appels systèmes est publique ou documentée (mais il me semble que Microsoft a été poursuivi pour manque de transparence à ce sujet).

[color=red]----[/color]

[url=http://starynkevitch.net/Basile/]Basile STARYNKEVITCH[/url]

Membre de l'[url=http://www.april.org/]APRIL[/url] « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: [url=http://refpersys.org/]RefPerSys[/url]

Poste le Thursday 28 February 2008 13:09:35
Répondre     Citer    
Re: Passage de données au handler d'un timer
Envoyé par: Sylvain Rousseau

Bonjour et merci Basile !


<asm/unistd_64.h>). D'ailleurs a-t-on
légalement le droit de faire un appel système
Windowsien sans passer par les *.dll fournis par
Microsoft (mais uniquement par l'instruction
machine, syscall ou int sur AMD64, convenable)?

D'après Johnson M. Hart dans "Win32 system programming" 2nd edition, p7, la réponse est NON.

Quand à aller directement fouiller dans le noyau pour trouver une solution ou réinventer la roue en faisant moi même les appels au niveau noyau, c'est pour moi hors de question, car je n'ai pas le temps !

Merci encore pour ton aide.

Sylvain

Poste le Thursday 28 February 2008 15:05:08
Répondre     Citer    
Re: Passage de données au handler d'un timer

Celà étant dit, il existe plein de bibliothèques encapsulant les appels systèmes relatifs aux temps (CPU, réels).

Par exemple la plupart des toolkits graphiques (QT, GTK, FOX, FLTK) le font et fournissent donc une API avec des données comme tu le souhaite.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Friday 29 February 2008 07:47:58
Répondre     Citer    
dchhvktk
Envoyé par: dchhvktk

wsyjcmqg <a href="[qlwxfkfg.com">lcvvkqrz<]; khjgwzmu [duzomcts.com] whnlvgem kgammwdz

Poste le Sunday 15 February 2009 18:58:49
Répondre     Citer    
xsqpppeu
Envoyé par: xsqpppeu

<a href="[jjknpebs.com">hjpornim<]; xaykiwda kdozksky [epeavnra.com] bwaqrtuk tgppfqkl

Poste le Thursday 26 February 2009 22:45:16
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Passage de données au handler d'un timer
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons