리눅스 프로그래머를 위한 가이드
9 I/O 포트 프로그래밍 (Programming I/O ports)
일반적으로 PC는 2개의 시리얼(serial)과 1개의 병렬(parallel) 인터페이스(interfaces)를 갖는다.
이러한 인터페이스는 특별한 장치들이고 다음처럼 연결(mapped)되어 있다.:
- 하드웨어(hardware)에 따라 RS232 시리얼(serial) 장치들이 0-n개 있다.
- 하드웨어(hardware)에 따라 병렬(parrallel) 장치들이 0-n개 있다.
- 하드웨어(hardware)에 따라 조이스틱(joystick) 장치들이 0-n개 있다.
/dev/ttyS*와 /dev/cua* 장치들간의 차이점은 어떻게 open() 호출이 다루어 지는가
이다. /dev/cua*장치들은 callout 장치들처럼 사용되는 것으로 생각되어지고
입출력 호출(incoming and outgoing calls)을 위해 초기화되어지는 /dev/ttyS* 장치들과는
달리 open()을 호출하여 다른 디폴트(default) 세팅들(settings)을 얻는다. 기본적으로 장치들은
그들을 open한 프로세스에 의해 통제를 받는다. 일반적으로 ioctl() 요청들은 모든 이러한 특별한
장치들을 다루어야만 하지만, POSIX는 struct termios에 매우 의존적인 비동기적(asynchronous)
단말기들을 다루기보단는 새 함수들을 정의하기를 더 좋아한다. 두 방법 모두
를 포함(including)해야한다.
- ioctl 방법:
TCSBRK, TCSBRKP, TCGETA(속성을 얻음), TCSETA(속성을 지정)
단말기(Terminal) I/O 통제(control) (TIOC) 요청(request):
TIOCGSOFTCAR (carrier를 지정), TIOCSSOFTCAR (soft carrier를 얻음),
TIOCSCTTY (controlling tty를 지정),TIOCMGET (modemlines을 얻음),
TIOCMSET (modemlines를 지정), TIOCGSERIAL, TIOCSSERIAL,
TIOCSERCONFIG, TIOCSERGWILD, TIOCSERSWILD, TIOCSERGSTRUCT, TIOCMBIS, TIOCMBIC,
...
- POSIX 방법:
tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(), tcflush(), tcflow(), tcgetpgrp(),
tcsetpgrp(),cfsetispeed(), cfgetispeed(), cfsetospeed(), cfgetospeed()
- 그외의 방법들:
하드웨어를 위한 outb,inb의 세밀한 프로그래밍에서는 프린터가 아닌 프린터 포트(port)를
사용하는 것을 좋아한다.
이전:8.23 [N]Curses 함수 개관
다음:9.1 마우스 프로그래밍 (Mouse programming)
Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved
Email To:Webmaster ,
Another address
LAST UPDATE Dec 17,1997
Created Dec 17,1997