도와주세요!!
글 수 15,339
2004.01.26 10:23:09 (*.104.106.203)
6669
ioctl함수를 쓰기위해서 cmd에 인자를 io.h에 define되있는 인자를 쓰게끔 되
어있더군요..그런데.cmd부분에 단순숫자를 써서 분기해도 되던데
ioctl(dev,10,data); 이런식으로 app에서 불러씁니다.
그렇다면 define되있는 SAMPLE_IO_READ _IOR( MAGIC_SAMPLE_IO, 1,
long )의 기능은 무엇인지요..? 굳이 이런형식을 쓰는이유는 무엇인가요?
===================== source =======================================
// ioctl 함수의 command
#define MAGIC_SAMPLE_IO 'i'
#define SAMPLE_IO_READ _IOR( MAGIC_SAMPLE_IO, 1,
long )
#define SAMPLE_IO_WRITE _IOW( MAGIC_SAMPLE_IO, 2,
long )
int io_ioctl( struct inode *minode, struct file *mfile, unsigned int
cmd, unsigned long arg )
{
switch (cmd)
{
case SAMPLE_IO_READ :
// 어떤일을 수행한다.
return 0;
case SAMPLE_IO_WRITE :
// 어떤일을 수행한다.
return 0;
case 10 : // ncs3에 data를 쓴다.
{
addr = (unsigned short*)(IO_SAMPLE_BASE + IO_KEYPAD);
*addr = arg;
}
}
app부분 :
ioctl(dev,10,data);
===================================================================
어있더군요..그런데.cmd부분에 단순숫자를 써서 분기해도 되던데
ioctl(dev,10,data); 이런식으로 app에서 불러씁니다.
그렇다면 define되있는 SAMPLE_IO_READ _IOR( MAGIC_SAMPLE_IO, 1,
long )의 기능은 무엇인지요..? 굳이 이런형식을 쓰는이유는 무엇인가요?
===================== source =======================================
// ioctl 함수의 command
#define MAGIC_SAMPLE_IO 'i'
#define SAMPLE_IO_READ _IOR( MAGIC_SAMPLE_IO, 1,
long )
#define SAMPLE_IO_WRITE _IOW( MAGIC_SAMPLE_IO, 2,
long )
int io_ioctl( struct inode *minode, struct file *mfile, unsigned int
cmd, unsigned long arg )
{
switch (cmd)
{
case SAMPLE_IO_READ :
// 어떤일을 수행한다.
return 0;
case SAMPLE_IO_WRITE :
// 어떤일을 수행한다.
return 0;
case 10 : // ncs3에 data를 쓴다.
{
addr = (unsigned short*)(IO_SAMPLE_BASE + IO_KEYPAD);
*addr = arg;
}
}
app부분 :
ioctl(dev,10,data);
===================================================================