fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi/*
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * This file and its contents are supplied under the terms of the
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * Common Development and Distribution License ("CDDL"), version 1.0.
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * You may only use this file in accordance with the terms of version
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * 1.0 of the CDDL.
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi *
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * A full copy of the text of the CDDL should have accompanied this
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * source. A copy of the CDDL is also available via the Internet at
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * http://www.illumos.org/license/CDDL.
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi */
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi/*
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * Copyright 2016 Joyent, Inc.
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi */
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi/*
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * Register functions with quick_exit() and verify that we honor the expected
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * function call value. We facilitate this by having a global integer and
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * modifying it to various values in subsequent functions. If we're not called
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi * in reverse order, we should spot the differences.
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi */
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi#include <stdlib.h>
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi#include <sys/debug.h>
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchistatic int qeo_val = 5;
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchistatic void
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchiqeo_fifth(void)
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi{
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY3S(qeo_val, ==, 5);
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi qeo_val--;
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi}
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchistatic void
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchiqeo_fourth(void)
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi{
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY3S(qeo_val, ==, 4);
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi qeo_val--;
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi}
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchistatic void
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchiqeo_third(void)
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi{
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY3S(qeo_val, ==, 3);
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi qeo_val--;
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi}
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchistatic void
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchiqeo_second(void)
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi{
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY3S(qeo_val, ==, 2);
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi qeo_val--;
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi}
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchistatic void
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchiqeo_first(void)
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi{
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY3S(qeo_val, ==, 1);
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi qeo_val--;
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi}
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchistatic void
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchiqeo_zero(void)
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi{
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY3S(qeo_val, ==, 0);
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi}
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchiint
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchimain(void)
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi{
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY0(at_quick_exit(qeo_zero));
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY0(at_quick_exit(qeo_first));
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY0(at_quick_exit(qeo_second));
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY0(at_quick_exit(qeo_third));
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY0(at_quick_exit(qeo_fourth));
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi VERIFY0(at_quick_exit(qeo_fifth));
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi quick_exit(0);
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi abort();
fc2512cfb727d49529d8ed99164db871f4829b73Robert Mustacchi}