Changeset b169619 in mainline for kernel/generic


Ignore:
Timestamp:
2023-10-27T17:38:32Z (2 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master, topic/msim-upgrade, topic/simplify-dev-export
Children:
44e8541
Parents:
c89ae25
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-10-27 13:19:20)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-10-27 17:38:32)
Message:

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'.

Location:
kernel/generic
Files:
1 added
2 deleted
21 edited
1 moved

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/cc.h

    rc89ae25 rb169619  
    3838
    3939#ifndef __clang__
    40 #define ATTRIBUTE_OPTIMIZE(opt) \
    41         __attribute__ ((optimize(opt)))
    4240#define ATTRIBUTE_USED \
    4341        __attribute__ ((used))
    4442#else
    45 #define ATTRIBUTE_OPTIMIZE(opt)
    4643#define ATTRIBUTE_USED
    4744#endif
  • kernel/generic/include/cpu/cpu_mask.h

    rc89ae25 rb169619  
    3737#include <cpu.h>
    3838#include <config.h>
    39 #include <lib/memfnc.h>
     39#include <memw.h>
    4040
    4141/** Iterates over all cpu id's whose bit is included in the cpu mask.
  • kernel/generic/include/memw.h

    rc89ae25 rb169619  
    3838#include <stddef.h>
    3939#include <stdint.h>
    40 #include <cc.h>
    4140
    42 #ifdef CONFIG_LTO
    43 #define DO_NOT_DISCARD ATTRIBUTE_USED
    44 #else
    45 #define DO_NOT_DISCARD
    46 #endif
    47 
    48 #define memset(dst, val, cnt)  __builtin_memset((dst), (val), (cnt))
    49 #define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    50 #define memcmp(s1, s2, cnt)    __builtin_memcmp((s1), (s2), (cnt))
     41#include <mem.h>
    5142
    5243extern void memsetb(void *, size_t, uint8_t)
     
    5445extern void memsetw(void *, size_t, uint16_t)
    5546    __attribute__((nonnull(1)));
    56 extern void *memmove(void *, const void *, size_t)
    57     __attribute__((nonnull(1, 2))) DO_NOT_DISCARD;
    5847
    5948#endif
  • kernel/generic/meson.build

    rc89ae25 rb169619  
    3636
    3737generic_src += files(
     38        'common/stdc/mem.c',
     39
    3840        'src/adt/bitmap.c',
    3941        'src/adt/hash_table.c',
     
    7375        'src/lib/halt.c',
    7476        'src/lib/mem.c',
    75         'src/lib/memfnc.c',
    7677        'src/lib/ra.c',
    7778        'src/lib/rd.c',
  • kernel/generic/src/cpu/cpu.c

    rc89ae25 rb169619  
    4545#include <config.h>
    4646#include <panic.h>
    47 #include <mem.h>
     47#include <memw.h>
    4848#include <adt/list.h>
    4949#include <stdio.h>
  • kernel/generic/src/ddi/ddi.c

    rc89ae25 rb169619  
    5454#include <align.h>
    5555#include <errno.h>
    56 #include <mem.h>
     56#include <memw.h>
    5757#include <trace.h>
    5858#include <bitops.h>
  • kernel/generic/src/ddi/irq.c

    rc89ae25 rb169619  
    4747#include <console/console.h>
    4848#include <interrupt.h>
    49 #include <mem.h>
     49#include <memw.h>
    5050#include <arch.h>
    5151
  • kernel/generic/src/ipc/ipc.c

    rc89ae25 rb169619  
    5454#include <arch.h>
    5555#include <proc/task.h>
    56 #include <mem.h>
     56#include <memw.h>
    5757#include <stdio.h>
    5858#include <console/console.h>
  • kernel/generic/src/ipc/sysipc.c

    rc89ae25 rb169619  
    3636#include <assert.h>
    3737#include <errno.h>
    38 #include <mem.h>
     38#include <memw.h>
    3939#include <ipc/ipc.h>
    4040#include <abi/ipc/methods.h>
  • kernel/generic/src/lib/gsort.c

    rc89ae25 rb169619  
    4141
    4242#include <gsort.h>
    43 #include <mem.h>
     43#include <memw.h>
    4444#include <stdlib.h>
    4545
  • kernel/generic/src/lib/mem.c

    rc89ae25 rb169619  
    4141 */
    4242
    43 #include <mem.h>
     43#include <memw.h>
    4444#include <typedefs.h>
    4545
     
    7777}
    7878
    79 /** Move memory block with possible overlapping.
    80  *
    81  * Copy cnt bytes from src address to dst address. The source
    82  * and destination memory areas may overlap.
    83  *
    84  * @param dst Destination address to copy to.
    85  * @param src Source address to copy from.
    86  * @param cnt Number of bytes to copy.
    87  *
    88  * @return Destination address.
    89  *
    90  */
    91 void *memmove(void *dst, const void *src, size_t cnt)
    92 {
    93         /* Nothing to do? */
    94         if (src == dst)
    95                 return dst;
    96 
    97         /* Non-overlapping? */
    98         if ((dst >= src + cnt) || (src >= dst + cnt))
    99                 return memcpy(dst, src, cnt);
    100 
    101         uint8_t *dp;
    102         const uint8_t *sp;
    103 
    104         /* Which direction? */
    105         if (src > dst) {
    106                 /* Forwards. */
    107                 dp = dst;
    108                 sp = src;
    109 
    110                 while (cnt-- != 0)
    111                         *dp++ = *sp++;
    112         } else {
    113                 /* Backwards. */
    114                 dp = dst + (cnt - 1);
    115                 sp = src + (cnt - 1);
    116 
    117                 while (cnt-- != 0)
    118                         *dp-- = *sp--;
    119         }
    120 
    121         return dst;
    122 }
    123 
    12479/** @}
    12580 */
  • kernel/generic/src/lib/ubsan.c

    rc89ae25 rb169619  
    1010#include <stddef.h>
    1111#include <panic.h>
    12 #include <mem.h>
     12#include <memw.h>
    1313
    1414#define PRINTF(...) printf(__VA_ARGS__)
  • kernel/generic/src/main/kinit.c

    rc89ae25 rb169619  
    6161#include <stdio.h>
    6262#include <log.h>
    63 #include <mem.h>
     63#include <memw.h>
    6464#include <console/console.h>
    6565#include <interrupt.h>
  • kernel/generic/src/mm/as.c

    rc89ae25 rb169619  
    6969#include <assert.h>
    7070#include <stdio.h>
    71 #include <mem.h>
     71#include <memw.h>
    7272#include <macros.h>
    7373#include <bitops.h>
  • kernel/generic/src/mm/backend_anon.c

    rc89ae25 rb169619  
    5151#include <typedefs.h>
    5252#include <align.h>
    53 #include <mem.h>
     53#include <memw.h>
    5454#include <arch.h>
    5555
  • kernel/generic/src/mm/backend_elf.c

    rc89ae25 rb169619  
    4848#include <genarch/mm/page_ht.h>
    4949#include <align.h>
    50 #include <mem.h>
     50#include <memw.h>
    5151#include <macros.h>
    5252#include <arch.h>
  • kernel/generic/src/mm/malloc.c

    rc89ae25 rb169619  
    3434#include <bitops.h>
    3535#include <mm/slab.h>
    36 #include <mem.h>
     36#include <memw.h>
    3737#include <main/main.h> // malloc_init()
    3838#include <macros.h>
  • kernel/generic/src/mm/slab.c

    rc89ae25 rb169619  
    106106#include <mm/slab.h>
    107107#include <adt/list.h>
    108 #include <mem.h>
     108#include <memw.h>
    109109#include <align.h>
    110110#include <mm/frame.h>
  • kernel/generic/src/printf/vsnprintf.c

    rc89ae25 rb169619  
    3636#include <printf/printf_core.h>
    3737#include <str.h>
    38 #include <mem.h>
     38#include <memw.h>
    3939#include <errno.h>
    4040
  • kernel/generic/src/proc/thread.c

    rc89ae25 rb169619  
    6262#include <arch/faddr.h>
    6363#include <atomic.h>
    64 #include <mem.h>
     64#include <memw.h>
    6565#include <stdio.h>
    6666#include <stdlib.h>
  • kernel/generic/src/synch/waitq.c

    rc89ae25 rb169619  
    5959#include <adt/list.h>
    6060#include <arch/cycle.h>
    61 #include <mem.h>
     61#include <memw.h>
    6262
    6363/** Initialize wait queue
  • kernel/generic/src/udebug/udebug_ops.c

    rc89ae25 rb169619  
    5151#include <udebug/udebug.h>
    5252#include <udebug/udebug_ops.h>
    53 #include <mem.h>
     53#include <memw.h>
    5454#include <stdlib.h>
    5555
Note: See TracChangeset for help on using the changeset viewer.