안녕하세요...

include/asm-arm/ioctl.h 에 이것에 대한 매크로가 정의 되어있습니다..

참고로 이것은 ioctl을 구현할때 사용되며...간략한 설명은 다음과 같습니다.

_IO(type, nr) :: 데이터 전송 없음
_IOR(type, nr, size) :: 디바이스로 부터 데이터를 읽어옴
_IOW(type, nr, size) :: 디바이스로 데이터를 전송
_IORW(type, nr, size) :: 양방향 전송

** type
매직번호. 한개의 번호를 정하고 드라이브 전체에서 이 값을 사용한다.

** nr
순서에 따른(차례로 붙이는) 번호

** size
관련된 데이터의 전송의 크기


********
소스에서 보시면...

[ test.c ]

ioctl( dev, IOCTL_GPIO_LED_ON_OFF, &pData );

[ gpio.h ]

typedef struct
{
int Cmd; // 명령어
unsigned long Data; // 입출력 데이타
} GPIO_CmdData;

// 제어 명령 리스트
#define IOCTL_GPIO_LED_ON_OFF _IOW(GPIO_IOC_MAGIC, 0, GPIO_CmdData *)


[ gpio.c ]

int gpio_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
unsigned long arg)
{
switch (cmd)
{
case IOCTL_GPIO_LED_ON_OFF:
return gpio_led_on_off ( (GPIO_CmdData *) arg );
}
}

==> test.c에서 ioctl함수를 호출하면 gpio.h의 정의된 명령을 통하여 디바이스 드라이브의

gpio.c로 명령과 데이타를 넘겨 주게 됩니다...


그럼......



ulra wrote..
: 안녕하세요.
:
: GPIO 예제 소스에서 _IOR, _IOW는 무엇에 쓰는것인가요.
:
: 소스를 살펴봐도 정의 된곳이 없습니다.
:
: 쓰는 용도와 정의된 곳좀 알려주세요.
:
: 부탁드립니다.