text: /*
   * Copyright (c) 2019 Nordic Semiconductor ASA
   *
   * SPDX-License-Identifier: Apache-2.0
   */
  
  #include <sys/__assert.h>
  #include <sys/printk.h>
  #include <zephyr.h>
  
  
  /**
   * @brief Assert Action Handler
   *
   * This routine implements the action to be taken when an assertion fails.
   *
   * System designers may wish to substitute this implementation to take other
   * actions, such as logging program counter, line number, debug information
   * to a persistent repository and/or rebooting the system.
   *
   * @param N/A
   */
  #ifdef CONFIG_ASSERT_NO_FILE_INFO
  __weak void assert_post_action(void)
  #else
  __weak void assert_post_action(const char *file, unsigned int line)
  #endif
  {
  #ifndef CONFIG_ASSERT_NO_FILE_INFO
  	ARG_UNUSED(file);
  	ARG_UNUSED(line);
  #endif
  
  #ifdef CONFIG_USERSPACE
  	/* User threads aren't allowed to induce kernel panics; generate
  	 * an oops instead.
  	 */
  	if (k_is_user_context()) {
  		k_oops();
  	}
  #endif
  
  	k_panic();
  }
  
  void assert_print(const char *fmt, ...)
  {
  	va_list ap;
  
  	va_start(ap, fmt);
  
  	vprintk(fmt, ap);
  
  	va_end(ap);
  }
  