Skip to content

Commit b169619

Browse files
committed
Deduplicate mem functions
There are a number of functions which are copied between kernel, libc, and potentially boot too. mem*() functions are first such offenders. All this duplicate code will be moved to directory 'common'.
1 parent c89ae25 commit b169619

File tree

75 files changed

+119
-439
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+119
-439
lines changed

boot/arch/arm32/meson.build

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ boot_src = files(
6464
'src/main.c',
6565
'src/mm.c',
6666
'src/putchar.c',
67+
'../../../common/stdc/mem.c',
6768
'../../genarch/src/division.c',
68-
'../../generic/src/memstr.c',
6969
'../../generic/src/printf_core.c',
7070
'../../generic/src/vprintf.c',
7171
'../../generic/src/printf.c',

boot/arch/arm32/src/main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#include <arch/mm.h>
4040
#include <halt.h>
4141
#include <printf.h>
42-
#include <memstr.h>
42+
#include <mem.h>
4343
#include <version.h>
4444
#include <macros.h>
4545
#include <align.h>

boot/arch/arm64/meson.build

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ boot_src = files(
4747
'src/asm.S',
4848
'src/main.c',
4949
'src/relocate.c',
50+
'../../../common/stdc/mem.c',
5051
'../../genarch/src/efi.c',
5152
'../../generic/src/gzip.c',
5253
'../../generic/src/inflate.c',
5354
'../../generic/src/kernel.c',
54-
'../../generic/src/memstr.c',
5555
'../../generic/src/payload.c',
5656
'../../generic/src/printf.c',
5757
'../../generic/src/printf_core.c',

boot/arch/arm64/src/main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
#include <inflate.h>
4646
#include <kernel.h>
4747
#include <macros.h>
48-
#include <memstr.h>
48+
#include <mem.h>
4949
#include <payload.h>
5050
#include <printf.h>
5151
#include <putchar.h>

boot/arch/ia64/meson.build

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ boot_src = files(
4040
'src/pal.c',
4141
'src/pal_asm.S',
4242
'src/putchar.c',
43+
'../../../common/stdc/mem.c',
4344
'../../genarch/src/efi.c',
4445
'../../genarch/src/division.c',
4546
'../../generic/src/balloc.c',
46-
'../../generic/src/memstr.c',
4747
'../../generic/src/printf_core.c',
4848
'../../generic/src/vprintf.c',
4949
'../../generic/src/printf.c',

boot/arch/ia64/src/main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#include <arch/pal.h>
3737
#include <halt.h>
3838
#include <printf.h>
39-
#include <memstr.h>
39+
#include <mem.h>
4040
#include <version.h>
4141
#include <macros.h>
4242
#include <align.h>

boot/arch/mips32/meson.build

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ boot_src = files(
4141
'src/asm.S',
4242
'src/main.c',
4343
'src/putchar.c',
44+
'../../../common/stdc/mem.c',
4445
'../../genarch/src/division.c',
4546
'../../genarch/src/multiplication.c',
46-
'../../generic/src/memstr.c',
4747
'../../generic/src/printf_core.c',
4848
'../../generic/src/vprintf.c',
4949
'../../generic/src/printf.c',

boot/arch/mips32/src/main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include <arch/types.h>
3333
#include <halt.h>
3434
#include <printf.h>
35-
#include <memstr.h>
35+
#include <mem.h>
3636
#include <version.h>
3737
#include <macros.h>
3838
#include <align.h>

boot/arch/ppc32/meson.build

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ boot_src = files(
3636
'src/main.c',
3737
'src/ofw.c',
3838

39+
'../../../common/stdc/mem.c',
3940
'../../genarch/src/ofw.c',
4041
'../../genarch/src/ofw_tree.c',
4142
'../../genarch/src/division.c',
4243
'../../genarch/src/multiplication.c',
4344
'../../generic/src/balloc.c',
44-
'../../generic/src/memstr.c',
4545
'../../generic/src/printf_core.c',
4646
'../../generic/src/vprintf.c',
4747
'../../generic/src/printf.c',

boot/arch/ppc32/src/main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
#include <genarch/ofw_tree.h>
3535
#include <halt.h>
3636
#include <printf.h>
37-
#include <memstr.h>
37+
#include <mem.h>
3838
#include <version.h>
3939
#include <macros.h>
4040
#include <align.h>

boot/arch/riscv64/meson.build

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ boot_src = files(
3636
'src/main.c',
3737
'src/ucb.c',
3838
'src/putchar.c',
39-
'../../generic/src/memstr.c',
39+
40+
'../../../common/stdc/mem.c',
4041
'../../generic/src/printf_core.c',
4142
'../../generic/src/vprintf.c',
4243
'../../generic/src/printf.c',

boot/arch/sparc64/meson.build

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ boot_src = files(
3636
'src/main.c',
3737
'src/ofw.c',
3838

39+
'../../../common/stdc/mem.c',
3940
'../../genarch/src/ofw.c',
4041
'../../genarch/src/ofw_tree.c',
4142
'../../generic/src/balloc.c',
42-
'../../generic/src/memstr.c',
4343
'../../generic/src/printf_core.c',
4444
'../../generic/src/vprintf.c',
4545
'../../generic/src/printf.c',

boot/arch/sparc64/src/main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#include <genarch/ofw_tree.h>
3636
#include <halt.h>
3737
#include <printf.h>
38-
#include <memstr.h>
38+
#include <mem.h>
3939
#include <version.h>
4040
#include <macros.h>
4141
#include <align.h>

boot/genarch/src/ofw_tree.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include <stddef.h>
3333
#include <str.h>
3434
#include <balloc.h>
35-
#include <memstr.h>
35+
#include <mem.h>
3636

3737
static char path[OFW_TREE_PATH_MAX_LEN + 1];
3838
static char name[OFW_TREE_PROPERTY_MAX_NAMELEN];

boot/generic/include/stdlib.h

Whitespace-only changes.

boot/generic/src/gzip.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include <stdint.h>
3232
#include <stddef.h>
3333
#include <errno.h>
34-
#include <memstr.h>
34+
#include <mem.h>
3535
#include <byteorder.h>
3636
#include <gzip.h>
3737
#include <inflate.h>

boot/generic/src/inflate.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
#include <stddef.h>
6969
#include <stdint.h>
7070
#include <errno.h>
71-
#include <memstr.h>
71+
#include <mem.h>
7272
#include <inflate.h>
7373

7474
/** Maximum bits in the Huffman code */

boot/generic/src/memstr.c

-123
This file was deleted.

boot/generic/src/payload.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#include <tar.h>
3636
#include <gzip.h>
3737
#include <stdbool.h>
38-
#include <memstr.h>
38+
#include <mem.h>
3939
#include <errno.h>
4040
#include <str.h>
4141
#include <halt.h>

boot/meson.build

+1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ if BUILD
7777
'genarch/include',
7878
'../abi/arch'/BARCH/'include',
7979
'../abi/include',
80+
'../common/include',
8081
)
8182

8283
boot_defs = [

uspace/lib/c/include/mem.h renamed to common/include/mem.h

+8
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@ extern void *memchr(const void *, int, size_t)
5454

5555
__C_DECLS_END;
5656

57+
#if !__STDC_HOSTED__
58+
#define memset(dst, val, cnt) __builtin_memset((dst), (val), (cnt))
59+
#define memcpy(dst, src, cnt) __builtin_memcpy((dst), (src), (cnt))
60+
#define memcmp(s1, s2, cnt) __builtin_memcmp((s1), (s2), (cnt))
61+
#define memmove(dst, src, cnt) __builtin_memmove((dst), (src), (cnt))
62+
#define memchr(s, c, cnt) __builtin_memchr((s), (c), (cnt))
63+
#endif
64+
5765
#endif
5866

5967
/** @}

boot/generic/include/memstr.h renamed to common/stdc/cc.h

+21-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2001-2004 Jakub Jermar
2+
* Copyright (c) 2013 Vojtech Horky
33
* All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without
@@ -26,22 +26,31 @@
2626
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727
*/
2828

29+
/** @addtogroup libc
30+
* @{
31+
*/
2932
/** @file
33+
* Macros related to used compiler (such as GCC-specific attributes).
3034
*/
3135

32-
#ifndef BOOT_MEMSTR_H_
33-
#define BOOT_MEMSTR_H_
36+
#ifndef _LIBC_CC_H_
37+
#define _LIBC_CC_H_
38+
39+
#ifndef __clang__
40+
#define ATTRIBUTE_OPTIMIZE(opt) \
41+
__attribute__ ((optimize(opt)))
42+
#else
43+
#define ATTRIBUTE_OPTIMIZE(opt)
44+
#endif
3445

35-
#include <stddef.h>
46+
#define ATTRIBUTE_OPTIMIZE_NO_TLDP \
47+
ATTRIBUTE_OPTIMIZE("-fno-tree-loop-distribute-patterns")
3648

37-
extern void *memcpy(void *, const void *, size_t)
38-
__attribute__((nonnull(1, 2)))
39-
__attribute__((optimize("-fno-tree-loop-distribute-patterns")));
40-
extern void *memset(void *, int, size_t)
41-
__attribute__((nonnull(1)))
42-
__attribute__((optimize("-fno-tree-loop-distribute-patterns")));
43-
extern void *memmove(void *, const void *, size_t)
44-
__attribute__((nonnull(1, 2)));
49+
#ifdef CONFIG_LTO
50+
#define DO_NOT_DISCARD __attribute__ ((used))
51+
#else
52+
#define DO_NOT_DISCARD
53+
#endif
4554

4655
#endif
4756

0 commit comments

Comments
 (0)