在led的驱动下面有这么一个函数
static int sbc2440_leds_ioctl(
struct inode *inode,
struct file *file,
unsigned int cmd,
unsigned long arg)
{
switch(cmd) {
case 0:
case 1:
if (arg > 4) {
return -EINVAL;
}
s3c2410_gpio_setpin(led_table[arg], !cmd);
return 0;
default:
return -EINVAL;
}
}
我在上面的程序增加一个case 2:
static int sbc2440_leds_ioctl(
struct inode *inode,
struct file *file,
unsigned int cmd,
unsigned long arg)
{
switch(cmd) {
case 0:
case 1:
if (arg > 4) {
return -EINVAL;
}
s3c2410_gpio_setpin(led_table[arg], !cmd);
break;
case 2:
for(int i=0;i<3;i++)
s3c2410_gpio_setpin(led_table, 0);//all off/on
break;
default:
break;}
printk (DEVICE_NAME"\cmd=%d\n",cmd);
}
在应用程序里面用IOCTL控制
使用
ioctl(fd,1,0);
ioctl(fd,0,0);可以控制LED并输出cmd的值
使用
ioctl(fd,2,0);控制不了led也没有输出cmd的值出来。
是否可以这样做?谢谢
[ 此帖被xphyym在2011-07-27 10:15重新编辑 ]