mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-11-29 04:04:02 +03:00
u3: makes loom length configurable
This commit is contained in:
parent
eec9354849
commit
c9a80338ee
@ -7,7 +7,7 @@
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
u3m_init(1 << 23);
|
||||
u3m_pave(c3y);
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
||||
/* u3m_init(): start the environment.
|
||||
*/
|
||||
void
|
||||
u3m_init();
|
||||
u3m_init(size_t len_i);
|
||||
|
||||
/* u3m_pave(): instantiate or activate image.
|
||||
*/
|
||||
|
@ -1042,6 +1042,11 @@ u3e_live(c3_o nuu_o, c3_c* dir_c)
|
||||
_ce_patch_delete();
|
||||
}
|
||||
|
||||
if ( u3P.nor_u.pgs_w + u3P.sou_u.pgs_w >= u3P.pag_w ) {
|
||||
fprintf(stderr, "boot: snapshot too big for loom\r\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// mark all pages dirty (pages in the snapshot will be marked clean)
|
||||
//
|
||||
u3e_foul();
|
||||
|
@ -1791,41 +1791,49 @@ _cm_free2(void* tox_v, size_t siz_i)
|
||||
/* u3m_init(): start the environment.
|
||||
*/
|
||||
void
|
||||
u3m_init(void)
|
||||
u3m_init(size_t len_i)
|
||||
{
|
||||
_cm_limits();
|
||||
_cm_signals();
|
||||
_cm_crypto();
|
||||
|
||||
/* Make sure GMP uses our malloc.
|
||||
*/
|
||||
// make sure GMP uses our malloc.
|
||||
//
|
||||
mp_set_memory_functions(u3a_malloc, _cm_realloc2, _cm_free2);
|
||||
|
||||
/* Map at fixed address.
|
||||
*/
|
||||
// make sure that [len_i] is a fully-addressible non-zero power of two.
|
||||
//
|
||||
if ( !len_i
|
||||
|| (len_i & (len_i - 1))
|
||||
|| (len_i < (1 << (u3a_page + 2)))
|
||||
|| (len_i > u3a_bytes) )
|
||||
{
|
||||
size_t len_i = u3a_bytes;
|
||||
void* map_v;
|
||||
u3l_log("loom: bad size: %zu\r\n", len_i);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
map_v = mmap((void *)u3_Loom,
|
||||
len_i,
|
||||
(PROT_READ | PROT_WRITE),
|
||||
(MAP_ANON | MAP_FIXED | MAP_PRIVATE),
|
||||
-1, 0);
|
||||
// map at fixed address.
|
||||
//
|
||||
{
|
||||
void* map_v = mmap((void *)u3_Loom,
|
||||
len_i,
|
||||
(PROT_READ | PROT_WRITE),
|
||||
(MAP_ANON | MAP_FIXED | MAP_PRIVATE),
|
||||
-1, 0);
|
||||
|
||||
if ( -1 == (c3_ps)map_v ) {
|
||||
void* dyn_v = mmap((void *)0,
|
||||
len_i,
|
||||
PROT_READ,
|
||||
MAP_ANON | MAP_PRIVATE,
|
||||
-1, 0);
|
||||
map_v = mmap((void *)0,
|
||||
len_i,
|
||||
(PROT_READ | PROT_WRITE),
|
||||
(MAP_ANON | MAP_PRIVATE),
|
||||
-1, 0);
|
||||
|
||||
u3l_log("boot: mapping %zuMB failed\r\n", len_i >> 20);
|
||||
u3l_log("see urbit.org/using/install/#about-swap-space"
|
||||
" for adding swap space\r\n");
|
||||
if ( -1 != (c3_ps)dyn_v ) {
|
||||
if ( -1 != (c3_ps)map_v ) {
|
||||
u3l_log("if porting to a new platform, try U3_OS_LoomBase %p\r\n",
|
||||
dyn_v);
|
||||
map_v);
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
@ -1855,7 +1863,7 @@ u3m_boot(c3_c* dir_c)
|
||||
|
||||
/* Activate the loom.
|
||||
*/
|
||||
u3m_init();
|
||||
u3m_init(u3a_bytes);
|
||||
|
||||
/* Activate the storage system.
|
||||
*/
|
||||
@ -1906,7 +1914,7 @@ u3m_boot_lite(void)
|
||||
{
|
||||
/* Activate the loom.
|
||||
*/
|
||||
u3m_init();
|
||||
u3m_init(u3a_bytes);
|
||||
|
||||
/* Activate tracing.
|
||||
*/
|
||||
|
@ -6,7 +6,7 @@
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
u3m_init(1 << 22);
|
||||
u3m_pave(c3y);
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ c3_w _ch_skip_slot(c3_w mug_w, c3_w lef_w);
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
u3m_init(1 << 26);
|
||||
u3m_pave(c3y);
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
u3m_init(1 << 23);
|
||||
u3m_pave(c3y);
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
u3m_init(1 << 20);
|
||||
u3m_pave(c3y);
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
u3m_init(1 << 20);
|
||||
u3m_pave(c3y);
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
u3m_init(1 << 20);
|
||||
u3m_pave(c3y);
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,10 @@
|
||||
static void
|
||||
_setup(void)
|
||||
{
|
||||
u3m_init();
|
||||
// XX at 1<<24, this succeeds on mac, but bail:exit's on linux.
|
||||
// investigate possible u3n_prog corruption
|
||||
//
|
||||
u3m_init(1 << 25);
|
||||
u3m_pave(c3y);
|
||||
u3e_init();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user