Timer Interrupt in C Funktion

Gast #3831801
Lesenswert?

Hallo,
ich habe in den letzten Jahren viel code für Mikrocontroller 
geschrieben, bin jetzt aber auf ein embedded Linux System umgestiegen.
Ich möchte eine relativ simple Funktion schreiben welche  in einer 
Schleife daten in ein file schreibt, jede sekunde soll der momentane 
schleifenzähler auf der Konsole ausgegeben werden. Damit möchte ich grob 
den dynamischen schreibdurchsatzt der Schnittstelle ermitteln. Auf einem 
Mikrocontroller wäre das ganz einfach mit einem Timer Interrupt zu 
realisieren.

Wie kann ich dies unter Linux realisieren?

Gibt es hier etwas ähnliches?

ich hoffe ihr könnt mir weiterhelfen.

viele grüße Max
Gast #3831815
Lesenswert?

Max schrieb:
> Wie kann ich dies unter Linux realisieren?

einfach die Zeit mit abfragen und bei mehr als ein Sekunden etwas 
ausgeben

if ( time() - timeOld > 1 )
   print("...")
   timeOld = time();
)


das ständinge Abfrage der Zeit ist zwar nicht schön, sollte aber keine 
Probleme verursachen.
#3832461
Lesenswert?

Max schrieb:
> Auf einem Mikrocontroller wäre das ganz einfach mit einem Timer Interrupt
> zu realisieren.

Das kann man auf einem Linux-System sehr ähnlich machen. Es gibt
dort auch Timer, und es gibt Signale, die man sich etwa wie
Userspace-Interrupts vorstellen muß. Sieh dir mal die man-Page der
Funktion setitimer() an. Damit kannst du einen Timer definieren, der ein
Signal SIGALRM auslöst. Mit der Funktion sigaction() kannst du dann für
dieses Signal einen Handler definieren, der so ähnlich wie ein
Interrupt-Handler funktioniert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren