How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
The Linux Programming Interface is the definitive guide to the Linux and UNIX programming interface—the interface employed by nearly every application that runs on a Linux or UNIX system. In this authoritative work, Linux programming expert Michael Kerrisk provides detailed descriptions of the system calls and library functions that you need in order to master the craft of system programming, and accompanies his explanations with clear, complete example programs. You'll find descriptions of over 500 system calls and library functions, and more than 200 example programs, 88 tables, and 115 diagrams. You'll learn how to: * Read and write files efficiently * Use signals, clocks, and timers * Create processes and execute programs * Write secure programs * Write multithreaded programs using POSIX threads * Build and use shared libraries * Perform interprocess communication using pipes, message queues, shared memory, and semaphores * Write network applications with the sockets API While The Linux Programming Interface covers a wealth of Linux-specific features, including epoll, inotify, and the /proc file system, its emphasis on UNIX standards (POSIX.1-2001/SUSv3 and POSIX.1-2008/SUSv4) makes it equally valuable to programmers working on other UNIX platforms. The Linux Programming Interface is the most comprehensive single-volume work on the Linux and UNIX programming interface, and a book that's destined to become a new classic.
The #1 practical, hands-on guide to developing systems based on embedded Linux - fully updated with extensive new coverage * *Helps programmers rapidly climb the learning curve, maximize productivity, and handle today's most important development challenges. *Contains new chapters on PCI Subsystem, Hotplug and UDEV, USB, and reducing boot time. *Offers practical coverage of Flash-resident filesystem images, the Memory Technology Devices subsystem, and today's hot new multicore processors. Product manufacturers are increasingly turning to embedded Linux - and thousands of software and firmware engineers must now master it for the first time. Embedded Linux Primer has become their #1 resource. Christopher Hallinan offers practical solutions for the real-world challenges embedded developers face - whether they are experienced legacy embedded systems developers moving to Linux or experienced Linux developers moving to embedded systems. Hallinan introduces Linux in embedded environments, covers all major systems and development issues, and offers dozens of valuable tips, tools and problemsolving techniques. His extensive code examples have been assembled from operational hardware running current versions of embedded Linux using the latest development and debugging tools. This book's wide-ranging, practical coverage includes: Linux kernel initialization; the special role of bootloaders and U-Boot in embedded Linux; the use of embedded Linux file systems, including JFFS2; building Flash resident file systems; using the Memory Technology Devices (MTD) subsystem with today's popular flash memory devices; and much more. This Second Edition has been updated for the latest kernel versions, and contains new chapters on the PCI Subsystem, Hotplug and UDEV, USB, and Reducing Boot Time. Readers will also find a detailed introduction to multicore, one of the hottest trends in embedded computing.
One of the world's most experienced Linux driver developers demonstrates how to develop reliable Linux drivers for virtually any device. This resource is for any programmer with a working knowledge of operating systems and C, including programmers who have never written drivers before.
Writing Linux Device Drivers is designed to show experienced programmers how to develop device drivers for Linux systems, and give them a basic understanding and familiarity with the Linux kernel. Upon mastering this material, you will be familiar with the different kinds of device drivers used under Linux, and know the appropriate API's through which devices (both hard and soft) interface with the kernel. The purpose is to get you into coding as quickly as possible. Thus we'll tell you early on how to dynamically allocate memory in the simplest way, so you can actually write code, and then later cover the subject more thoroughly. Each section has exercises, most of which involve writing code, designed to help you gain familiarity with programming for the Linux kernel. Solutions are provided. We are not aiming for an expert audience, but instead for a competent and motivated one.
Uses the Running Operation as the Main Thread Difficulty in understanding an operating system (OS) lies not in the technical aspects, but in the complex relationships inside the operating systems. The Art of Linux Kernel Design: Illustrating the Operating System Design Principle and Implementation addresses this complexity. Written from the perspective of the designer of an operating system, this book tackles important issues and practical problems on how to understand an operating system completely and systematically. It removes the mystery, revealing operating system design guidelines, explaining the BIOS code directly related to the operating system, and simplifying the relationships and guiding ideology behind it all. Based on the Source Code of a Real Multi-Process Operating System Using the 0.11 edition source code as a representation of the Linux basic design, the book illustrates the real states of an operating system in actual operations. It provides a complete, systematic analysis of the operating system source code, as well as a direct and complete understanding of the real operating system run-time structure. The author includes run-time memory structure diagrams, and an accompanying essay to help readers grasp the dynamics behind Linux and similar software systems. Identifies through diagrams the location of the key operating system data structures that lie in the memory Indicates through diagrams the current operating status information which helps users understand the interrupt state, and left time slice of processes Examines the relationship between process and memory, memory and file, file and process, and the kernel Explores the essential association, preparation, and transition, which is the vital part of operating system Develop a System of Your Own This text offers an in-depth study on mastering the operating system, and provides an important prerequisite for designing a whole new operating system.
This is the new guide to the design and implementation of file systems in general, and the Be File System (BFS) in particular. This book covers all topics related to file systems, going into considerable depth where traditional operating systems books often stop. Advanced topics are covered in detail such as journaling, attributes, indexing and query processing. Built from scratch as a modern 64 bit, journaled file system, BFS is the primary file system for the Be Operating System (BeOS), which was designed for high performance multimedia applications. You do not have to be a kernel architect or file system engineer to use Practical File System Design. Neither do you have to be a BeOS developer or user. Only basic knowledge of C is required. If you have ever wondered about how file systems work, how to implement one, or want to learn more about the Be File System, this book is all you will need. * Review of other file systems, including Linux ext2, BSD FFS, Macintosh HFS, NTFS and SGI's XFS. * Allocation policies for placing data on disks and discussion of on-disk data structures used by BFS * How to implement journaling * How a disk cache works, including cache interactions with the file system journal * File system performance tuning and benchmarks comparing BFS, NTFS, XFS, and ext2 * A file system construction kit that allows the user to experiment and create their own file systems
Brand-new edition of comprehensive Linux kernel reference-40% of material revised! -- Now updated throughout to cover Linux 2.4. -- Explains how the Linux operating system actually works and shows how to program the Linux kernel. -- Introduces the kernel sources and describes basic algorithms and data structures, such as scheduling and task structure. Linux Kernel Internals, Third Edition is written for anybody who wants to learn more about Linux. It explains the inner mechanisms of Linux from process scheduling to memory management and file systems, and reveals the structure of the kernel-the heart of the Linux operating system. This book is targeted to all developers who want to know how the Linux kernel interface is implemented, and helps readers to understand the operating system mechanisms better and to optimize Linux applications. The reader will learn how a modern multi-tasking operating system works and will be able to understand how the open Linux sources work. This Third Edition includes coverage of memory management, file systems, device drivers, interprocess communication, networking, and symmetric multiprocessing (SMP). For those who intend to write kernel code, or just want to know how the kernel of a Linux system works. The accompanying CD-ROM contains the Linux kernel and its complete source code. So, every user can start experimenting with Linux by buying the book.
About the ARM Architecture The ARM architecture is the industry's leading 16/32-bit embedded RISC processor solution. ARM Powered microprocessors are being routinely designed into a wider range of products than any other 32-bit processor. This wide applicability is made possible by the ARM architecture, resulting in optimal system solutions at the crossroads of high performance, low power consumption and low cost. About the book This is the authoritative reference guide to the ARM RISC architecture. Produced by the architects that are actively working on the ARM specification, the book contains detailed information about all versions of the ARM and Thumb instruction sets, the memory management and cache functions, as well as optimized code examples. 0201737191B05092001
Details all the Linux system holes, attack methods, and hacker's tools that hackers have had years to study, explore, and improve upon, helping Linux administrators identify and plug security holes on their systems. Original. (Intermediate/Advanced).