# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/zbi/kernel_cmdline.gni")

kernel_cmdline("blobfs.cache-eviction-policy--NEVER_EVICT") {
  args = [ "blobfs.cache-eviction-policy=NEVER_EVICT" ]
}

kernel_cmdline("console.shell--true") {
  args = [ "console.shell=true" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("console.shell--false") {
  args = [ "console.shell=false" ]
}

kernel_cmdline("devmgr.log-to-debuglog--true") {
  args = [ "devmgr.log-to-debuglog=true" ]
}

kernel_cmdline("devmgr.enable-ephemeral--true") {
  args = [ "devmgr.enable-ephemeral=true" ]
}

kernel_cmdline("devmgr.enable-ephemeral--false") {
  args = [ "devmgr.enable-ephemeral=false" ]
}

kernel_cmdline("kernel.bypass-debuglog--true") {
  args = [ "kernel.bypass-debuglog=true" ]
}

kernel_cmdline("kernel.enable-debugging-syscalls--true") {
  args = [ "kernel.enable-debugging-syscalls=true" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("kernel.enable-debugging-syscalls--false") {
  args = [ "kernel.enable-debugging-syscalls=false" ]
}

kernel_cmdline("kernel.enable-serial-syscalls--true") {
  args = [ "kernel.enable-serial-syscalls=true" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("kernel.enable-serial-syscalls--output-only") {
  args = [ "kernel.enable-serial-syscalls=output-only" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("kernel.enable-serial-syscalls--false") {
  args = [ "kernel.enable-serial-syscalls=false" ]
}

kernel_cmdline("kernel.halt-on-panic--true") {
  args = [ "kernel.halt-on-panic=true" ]
}

kernel_cmdline("kernel.oom.behavior--jobkill") {
  args = [ "kernel.oom.behavior=jobkill" ]
}

kernel_cmdline("kernel.oom.behavior--reboot") {
  args = [ "kernel.oom.behavior=reboot" ]
}

kernel_cmdline("kernel.render-dlog-to-crashlog--true") {
  args = [ "kernel.render-dlog-to-crashlog=true" ]
}

kernel_cmdline("kernel.serial--none") {
  args = [ "kernel.serial=none" ]
}

kernel_cmdline("netsvc.all-features--true") {
  args = [ "netsvc.all-features=true" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("netsvc.disable--false") {
  args = [ "netsvc.disable=false" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("netsvc.disable--true") {
  args = [ "netsvc.disable=true" ]
}

kernel_cmdline("virtcon.hide-on-boot") {
  args = [ "virtcon.hide-on-boot" ]
}

kernel_cmdline("virtcon.disable--true") {
  args = [ "virtcon.disable=true" ]
}

kernel_cmdline("virtcon.keep-log-visible--true") {
  args = [ "virtcon.keep-log-visible=true" ]
}

kernel_cmdline("virtcon.rounded-corners--true") {
  args = [ "virtcon.rounded_corners=true" ]
}

kernel_cmdline("virtcon.display-rotation--90") {
  args = [ "virtcon.display_rotation=90" ]
}

kernel_cmdline("virtcon.display-rotation--270") {
  args = [ "virtcon.display_rotation=270" ]
}

kernel_cmdline("virtcon.boot-animation--true") {
  args = [ "virtcon.boot_animation=true" ]
}

kernel_cmdline("virtcon.dpi--240-360-480") {
  args = [ "virtcon.dpi=240,360,480" ]
}

kernel_cmdline("virtcon.buffer-count--2") {
  args = [ "virtcon.buffer_count=2" ]
}

kernel_cmdline("ktrace.grpmask-0") {
  args = [ "ktrace.grpmask=0" ]
}

kernel_cmdline("kernel_active_aging_2_15_2") {
  args = [
    "kernel.page-scanner.min-aging-interval=2",
    "kernel.page-scanner.max-aging-interval=15",
    "kernel.page-scanner.active-ratio-multiplier=2",
  ]
}

# Should only be visible on x64.
if (target_cpu == "x64") {
  kernel_cmdline("kernel.serial--legacy") {
    args = [ "kernel.serial=legacy" ]
    deps = [ "//build/validate:non_production_tag" ]
  }
}
