Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
14b0b2d0
S
Startup Init Lite
项目概览
OpenHarmony
/
Startup Init Lite
大约 1 年 前同步成功
通知
3
Star
37
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Startup Init Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
14b0b2d0
编写于
9月 07, 2021
作者:
Z
zhong_ning
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enable log to kmsg
Signed-off-by:
N
zhong_ning
<
zhong_ning@hoperun.com
>
上级
c5789272
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
150 addition
and
97 deletion
+150
-97
services/include/device.h
services/include/device.h
+3
-2
services/log/init_log.c
services/log/init_log.c
+62
-43
services/log/init_log.h
services/log/init_log.h
+62
-40
services/src/device.c
services/src/device.c
+16
-9
services/src/main.c
services/src/main.c
+5
-1
ueventd/BUILD.gn
ueventd/BUILD.gn
+1
-1
ueventd/ueventd_device_handler.c
ueventd/ueventd_device_handler.c
+1
-1
未找到文件。
services/include/device.h
浏览文件 @
14b0b2d0
...
...
@@ -28,9 +28,10 @@ extern "C" {
#define DEV_RANDOM_MINOR 8
#define DEV_URANDOM_MINOR 9
void
MountBasicFs
();
void
CreateDeviceNode
();
void
MountBasicFs
(
void
);
void
CreateDeviceNode
(
void
);
int
MakeSocketDir
(
const
char
*
path
,
mode_t
mode
);
void
CloseStdio
(
void
);
#ifdef __cplusplus
#if __cplusplus
...
...
services/log/init_log.c
浏览文件 @
14b0b2d0
...
...
@@ -16,20 +16,19 @@
#include "init_log.h"
#include <errno.h>
#include <fcntl.h>
#ifdef OHOS_LITE
#include "hilog/log.h"
#endif
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#include "securec.h"
#define UNUSED(x) (void)(x)
#define MAX_FORMAT_SIZE 2048
#define MAX_LOG_SIZE 2048
#define UNUSED(x) \
do
{
\
(
void
)(
x
)
\
}
while
(
0
)
#define MAX_LOG_SIZE 1024
#define BASE_YEAR 1900
#define UNLIKELY(x) __builtin_expect(!!(x), 0)
static
InitLogLevel
g_logLevel
=
INIT_INFO
;
static
const
char
*
LOG_LEVEL_STR
[]
=
{
"DEBUG"
,
"INFO"
,
"WARNING"
,
"ERROR"
,
"FATAL"
};
...
...
@@ -47,63 +46,83 @@ void SetHiLogLevel(LogLevel logLevel)
g_hiLogLevel
=
logLevel
;
}
void
InitToHiLog
(
const
char
*
tag
,
LogLevel
logLevel
,
const
char
*
fmt
,
...)
void
InitToHiLog
(
LogLevel
logLevel
,
const
char
*
fmt
,
...)
{
if
(
logLevel
<
g_hiLogLevel
)
{
return
;
}
if
(
tag
==
NULL
)
{
tag
=
"Init"
;
}
va_list
list
;
va_start
(
list
,
fmt
);
char
tmpFmt
[
MAX_
FORMAT
_SIZE
];
if
(
vsnprintf_s
(
tmpFmt
,
MAX_
FORMAT_SIZE
,
MAX_FORMAT
_SIZE
-
1
,
fmt
,
list
)
==
-
1
)
{
char
tmpFmt
[
MAX_
LOG
_SIZE
];
if
(
vsnprintf_s
(
tmpFmt
,
MAX_
LOG_SIZE
,
MAX_LOG
_SIZE
-
1
,
fmt
,
list
)
==
-
1
)
{
va_end
(
list
);
return
;
}
(
void
)
HiLogPrint
(
LOG_CORE
,
logLevel
,
LOG_DOMAIN
,
tag
,
"%{public}s"
,
tmpFmt
);
(
void
)
HiLogPrint
(
LOG_CORE
,
logLevel
,
LOG_DOMAIN
,
INIT_LOG_TAG
,
"%{public}s"
,
tmpFmt
);
va_end
(
list
);
return
;
}
#endif
void
InitLog
(
const
char
*
tag
,
InitLogLevel
logLevel
,
const
char
*
fileName
,
int
line
,
const
char
*
fmt
,
...)
static
int
g_fd
=
-
1
;
void
OpenLogDevice
(
void
)
{
if
(
logLevel
<
g_logLevel
)
{
return
;
int
fd
=
open
(
"/dev/kmsg"
,
O_WRONLY
|
O_CLOEXEC
,
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IRGRP
);
if
(
fd
>=
0
)
{
g_fd
=
fd
;
}
if
(
tag
==
NULL
)
{
return
;
}
void
EnableDevKmsg
(
void
)
{
/* printk_devkmsg default value is ratelimit, We need to set "on" and remove the restrictions */
int
fd
=
open
(
"/proc/sys/kernel/printk_devkmsg"
,
O_WRONLY
|
O_CLOEXEC
,
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IRGRP
);
if
(
fd
<
0
)
{
return
;
}
time_t
second
=
time
(
0
);
struct
tm
*
t
=
localtime
(
&
second
);
if
(
t
==
NULL
)
{
printf
(
"time is NULL.
\n
"
);
char
*
kmsgStatus
=
"on"
;
write
(
fd
,
kmsgStatus
,
strlen
(
kmsgStatus
)
+
1
);
close
(
fd
);
fd
=
-
1
;
return
;
}
void
InitLog
(
InitLogLevel
logLevel
,
const
char
*
fileName
,
int
line
,
const
char
*
kLevel
,
const
char
*
fmt
,
...)
{
if
(
logLevel
<
g_logLevel
)
{
return
;
}
fprintf
(
stdout
,
"[%d-%d-%d %d:%d:%d][pid=%d][%s:%d][%s][%s] "
,
(
t
->
tm_year
+
BASE_YEAR
),
(
t
->
tm_mon
+
1
),
t
->
tm_mday
,
t
->
tm_hour
,
t
->
tm_min
,
t
->
tm_sec
,
getpid
(),
fileName
,
line
,
tag
,
LOG_LEVEL_STR
[
logLevel
]);
va_list
list
;
va_start
(
list
,
fmt
);
vfprintf
(
stdout
,
fmt
,
list
);
va_end
(
list
);
fflush
(
stdout
);
#if 0
int fd = open("/dev/kmsg", O_WRONLY | O_CLOEXEC | O_APPEND );
if (fd < 1) {
printf("xxxxxxxxxxxxxxx open failed. %d\n", errno);
if
(
UNLIKELY
(
g_fd
<
0
))
{
OpenLogDevice
();
if
(
g_fd
<
0
)
{
return
;
}
}
va_list
vargs
;
va_start
(
vargs
,
fmt
);
char
tmpFmt
[
MAX_LOG_SIZE
];
if
(
vsnprintf_s
(
tmpFmt
,
MAX_LOG_SIZE
,
MAX_LOG_SIZE
-
1
,
fmt
,
vargs
)
==
-
1
)
{
close
(
g_fd
);
g_fd
=
-
1
;
return
;
}
if (write(fd, logInfo, strlen(logInfo)) < -1) {
printf("xxxxxxxxxxxxxxx write failed.%d\n", errno);
close(fd);
char
logInfo
[
MAX_LOG_SIZE
];
if
(
snprintf_s
(
logInfo
,
MAX_LOG_SIZE
,
MAX_LOG_SIZE
-
1
,
"%s[pid=%d][%s:%d][%s][%s] %s"
,
kLevel
,
getpid
(),
fileName
,
line
,
INIT_LOG_TAG
,
LOG_LEVEL_STR
[
logLevel
],
tmpFmt
)
==
-
1
)
{
close
(
g_fd
);
g_fd
=
-
1
;
return
;
}
close(fd);
#endif
}
va_end
(
vargs
);
if
(
write
(
g_fd
,
logInfo
,
strlen
(
logInfo
))
<
0
)
{
close
(
g_fd
);
g_fd
=
-
1
;
}
return
;
}
services/log/init_log.h
浏览文件 @
14b0b2d0
...
...
@@ -34,6 +34,10 @@ typedef enum InitLogLevel {
INIT_FATAL
}
InitLogLevel
;
#ifdef LABEL
#define INIT_LOG_TAG LABEL
#endif
#ifndef INIT_LOG_TAG
#define INIT_LOG_TAG "Init"
#endif
...
...
@@ -42,58 +46,76 @@ typedef enum InitLogLevel {
#include "hilog/log.h"
#undef LOG_DOMAIN
#define
LOG_DOMAIN
0xD000719
#define
LOG_DOMAIN
0xD000719
#define INIT_LOGD(fmt, ...) InitToHiLog(
INIT_LOG_TAG,
LOG_DEBUG, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGI(fmt, ...) InitToHiLog(
INIT_LOG_TAG,
LOG_INFO, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGW(fmt, ...) InitToHiLog(
INIT_LOG_TAG,
LOG_WARN, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGE(fmt, ...) InitToHiLog(
INIT_LOG_TAG,
LOG_ERROR, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGF(fmt, ...) InitToHiLog(
INIT_LOG_TAG,
LOG_FATAL, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGD(fmt, ...) InitToHiLog(LOG_DEBUG, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGI(fmt, ...) InitToHiLog(LOG_INFO, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGW(fmt, ...) InitToHiLog(LOG_WARN, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGE(fmt, ...) InitToHiLog(LOG_ERROR, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define INIT_LOGF(fmt, ...) InitToHiLog(LOG_FATAL, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define STARTUP_LOGD(LABEL, fmt, ...) InitToHiLog(LABEL, LOG_DEBUG, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define STARTUP_LOGI(LABEL, fmt, ...) InitToHiLog(LABEL, LOG_INFO, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
#define STARTUP_LOGE(LABEL, fmt, ...) InitToHiLog(LABEL, LOG_ERROR, "%s : "fmt, (__FUNCTION__), ##__VA_ARGS__)
void
InitToHiLog
(
const
char
*
tag
,
LogLevel
logLevel
,
const
char
*
fmt
,
...);
void
InitToHiLog
(
LogLevel
logLevel
,
const
char
*
fmt
,
...);
void
SetHiLogLevel
(
LogLevel
logLevel
);
#else
#define __FILE_NAME__ (strrchr((__FILE__), '/') ? strrchr((__FILE__), '/') + 1 : (__FILE__))
#define INIT_LOGD(fmt, ...) InitLog(INIT_LOG_TAG, INIT_DEBUG, (__FILE_NAME__), (__LINE__), fmt"\n", ##__VA_ARGS__)
#define INIT_LOGI(fmt, ...) InitLog(INIT_LOG_TAG, INIT_INFO, (__FILE_NAME__), (__LINE__), fmt"\n", ##__VA_ARGS__)
#define INIT_LOGW(fmt, ...) InitLog(INIT_LOG_TAG, INIT_WARN, (__FILE_NAME__), (__LINE__), fmt"\n", ##__VA_ARGS__)
#define INIT_LOGE(fmt, ...) InitLog(INIT_LOG_TAG, INIT_ERROR, (__FILE_NAME__), (__LINE__), fmt"\n", ##__VA_ARGS__)
#define INIT_LOGF(fmt, ...) InitLog(INIT_LOG_TAG, INIT_FATAL, (__FILE_NAME__), (__LINE__), fmt"\n", ##__VA_ARGS__)
#define STARTUP_LOGD(LABEL, fmt, ...) InitLog(LABEL, INIT_DEBUG, (__FILE_NAME__), (__LINE__), fmt "\n", ##__VA_ARGS__)
#define STARTUP_LOGI(LABEL, fmt, ...) InitLog(LABEL, INIT_INFO, (__FILE_NAME__), (__LINE__), fmt "\n", ##__VA_ARGS__)
#define STARTUP_LOGE(LABEL, fmt, ...) InitLog(LABEL, INIT_ERROR, (__FILE_NAME__), (__LINE__), fmt "\n", ##__VA_ARGS__)
void
InitLog
(
const
char
*
tag
,
InitLogLevel
logLevel
,
const
char
*
fileName
,
int
line
,
const
char
*
fmt
,
...);
#define FILE_NAME (strrchr((__FILE__), '/') ? strrchr((__FILE__), '/') + 1 : (__FILE__))
#define INIT_LOGD(fmt, ...) InitLog(INIT_DEBUG, (FILE_NAME), (__LINE__), "<7>", fmt"\n", ##__VA_ARGS__)
#define INIT_LOGI(fmt, ...) InitLog(INIT_INFO, (FILE_NAME), (__LINE__), "<6>", fmt"\n", ##__VA_ARGS__)
#define INIT_LOGW(fmt, ...) InitLog(INIT_WARN, (FILE_NAME), (__LINE__), "<4>", fmt"\n", ##__VA_ARGS__)
#define INIT_LOGE(fmt, ...) InitLog(INIT_ERROR, (FILE_NAME), (__LINE__), "<3>", fmt"\n", ##__VA_ARGS__)
#define INIT_LOGF(fmt, ...) InitLog(INIT_FATAL, (FILE_NAME), (__LINE__), "<3>", fmt"\n", ##__VA_ARGS__)
#define STARTUP_LOGD(LABEL, fmt, ...) InitLog(INIT_DEBUG, (FILE_NAME), (__LINE__), "<7>", fmt "\n", ##__VA_ARGS__)
#define STARTUP_LOGI(LABEL, fmt, ...) InitLog(INIT_INFO, (FILE_NAME), (__LINE__), "<6>", fmt "\n", ##__VA_ARGS__)
#define STARTUP_LOGE(LABEL, fmt, ...) InitLog(INIT_ERROR, (FILE_NAME), (__LINE__), "<3>", fmt "\n", ##__VA_ARGS__)
void
InitLog
(
InitLogLevel
logLevel
,
const
char
*
fileName
,
int
line
,
const
char
*
kLevel
,
const
char
*
fmt
,
...);
void
SetLogLevel
(
InitLogLevel
logLevel
);
void
OpenLogDevice
(
void
);
void
EnableDevKmsg
(
void
);
#endif
#define INIT_ERROR_CHECK(ret, statement, format, ...) \
if
(
!
(
ret
))
{
\
INIT_LOGE
(
format
,
##
__VA_ARGS__
);
\
statement
;
\
}
#define INIT_CHECK(ret, statement) \
if
(
!
(
ret
))
{
\
statement
;
\
}
#define INIT_CHECK_RETURN_VALUE(ret, result) \
if
(
!
(
ret
))
{
\
return
result
;
\
}
#define INIT_CHECK_ONLY_RETURN(ret) \
if
(
!
(
ret
))
{
\
return
;
\
}
#define INIT_ERROR_CHECK(ret, statement, format, ...) \
do
{
\
if
(
!
(
ret
))
{
\
INIT_LOGE
(
format
,
##
__VA_ARGS__
);
\
statement
;
\
}
\
}
while
(
0
)
#define INIT_INFO_CHECK(ret, statement, format, ...) \
do
{
\
if
(
!
(
ret
))
{
\
INIT_LOGI
(
format
,
##
__VA_ARGS__
);
\
statement
;
\
}
\
}
while
(
0
)
#define INIT_CHECK(ret, statement) \
do
{
\
if
(
!
(
ret
))
{
\
statement
;
\
}
\
}
while
(
0
)
#define INIT_CHECK_RETURN_VALUE(ret, result) \
do
{
\
if
(
!
(
ret
))
{
\
return
result
;
\
}
\
}
while
(
0
)
#define INIT_CHECK_ONLY_RETURN(ret) \
do
{
\
if
(
!
(
ret
))
{
\
return
;
\
}
\
}
while
(
0
)
#ifdef __cplusplus
#if __cplusplus
...
...
services/src/device.c
浏览文件 @
14b0b2d0
...
...
@@ -15,45 +15,52 @@
#include "device.h"
#include <errno.h>
#include <fcntl.h>
#include <linux/major.h>
#include <stdio.h>
#include <string.h>
#include <sys/mount.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <unistd.h>
#include "init_log.h"
#define DEFAULT_RW_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
#define DEFAULT_NO_AUTHORITY_MODE (S_IWUSR | S_IRUSR)
#define STDERR_HANDLE 2
void
MountBasicFs
()
void
CloseStdio
(
void
)
{
int
fd
=
open
(
"/dev/null"
,
O_RDWR
|
O_CLOEXEC
);
if
(
fd
<
0
)
{
return
;
}
dup2
(
fd
,
0
);
dup2
(
fd
,
1
);
dup2
(
fd
,
STDERR_HANDLE
);
close
(
fd
);
}
void
MountBasicFs
(
void
)
{
if
(
mount
(
"tmpfs"
,
"/dev"
,
"tmpfs"
,
MS_NOSUID
,
"mode=0755"
)
!=
0
)
{
INIT_LOGE
(
"Mount tmpfs failed. %s"
,
strerror
(
errno
));
}
#ifndef __LITEOS__
if
(
mkdir
(
"/dev/pts"
,
S_IRWXU
|
S_IRGRP
|
S_IXGRP
|
S_IROTH
|
S_IXOTH
)
!=
0
)
{
INIT_LOGE
(
"mkdir /dev/pts failed. %s"
,
strerror
(
errno
));
}
if
(
mount
(
"devpts"
,
"/dev/pts"
,
"devpts"
,
0
,
NULL
)
!=
0
)
{
INIT_LOGE
(
"Mount devpts failed. %s"
,
strerror
(
errno
));
}
#endif
if
(
mount
(
"proc"
,
"/proc"
,
"proc"
,
0
,
"hidepid=2"
)
!=
0
)
{
INIT_LOGE
(
"Mount procfs failed. %s"
,
strerror
(
errno
));
}
if
(
mount
(
"sysfs"
,
"/sys"
,
"sysfs"
,
0
,
NULL
)
!=
0
)
{
INIT_LOGE
(
"Mount sysfs failed. %s"
,
strerror
(
errno
));
}
#ifndef __LITEOS__
if
(
mount
(
"selinuxfs"
,
"/sys/fs/selinux"
,
"selinuxfs"
,
0
,
NULL
)
!=
0
)
{
INIT_LOGE
(
"Mount selinuxfs failed. %s"
,
strerror
(
errno
));
}
#endif
}
void
CreateDeviceNode
()
void
CreateDeviceNode
(
void
)
{
if
(
mknod
(
"/dev/kmsg"
,
S_IFCHR
|
DEFAULT_NO_AUTHORITY_MODE
,
makedev
(
MEM_MAJOR
,
DEV_KMSG_MINOR
))
!=
0
)
{
INIT_LOGE
(
"Create /dev/kmsg device node failed. %s"
,
strerror
(
errno
));
...
...
services/src/main.c
浏览文件 @
14b0b2d0
...
...
@@ -63,13 +63,16 @@ static long TimeDiffMs(const struct timespec* tmBefore, const struct timespec* t
}
#endif // OHOS_DEBUG
int
main
(
int
argc
,
char
*
const
argv
[]
)
int
main
(
int
argc
,
char
*
*
argv
)
{
#ifndef OHOS_LITE
if
(
setenv
(
"UV_THREADPOOL_SIZE"
,
"1"
,
1
)
!=
0
)
{
INIT_LOGE
(
"set UV_THREADPOOL_SIZE error : %d."
,
errno
);
}
CloseStdio
();
OpenLogDevice
();
#endif
#ifdef OHOS_DEBUG
struct
timespec
tmEnter
;
...
...
@@ -90,6 +93,7 @@ int main(int argc, char * const argv[])
// 2. Mount basic filesystem and create common device node.
MountBasicFs
();
CreateDeviceNode
();
EnableDevKmsg
();
MakeSocketDir
(
"/dev/unix/socket/"
,
S_IRWXU
|
S_IRGRP
|
S_IXGRP
|
S_IROTH
|
S_IXOTH
);
#endif
...
...
ueventd/BUILD.gn
浏览文件 @
14b0b2d0
# Copyright (c) 202
0
Huawei Device Co., Ltd.
# Copyright (c) 202
1
Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
...
...
ueventd/ueventd_device_handler.c
浏览文件 @
14b0b2d0
...
...
@@ -284,7 +284,7 @@ static const char *GetDeviceName(char *sysPath, const char *deviceName)
}
}
}
else
{
// kernel does not report DEVNAME, which is possible. use base name
is
syspath instead.
// kernel does not report DEVNAME, which is possible. use base name
of
syspath instead.
devName
=
basename
(
sysPath
);
}
return
devName
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录