blob: 08adf6cadeae6aeffd0d6f7320d675c03c479b36 [file] [log] [blame]
# Copyright (c) 2012 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.
description "Chrome OS user interface"
author "chromium-os-dev@chromium.org"
# Note, the 'start on' line is modified by the chromeos-factoryinstall
# ebuild. Please do not change it without also changing that
# reference.
#
# This job's post-stop script depends on cryptohomed being running;
# cryptohomed in turn depends on chapsd and dbus-daemon. This job's
# stop condition uses a special stop job to keep those processes
# from terminating until after this job has cleaned up. See the
# pre-shutdown job for more details.
# NB: Respawning is now handled by ui-respawn.conf, as the logic is
# more complex than upstart was designed to handle.
start on started boot-services
stop on starting pre-shutdown
# Enables chrome to renice UI critical threads (higher priority),
# background threads (lower priority), and to set the priority of
# realtime threads to real time. The limit will be applied to
# session_manager and all the spawned processes.
limit nice 40 40
limit rtprio 10 10
# Extend the grace period given to the session_manager before upstart decides
# it's gone unresponsive on job termination and must be killed. Chrome gets 12s
# (configured below) to shut down on devices with HDDs, so give a cushion.
kill timeout 20 # In seconds.
# Uncomment line below to output to VT02
#console output
# Directory where session manager logs are written and prefix of files there.
env UI_LOG_DIR=/var/log/ui
env UI_LOG_FILE=ui.LATEST
# Directory where session manager sets up container roots
env CONTAINER_ROOT_DIR=/run/containers
# Directory for renderer freezer.
env CHROME_FREEZER_CGROUP_DIR=/sys/fs/cgroup/freezer/chrome_renderers
env UI_CPU_CGROUP_DIR=/sys/fs/cgroup/cpu/ui
pre-start exec /usr/share/cros/init/ui-pre-start
# This may be used to wrap the Chrome executable within another command
# instead of calling it directly. The flag's value will be split on whitespace
# into an absolute path and arguments, after which session_manager will add
# Chrome's arguments. For example:
#
# env CHROME_COMMAND_FLAG="--chrome-command=/usr/local/bin/strace /opt/google/chrome/chrome"
env CHROME_COMMAND_FLAG
exec session_manager \
"${CHROME_COMMAND_FLAG}" \
>"${UI_LOG_DIR}/${UI_LOG_FILE}" 2>&1
# Assign session_manager and children(chrome) processes to the ui cgroup created
# above. Default cpu.shares is 1024. Android processes will be adjusted against
# 1024.
post-start script
echo $(status | cut -f 4 -d ' ') > "${UI_CPU_CGROUP_DIR}/tasks"
end script
post-stop exec /usr/share/cros/init/ui-post-stop