Changeset 5084ad8 in rtems-libbsd


Ignore:
Timestamp:
Dec 4, 2013, 2:38:28 PM (6 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, c1e05b9ea378b2971e3d7704779112b4bc4296da, freebsd-9.3, 4a77611a223ea883fb548679b516d326a020d447
Children:
1153f0c
Parents:
d73edee
git-author:
Sebastian Huber <sebastian.huber@…> (12/04/13 14:38:28)
git-committer:
Sebastian Huber <sebastian.huber@…> (12/16/13 14:34:46)
Message:

Simplify linker set handling

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/kern/init_main.c

    rd73edee r5084ad8  
    123123 * If we want to register new sysinit types, add them to newsysinit.
    124124 */
    125 #endif /* __rtems__ */
    126125SET_DECLARE(sysinit_set, struct sysinit);
    127 #ifndef __rtems__
    128126struct sysinit **sysinit, **sysinit_end;
    129127struct sysinit **newsysinit, **newsysinit_end;
     
    163161        newsysinit_end = newset + count;
    164162}
     163#else /* __rtems__ */
     164RWSET_DECLARE(sysinit_set, struct sysinit);
    165165#endif /* __rtems__ */
    166166
  • freebsd/sys/sys/kernel.h

    rd73edee r5084ad8  
    256256                (ident)                                         \
    257257        };                                                      \
    258         DATA_SET(sysinit_set,SYSINIT_ENTRY_NAME(uniquifier))
     258        RWDATA_SET(sysinit_set,SYSINIT_ENTRY_NAME(uniquifier))
    259259#define SYSINIT_REFERENCE(uniquifier)                           \
    260260        extern struct sysinit SYSINIT_ENTRY_NAME(uniquifier);   \
  • freebsd/sys/sys/linker_set.h

    rd73edee r5084ad8  
    5252        __section("set_" #set) __used = &sym
    5353#else /* __rtems__ */
     54#define RTEMS_BSD_DEFINE_SET(set, ptype)                                \
     55        ptype * const __CONCAT(_bsd__start_set_,set)[0]                 \
     56        __section(".rtemsroset.bsd." __STRING(set) ".begin") __used;            \
     57        ptype * const __CONCAT(_bsd__stop_set_,set)[0]                  \
     58        __section(".rtemsroset.bsd." __STRING(set) ".end") __used
     59
    5460#define __MAKE_SET(set, sym)                                            \
    55         static void const * const __set_##set##_sym_##sym               \
    56         __section("_bsd_set_" #set) __used = &sym
     61        static const void * const __set_##set##_sym_##sym               \
     62        __section(".rtemsroset.bsd." __STRING(set) ".content") __used = &sym
     63
     64#define RTEMS_BSD_DEFINE_RWSET(set, ptype)                              \
     65        ptype *__CONCAT(_bsd__start_set_,set)[0]                        \
     66        __section(".rtemsrwset.bsd." __STRING(set) ".begin") __used;            \
     67        ptype *__CONCAT(_bsd__stop_set_,set)[0]                         \
     68        __section(".rtemsrwset.bsd." __STRING(set) ".end") __used
     69
     70#define __MAKE_RWSET(set, sym)                                          \
     71        static const void * __set_##set##_sym_##sym                     \
     72        __section(".rtemsrwset.bsd." __STRING(set) ".content") __used = &sym
    5773#endif /* __rtems__ */
    5874#else /* !__GNUCLIKE___SECTION */
     
    7187#define ABS_SET(set, sym)       __MAKE_SET(set, sym)
    7288#define SET_ENTRY(set, sym)     __MAKE_SET(set, sym)
     89#ifdef __rtems__
     90#define RWDATA_SET(set, sym)    __MAKE_RWSET(set, sym)
     91#endif /* __rtems__ */
    7392
    7493/*
     
    86105#else /* __rtems__ */
    87106#define SET_DECLARE(set, ptype)                                         \
    88         extern ptype *__CONCAT(_bsd__start_set_,set) [];                \
    89         extern ptype *__CONCAT(_bsd__stop_set_,set) []
     107        extern ptype * const __CONCAT(_bsd__start_set_,set)[];          \
     108        extern ptype * const __CONCAT(_bsd__stop_set_,set)[]
     109
     110#define RWSET_DECLARE(set, ptype)                                       \
     111        extern ptype *__CONCAT(_bsd__start_set_,set)[];                 \
     112        extern ptype *__CONCAT(_bsd__stop_set_,set)[]
    90113
    91114#define SET_BEGIN(set)                                                  \
  • rtemsbsd/rtems/rtems-bsd-init.c

    rd73edee r5084ad8  
    88
    99/*
    10  * Copyright (c) 2009, 2010 embedded brains GmbH.  All rights reserved.
     10 * Copyright (c) 2009-2013 embedded brains GmbH.  All rights reserved.
    1111 *
    1212 *  embedded brains GmbH
    13  *  Obere Lagerstr. 30
     13 *  Dornierstr. 4
    1414 *  82178 Puchheim
    1515 *  Germany
     
    5858SYSINIT_DRIVER_REFERENCE(nexus, root);
    5959
     60RTEMS_BSD_DEFINE_SET(modmetadata_set, struct mod_metadata);
     61RTEMS_BSD_DEFINE_SET(sysctl_set, struct sysctl_oid);
     62
     63RTEMS_BSD_DEFINE_RWSET(sysinit_set, struct sysinit);
     64
    6065/* In FreeBSD this is a local function */
    6166void mi_startup(void);
Note: See TracChangeset for help on using the changeset viewer.