Libpayload: Difference between revisions

From coreboot
Jump to navigation Jump to search
m (Start libc coverage table)
m (add place-holder for libpayload software licence info, add PD dedication for article)
Line 189: Line 189:
libpayload-gcc -o hello_payload hello_payload.c
libpayload-gcc -o hello_payload hello_payload.c
</pre>
</pre>
== Licenses ==
=== Libpaylod Software ===
TBD
=== This Article ===
{{PD-self}}

Revision as of 17:40, 7 March 2008

Overview

Currently a concept rather than shipping code, libpayload is a coreboot subproject that intends to provide a lightweight implementation of common and useful functions for coreboot payloads. The benefits of linking a coreboot payload against libpayload are:

  • payloads do not have to implement and maintain low-level code for I/O, common functions, etc,
  • payloads can be recompiled and deployed for CPU architectures supported by coreboot in the future,
  • libpayload functions tested and scrutinized outside payload development,
  • payloads themselves may be partly host-tested, e.g. against an emulation libpayload,
  • leads to the possibility of payloads using dynamic linking, reducing total payload footprint.

just give us a main() and a pocket full of dreams and we'll do the rest

Feature Wish List

  • Basics
    • coreboot services and structures (e.g. read CMOS, device tree)
    • subset of C-library functions (e.g. printf, puts, getch)
    • light ncurses from the Google Summer Of Code project
  • Fancies
    • directFB
    • TWIN

Libc Coverage

Function/Macro/Variable Status
assert.h
assert( ) (macro) no
ctype.h
int isalnum(int character) no
int isalpha(int character) no
int iscntrl(int character) no
int isdigit(int character) no
int isgraph(int character) no
int islower(int character) no
int isprint(int character) no
int ispunct(int character) no
int isspace(int character) no
int isupper(int character) no
int isxdigit(int character) no
errno.h
errno (global) no
float.h
limits.h
locale.h
char *setlocale(int category, const char *locale) no
struct lconv *localeconv(void) no
math.h
TODO
setjmp.h
TODO
signal.h
TODO
stdarg.h
TODO
stddef.h
TODO
stdio.h
TODO
stdlib.h
TODO
string.h
TODO
time.h
TODO


No Support
Partial Support
Full Support


Usage Example

hello_payload.c:

#include <stdio.h>

int main( void )
{
    printf( "Hello, world!\n" );
    return 0;
}

build:

libpayload-gcc -o hello_payload hello_payload.c

Licenses

Libpaylod Software

TBD

This Article

Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.