33#ifdef LOSCFG_NET_TELNET
41#ifdef LOSCFG_BASE_CORE_SWTMR_ENABLE
53#define TELNET_EVENT_MORE_CMD 0x01
54#define TELNET_DEV_DRV_MODE 0666
62 struct Vnode *telnetInode = NULL;
68 telnetInode =
file->f_vnode;
69 if (telnetInode == NULL) {
102 if ((buf == NULL) || (telnetDev->
cmdFifo == NULL)) {
118 for (i = 0; i < bufLen; i++) {
131 notify_poll(&telnetDev->
wait);
134 return (
INT32)bufLen;
142 struct wait_queue_head *wait = NULL;
148 if (telnetDev == NULL) {
153 if (telnetDev->
cmdFifo == NULL) {
154 wait = &telnetDev->
wait;
158 if (telnetDev->
cmdFifo == NULL) {
176 struct wait_queue_head *wait = NULL;
182 if (telnetDev != NULL) {
183 wait = &telnetDev->
wait;
211 if ((buf == NULL) || (telnetDev == NULL) || (telnetDev->
cmdFifo == NULL)) {
226 for (i = 0; i < bufLen; i++) {
256 if ((buf == NULL) || (telnetDev == NULL) || (telnetDev->
cmdFifo == NULL)) {
272#ifdef LOSCFG_BASE_CORE_SWTMR_ENABLE
292 if (telnetDev == NULL) {
297 if (cmd == CFG_TELNET_EVENT_PEND) {
305 }
else if (cmd == CFG_TELNET_SET_FD) {
306 if (arg >= (FD_SETSIZE - 1)) {
323 if ((telnetDev == NULL) || (telnetDev->
cmdFifo == NULL)) {
333 return POLLIN | POLLRDNORM;
347#ifndef CONFIG_DISABLE_POLL
358 (VOID)unregister_driver(TELNET);
375 PRINT_ERR(
"Telnet register driver error.\n");
387 PRINT_ERR(
"Invalid telnet clientFd.\n");
392 PRINT_ERR(
"Telnet console init error.\n");
395 ret = ioctl(STDIN_FILENO, CFG_TELNET_SET_FD, clientFd);
397 PRINT_ERR(
"Telnet device ioctl error.\n");
411 PRINT_ERR(
"Telnet console deinit error.\n");
INT32 system_console_deinit(const CHAR *deviceName)
控制台结束前的处理 和 system_console_init成对出现,像控制台的析构函数
INT32 system_console_init(const CHAR *deviceName)
初始化系统控制台并返回 stdinfd stdoutfd stderrfd ,和system_console_deinit成对出现,像控制台的构造函数
LITE_OS_SEC_TEXT_MINOR UINT32 LOS_EventClear(PEVENT_CB_S eventCB, UINT32 eventMask)
清除指定的事件类型
LITE_OS_SEC_TEXT_INIT UINT32 LOS_EventDestroy(PEVENT_CB_S eventCB)
销毁指定的事件控制块
LITE_OS_SEC_TEXT UINT32 LOS_EventRead(PEVENT_CB_S eventCB, UINT32 eventMask, UINT32 mode, UINT32 timeout)
读取指定事件类型,超时时间为相对时间:单位为Tick
LITE_OS_SEC_TEXT UINT32 LOS_EventWrite(PEVENT_CB_S eventCB, UINT32 events)
写指定的事件类型
LITE_OS_SEC_TEXT_INIT UINT32 LOS_EventInit(PEVENT_CB_S eventCB)
初始化一个事件控制块
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListInit(LOS_DL_LIST *list)
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListDelete(LOS_DL_LIST *node)
STATIC INLINE LosTaskCB * OsCurrTaskGet(VOID)
STATIC INLINE BOOL OsPreemptable(VOID)
BOOL OsIsSwtmrTask(const LosTaskCB *taskCB)
void * malloc(size_t size)
动态分配内存块大小
void free(void *ptr)
释放ptr所指向的内存空间
ssize_t send(int s, const void *dataptr, size_t size, int flags)
相当于文件操作的 write 功能,区别是第四个参数 同 recv
void poll_wait(struct file *filp, wait_queue_head_t *wait_address, poll_table *p)
EVENT_CB_S eventTelnet
远程登录事件
wait_queue_head_t wait
等待队列
vnode并不包含文件名,因为 vnode和文件名是 1:N 的关系
INT32 TelnetedRegister(VOID)
STATIC INT32 TelnetOpen(struct file *file)
STATIC INT32 TelnetIoctl(struct file *file, const INT32 cmd, unsigned long arg)
远程登录控制操作
STATIC EVENT_CB_S * g_event
STATIC TELNET_DEV_S g_telnetDev
远程登录设备
INT32 TelnetTx(const CHAR *buf, UINT32 bufLen)
INT32 TelnetDevDeinit(VOID)
STATIC INLINE TELNET_DEV_S * GetTelnetDevByFile(const struct file *file, BOOL isOpenOp)
INT32 TelnetedUnregister(VOID)
STATIC INT32 TelnetPoll(struct file *file, poll_table *table)
STATIC const struct file_operations_vfs g_telnetOps
STATIC struct Vnode * g_currentVnode
INT32 TelnetDevInit(INT32 clientFd)
STATIC ssize_t TelnetWrite(struct file *file, const CHAR *buf, const size_t bufLen)
STATIC INT32 TelnetClose(struct file *file)
STATIC ssize_t TelnetRead(struct file *file, CHAR *buf, size_t bufLen)