Prom-libc

 
Copyright 2003 Ethan Benson. This page may not be copied without prior consent.
 

About

Prom-libc is a C library designed to run in boot firmware such as OpenFirmware. It is designed with portability in mind, both to alternate architectures and alternate firmware.
 
Prom-libc will provide most of the usual libc routines, where appropriate for a PROM environment, as well as a few services normally outside of the libc scope. One example of this is a filesystem infrastructure behind the standard open(2) function. This filesystem infrastructure will include read-only drivers for the popular filesystems such as ext2/3, and XFS.
 
The intention of this project is to create a usable C library and filesystem layer for use by bootloader programs, so that these common tasks are not reinvented poorly and haphazardly again and again in various bootloaders. This project should facilitate writing of clean, portable bootloaders.
 
This project was created in early 2002 as the first step in the 100% rewrite of the yaboot bootloader which will make full use of prom-libc. While the current focus is PowerPC/OpenFirmware (and Sparc/OpenFirmware though hardware access is needed), ports to other architectures/PROMs is certainly doable.
 
Prom-libc is Free software under the GPL.

Mailing Lists/IRC

Prom-libc currently just uses the yaboot-devel mailing list for technical and development discussion.
 
There exists an irc channel #yaboot on irc.freenode.net which prom-libc shares as well.

Development Status

Most/all of the main libc functions are already in place as well as a complete IEEE1275 (OpenFirmware) interface/port.
 
The main missing piece is is the filesystem infrastructure and implementation of open(2), read(2), write(2), lseek(2), and close(2). Other more minor tasks are some C startup routines for the 1275 port, a full test-suite, and some sort of helper scripts to aid linking of client programs with prom-libc.
 
Development help on the above tasks in needed due to lack of time, contact the yaboot-devel list if interested.

Source Code

Prom-libc is managed with the "GNU arch" revision control system, specifically the tla implementation.
 
Before doing any arch checkout you must first perform the following command:
$ tla register-archive erbenson@alaska.net--public \
        ftp://ftp.penguinppc.org/users/eb/arch/public
Or if you prefer http:
$ tla register-archive erbenson@alaska.net--public \
        http://ftp.penguinppc.org/users/eb/arch/public
You can checkout prom-libc with the following command:
$ tla get erbenson@alaska.net--public/prom-libc--devel \
        prom-libc
Or via rsync:
 
$ rsync -avz rsync.penguinppc.org::prom-libc prom-libc
 


 
Ethan Benson, erbenson@alaska.net
 
http://penguinppc.org/projects/prom-libc/
 
Last update: 2003-11-19