My thesis is focused on Linux kernel debugging methods and performance measurement proceedings. Wide research of literature covered the field of unique Linux distribution development, Linux device drivers, data transfer between user space and kernel space, kernel debugging and profiling methods. Exploring available sources on the subject there was not any unequivocal demonstration and argumentation in favor of one driver solution or the other regarding the optimized attachment of a resource critical peripheral. In this work I am looking for a technique to determine that one device driver is more effective in runtime than the other one. The problem is complicated by that interfacing between kernel space and user space in not a clear problem. I started to work out a software-analytical method which is able to measure the transmission speed of data coming from different peripherals. This gives a detailed view on profile and speed differences of device drivers. The essence of this method is combined application of a high-resolution timer peripheral and Kprobe on the methods of running kernel. The used embedded platform was a Raspberry PI single board PC, thus the architecture made available a clock hit counter register (Cycle Counter Register – CCR) to read timestamps. Measurements were executed on open, close, read, write functions of dummy character device (devtmpfs) and system registry (sysfs). Facing with some specificity of Kprobe, some individual solutions (e.g. filtering, semaphore variables) were used were applied during the implementation of test environment. Apart from CCR reading and filtering on kernel function arguments what are platform specific parts, the method is able to adapt to different Linux platforms.
Working on my thesis I acquired significant knowledge on the field of Linux kernel development. After getting familiar with current performance evaluating methods I worked out a process to determine running time of device drivers. Through this work I wish to contribute to the optimal utilization in future of potentials inherent to Linux operating system.