Forum: Compiler & IDEs Timer Interrupt in C Funktion


von Max (Gast)


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

von Programmierer (Gast)


Lesenswert?

zB. die "alarm" oder "sleep" Funktion.

von Peter II (Gast)


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.

von Rolf M. (rmagnus)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.