내용보충(ioctl,mmap,flush,fsync).pptx
내용 보충
(ioctl, mmap, fsync&flush)
ioctl(chapter
10)
ioctl 명령을 이용해서 프린트 포트의 핀의 상태를 요청하는 코드
#include
<sys/type.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/lp.h> <----- 프린트 포트 관련 명령이 담겨있는 헤더파일
int main( int argc, char **
argv)
{
int fd;
int prnstate;
int lp;
unsigned char buff[128];
fd = open("/dev/lp0", O_RDWR | O_NDELAY); <----- 프린트 포트 디바이스 열기
if(
fd< 0)
{ perror("open
error"); <----- 열기 실패시 에러 메세지 출력
exit(1);
}
while(1)
{
ioctl(fd, LPGETSTATUS ,&prnstate); <----- 프린트 포트의 상태를 요청
(프린트
포트에 대한 명령은 LPGETSTATUS,
프린트 포트의 상태는 prnstate변수에 저장됨)
if(prnstate
& LP_PSELECD)
printf("ON\n");
else
printf("OFF\n");
usleep(50000);
}
close(fd);
return 0;
}
mmap(chapter 18)
<read(), write() 함수의 데이터 전달 과정>
videoptr = ioremap(0x000b0000, 0x1000);
if(videoptr !=NULL){
*videoptr = ‘A’;
}
'IT > 디바이스드라이버' 카테고리의 다른 글
20. 다중 프로세스 환경의 디바이스 드라이버 (0) | 2015.11.10 |
---|---|
08. 디바이스 드라이버의 읽기와 쓰기 (0) | 2015.10.15 |
07. 디바이스 드라이버의 초기화와 종료 (0) | 2015.10.15 |
06. 디바이스의 등록과 해제 (0) | 2015.10.15 |
08. 블록 디바이스 드라이버 (0) | 2015.10.12 |