X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=payloads%2Flibpayload%2Finclude%2Flibpayload.h;h=f3da228933fce0f438c3bcc51da00fc26638403b;hb=857a7784497e887f7881e635dec31e3d53837d60;hp=060e6b1919c10c49481c3269add2a817ae83bf5b;hpb=4727c0744615d7b49c843197433937721ce9acd1;p=coreboot.git diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h index 060e6b191..f3da22893 100644 --- a/payloads/libpayload/include/libpayload.h +++ b/payloads/libpayload/include/libpayload.h @@ -43,14 +43,21 @@ #ifndef _LIBPAYLOAD_H #define _LIBPAYLOAD_H +#include +#include #include +#include +#include +#include +#include #include #include #include #include -#include -#include #include +#ifdef CONFIG_LAR +#include +#endif #define MIN(a,b) ((a) < (b) ? (a) : (b)) #define MAX(a,b) ((a) > (b) ? (a) : (b)) @@ -64,6 +71,8 @@ #define RAND_MAX 0x7fffffff +#define MAX_ARGC_COUNT 10 + /* * Payload information parameters - these are used to pass information * to the entity loading the payload. @@ -113,7 +122,7 @@ void rtc_read_clock(struct tm *tm); * @defgroup usb USB functions * @{ */ -int usb_initialize(void); +int usb_initialize(void); int usbhid_havechar(void); int usbhid_getchar(void); /** @} */ @@ -123,6 +132,9 @@ int usbhid_getchar(void); * @{ @} */ +extern void (*reset_handler)(void); +int add_reset_handler(void (*new_handler)(void)); + /** * @defgroup keyboard Keyboard functions * @ingroup input @@ -133,7 +145,6 @@ int keyboard_havechar(void); unsigned char keyboard_get_scancode(void); int keyboard_getchar(void); int keyboard_set_layout(char *country); -int keyboard_add_reset_handler(void (*new_handler)(void)); /** @} */ /** @@ -143,7 +154,7 @@ int keyboard_add_reset_handler(void (*new_handler)(void)); */ void serial_init(void); void serial_hardware_init(int port, int speed, int word_bits, int parity, int stop_bits); -void serial_putchar(unsigned char c); +void serial_putchar(unsigned int c); int serial_havechar(void); int serial_getchar(void); void serial_clear(void); @@ -190,7 +201,7 @@ int get_option(void *dest, char *name); * @{ */ void console_init(void); -int putchar(int c); +int putchar(unsigned int c); int puts(const char *s); int havekey(void); int getchar(void); @@ -198,28 +209,23 @@ int getchar_timeout(int *ms); extern int last_putchar; -#define havechar havekey -/** @} */ +struct console_input_driver; +struct console_input_driver { + struct console_input_driver *next; + int (*havekey) (void); + int (*getchar) (void); +}; -/** - * @defgroup ctype Character type functions - * @{ - */ -int isalnum(int c); -int isalpha(int c); -int isascii(int c); -int isblank(int c); -int iscntrl(int c); -int isdigit(int c); -int isgraph(int c); -int islower(int c); -int isprint(int c); -int ispunct(int c); -int isspace(int c); -int isupper(int c); -int isxdigit(int c); -int tolower(int c); -int toupper(int c); +struct console_output_driver; +struct console_output_driver { + struct console_output_driver *next; + void (*putchar) (unsigned int); +}; + +void console_add_output_driver(struct console_output_driver *out); +void console_add_input_driver(struct console_input_driver *in); + +#define havechar havekey /** @} */ /** @@ -229,16 +235,6 @@ int toupper(int c); unsigned short ipchksum(const void *ptr, unsigned long nbytes); /** @} */ -/** - * @defgroup malloc Memory allocation functions - * @{ - */ -void free(void *ptr); -void *malloc(size_t size); -void *calloc(size_t nmemb, size_t size); -void *realloc(void *ptr, size_t size); -void *memalign(size_t align, size_t size); -/** @} */ /** * @defgroup exec Execution functions @@ -261,36 +257,6 @@ u8 hex2bin(u8 h); void fatal(const char *msg) __attribute__ ((noreturn)); /** @} */ -/** - * @defgroup memory Memory manipulation functions - * @{ - */ -void *memset(void *s, int c, size_t n); -void *memcpy(void *dst, const void *src, size_t n); -void *memmove(void *dst, const void *src, size_t n); -int memcmp(const void *s1, const void *s2, size_t len); -/** @} */ - -/** - * @defgroup printf Print functions - * @{ - */ -int snprintf(char *str, size_t size, const char *fmt, ...); -int sprintf(char *str, const char *fmt, ...); -int vsnprintf(char *str, size_t size, const char *fmt, va_list ap); -int vsprintf(char *str, const char *fmt, va_list ap); -int printf(const char *fmt, ...); -int vprintf(const char *fmt, va_list ap); -/** @} */ - -/** - * @defgroup rand Random number generator functions - * @{ - */ -int rand_r(unsigned int *seed); -int rand(void); -void srand(unsigned int seed); -/** @} */ /** * @defgroup hash Hashing functions @@ -310,23 +276,6 @@ void SHA1Final(u8 digest[SHA1_DIGEST_LENGTH], SHA1_CTX *context); u8 *sha1(const u8 *data, size_t len, u8 *buf); /** @} */ -/** - * @defgroup string String functions - * @{ - */ -size_t strnlen(const char *str, size_t maxlen); -size_t strlen(const char *str); -int strcmp(const char *s1, const char *s2); -int strncmp(const char *s1, const char *s2, size_t maxlen); -char *strncpy(char *d, const char *s, size_t n); -char *strcpy(char *d, const char *s); -char *strncat(char *d, const char *s, size_t n); -char *strchr(const char *s, int c); -char *strdup(const char *s); -char *strstr(const char *h, const char *n); -char *strsep(char **stringp, const char *delim); -/** @} */ - /** * @defgroup time Time functions * @{ @@ -341,6 +290,7 @@ struct timeval { int gettimeofday(struct timeval *tv, void *tz); /** @} */ +#ifdef CONFIG_LAR /** * @defgroup lar LAR functions * @{ @@ -392,13 +342,19 @@ int lfverify(struct LAR *lar, const char *filename); struct LFILE *lfopen(struct LAR *lar, const char *filename); int lfread(void *ptr, size_t size, size_t nmemb, struct LFILE *stream); -#define SEEK_SET 0 /**< The seek offset is absolute. */ -#define SEEK_CUR 1 /**< The seek offset is against the current position. */ -#define SEEK_END 2 /**< The seek offset is against the end of the file. */ - int lfseek(struct LFILE *stream, long offset, int whence); int lfclose(struct LFILE *file); /** @} */ +#endif + +/** + * @defgroup info System information functions + * This module contains functions that return information about the system + * @{ + */ + +int sysinfo_have_multiboot(unsigned long *addr); +/** @} */ /** * @defgroup arch Architecture specific functions @@ -407,6 +363,7 @@ int lfclose(struct LFILE *file); * @{ */ int get_coreboot_info(struct sysinfo_t *info); +int get_multiboot_info(struct sysinfo_t *info); void lib_get_sysinfo(void); @@ -417,14 +374,6 @@ void udelay(unsigned int n); void mdelay(unsigned int n); void delay(unsigned int n); -#define abort() halt() /**< Alias for the halt() function */ - -/** - * Stop execution and halt the processor (this function does not return). - */ -void halt(void) __attribute__ ((noreturn)); -/** @} */ - /** * @defgroup readline Readline functions * This interface provides a simple implementation of the standard readline()