提交 6e8ad1b3 编写于 作者: 鸿蒙内核源码分析's avatar 鸿蒙内核源码分析

完善远程登录注释

    百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
    鸿蒙研究站 | http://weharmonyos.com (国内)
              | https://weharmony.github.io (国外)
    oschina | https://my.oschina.net/weharmony
    博客园 | https://www.cnblogs.com/weharmony/
    知乎 | https://www.zhihu.com/people/weharmonyos
    csdn | https://blog.csdn.net/kuangyufei
    51cto | https://harmonyos.51cto.com/column/34
    掘金 | https://juejin.cn/user/756888642000808
    公众号 | 鸿蒙研究站 (weharmonyos)
上级 ca08de32
...@@ -112,7 +112,7 @@ LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellCmdProcessMode(UINT16 mode) ...@@ -112,7 +112,7 @@ LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellCmdProcessMode(UINT16 mode)
return (UINT8 *)"ERROR"; return (UINT8 *)"ERROR";
} }
/// 获取调度方式的名称
LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellCmdSchedPolicy(UINT16 policy) LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellCmdSchedPolicy(UINT16 policy)
{ {
if (policy == LOS_SCHED_RR) { if (policy == LOS_SCHED_RR) {
...@@ -125,7 +125,7 @@ LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellCmdSchedPolicy(UINT16 policy) ...@@ -125,7 +125,7 @@ LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellCmdSchedPolicy(UINT16 policy)
return (UINT8 *)"ERROR"; return (UINT8 *)"ERROR";
} }
/// 获取状态名称
LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellProcessStatus(UINT16 status) LITE_OS_SEC_TEXT_MINOR UINT8 *OsShellProcessStatus(UINT16 status)
{ {
status = status & OS_PROCESS_STATUS_MASK; status = status & OS_PROCESS_STATUS_MASK;
......
...@@ -296,7 +296,7 @@ LosVmPage *OsVmVaddrToPage(VOID *ptr) ...@@ -296,7 +296,7 @@ LosVmPage *OsVmVaddrToPage(VOID *ptr)
return NULL; return NULL;
} }
/// 回收一定范围内的页框
STATIC INLINE VOID OsVmRecycleExtraPages(LosVmPage *page, size_t startPage, size_t endPage) STATIC INLINE VOID OsVmRecycleExtraPages(LosVmPage *page, size_t startPage, size_t endPage)
{ {
if (startPage >= endPage) { if (startPage >= endPage) {
......
...@@ -61,11 +61,11 @@ typedef struct { ...@@ -61,11 +61,11 @@ typedef struct {
} TELNTE_FIFO_S; } TELNTE_FIFO_S;
//远程登录设备结构体 //远程登录设备结构体
typedef struct { typedef struct {
INT32 clientFd; ///< 客户端文件句柄 INT32 clientFd; ///< 打开终端文件句柄
UINT32 id; UINT32 id;
BOOL eventPend; ///< 任务是否处于挂起 BOOL eventPend; ///< 任务是否处于挂起
EVENT_CB_S eventTelnet; ///< 远程登录事件 EVENT_CB_S eventTelnet; ///< 远程登录事件
wait_queue_head_t wait; wait_queue_head_t wait; ///< 等待队列
TELNTE_FIFO_S *cmdFifo; /* use a FIFO to store user's commands | 使用先进先出保存用户的命令*/ TELNTE_FIFO_S *cmdFifo; /* use a FIFO to store user's commands | 使用先进先出保存用户的命令*/
} TELNET_DEV_S; } TELNET_DEV_S;
......
...@@ -144,7 +144,7 @@ STATIC INT32 TelnetOpen(struct file *file) ...@@ -144,7 +144,7 @@ STATIC INT32 TelnetOpen(struct file *file)
TelnetLock(); TelnetLock();
telnetDev = GetTelnetDevByFile(file, TRUE); telnetDev = GetTelnetDevByFile(file, TRUE);//获取标准file私有数据
if (telnetDev == NULL) { if (telnetDev == NULL) {
TelnetUnlock(); TelnetUnlock();
return -1; return -1;
...@@ -152,7 +152,7 @@ STATIC INT32 TelnetOpen(struct file *file) ...@@ -152,7 +152,7 @@ STATIC INT32 TelnetOpen(struct file *file)
if (telnetDev->cmdFifo == NULL) { if (telnetDev->cmdFifo == NULL) {
wait = &telnetDev->wait; wait = &telnetDev->wait;
(VOID)LOS_EventInit(&telnetDev->eventTelnet); (VOID)LOS_EventInit(&telnetDev->eventTelnet);//初始化事件
g_event = &telnetDev->eventTelnet; g_event = &telnetDev->eventTelnet;
telnetDev->cmdFifo = (TELNTE_FIFO_S *)malloc(sizeof(TELNTE_FIFO_S)); telnetDev->cmdFifo = (TELNTE_FIFO_S *)malloc(sizeof(TELNTE_FIFO_S));
if (telnetDev->cmdFifo == NULL) { if (telnetDev->cmdFifo == NULL) {
...@@ -335,7 +335,7 @@ STATIC INT32 TelnetPoll(struct file *file, poll_table *table) ...@@ -335,7 +335,7 @@ STATIC INT32 TelnetPoll(struct file *file, poll_table *table)
TelnetUnlock(); TelnetUnlock();
return 0; return 0;
} }
//远程登录操作命令,一般供 Shell 使用 //远程登录操作命令
STATIC const struct file_operations_vfs g_telnetOps = { STATIC const struct file_operations_vfs g_telnetOps = {
TelnetOpen, TelnetOpen,
TelnetClose, TelnetClose,
......
...@@ -336,12 +336,12 @@ STATIC INT32 TelnetdInit(UINT16 port) ...@@ -336,12 +336,12 @@ STATIC INT32 TelnetdInit(UINT16 port)
inTelnetAddr.sin_family = AF_INET; inTelnetAddr.sin_family = AF_INET;
inTelnetAddr.sin_addr.s_addr = INADDR_ANY; inTelnetAddr.sin_addr.s_addr = INADDR_ANY;
inTelnetAddr.sin_port = htons(port); inTelnetAddr.sin_port = htons(port);
//绑定端口
if (bind(listenFd, (const struct sockaddr *)&inTelnetAddr, sizeof(struct sockaddr_in)) == -1) { if (bind(listenFd, (const struct sockaddr *)&inTelnetAddr, sizeof(struct sockaddr_in)) == -1) {
PRINT_ERR("TelnetdInit : bind error.\n"); PRINT_ERR("TelnetdInit : bind error.\n");
goto ERR_CLOSE_FD; goto ERR_CLOSE_FD;
} }
//监听端口数据
if (listen(listenFd, TELNET_LISTEN_BACKLOG) == -1) { if (listen(listenFd, TELNET_LISTEN_BACKLOG) == -1) {
PRINT_ERR("TelnetdInit : listen error.\n"); PRINT_ERR("TelnetdInit : listen error.\n");
goto ERR_CLOSE_FD; goto ERR_CLOSE_FD;
...@@ -609,15 +609,15 @@ STATIC INT32 TelnetdMain(VOID) ...@@ -609,15 +609,15 @@ STATIC INT32 TelnetdMain(VOID)
{ {
INT32 sock; INT32 sock;
INT32 ret; INT32 ret;
//1.初始化
sock = TelnetdInit(TELNETD_PORT);//创建 socket ,socket的本质就是打开了一个虚拟文件 sock = TelnetdInit(TELNETD_PORT);//1.初始化 创建 socket ,socket的本质就是打开了一个虚拟文件
if (sock == -1) { if (sock == -1) {
PRINT_ERR("telnet init error.\n"); PRINT_ERR("telnet init error.\n");
return -1; return -1;
} }
//2.注册
TelnetLock(); TelnetLock();
ret = TelnetedRegister();//注册驱动程序 /dev/telnet ,ops ret = TelnetedRegister();//2.注册驱动程序 /dev/telnet ,g_telnetOps g_telnetDev
TelnetUnlock(); TelnetUnlock();
if (ret != 0) { if (ret != 0) {
...@@ -625,9 +625,9 @@ STATIC INT32 TelnetdMain(VOID) ...@@ -625,9 +625,9 @@ STATIC INT32 TelnetdMain(VOID)
(VOID)close(sock); (VOID)close(sock);
return -1; return -1;
} }
//3.等待连接,处理远程终端过来的命令 例如#task 命令
PRINTK("start telnet server successfully, waiting for connection.\n"); PRINTK("start telnet server successfully, waiting for connection.\n");
TelnetdAcceptLoop(sock); TelnetdAcceptLoop(sock);//3.等待连接,处理远程终端过来的命令 例如#task 命令
return 0; return 0;
} }
...@@ -654,7 +654,7 @@ STATIC VOID TelnetdTaskInit(VOID) ...@@ -654,7 +654,7 @@ STATIC VOID TelnetdTaskInit(VOID)
initParam.usTaskPrio = TELNET_TASK_PRIORITY; //优先级 9,和 shell 的优先级一样 initParam.usTaskPrio = TELNET_TASK_PRIORITY; //优先级 9,和 shell 的优先级一样
initParam.uwResved = LOS_TASK_STATUS_DETACHED; //独立模式 initParam.uwResved = LOS_TASK_STATUS_DETACHED; //独立模式
if (atomic_read(&g_telnetTaskId) != 0) { if (atomic_read(&g_telnetTaskId) != 0) {//只支持一个 telnet 服务任务
PRINT_ERR("telnet server is already running!\n"); PRINT_ERR("telnet server is already running!\n");
return; return;
} }
...@@ -688,7 +688,7 @@ STATIC VOID TelnetUsage(VOID) ...@@ -688,7 +688,7 @@ STATIC VOID TelnetUsage(VOID)
PRINTK(" on Init the telnet server\n"); PRINTK(" on Init the telnet server\n");
PRINTK(" off Deinit the telnet server\n"); PRINTK(" off Deinit the telnet server\n");
} }
/// 远程登录命令处理 /// 本命令用于启动或关闭telnet server服务
INT32 TelnetCmd(UINT32 argc, const CHAR **argv) INT32 TelnetCmd(UINT32 argc, const CHAR **argv)
{ {
if (argc != 1) { if (argc != 1) {
...@@ -696,12 +696,12 @@ INT32 TelnetCmd(UINT32 argc, const CHAR **argv) ...@@ -696,12 +696,12 @@ INT32 TelnetCmd(UINT32 argc, const CHAR **argv)
return 0; return 0;
} }
if (strcmp(argv[0], "on") == 0) { if (strcmp(argv[0], "on") == 0) {// 输入 telnet on
/* telnet on: try to start telnet server task */ /* telnet on: try to start telnet server task */
TelnetdTaskInit(); //启动远程登录 服务端任务 TelnetdTaskInit(); //启动远程登录 服务端任务
return 0; return 0;
} }
if (strcmp(argv[0], "off") == 0) { if (strcmp(argv[0], "off") == 0) {// 输入 telnet off
/* telnet off: try to stop clients, then stop server task */ /* telnet off: try to stop clients, then stop server task */
TelnetdTaskDeinit();//关闭所有的客户端,并关闭服务端任务 TelnetdTaskDeinit();//关闭所有的客户端,并关闭服务端任务
return 0; return 0;
......
git add -A git add -A
git commit -m ' 同步官方代码 git commit -m ' 完善远程登录注释
百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码 百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
鸿蒙研究站 | http://weharmonyos.com (国内) 鸿蒙研究站 | http://weharmonyos.com (国内)
| https://weharmony.github.io (国外) | https://weharmony.github.io (国外)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册