programming

In Brief: Linux 2.6.32 - KSM and KVM

Sven Bachmann
Can you imagine to have 52 Windows XP virtual machines - 1GB RAM each - running on a server with just 16GB? Ok, sounds a lot… but we are near the 16GB barrier. Anyway, this is one of the features in the new 2.6.32 release. Its called Kernel Samepage Merging, KSM. The approach is you start more than one VM and tell the kernel that they probably will use identically memory segments.

Strommessung: Analogen Zähler aufzeichnen und auswerten

Sven Bachmann
Messwerte erfassen, speichern und auswerten - in der Industrie gang und gäbe, im Privathaushalt eher kaum zu finden. Da es doch für manche interessant ist zum Beispiel den Stromverbrauch täglich zu sehen und eventuell große Verbraucher ausfindig zu machen wäre es nun auch schön, einen handelsüblichen Zähler zu digitalisieren. Die Stromwerke machen es einem dabei jedoch meist nicht einfach. Im Normalfall gilt es, dass man vor jeglicher Auswertung erst einmal den kleinen roten Punkt auf einer sich rotierenden Scheibe erkennen muss.

arm: remove thumb instruction "bx lr" from EABI binary

Sven Bachmann
Today I had a strange error using the GCC version 4.4.1 with EABI support on a non thumb-ARMv4. Everytime I compiled something, with and w/o the -mno-thumb-interwork parameter it also contained the bx lr instruction which is only for later ARM processors with thumb support.The only solution seemed to be to patch the GCC. Urgs… not really a nice solution, because recompiling GCC takes 3 stages and much time. After lots of googling I finally found the solution in the Debian Wiki.

uClibc: "bx r6" compile error on ARM

Sven Bachmann
While compiling OpenWrt for an ARM compatible processor I got the following error: {standard input}: Assembler messages: {standard input}:39: Error: selected processor does not support `bx r6' I found the solution in the The definitive guide to GCC book from William Von Hagen (I don’t own it, I found it via Google Books). You have to disable the the USE_BX flag in the uClibc config file and everything will be fine.

GTK: Trayicon with effective 2 lines of C-Code

Sven Bachmann
Because I always wanted to learn some GTK, I decided to try it first with a trayicon. And wow, it was that easy - ok, the functional factor is zero, but you’ll have a trayicon with a tooltip. And if you want more you can read the GTK documentation and extend it to the max.So here it is: trayicon.c #include <gtk/gtk.h> int main(int argc, char *argv[]) { gtk_init (&argc;, &argv;); GtkStatusIcon *status = gtk_status_icon_new_from_stock(GTK_STOCK_NO); gtk_status_icon_set_tooltip(status, "Nice Tooltip"); gtk_main(); return 0; } As you can see, beside the C-Standard header and footer, and also the GTK header and footer, we have only two lines of code.

git: Only commit parts of a patched file (hunk-checkin)

Sven Bachmann
Hi, today I read Og Maciels blog entry on Planet GNOME about how he find out to not checkin a whole changed file with git but include/exclude special parts. This is something I needed in the last time much often, but never thought it exists - so with git its very easy.Now lets have an example, we call it story.txt. It contains the following: The New Kitten After their holidays, Ann and Joe decided to get an malani which should be their everyday joy.

Subversion: Zeilen gegen Checkin sperren

Sven Bachmann
Problem: In diesem Falle war es eine Datei die ein Define enthielt was es erlaubte gewisse Teile einer Firmware anders zu kompilieren und so diverse Tests durchzuführen. Dummerweise ist mir genau dieses eine Define beim letzten Checkin nicht aufgefallen und wurde ausversehen eingecheckt - was zwar danach dann auffiel, aber unschön ist.Lösung: Der Subversion pre-commit Hook. Mit diesem Skript kann man einen Checkin nach der Übertragung zum Server noch Prüfen und gegebenenfalls ablehnen - sogar mit einer Nachricht an den Absender damit dieser weiß was falsch lief.

Sehr gutes Autotools Tutorial (englisch)

Sven Bachmann
Nachdem ich mich jetzt doch (auch durch die Arbeit) näher mit den Autotools beschäftigen musste, habe ich nach einem guten Einstieg gesucht und bin fündig geworden.Alexandre Duret-Lutz hat ein sehr gutes Tutorial zu den Autotools verfasst welches im Laufe der Zeit durch Beiträge von anderen noch verbessert wurde. Es umfasst derzeit 162 Seiten und stellt eine Präsentation dar. Das heisst die Textfülle ist nicht so hoch und es lässt sich leicht lesen.

Vorstellung des Tools cexec

Sven Bachmann
Wer kennt das nicht? Da hat man ein tolles Kommandozeilenprogramm mit dutzenden von Einstellmöglichkeiten und weiß nicht, welche Kombination zum besten Ergebnis führt.So erging es mir mit Metapixel - einem Programm zur Erstellung von Foto Mosaiks und Collagen. Daher habe ich mir kurzerhand cexec entwickelt, was für “Combination Execute” steht. Es hat die Aufgabe, alle in einer Konfigurationsdatei angegebenen Optionen zu kombinieren und das Ergebnis des auszuführenden Programmes fortlaufend abzuspeichern.

Semaphoren-Beispiel

Sven Bachmann
Um 2007 rum habe ich mal ein Beispielprogramm geschrieben das zeigt wie man benamte Semaphoren unter Linux nutzt. Dies habe ich nun wiedergefunden, den Code ein wenig überflogen, die GPLv2 Lizenz hinzugefügt und online gestellt: Benamte Semaphoren unter Linux. Kurze Erklärung zu Semaphoren: Semaphoren sind eine Möglichkeit parallele Zugriffe auf eine Resource (bzw. mehrere, aber begrenzte Resourcen ähnlichen Typs) zu regeln. Zum Beispiel wenn man sicherstellen will, dass bei 2 parallelen Zuggleisen und 2 wartendenen Zügen nur ein Zug zur gleichen Zeit die Weiche benutzen darf.