💾 Archived View for lofi.haiku-os.org › docs › develop captured on 2023-12-28 at 15:07:19. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-09-28)

➡️ Next capture (2024-02-05)

-=-=-=-=-=-=-

Welcome to Haiku internals’s documentation!

Target audience

This documentation is aimed at people who want to contribute to Haiku by modifying the operating system itself. It covers various topics, both technical (how things work) and organizational (patch submission process, for example).

This document might also be useful to application developers trying to understand the behavior of the operating system in some specific cases, however, the

API documentation

should answer most of the questions in this area already.

This documentation assumes basic knowledge of C++ and the Be API, if you need more information about that, please see the

Learning to program with Haiku

book.

Status of this document

The work on this book has just started, many sections are incomplete or missing. Here is a list of other resources that could be useful:

Haiku website

has several years of blog posts and articles documenting many aspects of the system,

Coding guidelines

describes how code should be formatted,

User guide

documents Haiku from the users’ point of view and can be useful to understand how things are supposed to work,

Haiku Interface Guidelines

document graphical user interface conventions,

Haiku Icon Guidelines

gives some rules for making icons fitting with the style of the existing ones.

Table of contents

Search Page

Contents:

The build system

The build tool: Jam

Haiku Git Repositories

Haiku compilers

HaikuPorts build-packages repository

Release engineering

Critical Milestones

Important first steps

General Rules

Forming a timeline

The standard C library

Library organization

POSIX, BSD and GNU extensions

BeOS and Haiku specific functions

The Debugger kit

Classes

Diagrams

The MIDI Kit

Midi Kit design

How libmidi1 works

The softsynth

The BeOS R5 Midi Kit protocol

Misc notes

Testing the Midi Kit

Midi Kit TO DO List

The Network Stack

Haiku Network Stack Architecture

How to Merge Patches from NetBSD Trunk

Package Management

Building Packages

Boot Volume Directory Structure

Haiku Package File Format

Hybrid Builds

Package Management Infrastructure

Migration to Package Management

Packaging Policy

Bootstrapping Haiku

packagefs

Package Daemon

Package building

Package kit/manager

Boot loader

Package/package repository format

Miscellaneous

Package Management Ideas

Application Server

Purpose

Tasks performed by app_server

App server components

Class Descriptions

Registrar Protocols

Standard Replies

General Requests

Roster Requests

MIME Database Requests

Message Runner Requests

Clipboard Handler Requests

Disk Device Requests

Kernel

Device Driver Architecture

Plug and Play Manager

Swap file

CPU architectures

Haiku boot process specification

Bootloader debugging with GEF

Using PCI serial ports for debugging

Filesystem drivers

File systems overview

Development tools

Node Monitoring

UserlandFS: filesystems in userspace

The UFS2 filesystem

The XFS File System

The Be File System

Partitioning system for Sun Sparc machines

Device drivers

Disk driver ioctls

Intel video hardware generations

Bus drivers

AGP (and PCI-express) Graphics Address Re-Mapping Table

Bluetooth overview

SDHCI MMC Driver

The USB stack

HaikuDepot and Server Interactions

Introduction

Process, ProcessNode and Coordinator

Bulk Load Processes

Process / ProcessNode / Coordinator

Failure

Concurrency