#
# Copyright (C) 2012 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

description     "System software update service"
author          "chromium-os-dev@chromium.org"

# N.B. The chromeos-factoryinstall ebuild edits the 'start on' line so as
# to disable update_engine in factory images.  Do not change this without
# also updating that reference.
start on starting system-services
stop on stopping system-services
# The default is 10 failures every 5 seconds, but even if we crash early, it is
# hard to catch that. So here we set the crash rate as 10 failures every 20
# seconds which will include the default and more.
respawn
respawn limit 10 20

expect fork

# Runs the daemon at low/idle IO priority so that updates don't
# impact system responsiveness.
exec ionice -c3 update_engine

# Put update_engine process in its own cgroup.
# Default cpu.shares is 1024.
post-start script
  pid=$(status | cut -f 4 -d ' ')

  cgroup_cpu_dir="/sys/fs/cgroup/cpu/${UPSTART_JOB}"
  mkdir -p "${cgroup_cpu_dir}"
  echo ${pid} > "${cgroup_cpu_dir}/tasks"

  # Assigns net_cls handle 1:1 to packets generated from update_engine. For
  # routing and tagging purposes, that value will be redefined in
  # patchpanel/routing_service.h .
  cgroup_net_cls_dir="/sys/fs/cgroup/net_cls/${UPSTART_JOB}"
  mkdir -p "${cgroup_net_cls_dir}"
  echo ${pid} > "${cgroup_net_cls_dir}/tasks"
  echo "0x10001" > "${cgroup_net_cls_dir}/net_cls.classid"
end script
