IOCTL 관련하여 질문드립니다.

redgrid의 이미지

리눅스를 시작한지 얼마되지 않는 공부중인 사람 입니다 꾸벅...

리눅스커널 2.6.39.3 에서 아주 간단한 문자 디바이스를 작성하였습니다

#define DEV_NAME "/dev/test_device"
#define MY_IOCTL_NUMBER 't'

#define MY_IOCTL_READ _IOR(MY_IOCTL_NUMBER, 0, int)

//--- application
int main(int argc, char **argv)
{
int dev;
int data = 100;
dev = open(DEV_NAME, O_RDWR);

if(dev < 0) return -1;

ioctl(dev, MY_IOCTL_READ, &data); //값을 읽어오기 위해서 호출
...
}

위와 같이 어플을 진행했는데 _IOC_TYPE에걸려서 리턴되어 버립니다

int virtual_device_ioctl(struct inode *inode , struct file *flip, unsigned int cmd, unsigned long arg)
{
int err = 0, size;

if(_IOC_TYPE( cmd ) != MY_IOCTL_NUMBER)
{
return -EINVAL;
}
....

문제점을 모르겠습니다 어흑..
몇일째 삽질중입니다 소스는 첨부파일에 올려 드리오니 부디 검토 부탁 드립니다 꾸벅.

File attachments: 
첨부파일 크기
Package icon ioctl .zip1.65 KB
poplinux의 이미지

line 38에서 걸리는 것 아닌가요?

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향