PJLIB

PJLIB is an Open Source, small footprint framework library written in C for making scalable applications. It can be used in wide range of applications, from embedded systems, mobile applications, to high performance systems.

Key Features

  • Extreme Portability

    From 16-bit, 32-bit, to 64-bit, big or little endian, single or multi-processors, wide range of operating systems. With or without floating point support. Multi-threading or not. With/without ANSI LIBC. Currently known to run on these platforms:

    • Mobile platforms:

      • Android

      • iOS (iPhone, iPad, iPod Touch)

      • UWP and Windows Phone 8

      • BlackBerry 10

      • Symbian S60 3rd Edition

      • Windows Mobile

    • Desktop platforms:

      • MacOS X (Intel and powerpc)

      • Win32/x86 (Win95/98/ME, NT/2000/XP/2003, mingw)

      • Linux/x86, (user mode and as kernel module(!))

    • Embedded platforms:

      • Embedded Linux

      • WinCE

      • RTEMS (x86 and powerpc)

    • Others:

      • Solaris/ultra

      • Linux/alpha

  • Small in Size

    • Size around 100 KB.

  • Big in Performance

    • Everything is designed for highest performance.

  • No Dynamic Memory Allocations

    • alloc() is a O(1) operation.

    • no mutex is used inside alloc().

    • no free(). All chunks will be deleted when the pool is destroyed.

  • Rich Features

    • Operating system abstraction

    • Low and high level network I/O

    • Timer management

    • Rich data structures

    • Exception construct

    • Logging facility

    • Random and GUID generation

API Reference

Basic Types and Functions

Infrastructure

Data structure

Network

File

Memory Management

String & Unicode

String in PJLIB is non-zero terminated, and represented with pj_str_t. A full set of API is provided to manipulate such strings.

Multithreading and Concurrency

OS Abstraction

Time and Timer

Random and GUID

Application Microframework