So Jungs,
ich habe eine gute Nachricht für euch. Man hat das Problem mit der ruckelnden Maus unter FreeBSD 7.0 soweit analysiert, dass es einen ersten Satz Patches gibt. Das Problem liegt nicht an FreeBSD, sondern an X.org. Und zwar tritt X.org seit einiger Zeit unter FreeBSD eine Flut von teuren gettimeofday() Syscalls los, welche durch ihre schiere Menge das System aus dem Tritt bringen können, wenn dies nicht genug Power hat. Die Lösung ist simpel:
Ihr kopiert obrigen Diff in eine Textdatei und kopiert diese (als root) in /usr/port/x11-servers/xorg-server/files. Anschließend baut ihr den Port neu. Das Problem sollte dann verschwunden sein.
Natürlich wird dieser manuelle Eingriff überflüssig, sobald der Patch in den Port eingegangen ist. Bis dahin hefte ich diesen Thread oben an.
EDIT: Ich wurde gerade darauf hingewiesen, dass die Datei mit dem Patch mit dem Namen "patch-" beginnen muss. Man nennt sie also am besten patch-jerkymouse oder so. Ach ja, danke an Tron für den Hinweis.
EDIT2: Den Patch noch mal als Anhang
ich habe eine gute Nachricht für euch. Man hat das Problem mit der ruckelnden Maus unter FreeBSD 7.0 soweit analysiert, dass es einen ersten Satz Patches gibt. Das Problem liegt nicht an FreeBSD, sondern an X.org. Und zwar tritt X.org seit einiger Zeit unter FreeBSD eine Flut von teuren gettimeofday() Syscalls los, welche durch ihre schiere Menge das System aus dem Tritt bringen können, wenn dies nicht genug Power hat. Die Lösung ist simpel:
Code:
-------------- next part --------------
--- configure.orig 2008-02-28 16:08:55.000000000 -0500
+++ configure 2008-02-28 16:11:19.000000000 -0500
@@ -30376,7 +30376,7 @@
else
cat >conftest.$ac_ext <<_ACEOF
-#define _POSIX_C_SOURCE 199309L
+#define _POSIX_C_SOURCE 200112L
#include <time.h>
int main(int argc, char *argv[]) {
--- configure.ac.orig 2007-09-06 01:59:00.000000000 -0400
+++ configure.ac 2008-02-28 16:11:23.000000000 -0500
@@ -1055,7 +1055,7 @@
LIBS="$CLOCK_LIBS"
AC_RUN_IFELSE([
-#define _POSIX_C_SOURCE 199309L
+#define _POSIX_C_SOURCE 200112L
#include <time.h>
int main(int argc, char *argv[[]]) {
-------------- next part --------------
--- os/utils.c.orig 2007-08-23 15:04:55.000000000 -0400
+++ os/utils.c 2008-02-28 16:20:29.000000000 -0500
@@ -525,7 +525,11 @@
#ifdef MONOTONIC_CLOCK
struct timespec tp;
+#ifdef __FreeBSD__
+ if (clock_gettime(CLOCK_MONOTONIC_FAST, &tp) == 0)
+#else
if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+#endif
return (tp.tv_sec * 1000) + (tp.tv_nsec / 1000000L);
#endif
Natürlich wird dieser manuelle Eingriff überflüssig, sobald der Patch in den Port eingegangen ist. Bis dahin hefte ich diesen Thread oben an.
EDIT: Ich wurde gerade darauf hingewiesen, dass die Datei mit dem Patch mit dem Namen "patch-" beginnen muss. Man nennt sie also am besten patch-jerkymouse oder so. Ach ja, danke an Tron für den Hinweis.
EDIT2: Den Patch noch mal als Anhang
Anhänge
Zuletzt bearbeitet:
