/*
<:copyright-BRCM:2016:DUAL/GPL:standard

   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
   All Rights Reserved

Unless you and Broadcom execute a separate written software license
agreement governing use of this software, this software is licensed
to you under the terms of the GNU General Public License version 2
(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
with the following added to such license:

   As a special exception, the copyright holders of this software give
   you permission to link this software with independent modules, and
   to copy and distribute the resulting executable under terms of your
   choice, provided that you also meet, for each linked independent
   module, the terms and conditions of the license of that module.
   An independent module is a module which is not derived from this
   software.  The special exception does not apply to any modifications
   of the software.

Not withstanding the above, under no circumstances may you combine
this software in any way with any other Broadcom software provided
under a license other than the GPL, without Broadcom's express prior
written consent.

:>
 */

/*
 * bcm_dev_log_linux.h
 *
 * Linux-specific code. User space
 */

#ifndef BCMOLT_DEV_LOG_LINUX_H_
#define BCMOLT_DEV_LOG_LINUX_H_

#include <bcmos_system.h>
#include <bcm_dev_log.h>

/** Linux-specific init */
bcmos_errno bcm_dev_log_linux_init(void);

/** Linux-specific cleanup */
void bcm_dev_log_linux_exit(void);

/*******************************************************************************************
 * Abstract: Set current log type for an ID
 *
 * \param[in]   log_id      Log id
 * \param[in]   log_type    Log type
 *
 * \returns 0=OK or error code <0
 ******************************************************************************************/
bcmos_errno bcm_dev_log_linux_id_set_type(dev_log_id log_id, bcm_dev_log_id_type log_type);

/*******************************************************************************************
 * Abstract: Set current log level for an ID
 *
 * \param[in]   log_id          Log id
 * \param[in]   log_level_print Print level
 * \param[in]   log_level_save  Save level
 *
 * \returns 0=OK or error code <0
 ******************************************************************************************/
bcmos_errno bcm_dev_log_linux_id_set_level(dev_log_id log_id, bcm_dev_log_level log_level_print, bcm_dev_log_level log_level_save);

#endif
