Allow setting of the kernel heap size from the environment Similar to APP_HEAP_SIZE, allow setting of the kernel heap size via environment variables.
diff --git a/build.rs b/build.rs index 502c779..6d7920e 100644 --- a/build.rs +++ b/build.rs
@@ -10,9 +10,11 @@ static ENV_VAR: &str = "PLATFORM"; static FILE_NAME: &str = "platform"; static APP_HEAP_SIZE: &str = "APP_HEAP_SIZE"; + static KERNEL_HEAP_SIZE: &str = "KERNEL_HEAP_SIZE"; println!("cargo:rerun-if-env-changed={}", ENV_VAR); println!("cargo:rerun-if-env-changed={}", APP_HEAP_SIZE); + println!("cargo:rerun-if-env-changed={}", KERNEL_HEAP_SIZE); println!("cargo:rerun-if-changed={}", FILE_NAME); let platform_name = read_env_var(ENV_VAR).or_else(|| read_board_name_from_file(FILE_NAME)); @@ -26,11 +28,16 @@ ); } - if let Some(s) = read_env_var(APP_HEAP_SIZE) { - println!("cargo:rustc-env=APP_HEAP_SIZE={}", s); + set_default_env(APP_HEAP_SIZE, "1024"); + set_default_env(KERNEL_HEAP_SIZE, "1024"); +} + +fn set_default_env(env_var: &str, default: &str) { + if let Some(s) = read_env_var(env_var) { + println!("cargo:rustc-env={}={}", env_var, s); } else { // Just use a default of 1024 if nothing is passed in - println!("cargo:rustc-env=APP_HEAP_SIZE=1024"); + println!("cargo:rustc-env={}={}", env_var, default); } }
diff --git a/tools/flash.sh b/tools/flash.sh index 7d5dbbc..7f4c4ea 100755 --- a/tools/flash.sh +++ b/tools/flash.sh
@@ -9,6 +9,11 @@ exit 1 fi +if [ -z $KERNEL_HEAP_SIZE ]; then + echo "Set KERNEL_HEAP_SIZE to a value" + exit 1 +fi + case "${PLATFORM}" in "nrf52"|"nrf52840") tockloader_flags="--jlink --arch cortex-m4 --board nrf52dk --jtag-device nrf52" @@ -43,7 +48,7 @@ mkdir -p "${libtock_target_path}" cp "$1" "${elf_file_name}" -elf2tab -n "${artifact}" -o "${tab_file_name}" "${elf_file_name}" --stack 2048 --app-heap $APP_HEAP_SIZE --kernel-heap 1024 --protected-region-size=64 +elf2tab -n "${artifact}" -o "${tab_file_name}" "${elf_file_name}" --stack 2048 --app-heap $APP_HEAP_SIZE --kernel-heap $KERNEL_HEAP_SIZE --protected-region-size=64 if [ $tockload == "n" ]; then echo "Skipping flashing for platform \"${PLATFORM}\""