Table of Contents

  1. Pacemaker Development
  2. Frequently Asked Questions
  3. General Guidelines for All Languages
    1. Copyright
    2. Terminology
  4. Documentation Guidelines
    1. Books
  5. Python Coding Guidelines
    1. Python Boilerplate
    2. Python Version Compatibility
    3. Formatting Python Code
  6. C Coding Guidelines
    1. Code Organization
    2. Pacemaker Libraries
      1. Public versus Internal APIs
      2. API Symbol Naming
      3. API Header File Naming
      4. API Documentation
      5. Public API Deprecation
    3. C Boilerplate
    4. Line Formatting
    5. Comments
    6. Operators
    7. Control Statements (if, else, while, for, switch)
    8. Macros
    9. Memory Management
    10. Structures
    11. Variables
      1. Pointers
      2. Globals
      3. Variable Naming
      4. Booleans
    12. String Handling
      1. Define Constants for Magic Strings
      2. String-Related Library Functions
      3. char*, gchar*, and GString
      4. Regular Expressions
    13. Enumerations
      1. Flag groups
    14. Functions
      1. Function Naming
      2. Function Definitions
      3. Return Values
      4. Public API Functions
    15. Logging and Output
      1. Logging Vs. Output
      2. Common Guidelines for All Messages
      3. Log Levels
      4. Logging
      5. Assertion Logging
      6. Output
    16. XML
      1. External Libraries
      2. Naming
      3. Private Data
      4. Wrapper Functions
    17. Makefiles
    18. vim Settings
  7. Coding Particular Pacemaker Components
    1. Controller
      1. Join sequence
    2. Fencer
      1. Initiating a fencing request
      2. Fencing queries
      3. Fencing operations
      4. Fencing replies
      5. Fencing History
    3. Scheduler
      1. Challenges
      2. Cluster Working Set
      3. Resources
      4. Nodes
      5. Actions
      6. Colocations
      7. Orderings
  8. C Development Helpers
    1. Refactoring
    2. Sanitizers
    3. Unit Testing
      1. Organization
      2. Adding a test
      3. Writing the test
      4. Assertions
      5. Running
    4. Code Coverage
    5. Debugging
      1. gdb
  9. Evolution of the project
    1. Origin in Heartbeat project
      1. Influence of Heartbeat on Pacemaker
    2. Notable Restructuring Steps in the Codebase
  10. Glossary