1 / 13

VSHELL

VSHELL. Embedded linux 를 위한 Unix domain socket 을 이용한 통신 library. dhyi123@hanmir.com. 프로그램 개요. Unix domain socket 을 이용한 통신 library 내부 process 간의 통신 Embedded linux 를 위한 통합 Shell 제공 각각의 daemon 별이 아닌 통합된 interface 및 help 제공 기존 daemon 들의 configuration 을 위한 통신구조 제공 .

ciara
Download Presentation

VSHELL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VSHELL Embedded linux를 위한 Unix domain socket을 이용한 통신 library dhyi123@hanmir.com

  2. 프로그램 개요 • Unix domain socket 을 이용한 통신 library • 내부 process간의 통신 • Embedded linux를 위한 통합 Shell 제공 • 각각의 daemon 별이 아닌 통합된 interface 및 help 제공 • 기존 daemon들의 configuration을 위한 통신구조 제공. • Linux용 daemon들의 기본 configuration 방식은 .conf 파일을 이용하며 configuration 수정 시에 daemon을 down/up하거나 kill –HUP을 주어야 함. • 이 방식을 수정하여 별도의 down/up없이 처리토록 함.

  3. 중요 구조(1)

  4. 중요 구조(2-1) 시 작 명령 install Daemon들에 연결 해당 daemon에게 명령 보내기 해당 function 수행 아니오 사용자 입력? 아니오 예 종료? 명령 찾기 예 아니오 정확한 명령? 끝 Client 순서도 예

  5. 중요 구조(2-2) 시 작 명령 install 해당 function 수행 아니오 Client 접속? 예 해당 client에게 명령 종료 notify 아니오 사용자 입력? 아니오 예 종료? 명령 찾기 예 아니오 정확한 명령? 끝 Server 순서도 예

  6. 중요 구조(3) Ready List Read task A 추가 Read List write task A write task B Write List timer task A Timer List Thread 기본 구조 (1)

  7. 중요 구조(4) 1. Notify arrival readfd, select: writefd, timer 2. 적절한 Tasks를 Ready List로 이동한다. Ready List Read task A write task A write task B timer task A Read List Write List Timer List Thread 기본 구조 (2)

  8. 중요 구조(5) Task 수행 : Ready List가 바닥날 때 까지 Read task A Ready List write task A write task B timer task A Read List Write List Timer List Thread 기본 구조 (3)

  9. 중요 구조(6) struct vshell vshell_client[VSHELL_MAX_INDEX] Daemon 1 1 Indicate socket descriptor 2 . . … 3 4 ….. Daemon n VSHELL_MAX_INDEX Indicate socket descriptor vshell 기본 구조 (1)

  10. 중요 구조(7) 기본적으로 2개의 리스트 존재 (Level 별로) Command 1 Command 2 Command n Normal Command 1 Command 2 Command n Admin Command list 기본 구조 (1)

  11. 중요 구조(8) Ex) Command string : show information. Description: show daemon’s information. daemon 명령의 대상이 되는 daemon level Normal / Admin “show” **cmd “information” *desc “show daemon’s information” *func int func(); 해당 명령에 대해 수행할 내용의 함수 *next cmd2 cmd3 cmdn Command 기본 구조 (1)

  12. 패키지 설명 config.h : 전체 설정 관련 파일 Makefile : 전체 build Makefile / daemon/ daemon_command.c: daemon에 필요한 명령들 추가, 관리 main.c : daemon program 본체 파일 lib/ command.c: 명령 구성 및 리스트 유지 thread.c : Task 유지 관리 vty.c : daemon 측 client연결 관리 vshell.c : client 측 user input 및 daemon 연결관리 client/ cli_command.c: client에 필요한 명령들 추가, 관리 main.c :client program 본체 파일

  13. 개선점 • User-Interface의 디자인 개선 • 한 command string이 너무 길어질 경우 화면이 깔끔하지 못함. • 명령별 grouping 필요 • 반복 매개변수 지원, 다양한 형태의 매개변수 지원 • 현재는 모든 것을 포괄적인 변수만 지원되나, 숫자형, 문자형 등에 따라 구분 짓고 타입에 따른 제약조건을 주도록 수정 필요. • 다양한 case에 대한 사전 처리가 가능해짐. • LEVEL의 재정의 • 현재는 NORMAL 과 ADMIN 2가지로 구분되나, 용도에 따라서 재정의 필요

More Related