Book Image

Mastering Linux Kernel Development

By : CH Raghav Maruthi
Book Image

Mastering Linux Kernel Development

By: CH Raghav Maruthi

Overview of this book

Mastering Linux Kernel Development looks at the Linux kernel, its internal arrangement and design, and various core subsystems, helping you to gain significant understanding of this open source marvel. You will look at how the Linux kernel, which possesses a kind of collective intelligence thanks to its scores of contributors, remains so elegant owing to its great design. This book also looks at all the key kernel code, core data structures, functions, and macros, giving you a comprehensive foundation of the implementation details of the kernel’s core services and mechanisms. You will also look at the Linux kernel as well-designed software, which gives us insights into software design in general that are easily scalable yet fundamentally strong and safe. By the end of this book, you will have considerable understanding of and appreciation for the Linux kernel.
Table of Contents (19 chapters)
Title Page
About the Author
About the Reviewer
Customer Feedback

POSIX clocks

POSIX provides software timers to multithreaded and real-time user space applications, known as POSIX timers. POSIX provides the following clocks:

  • CLOCK_REALTIME: This clock represents the real time in the system. Also known as the wall time, it's similar to the time from a wall clock and used for timestamping as well as providing actual time to the user. This clock is modifiable.
  • CLOCK_MONOTONIC: This clock keeps the time elapsed since the system bootup. It's ever increasing and non modifiable by any process or user. Due to its monotonic nature, it's the the preferred clock to determine the time difference between two time events.
  • CLOCK_BOOTTIME: This clock is identical to CLOCK_MONOTONIC; however, it includes time spent in suspend.

These clocks can be accessed and modified (if the selected clock allows it) through the following POSIX clock routines, defined in the time.h header:

  • int clock_getres(clockid_t clk_id, struct timespec *res);
  • int clock_gettime(clockid_t clk_id, struct...