Libpayload: Difference between revisions
Jump to navigation
Jump to search
Whiterocker (talk | contribs) m (Start libc coverage table) |
Whiterocker (talk | contribs) 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
I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
In case this is not legally possible: |