Unterprogramm Aufruf alle 1/1000 s
-
Hallo liebe C/C++ Gemeinde,
ich möchte in C (unter linux) ein Unterprogramm einrichten, das alle
1/1000s aufgerufen wird und relativ genau ist. Wie kann ich das bewerkstelligen?
Habe es schon mit g_timeout_add der glib2(GTK) versucht, aber erstens komme ich nicht da nicht auf 1/1000 und zweitens ist es zu ungenau
-
-
Welcher Kernel? 2.4 Wechselt soweit ich weis alle 1/100s den Prozess und 2.6 alle 1/1000s das heißt das bei einer sleep-funktion die weniger als diese 1/1000s dauerd der prozessor nicht freigegeben wird, was im Endeffekt eine ziemliche Auslastung des CPU's zurfolge hat. Überlege mal ob nicht auch alle 1/10s reicht, ich weis aber nicht wo für du das Programm verwendest.
-
Kernel ist 2.6.
Ja, Du hast recht, mit der Annahme, daß die Prozessorauslastung hoch ist.
Meine Versuche mit der glib ergaben bei 1ms eine Auslastung von 97%.
Ich benötige diese hohe Auflösung, da ich über eine Parallelport Hardware
Kontakte abfrage und daraus unter anderem Geschwindigkeiten berechne.
Deshalb brauche ich auch eine gewisse Präzision.
Habe mir den usleep Hinweis von curry-king angesehen und bin dabei auf
timer_create usw. gestoßen. Mir ist allerdings nicht ganz klar, wie ich das
implementieren muß, damit meine subroutine (die die Hardware abfragt) regelmäßig aufgerufen wird.Danke für die schnellen Antworten.
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Mit einem normalen Linux Kernel wirst du deine Aufgabe nicht beweltigen können. Vermutlich kommst du nicht um Realtime Erweiterungen rum!
Vielleicht hilft dir folgender Link weiter: http://linuxdevices.com/articles/AT5634957454.html