# 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 guarantee certain jobs start"
author          "chromium-os-dev@chromium.org"

# This job is used as a failsafe to guarantee certain jobs start
# even if we fail to get a login screen.
#
# To improve boot performance, a variety of important jobs are
# deliberately delayed until after the Chrome login screen is
# presented.  By design, the services aren't needed right away, but
# in test and debug environments, if Chrome fails to come up,
# important facilities needed to debug the failure (such as
# alternate VT consoles and ssh access) could fail to start.  This
# job provides the event that those critical jobs should depend on
# for starting.
#
# Standard usage:
#   start on starting failsafe
#   stop on stopping failsafe
# Jobs that normally terminate in a bounded time (i.e. don't use
# 'respawn') should omit the 'stop on' stanza.
#
# Note that this job can start on either of two events, both of
# which are expected to occur in a normal boot.  To avoid firing
# twice, this job starts once and doesn't terminate until system
# shutdown.
#
# Also note that since system-services and the failsafe-delay
# wait until boot-services have been started, jobs that start on
# failsafe can assume that boot-services are started.

start on starting system-services or stopped failsafe-delay
stop on stopping system-services

# Main process deliberately omitted
