CN108647103A - 一种Linux系统的热键交互系统及方法 - Google Patents

一种Linux系统的热键交互系统及方法 Download PDF

Info

Publication number
CN108647103A
CN108647103A CN201810453257.0A CN201810453257A CN108647103A CN 108647103 A CN108647103 A CN 108647103A CN 201810453257 A CN201810453257 A CN 201810453257A CN 108647103 A CN108647103 A CN 108647103A
Authority
CN
China
Prior art keywords
hot key
user space
processing
hot
kernel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810453257.0A
Other languages
English (en)
Inventor
汪革
芶利平
毛竹林
黄炯业
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Thai Inkstone Communication Technology Co Ltd
Original Assignee
Shanghai Thai Inkstone Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Thai Inkstone Communication Technology Co Ltd filed Critical Shanghai Thai Inkstone Communication Technology Co Ltd
Priority to CN201810453257.0A priority Critical patent/CN108647103A/zh
Publication of CN108647103A publication Critical patent/CN108647103A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Linux系统的热键交互系统及方法,该方案主要包含内核态和用户态两部分:内核态部分负责热键识别,同时可以用于调试内核;用户态部分负责调试用户态程序,且实现二次热键功能。本发明适用于命令行无法正常使用时,研发人员可以通过热键与系统交互,获取系统中各模块运行状态的信息,从而定位系统BUG;并且,通过二次热键功能,提升了热键资源的利用效率。

Description

一种Linux系统的热键交互系统及方法
技术领域
本发明涉及软件系统技术,具体涉及软件系统中热键交互技术。
背景技术
当前在Linux系统中,用户主要是通过命令行与系统进行交互,当系统异常无法进入命令行时,用户就没办法获取系统异常信息,无法快捷方便的定位问题、解决问题。
发明内容
针对现有Linux系统交互方案所存在的问题,需要一种新的系统交互方案,用于当命令行无法使用时帮助用户定位系统问题。
为此,本发明的目的在于提供一种Linux系统的热键交互系统以及相应的热键交互方法,以克服现有方案所存在的缺陷。
为了达到上述目的,本发明提供的Linux系统的热键交互系统分为内核态热键处理和用户态热键处理,所述热键交互系统包括计算机程序指令,所述计算机程序指令使计算机实现:
在内核TTY驱动中添加热键回调;
内核态热键处理,识别热键;
用户态热键处理,调试用户态程序,且实现二次热键功能。
进一步的,所述热键回调是在各驱动向TTY提交字符的统一接口中增加热键回调。
进一步的,所述内核态热键处理,通过任务监控热键,再通过tasklet对热键进行处理,然后判断热键是否需要送达用户态处理,如果需要则用send_sig向监控任务发送SIGUSR1信号,将热键送往用户态进行处理。
进一步的,所述用户态热键处理,先更改对SIGUSR1信号的处理,当收到SIGUSR1信号时,会先向热键内核模块请求热键信息,如果是一次热键模式且包含多个已注册二次热键,则打印所有的二次热键,如果是二次热键模式且是已注册二次热键,则调用注册的回调函数。
为了达到上述目的,本发明提供的Linux系统的热键交互方法,所述热键交互方法包括步骤:
在内核TTY驱动中添加热键回调;
进行内核态热键处理,识别热键;
进行用户态热键处理,调试用户态程序,且实现二次热键功能。
进一步的,所述热键交互方法的过程如下:
当TTY驱动接收字符时,通过内核态热键模块注册的热键回调函数判断该字符是否是热键;
如果是则内核态热键模块对该字符进行处理,若需要送往用户态热键模块处理,则通过send_sig向监控任务发送SIGUSR1信号,然后将由用户态进行热键处理;
用户态进行热键处理时,先更改对SIGUSR1信号的处理,当收到SIGUSR1信号时,会先向热键内核模块请求热键信息,如果是一次热键模式且包含多个已注册二次热键,则打印所有的二次热键,如果是二次热键模式且是已注册二次热键,则调用注册的回调函数。
本发明提供的方案采用热键交互技术,提供当VTY模块异常时的系统调试解决方案,可有效解决现有技术所存在的缺陷。
本发明提供的方案适用于命令行无法正常使用时,研发人员可以通过热键与系统交互,获取系统中各模块运行状态的信息,从而定位系统BUG;并且,通过二次热键功能,提升了热键资源的利用效率。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明实例中热键处理流程图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
本方案采用热键交互技术,能够在Linux系统命令行异常时实现系统调试,并通过二次热键技术,提高了热键资源的利用率。
本方案具体通过在Linux系统内核TTY驱动中添加热键回调,并进行内核态热键处理和用户态热键处理,由此来实现系统交互。
据此原理,本方案给出了一种Linux系统的热键交互系统,该热键交互系统整体由计算机程序指令构成,且该计算机程序指令能够使计算机实现:
在内核TTY驱动中添加热键回调;
内核态热键处理,识别热键;
用户态热键处理,调试用户态程序,且实现二次热键功能。
由此,本热键交互系统整体上由热键回调模块、内核态热键处理模块以及用户态热键处理模块相互配合构成。
本系统中的热键回调模块整体设置在内核TTY驱动中,具体设置如下:
1)定义热键回调函数指针;
2)为了使内核能够针对各驱动尽快的进行热键处理,在各驱动向TTY提交字符的统一接口中增加热键回调函数。
本系统中的内核态热键处理模块主要用于热键识别,同时可以用于调试内核。
内核态热键处理模块的处理任务如下:
1)创建监控热键的任务;
2)注册TTY驱动热键回调,用来处理用户输入的热键信息;
3)通过tasklet对用户输入的热键进行处理,根据用户输入的热键与系统中存储的进行比较,判断是否需要用户态处理;
4)使用send_sig向监控任务发送SIGUSR1信号,将热键送往用户态进行处理。
由此构成的内核态热键处理模块进行热键处理时,首先通过任务监控热键,再通过tasklet对热键进行处理,然后判断热键是否需要送达用户态,如果需要则用send_sig向监控任务发送SIGUSR1信号。
本系统中的用户态热键处理模块,用于调试用户态程序,且实现二次热键功能。
用户态热键处理模块的处理任务如下:
1)更改对SIGUSR1信号的处理,通过sigemptyset初始化信号集合为空,用sigaddset函数将SIGUSR1信号加入信号集中;
2)通过调用内核态热键模块初始化函数来初始化内核热键模块;
3)当收到SIGUSR1信号时,会先向内核热键模块获取用户输入的热键信息;
4)判断热键模式,对一次热键和二次热键做不同处理。
由此构成的用户态热键处理模块进行热键处理时,先更改对SIGUSR1信号的处理,当收到SIGUSR1信号时,会先向热键内核模块请求热键信息,如果是一次热键模式且包含多个已注册二次热键,则打印所有的二次热键,如果是二次热键模式且是已注册二次热键,则执行该二次热键的处理函数。
基于上述方案构成的热键交互系统,在运行时,当Linux系统内核TTY驱动接收字符时,通过内核态热键处理模块注册的热键回调函数判断该字符是否是热键,如果是则由内核态热键处理模块对该字符进行处理,若需要送往用户态热键模块处理,则通过send_sig向监控任务发送SIGUSR1信号,然后将由用户态进行热键处理;
用户态收到SIGUSR1信号时,会先向热键内核模块请求热键信息,如果是一次热键模式且包含多个已注册二次热键,则打印所有的二次热键,如果是二次热键模式且是已注册二次热键,则调用注册的回调函数。
下面以图1所示的热键流程为例,进一步说明本方案的具体实施过程,具体实施步骤如下:
1、通过TTY驱动中的热键回调函数监控用户是否输入了热键,如果是热键则进入步骤2;
2、根据用户输入的热键信息进行判断是否是用户态热键,如果是则进入步骤4,不是则进入步骤3;
3、处理用户输入的内核态热键,处理完成后进入步骤1;
4、用户态收到从内核态传入的热键信息,并进行处理,处理完成后进入步骤1;
由上实例可知,当命令行无法使用时,本系统方案能够辅助开发人员在Linux系统下,通过热键与系统进行交互,获取部分系统模块状态信息,从而可有效定位系统BUG。
再者,基于上述实例方案,各模块可以根据需求实现并注册热键调试功能到本模块。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (6)

1.Linux系统的热键交互系统,所述热键交互系统包括计算机程序指令,其特征在于,所述计算机程序指令使计算机实现:
在内核TTY驱动中添加热键回调;
内核态热键处理,识别热键;
用户态热键处理,调试用户态程序,且实现二次热键功能。
2.根据权利要求1所述的Linux系统的热键交互系统,其特征在于,所述热键回调是在各驱动向TTY提交字符的统一接口中增加热键回调。
3.根据权利要求1所述的Linux系统的热键交互系统,其特征在于,所述内核态热键处理,通过任务监控热键,再通过tasklet对热键进行处理,然后判断热键是否需要送达用户态处理,如果需要则用send_sig向监控任务发送SIGUSR1信号,将热键送往用户态进行处理。
4.根据权利要求1所述的Linux系统的热键交互系统,其特征在于,所述用户态热键处理,先更改对SIGUSR1信号的处理,当收到SIGUSR1信号时,会先向热键内核模块请求热键信息,如果是一次热键模式且包含多个已注册二次热键,则打印所有的二次热键,如果是二次热键模式且是已注册二次热键,则调用注册的回调函数。
5.Linux系统的热键交互方法,其特征在于,所述热键交互方法包括步骤:
在内核TTY驱动中添加热键回调;
进行内核态热键处理,识别热键;
进行用户态热键处理,调试用户态程序,且实现二次热键功能。
6.根据权利要求5所述的Linux系统的热键交互方法,其特征在于,所述热键交互方法的过程如下:
当TTY驱动接收字符时,通过内核态热键模块注册的热键回调函数判断该字符是否是热键;
如果是则内核态热键模块对该字符进行处理,若需要送往用户态热键模块处理,则通过send_sig向监控任务发送SIGUSR1信号,然后将由用户态进行热键处理;
用户态进行热键处理时,先更改对SIGUSR1信号的处理,当收到SIGUSR1信号时,会先向热键内核模块请求热键信息,如果是一次热键模式且包含多个已注册二次热键,则打印所有的二次热键,如果是二次热键模式且是已注册二次热键,则调用注册的回调函数。
CN201810453257.0A 2018-05-14 2018-05-14 一种Linux系统的热键交互系统及方法 Pending CN108647103A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810453257.0A CN108647103A (zh) 2018-05-14 2018-05-14 一种Linux系统的热键交互系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810453257.0A CN108647103A (zh) 2018-05-14 2018-05-14 一种Linux系统的热键交互系统及方法

Publications (1)

Publication Number Publication Date
CN108647103A true CN108647103A (zh) 2018-10-12

Family

ID=63754922

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810453257.0A Pending CN108647103A (zh) 2018-05-14 2018-05-14 一种Linux系统的热键交互系统及方法

Country Status (1)

Country Link
CN (1) CN108647103A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463764A (en) * 1992-04-03 1995-10-31 International Business Machines Corporation Method and system for system debugging through a keyboard device driver
US20060168376A1 (en) * 2005-01-25 2006-07-27 Oleg Ilyasov Usage of keyboard driver in extensible firmware interface for adding new hot keys at firmware level
CN102314382A (zh) * 2010-07-06 2012-01-11 中兴通讯股份有限公司 一种紧急探查系统信息的方法及模块
CN106201492A (zh) * 2016-06-30 2016-12-07 北京金山安全软件有限公司 一种热键实现方法、装置及电子设备
CN106776090A (zh) * 2016-11-29 2017-05-31 郑州云海信息技术有限公司 一种rhel操作系统无响应时收集信息的方法
CN107608717A (zh) * 2016-07-12 2018-01-19 迈普通信技术股份有限公司 用户态信息收集方法、装置和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463764A (en) * 1992-04-03 1995-10-31 International Business Machines Corporation Method and system for system debugging through a keyboard device driver
US20060168376A1 (en) * 2005-01-25 2006-07-27 Oleg Ilyasov Usage of keyboard driver in extensible firmware interface for adding new hot keys at firmware level
CN102314382A (zh) * 2010-07-06 2012-01-11 中兴通讯股份有限公司 一种紧急探查系统信息的方法及模块
CN106201492A (zh) * 2016-06-30 2016-12-07 北京金山安全软件有限公司 一种热键实现方法、装置及电子设备
CN107608717A (zh) * 2016-07-12 2018-01-19 迈普通信技术股份有限公司 用户态信息收集方法、装置和系统
CN106776090A (zh) * 2016-11-29 2017-05-31 郑州云海信息技术有限公司 一种rhel操作系统无响应时收集信息的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HUMJB_1983: "kernel 3.10代码分析--Sysrq处理流程、键盘驱动、input子系统相关", 《HTTP://BLOG.CHINAUNIX.NET/UID-29769991-ID-4462420.HTML》 *

Similar Documents

Publication Publication Date Title
JP2007062105A5 (zh)
CN109857801A (zh) 基于四层架构的智慧灌区e平台及数据处理方法
CN103793208B (zh) 矢量dsp处理器和协处理器协同运作的数据处理系统
CN108427640A (zh) 一种在用户态下调试驱动程序的方法
CN104461679A (zh) 一种将网卡绑定到cpu的自动化实现方法
CN105740139A (zh) 一种基于虚拟环境的嵌入式软件调试方法
US20070150899A1 (en) Semaphore management method and computer product
KR900004291B1 (ko) 데이터 프로세서
CN115794355B (zh) 任务处理方法、装置、终端设备及存储介质
CN108647103A (zh) 一种Linux系统的热键交互系统及方法
CN109582312B (zh) 一种智能pos的ui层和逻辑层分离开发方法
CN101349975B (zh) 一种在嵌入式操作系统上实现中断底半部机制的方法及装置
US11620076B2 (en) Accelerated non-volatile memory device inspection and forensics
CN103150162B (zh) 提高嵌入式软件代码共享程度的方法
JP2575761B2 (ja) ジョブ管理方法
CN213906706U (zh) 一种拟态交换装置
JPH05324394A (ja) 分散プログラムのデバッグ装置
KR100205061B1 (ko) 분산환경에서의 디버거 구동방법
JP2745567B2 (ja) 計算機システム
CN115756645A (zh) 一种基于注册表式的命令交互设计方法
CN110502348A (zh) 基于服务的gpu指令提交服务器
CN108762948A (zh) 一种VxWorks系统的热键交互系统及方法
JPH04344528A (ja) プログラム開発システム
CN101442549A (zh) 一种控制并发错误的方法及装置
JPS63226741A (ja) シンボリツクデバツグ方式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20181012

RJ01 Rejection of invention patent application after publication