# 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-boot'/'udev' and 'boot-splash' depends on 'udev-trigger-early'.
start on stopped startup 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.
