string: move strdup() & strconcat() to lib/string.c
Move functions not available in PRE_RAM into seperate file. Makes it easier to share code between rom and ramstage. Change-Id: I0b9833fbf6742d110ee4bfc00cd650f219aebb2c Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.com> Reviewed-on: https://review.coreboot.org/c/31141 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
05532260ae
commit
9204355b4d
|
@ -23,6 +23,8 @@ void *memchr(const void *s, int c, size_t n);
|
|||
int snprintf(char *buf, size_t size, const char *fmt, ...);
|
||||
int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
|
||||
#endif
|
||||
char *strdup(const char *s);
|
||||
char *strconcat(const char *s1, const char *s2);
|
||||
|
||||
// simple string functions
|
||||
|
||||
|
@ -51,26 +53,6 @@ static inline char *strchr(const char *s, int c)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if !defined(__PRE_RAM__)
|
||||
static inline char *strdup(const char *s)
|
||||
{
|
||||
size_t sz = strlen(s) + 1;
|
||||
char *d = malloc(sz);
|
||||
memcpy(d, s, sz);
|
||||
return d;
|
||||
}
|
||||
|
||||
static inline char *strconcat(const char *s1, const char *s2)
|
||||
{
|
||||
size_t sz_1 = strlen(s1);
|
||||
size_t sz_2 = strlen(s2);
|
||||
char *d = malloc(sz_1 + sz_2 + 1);
|
||||
memcpy(d, s1, sz_1);
|
||||
memcpy(d + sz_1, s2, sz_2 + 1);
|
||||
return d;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Find a character in a string.
|
||||
*
|
||||
|
|
|
@ -118,6 +118,7 @@ ramstage-y += bootmem.c
|
|||
ramstage-y += fmap.c
|
||||
ramstage-y += memchr.c
|
||||
ramstage-y += memcmp.c
|
||||
ramstage-y += string.c
|
||||
ramstage-y += malloc.c
|
||||
smm-$(CONFIG_SMM_TSEG) += malloc.c
|
||||
ramstage-y += dimm_info_util.c
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
#include <string.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
char *strdup(const char *s)
|
||||
{
|
||||
size_t sz = strlen(s) + 1;
|
||||
char *d = malloc(sz);
|
||||
memcpy(d, s, sz);
|
||||
return d;
|
||||
}
|
||||
|
||||
char *strconcat(const char *s1, const char *s2)
|
||||
{
|
||||
size_t sz_1 = strlen(s1);
|
||||
size_t sz_2 = strlen(s2);
|
||||
char *d = malloc(sz_1 + sz_2 + 1);
|
||||
memcpy(d, s1, sz_1);
|
||||
memcpy(d + sz_1, s2, sz_2 + 1);
|
||||
return d;
|
||||
}
|
Loading…
Reference in New Issue