임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Similar documents
임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

금오공대 컴퓨터공학전공 강의자료

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

untitled

<4D F736F F F696E74202D205BBAB0C3B75D20B8AEB4AABDBA20B5F0B9D9C0CCBDBA20B5E5B6F3C0CCB9F620B8F0B5A82E >

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - chap06-2pointer.ppt

Chapter #01 Subject

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

Microsoft PowerPoint - chap06-5 [호환 모드]

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

Frama-C/JESSIS 사용법 소개

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint APUE(Intro).ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

11장 포인터

Microsoft PowerPoint - chap10-함수의활용.pptx

PowerPoint 프레젠테이션

untitled

PowerPoint 프레젠테이션

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

교육지원 IT시스템 선진화

슬라이드 1

KEY 디바이스 드라이버

Microsoft PowerPoint - e9.pptx

Microsoft PowerPoint - lab14.pptx

설계란 무엇인가?

PA for SWE2007

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

ABC 11장

Abstract View of System Components

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft Word doc

C 언어 프로그래밊 과제 풀이

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

Microsoft PowerPoint - chap03-변수와데이터형.pptx

K&R2 Reference Manual 번역본

OCW_C언어 기초

Data Structure

Microsoft PowerPoint - [2009] 02.pptx

BMP 파일 처리

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

PowerPoint Presentation

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

PowerPoint Template

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

untitled

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

금오공대 컴퓨터공학전공 강의자료

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

PowerPoint 프레젠테이션

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

교육지원 IT시스템 선진화

API 매뉴얼

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Microsoft PowerPoint APUE(File InO).pptx

C 프로그래밊 개요

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chapter8.pptx

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

슬라이드 1

PowerPoint Presentation

컴파일러

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

좀비프로세스 2

No Slide Title

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

설계란 무엇인가?

Microsoft Word doc

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - C++ 5 .pptx

adfasdfasfdasfasfadf

제1장 Unix란 무엇인가?

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - Chapter 6.ppt

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

Microsoft PowerPoint - chap11-포인터의활용.pptx

PowerPoint 프레젠테이션

C# Programming Guide - Types

10.

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

02장.배열과 클래스

17장 클래스와 메소드

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

PowerPoint 프레젠테이션

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Transcription:

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim

SYSCALL_DEFINE 함수 v SYSCALL_DEFINEx Ø Invoking a system call without library support (i.e., wrapper function) Ø Macro 함수로 [kernel4412] / include/linux/syscalls.h 에있음 Ø 문법은다음과같음 ü SYSCALL_DEFINE0( func-name ) ü SYSCALL_DEFINE1( func-name, arg1-type, arg1-name ) ü SYSCALL_DEFINE2( func-name, arg1-type, arg1-name, arg2-type, arg2-name ) Ø 매개변수 (args) 의수에따라서 SYSCALL_DEFINE0 ~ SYSCALL_DEFINE6 까지존재 Ø Header file ü #include <linux/syscalls.h> Ø 리눅스 2.6.34 버전부터 syscall 매크로대신에 SYSCALL_DEFINE 매크로가사용되고있음 ü http://lxr.free-electrons.com/ident?v=3.0;i=syscall_define - 3 - Young-Jin Kim

v 학습내용 Ø 사용자프로그램에서 int 1 개를입력받아서 system call 호출시매개변수로하여커널에넘겨주고커널의 system call 함수에서는이값을 5 증가시켜다시사용자응용으로반환함 Ø 사용자프로그램과커널간의데이터이동시문제파악 Ø 사용자프로그램과커널간의데이터이동문제해결 - 4 - Young-Jin Kim

v System call 번호할당 Ø [kernel4412] / arch/arm/include/asm/unistd.h Ø 새로추가할 system call의고유번호정의추가 #define NR_newcall ( NR_SYSCALL_BASE+377) - 5 - Young-Jin Kim

v System call 테이블에 system call 처리함수등록 Ø [kernel4412] / arch/arm/kernel/calls.s 수정 è calls.s 에 CALL(sys_newcall1) 등록 Ø unistd.h 에서정의한호출번호와일치 - 6 - Young-Jin Kim

v System call 처리함수를 syscalls.h 에함수선언등록 Ø [kernel4412] / include/linux/syscalls.h 수정 è Function prototype declaration - 7 - Young-Jin Kim

v System call 처리함수구현 Ø [kernel4412] / kernel/newcall.c 작성 Ø user 영역으로부터넘겨받은값을출력하고 5 를증가시켜서 return Ø printk, a = a+ 5; (kernel operation) - 8 - Young-Jin Kim

vmakefile 수정 Ø [kernel4412] /kernel/makefile - 9 - Young-Jin Kim

v Kernel Compile Ø Ø Ubuntu에서다음을수행 # make zimage v Kernel fusing Ø Ø Windows에서다음을수행 > fastboot.exe flash kernel zimage - 10 - Young-Jin Kim

v System Call 을호출하는 User Application 제작 Ø /usr/local/app/newcall_test.c 구현 Ø unistd.h 에서정의한호출번호와일치 - 11 - Young-Jin Kim

v User Application 컴파일 (makefile 사용 ) Ø System call 호출응용프로그램의컴파일용 Makefile 을작성 Ø /usr/local/app/makefile - 12 - Young-Jin Kim

v User Application 전송 Ø Ø Ø 실행파일을 Tera Term의 zmodem을이용하여보드로옮김 Applicatoin File 실행권한설정 : chmod 755 newcall_test 시스템호출실행 :./newcall_test 사용자프로그램에서전달받은값이 30 으로사용자응용 - 커널간데이터전달에서문제발생 - 13 - Young-Jin Kim

v 사용자영역과커널영역사이에서값을교환하는커널함수들 함수 put_user(x, ptr) get_user(x, ptr) copy_to_user(void user *to, const void * from, unsigned long n) copy_from_user(void * to, void user *from, unsigned long n) 설명 커널영역의데이터를사용자영역으로복사함. (ptr 은사용자메모리영역의선두주소, x 는커널변수 ) 사용자영역의데이터를커널영역으로복사함. (ptr 은사용자메모리영역의선두주소, x 는커널변수 ) 커널영역의 n 크기만큼의데이터를사용자영역으로복사함. 사용자영역의 n 크기만큼의데이터를커널영역으로복사함. Ref. http://blog.naver.com/idthek?redirect=log&logno=90119626977-14 - Young-Jin Kim

v 사용자응용에서버퍼에대한포인터로 system call stub( 응용측에서시스템호출을위해서호출하는함수 ) 함수를호출함. v 호출되는 system call stub 함수에서인자로포인터를넘겨받음 v 넘겨받은포인터를이용하여새로이작성한 system call 함수내에서 put_user(), get_user(), copy_to_user(), copy_from_user() 를호출하여사용자 - 커널영역간의데이터교환이일어나게됨 - 15 - Young-Jin Kim

v [kernel4412] / kernel/newcall.c 수정 v newcall.c 에서커널에서사용자로의데이터전달을위해포인터매개변수 (int *b) 와 put_user() 함수사용 v #include <asm/uaccess.h> 필요 - 16 - Young-Jin Kim

vnewcall_test.c 에서시스템콜함수에대응하는 system stub function 수정 Ø /usr/local/app/newcall_test.c 수정 - 17 - Young-Jin Kim

v System call 처리함수를 syscalls.h 에함수선언등록 Ø [kernel4412] / include/linux/syscalls.h 수정 è Function prototype declaration - 18 - Young-Jin Kim

v 타겟보드에서실행파일 newcall_test 실행시 b 의값이 35 이므로제대로동작함. Ø 함수리턴값은 35 로항상제대로동작함. - 19 - Young-Jin Kim

v 질문 : 전달해야하는데이터의수가많은경우, 사용자 - 커널간데이터전달은? - 20 - Young-Jin Kim