tail head cat sleep
QR code linking to this page

Man page  — PPI

명칭

ppi – ppbus 패러렐 'geek'포트에의 유저 공간 인터페이스

내용

서식

device ppi0 at ppbus?

마이너 번호: 유니트 번호는 ppbus 번호에 직접 대응한다.

해설

ppi 디바이스 드라이버는 유저 어플리케이션이 패러렐 포트 상태를 조작하기 위한 편리한 수단을 제공해, /dev/io 인터페이스를 사용하는 것에 기인하는 보안 문제를 일으키는 일 없이, 용이하게 저속 I/O 조작을 할 수 있도록(듯이) 합니다.

프로그래밍 인터페이스


#include </sys/dev/ppbus/ppi.h>
#include </sys/dev/ppbus/ppbconf.h>

ppi 인터페이스에서의 모든 I/O 는 ioctl() 호출을 사용하는 것에 의해 실시합니다. 각각의 명령은 1 개의
.Ty u_int8_t 인수를 취해, 1 바이트의 데이터를 전송 합니다. 이하의 명령을 사용할 수가 있습니다.
PPIGDATA, PPISDATA
  데이터 레지스터의 내용의 읽기와 기입을 실시합니다.
PPIGSTATUS, PPISSTATUS
  스테이터스 레지스터의 내용의 읽기와 기입을 실시합니다.
PPIGCTRL, PPISCTRL
  제어 레지스터의 내용의 읽기와 기입을 실시합니다. 이하에서는 이 레지스터의 비트에 대응한 정의를 실시하고 있습니다. 제어 레지스터의 비트를 세트 하는 것은 상당하는 출력을 low 로 하게 됩니다.
STROBE
AUTOFEED
nINIT
SELECTIN
PCD
 
PPIGEPP, PPISEPP
  EPP 제어 레지스터의 내용의 읽기와 기입을 실시합니다.
PPIGECR, PPISECR
  ECP 제어 레지스터의 내용의 읽기와 기입을 실시합니다.
PPIGFIFO, PPISFIFO
  ECP FIFO 의 읽고 쓰기를 행합니다 (8 비트 조작만).

사용예

데이터포트에 값 0x5a 를 출력하기 위해서, STROBE 를 low 로 한 후 high 에 되돌립니다. 다음의 코드를 사용할 수가 있습니다.

        int             fd;         u_int8_t        val;

        val = 0x5a;         ioctl(fd, PPISDATA, &val);         ioctl(fd, PPIGCTRL, &val);         val |= STROBE;         ioctl(fd, PPISCTRL, &val);         val &= ~STROBE;         ioctl(fd, PPISCTRL, &val);

버그

출력 신호가 레지스터치와 거꾸로 되고 있는 것은 혼란을 부를 수 있습니다.

ioctl() 인터페이스는 저속이며, 복수의 조작을 연속해 실시하기 위한 방법이 ( 아직) 없습니다.

유저 어플리케이션으로 필요한 헤더는 표준의 시스템에서는 인스톨 되지 않습니다.


FreeBSD PPI (4) January 2, 1998

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

The Unix phenomenon is scary. It doesn't go away.
— Steve Ballmer