使用ioctl向linux内核传递参数的方法实例
2013-09-05 23:03
399 查看
该篇实例是摘自网络(无法追根溯源倒低是哪位“前”辈写的了)
if((fd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("socketfailed\n\r");
}
if(ioctl(fd,SIOCSIFVLAN_PVID_PRI,&data16)<0)
{
printf("ioctlpvidfailed\n\r");
}
在sockios.h中定义
#defineSIOCSIFVLAN_PVID_PRI0x8985/*Set802.1QVLANpvid*/
2、在af_inet.c中
添加
externintVLAN1QEN(unsignedint,void*arg);
在inet_ioctl()函数中添加
caseSIOCSIFVLAN_PVID_PRI:
returnVLAN1QEN(cmd,arg);
3、另外定义:
staticunsignedintVLAN_PVID_PRI=0;
intVLAN1QEN(unsignedintcmd,void*arg)
{
unsignedintdata;
if(copy_from_user(&data,arg,sizeof(int)))
return-EFAULT;
switch(cmd){
caseSIOCSIFVLAN_PVID_PRI:
VLAN_PVID_PRI=data;
break;
default:
return-EINVAL;
}
}
一、应用层
uint16data16;if((fd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("socketfailed\n\r");
}
if(ioctl(fd,SIOCSIFVLAN_PVID_PRI,&data16)<0)
{
printf("ioctlpvidfailed\n\r");
}
二、linux内核
1、在sockios.h中定义
#defineSIOCSIFVLAN_PVID_PRI0x8985/*Set802.1QVLANpvid*/
2、在af_inet.c中
添加
externintVLAN1QEN(unsignedint,void*arg);
在inet_ioctl()函数中添加
caseSIOCSIFVLAN_PVID_PRI:
returnVLAN1QEN(cmd,arg);
3、另外定义:
staticunsignedintVLAN_PVID_PRI=0;
intVLAN1QEN(unsignedintcmd,void*arg)
{
unsignedintdata;
if(copy_from_user(&data,arg,sizeof(int)))
return-EFAULT;
switch(cmd){
caseSIOCSIFVLAN_PVID_PRI:
VLAN_PVID_PRI=data;
break;
default:
return-EINVAL;
}
}
相关文章推荐
- 使用ioctl向linux内核传递参数的方法实例
- ioctl 参数使用方法-实例+测试
- 二十二:通过引用向方法传递参数(使用out和ref参数)
- 解决变参数问题:va_list、va_start、vsnprintf、va_end的使用方法和实例
- 使用layer 弹出对话框 子父页面相互参数传递 父页面获取子页面参数实例
- asp.net中使用cookie传递参数的方法
- [ExtJS5学习笔记]第二十一节 Extjs5中使用config配置给ext.widget或者create方法传递参数
- 内核子系统或设备驱动可以直接编译到内核,也可以编译成模块,如果编译到内核,可以使用前一节介绍的方法通过内核启动参数来向它们传递参数,如果编译成模块,则可以通过命令行在插入模块时传递参数,或者在运行时,
- C#方法参数传递-同时使用ref和out关键字
- springMVC正确使用GET POST PUT和DELETE方法,如何传递参数
- 在数据绑定控件中使用LinkButton传递参数方法
- [ExtJS5学习笔记]第二十一节 Extjs5中使用config配置给ext.widget或者create方法传递参数
- 怎样使用call方法回调方法传递参数
- C#和asp.net中链接数据库中参数的几种传递方法实例代码
- C++向main函数传递参数的方法(实例已上传至github)
- 关于Fragment懒加载的学习和使用+参数传递的方法
- 详解spring切面使用传递给被通知方法的参数
- More Effective C# Item8 :尽可能使用泛型方法,除非需要将类型参数用于实例的字段中
- [ExtJS5学习笔记]第二十一节 Extjs5中使用config配置给ext.widget或者create方法传递参数
- 在showModalDialog中使用post方法传递参数