131 lines
3.2 KiB
C
131 lines
3.2 KiB
C
/*
|
||
* Copyright (c) Hisilicon Technologies Co., Ltd. 2020-2020. All rights reserved.
|
||
* Description: oam main implementation.(non-rom).
|
||
* Author: Hisilicon
|
||
* Create: 2020-08-04
|
||
*/
|
||
|
||
/* 头文件包含 */
|
||
#include "oam_main.h"
|
||
#include "hi_types_base.h"
|
||
#include "securec.h"
|
||
|
||
#ifdef __cplusplus
|
||
#if __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
#endif
|
||
|
||
/* 全局变量定义 */
|
||
static struct kobject *g_sysfs_hi110x_oam = HI_NULL;
|
||
hi_u32 g_level_log = 2;
|
||
|
||
/* 函数实现 */
|
||
hi_u32 oam_get_log_level(hi_void)
|
||
{
|
||
return g_level_log;
|
||
}
|
||
|
||
/*****************************************************************************
|
||
功能描述 : OAM模块初始化总入口,包含OAM模块内部所有特性的初始化。
|
||
返 回 值 : 初始化返回值,成功或失败原因
|
||
*****************************************************************************/
|
||
static ssize_t log_level_show(struct kobject *kobj,
|
||
struct kobj_attribute *attr, char *buf)
|
||
{
|
||
if (buf == HI_NULL) {
|
||
return -HI_FAILURE;
|
||
}
|
||
|
||
return snprintf_s(buf, PAGE_SIZE, PAGE_SIZE - 1, "loglevel: \n"
|
||
" 0 close log \n"
|
||
" 1 ERROR \n"
|
||
" 2 WARN \n"
|
||
" 3 INFO \n");
|
||
}
|
||
|
||
STATIC ssize_t store_log_level_set(void *dev, struct kobj_attribute *attr, const char *buf, size_t count)
|
||
{
|
||
hi_s32 input;
|
||
if (buf == HI_NULL) {
|
||
return -HI_FAILURE;
|
||
}
|
||
|
||
input = oal_atoi(buf);
|
||
if (input < 0 || input > 5) { /* input must range [0 5] */
|
||
return -HI_FAILURE;
|
||
}
|
||
|
||
g_level_log = (hi_u32)input;
|
||
return count;
|
||
}
|
||
|
||
STATIC struct kobj_attribute g_oam_host_log_attr =
|
||
__ATTR(loglevel, 0664, (void *)log_level_show, (void *)store_log_level_set); /* mode 0664 */
|
||
|
||
static struct attribute *g_oam_log_attrs[] = {
|
||
&g_oam_host_log_attr.attr,
|
||
#ifdef _SDIO_TEST
|
||
&oam_sdio_test_attr.attr,
|
||
#endif
|
||
NULL
|
||
};
|
||
|
||
static struct attribute_group g_oam_state_group = {
|
||
.attrs = g_oam_log_attrs,
|
||
};
|
||
|
||
hi_s32 oam_user_ctrl_init(void)
|
||
{
|
||
hi_s32 ret;
|
||
g_sysfs_hi110x_oam = kobject_create_and_add("hi3881_debug", HI_NULL);
|
||
if (g_sysfs_hi110x_oam == HI_NULL) {
|
||
printk("kobject_create_and_add fail!ret=%d", -ENOMEM);
|
||
return -ENOMEM;
|
||
}
|
||
|
||
ret = sysfs_create_group(g_sysfs_hi110x_oam, &g_oam_state_group);
|
||
if (ret) {
|
||
printk("sysfs_create_group fail!ret=%d", ret);
|
||
}
|
||
return ret;
|
||
}
|
||
|
||
static hi_s32 oam_user_ctrl_exit(hi_void)
|
||
{
|
||
if (g_sysfs_hi110x_oam) {
|
||
sysfs_remove_group(g_sysfs_hi110x_oam, &g_oam_state_group);
|
||
kobject_put(g_sysfs_hi110x_oam);
|
||
}
|
||
return HI_SUCCESS;
|
||
}
|
||
|
||
hi_s32 oam_main_init(hi_void)
|
||
{
|
||
hi_s32 ret = oam_user_ctrl_init();
|
||
if (ret != HI_SUCCESS) {
|
||
return ret;
|
||
}
|
||
oam_warning_log0("oam_main_init SUCCESSFULLY");
|
||
return HI_SUCCESS;
|
||
}
|
||
|
||
/*****************************************************************************
|
||
功能描述 : OAM模块卸载
|
||
返 回 值 : 模块卸载返回值,成功或失败原因
|
||
*****************************************************************************/
|
||
hi_void oam_main_exit(hi_void)
|
||
{
|
||
hi_s32 ret = oam_user_ctrl_exit();
|
||
if (ret != HI_SUCCESS) {
|
||
oam_warning_log0("oam_main_exit:: oam_user_ctrl_exit fail!");
|
||
}
|
||
return;
|
||
}
|
||
|
||
#ifdef __cplusplus
|
||
#if __cplusplus
|
||
}
|
||
#endif
|
||
#endif
|