#!/bin/sh

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

set -e

mkdir -p $UI_LOG_DIR
ln -sf ui.$(date +%Y%m%d-%H%M%S) $UI_LOG_DIR/$UI_LOG_FILE

mkdir -p $CONTAINER_ROOT_DIR

# Create a top-level cpu cgroup for ui tasks.  This will be used to share cpu
# resources with tasks not managed by the UI.  Android will be placed in a
# parallel cgroup allowing priority to be given to one or the other depending
# on what the user is doing at the time.
if [ ! -d $UI_CPU_CGROUP_DIR ]; then
  mkdir -p ${UI_CPU_CGROUP_DIR}
fi

# Set up cgroups for chrome. We create two task groups, one for at most one
# foreground renderer and one for all the background renderers and set the
# background group to a very low priority. We specifically do not set it to
# the lowest "2" such that other processes like the update-engine can be even
# lower. The default value is 1024.
CHROME_CPU_CGROUP_DIR=/sys/fs/cgroup/cpu/chrome_renderers
if [ ! -d $CHROME_CPU_CGROUP_DIR ]; then
  mkdir -p ${CHROME_CPU_CGROUP_DIR}/foreground
  mkdir -p ${CHROME_CPU_CGROUP_DIR}/background
  echo "10" > ${CHROME_CPU_CGROUP_DIR}/background/cpu.shares
  chown -R chronos ${CHROME_CPU_CGROUP_DIR}
fi

# Set up the renderer freezer.  This is used during the suspend/resume cycle
# to freeze all the chrome renderers so that they don't take up a lot of power
# when the system comes up in dark resume
if [ ! -d $CHROME_FREEZER_CGROUP_DIR ]; then
  mkdir -p ${CHROME_FREEZER_CGROUP_DIR}
  mkdir -p "${CHROME_FREEZER_CGROUP_DIR}/to_be_frozen"
  chown -R chronos ${CHROME_FREEZER_CGROUP_DIR}
fi

# Set up a cgroup for containers(Android) started by session manager.  To
# start, limit the cpu shares of Android.  This will be reset to the default
# once the user clicks on an Android app.  Keeping the usage low prevents
# Android boot from slowing the login process.
CONTAINER_CGROUP_DIR=/sys/fs/cgroup/cpu/session_manager_containers
if [ -d $CONTAINER_CGROUP_DIR ]; then
  echo "32" > ${CONTAINER_CGROUP_DIR}/cpu.shares
  echo "-1" > ${CONTAINER_CGROUP_DIR}/cpu.cfs_quota_us
fi

if crossystem "cros_debug?1"; then
  # Set up the alt-syscall kernel module (on systems with kernel 3.14 or later)
  # to allow developer mode only system calls to be exposed to Android
  # containers (and potentially other containers) when the system is in
  # developer mode.
  DEVMODE_SYSCALL=/proc/sys/kernel/chromiumos/alt_syscall/allow_devmode_syscalls
  if [ -e "${DEVMODE_SYSCALL}" ]; then
    echo "1" > "${DEVMODE_SYSCALL}"
  fi

  # /proc/sys/kernel/perf_event_paranoid controls the use of kernel perf events
  # system by users without the CAP_SYS_ADMIN capability (see
  # kernel/Documentation/sysctl/kernel.txt for details). On systems with kernel
  # 3.14 or later, we enable CONFIG_SECURITY_PERF_EVENTS_RESTRICT in kernel,
  # which sets the default value of perf_event_paranoid to a more restrictive
  # level "3", instead of "1". As alt-syscall exposes perf_event_open() to
  # Android containers when the system is in developer mode, restore
  # perf_event_paranoid to the less restrictive level "1".
  PERF_EVENT_PARANOID=/proc/sys/kernel/perf_event_paranoid
  if [ -e "${PERF_EVENT_PARANOID}" ]; then
    echo "1" > "${PERF_EVENT_PARANOID}"
  fi
fi

# Set up the lucid sleep debug flag.  This file only exists on devices that
# use kernel 3.14.  When this sysfs entry is set to 1, the kernel will treat
# all resumes as dark resumes, relying on chrome and powerd to detect any user
# activity and to transition out of dark resume into regular resume.  Since we
# are currently unable to distinguish the source that woke up the system, this
# is a temporary workaround to allow for apps and extensions to test lucid
# sleep functionality.  Chrome will write 1 to this file only if the
# wake-on-packets flag is set.
#
# TODO(chirantan): Remove this once the firmware change and corresponding
# kernel change for querying the wakeup source is ready (crbug.com/414949).
DARK_RESUME_ALWAYS_FILE=/sys/power/dark_resume_always
if [ -e "${DARK_RESUME_ALWAYS_FILE}" ]; then
  chown chronos "${DARK_RESUME_ALWAYS_FILE}"
fi
