rtems_bsd_initialize() should initialize the bare minimum. Update #4475. --- freebsd/sys/kern/vfs_bio.c | 24 ++++++++++++++++++- .../machine/rtems-bsd-kernel-namespace.h | 1 - rtemsbsd/rtems/rtems-kernel-init.c | 20 ---------------- 3 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/freebsd/sys/kern/vfs_bio.c b/freebsd/sys/kern/vfs_bio.c index 7be96690..594f878c 100644 --- a/freebsd/sys/kern/vfs_bio.c +++ b/freebsd/sys/kern/vfs_bio.c @@ -95,7 +95,14 @@ __FBSDID("$FreeBSD$"); #include <rtems/bsd/local/opt_swap.h> #ifdef __rtems__ +#include <rtems/malloc.h> +#include <rtems/bsd/bsd.h> + +#include <machine/rtems-bsd-page.h> + int bio_transient_maxcnt = 1024; +long maxbcache; +static caddr_t unmapped_base; #endif /* __rtems__ */ static MALLOC_DEFINE(M_BIOBUF, "biobuf", "BIO buffer"); @@ -1201,7 +1208,6 @@ bufinit(void) #ifndef __rtems__ unmapped_buf = (caddr_t)kva_alloc(MAXPHYS); #else /* __rtems__ */ - extern caddr_t unmapped_base; unmapped_buf = (caddr_t)unmapped_base; #endif /* __rtems__ */ @@ -1332,6 +1338,22 @@ bufinit(void) bufdefragcnt = counter_u64_alloc(M_WAITOK); bufkvaspace = counter_u64_alloc(M_WAITOK); } +#ifdef __rtems__ +static void +vfs_bio_init(void *dummy) +{ + + maxbcache = rtems_bsd_get_allocator_domain_size( + RTEMS_BSD_ALLOCATOR_DOMAIN_BIO); + unmapped_base = (caddr_t)rtems_heap_allocate_aligned_with_boundary( + maxbcache, CACHE_LINE_SIZE, 0); + BSD_ASSERT(unmapped_base != NULL); + kern_vfs_bio_buffer_alloc(unmapped_base, maxbcache); + bufinit(); + vm_pager_bufferinit(); +} +SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, vfs_bio_init, NULL); +#endif /* __rtems__ */ #ifdef INVARIANTS static inline void diff --git a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h index 9a7b0c09..0b5fa321 100644 --- a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h +++ b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h @@ -6381,7 +6381,6 @@ #define uma_zone_set_zinit _bsd_uma_zone_set_zinit #define uma_zsecond_create _bsd_uma_zsecond_create #define uma_zwait _bsd_uma_zwait -#define unmapped_base _bsd_unmapped_base #define unmapped_buf _bsd_unmapped_buf #define unmapped_buf_allowed _bsd_unmapped_buf_allowed #define unp_copy_peercred _bsd_unp_copy_peercred diff --git a/rtemsbsd/rtems/rtems-kernel-init.c b/rtemsbsd/rtems/rtems-kernel-init.c index 9b24ba6d..af563c81 100644 --- a/rtemsbsd/rtems/rtems-kernel-init.c +++ b/rtemsbsd/rtems/rtems-kernel-init.c @@ -67,7 +67,6 @@ #include <limits.h> #include <rtems/bsd/bsd.h> #include <rtems/libio_.h> -#include <rtems/malloc.h> #include <uuid/uuid.h> SYSINIT_REFERENCE(configure1); @@ -108,8 +107,6 @@ sbintime_t tc_tick_sbt; int tc_precexp; int maxproc; int ngroups_max; -caddr_t unmapped_base; -long maxbcache; struct sx allproc_lock; struct vmem *rtems_bsd_transient_arena; int nbuf; /* The number of buffer headers */ @@ -128,15 +125,6 @@ SYSCTL_INT(_kern_smp, OID_AUTO, maxid, CTLFLAG_RD | CTLFLAG_CAPRD, SYSCTL_INT(_kern_smp, OID_AUTO, maxcpus, CTLFLAG_RD | CTLFLAG_CAPRD, &maxid_maxcpus, 0, "Max number of CPUs that the system was compiled for."); -static void -cpu_startup(void *dummy) -{ - kern_vfs_bio_buffer_alloc(unmapped_base, maxbcache); - bufinit(); - vm_pager_bufferinit(); -} -SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL); - static struct filedesc p_fd = { .fd_cmask = CMASK }; @@ -211,14 +199,6 @@ rtems_bsd_initialize(void) maxproc = 16; ngroups_max = 4; - maxbcache = rtems_bsd_get_allocator_domain_size( - RTEMS_BSD_ALLOCATOR_DOMAIN_BIO); - unmapped_base = (caddr_t)rtems_heap_allocate_aligned_with_boundary( - maxbcache, CACHE_LINE_SIZE, 0); - if (unmapped_base == NULL) { - return RTEMS_UNSATISFIED; - } - mkdir("/etc", S_IRWXU | S_IRWXG | S_IRWXO); sc = rtems_timer_initiate_server(rtems_bsd_get_task_priority(name), -- 2.35.3 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel