# Copyright (c) 2011 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     "Job to trigger boot services"
author          "chromium-os-dev@chromium.org"

# This job is used as a milestone marker for jobs that are run at
# system boot right after chromeos_startup.  Jobs should only depend
# on this milestone if the user's login experience could be hampered
# by the job's absence.  Jobs that can be delayed until after the
# login screen is presented should depend on 'system-services'
# instead.
#
# Standard usage:
#   start on started boot-services
#   stop on stopping boot-services
# Jobs that normally terminate in a bounded time (i.e. don't use
# 'respawn') should omit the 'stop on' stanza.
#
# Jobs that depend on boot-services as described above can assume
# the following:
#   * The dbus daemon is running; jobs are free to rely on dbus
#     services.
#   * The udev daemon is running; however, some hotplug events may
#     be delayed until after login screen.
#   * A basic filesystem corresponding to the requirements of the
#     Linux FHS is available.
#   * Messages can be logged via syslog based services.

# This 'start on' stanza assumes 'udev-trigger-early' depends
# on 'udev'.
start on stopped startup and stopped udev-trigger-early and stopped boot-splash
stop on stopping pre-shutdown

# We purposely omit the main process.  upstart marks us running
# on the first event, and ignores all subsequent events until we
# stop.
