Cscope and Code Navigation

Cscope is a crucial part in my development tool zoo. Not for small projects but for larger projects like Linux Kernel development I use cscope really often. But as usually: I only use a small subset of all cscope features. This normally boils down to Ctrl-] to jump to the declaration of the function and later Ctrl-t to jump back. With Cscope the acts like gD (goto declaration) with don’t stop at file boundaries....

July 12, 2012 · 1 min · Hagen Paul Pfeifer

CAPTCP News - TCP Throughput Module

The development of captcp flatten out: no more features where implemented in the last months. Today I merges a branch from Gábor Molnár to print TCP stream throughputs separately. New option is can be enables via -x. Many thanks Gábor! This time I used the github merge feature the first time. I rarely use github features. For me it was (and still is) a public git hoster. But Github features like included issue tracking and the whole collaboration thing is great!...

July 10, 2012 · 1 min · Hagen Paul Pfeifer

Quit User Tracking

This blog used two third party extensions: Google Analytics Disqus Both set cookies and have a user coverage which is horrible. Nowadays Google Analytics together with Google Search, Android activity and Google Ads have a database of … in the end they know too much about you. I decided today that web analysis data is not crucial for me compared to the privacy of my readers. So I removed all third party content from my blog....

July 7, 2012 · 1 min · Hagen Paul Pfeifer

Git Merge Tips

I use git nearly since the beginning as BitKeeper was replaced by Linus. This was in 2005. In the early days git was hard and cumberstone to use. The low-plumbing-level made it really hard and unintuitive. Wrapper tools like cogito provide the essential usability. E.g. back in the days instead of git pull you have to type git fetch and git merge and the like. It was hard to remember all the commands to get versioning done....

July 7, 2012 · 1 min · Hagen Paul Pfeifer

IETF I-D and RFC News - I

I just decided to summary IETF relevant news as new I-D’s or RFC’s in a weekly blog posting. The summary will not cover all areas, nor will it list the most prominent development. I focus on topics I am most interested. This mainly includes the following areas: Applications, Internet, Operations and Management, Routing and of course Transport. But occasional I will post I-D’s or new RFC’s from other areas as well....

July 7, 2012 · 1 min · Hagen Paul Pfeifer

Linux Photo Editing Environment

I shoot all my photos in RAW, so my post-processing chain is a little bit more complicated as shooting in JPEG. Raw photo editing tools under Linux are nowadays more functional and usable as several years ago. But handling RAW images is more time consuming as stripped JPEG images. These are the costs of an increased flexibility. To simplify processing I tried nearly all professional tools under Linux (this includes scripts based automations)....

July 5, 2012 · 1 min · Hagen Paul Pfeifer

A, AAAA and MX Records Changed

Due to a server move some IP addresses as well as certificates changed. In the next week I will publish the server certificates too. If you detect some broken links please drop me an email. This includes links to git repositories too. $ dig +retry=0 +qr jauu.net A | egrep '.*jauu\.net.*[[:digit:]]' - jauu.net. 1242 IN A 80.244.247.6 $ dig +retry=0 +qr jauu.net AAAA | egrep '.*jauu\.net.*[[:digit:]]' - jauu.net. 1233 IN AAAA 2001:4d88:1ffa:82:880:aa0:9009:f00d $ dig +retry=0 +qr jauu....

July 4, 2012 · 1 min · Hagen Paul Pfeifer

GCC Builtin Constant P and Kernel Optimization

Yesterday a discussion on LKML raised the question if it is possible to disable optimization for kernel build. Sometimes you want to debug the kernel and the required function is optimized out. You are free to disassembly the source code at this place and set the break point manually. But this procedure is time consuming and error prone. I raised another use case: perf probes. Dynamic probepoints placed in the Kernel at runtime....

May 7, 2012 · 2 min · Hagen Paul Pfeifer

Byte Ordering - Again

One practical alternative to #ifdef BIG_ENDIAN bar #else foo #endif clutter in your code are the following two functions. They can always be used, no matter on what architecture the code runs. It always return the correct byte order. uint32\_t le\_pick(char \*data) { return (data[3]<<0) | (data[2]<<8) | (data[1]<<16) | (data[0]<<24); } uint32\_t be\_pick(char \*data) { return (data[0]<<0) | (data[1]<<8) | (data[2]<<16) | (data[3]<<24); } The idea is based on a blog entry from Rob Pike....

May 2, 2012 · 3 min · Hagen Paul Pfeifer

Initial Perf Loop Detection

Arnaldo started to implement initial loop detection in the perf annotate browser. The idea is (was) that backward jumps are mode visible. Currently forward jumps are displayed with some UNICODE character (libslang?): 0,00 │ test %eax,%eax 0,00 │ ↓ je bc 0,00 │ cmpl $0x0,0x4ca034(%rip) # ffffffff81aacb80 <debug\_locks\_silent> 0,00 │ ↓ jne bc 0,00 │ mov $0xbf4,%esi 0,00 │ mov $0xffffffff818039ac,%rdi 0,00 │ callq warn\_slowpath\_null 0,00 │ ↓ jmp bc 12,90 │ 53: mov %gs:0xb760,%rax 4,15 │ add %ebx,-0x1fbc(%rax) 0,00 │ test %edx,%edx 0,00 │ ↓ jne 92 3,69 │ cmpb $0xf4,-0x1fbc(%rax) 0,00 │ ↓ jbe 92 0,00 │ callq debug\_locks\_off 0,00 │ test %eax,%eax 0,00 │ ↓ je 92 0,00 │ cmpl $0x0,0x4c9ff3(%rip) # ffffffff81aacb80 <debug\_locks\_silent> 0,00 │ ↓ jne 92 0,00 │ mov $0xbfd,%esi 0,00 │ mov $0xffffffff818039ac,%rdi 0,00 │ callq warn\_slowpath\_null The currently algorithm illustrated in the image use a simple heuritic to show jumps that points to before the cursor....

May 1, 2012 · 2 min · Hagen Paul Pfeifer