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