Archive | June, 2010

Free Linux Training Material and Video Presentations

Dotted across the Internet is a wealth of free resources including papers, presentations, articles and blogs on various topics to do with Linux and programming. I thought I would share these as I come across them.

One particularly useful resource is that of Free Electrons, an organisation based in France committed to promoting and contributing to free software. They also provide Linux training and have made all their training material available on-line under the Creative Commons Attribution-ShareALike 3.0 License. The material absolutely everything you’d ever need to know to become an expert in embedded Linux development. They can be downloaded here:

http://free-electrons.com/docs/

They also have posted recording of presentations made at various conferences such as the Embedded Linux Conference and Fosdem.

http://free-electrons.com/community/

And whilst we’re talking about ELC – you can find the archives and presentation materials here:

http://www.embeddedlinuxconference.com/

All worthwhile reading on a rainy day :). [© 2011 embedded-bits.co.uk]

Continue Reading →

PrintK Format Specifiers

As a kernel developer you’ll probably find yourself treating the ‘printk’ function as a drop-in replacement for the ‘printf’ function provided by any useful C library such as uclibc or glibc – After all, it’s usage is virtually the same. It was for this reason that I found my self naively surprised when reading the source for the kernel’s implementation – I was surprised because it offers many more features than the typical C libraries’ implementation. As I was unable to find any useful documentation on this – I thought I’d provide a brief overview.

Let’s start with the typical ‘%p’ type format specifier – we usually use it for printing the address of a pointer. However if you take a peek at the ‘pointer’ function in lib/vsprintf.c you’ll notice that you can further specify the pointer type to print additional information. We’ll look at some examples.

printk("%pf %pF\n", ptr, ptr) will print:
module_start module_start+0x0/0x62 [hello] 



Continue Reading →