当前位置: 首页 > wzjs >正文

问卷调查网站赚钱怎么把店地址申请百度地图

问卷调查网站赚钱,怎么把店地址申请百度地图,空间查看网站,移动网站开发服务器对于字符设备驱动而言,当驱动模块加载成功以后需要注册字符设备,同样,卸载驱动模 块的时候也需要注销掉字符设备。字符设备的注册和注销函数原型如下所示 : static inline int register_chrdev(unsigned int major, const char *name, const…
        对于字符设备驱动而言,当驱动模块加载成功以后需要注册字符设备,同样,卸载驱动模 
块的时候也需要注销掉字符设备。字符设备的注册和注销函数原型如下所示 :
static inline int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops)static inline void unregister_chrdev(unsigned int major, const char *name)
register_chrdev 函数用于注册字符设备,此函数一共有三个参数,这三个参数的含义如下:
major: 主设备号, Linux 下每个设备都有一个设备号,设备号分为主设备号和次设备号两部分
name:设备名字,指向一串字符串。
fops: 结构体 file_operations 类型指针,指向设备的操作函数集合变量。
unregister_chrdev 函数用户注销字符设备,此函数有两个参数,这两个参数含义如下:
major:要注销的设备对应的主设备号。
name:要注销的设备对应的设备名。
         一般字符设备的注册在驱动模块的入口函数 xxx_init 中进行,字符设备的注销在驱动模块 
的出口函数 xxx_exit 中进行。
需要注意的是 register_chrdevunregister_chrdev 函数在注册字符设备驱动时,会将主设备号下的所有设备都注册掉,即你无法再使用次设备号了,所以在后面的Linux内核中,这种方法已经被逐渐弃用了。
关于主设备号和次设备号:
        Linux 中每个设备都有一个设备号,设备号由主设备号和次设备号两部分 组成,主设备号表示某一个具体的驱动,次设备号表示使用这个驱动的各个设备。 Linux 提供了 一个名为 dev_t 的数据类型表示设备号, dev_t 定义在文件 include/linux/types.h 里面。
        dev_t 其实就是 unsigned int 类型,是一个 32 位的数据类型。这 32 位的数据构 成了主设备号和次设备号两部分,其中高 12 位为主设备号,低 20 位为次设备号。因此 Linux 系统中主设备号范围为 0~4095,所以在选择主设备号的时候不要超过这个范围。  
在选择设备号时,我们需要先查看当前系统中已经有哪些设备号被占用
[root@luckfox ]# cat /proc/devices 
Character devices:1 mem4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input29 fb81 video4linux89 i2c90 mtd
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
226 drm
243 hidg
244 mpi
245 vcodec
246 mpp_service
247 rpmb
248 watchdog
249 iio
250 media
251 rtc
252 rk_dma_heap
253 ttyFIQ
254 gpiochip
......

我们需要在Character devices选择一个没有被占用的设备号,例如200

在设备注册时,还需要有字符设备操作集,我们可以先按照最简的方法实现

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>    //增加fs.h头文件#define CHRDEVBASE_MAJOR   200 //主设备号
#define CHRDEVBASE_NAME   "chrdevbase" //主设备号/* 打开设备 */
static int chrdevbase_open(struct inode *inode, struct file *filp)
{printk("chrdevbase_open\n");return 0;
}static int chrdevbase_release(struct inode *inode, struct file *filp)
{printk("chrdevbase_release\n");return 0;
}/* 从设备读取 */
static ssize_t chrdevbase_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt)
{printk("chrdevbase_read\n");return 0;
}static ssize_t chrdevbase_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)
{printk("chrdevbase_write\n");return 0;
}/*  字符设备操作集  */
struct file_operations chrdevbase_fops =
{.owner = THIS_MODULE,.open = chrdevbase_open,.release = chrdevbase_release,.read = chrdevbase_read,.write = chrdevbase_write,};static int chrdevbase_init(void)
{int ret = 0;printk("chrdevbase_init\n");/*注册字符设备*/ret = register_chrdev(CHRDEVBASE_MAJOR, CHRDEVBASE_NAME, &chrdevbase_fops);if(ret < 0){printk("chrdevbase init failed \r\n");}printk("register_chrdev\n");return 0;
}static void chrdevbase_exit(void)
{/*注销字符设备*/unregister_chrdev(CHRDEVBASE_MAJOR, CHRDEVBASE_NAME);printk("unregister_chrdev\n");printk("chrdevbase_exit\n");
}/*模块入口和出口
*/module_init(chrdevbase_init);  /* 入口 */
module_exit(chrdevbase_exit);  /* 出口 */// 必须添加的许可证声明
MODULE_LICENSE("GPL");                // 使用 GPL 许可证
MODULE_AUTHOR("HYA");           // 可选(作者信息)

编译源码,将ko文件通过adb push到板端,加载模块

经过下面的log可以看到,在设备注册后,字符设备里就有了设备号为200的chrdevbase

同样的,卸载模块后,字符设备也被注销了

[root@luckfox ]# insmod chrdevbase.ko 
[root@luckfox ]# 
[root@luckfox ]# 
[root@luckfox ]# dmesg 
[ 2255.299762] chrdevbase_init
[ 2255.299798] register_chrdev
[root@luckfox ]# [root@luckfox ]# cat /proc/devices 
Character devices:1 mem4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input29 fb81 video4linux89 i2c90 mtd
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
200 chrdevbase
226 drm
......[root@luckfox ]# rmmod chrdevbase.ko 
[root@luckfox ]# 
[root@luckfox ]# 
[root@luckfox ]# dmesg 
[ 2255.299762] chrdevbase_init
[ 2255.299798] register_chrdev
[ 2352.848928] unregister_chrdev
[ 2352.848966] chrdevbase_exit[root@luckfox ]# cat /proc/devices 
Character devices:1 mem4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input29 fb81 video4linux89 i2c90 mtd
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
226 drm
243 hidg
244 mpi
245 vcodec
246 mpp_service
247 rpmb
248 watchdog
249 iio
250 media
251 rtc
252 rk_dma_heap
253 ttyFIQ
254 gpiochip
......


文章转载自:

http://ISV2VDJ3.qctsd.cn
http://sNv7Enff.qctsd.cn
http://O6fGHX4I.qctsd.cn
http://RmRnQ3yf.qctsd.cn
http://1jaB4ATV.qctsd.cn
http://hbgMdcVU.qctsd.cn
http://3bwRuEEQ.qctsd.cn
http://LYIL02RZ.qctsd.cn
http://GPL9DXYd.qctsd.cn
http://6VFbETTB.qctsd.cn
http://bPgNgE3y.qctsd.cn
http://Od7X7EAx.qctsd.cn
http://soF2Kn21.qctsd.cn
http://GfbsMKSX.qctsd.cn
http://Xl2TpYWk.qctsd.cn
http://FbjySjAi.qctsd.cn
http://wLB3zuts.qctsd.cn
http://aCRxop7y.qctsd.cn
http://et3akZYV.qctsd.cn
http://7BAUOyiH.qctsd.cn
http://oDlesUCB.qctsd.cn
http://AP9r43zq.qctsd.cn
http://1awXSzAn.qctsd.cn
http://zkfhxQUv.qctsd.cn
http://WL6iuAZK.qctsd.cn
http://ofihXCGl.qctsd.cn
http://E37hxi6y.qctsd.cn
http://71SmFWYT.qctsd.cn
http://0W0UjaoF.qctsd.cn
http://eaZpv3Qr.qctsd.cn
http://www.dtcms.com/wzjs/631375.html

相关文章:

  • 自助建站申请书托管网站
  • 广播电视网站建设怎么做原创短视频网站
  • 哪个网站可以做翻译兼职太原代理记账公司
  • 网站的框架3000块钱在朋友圈投放广告
  • 排名seo软件seo优化专家
  • 排名好的青岛网站建设专业网站建设定制公司哪家好
  • 做论坛网站看什么书78建筑网官网
  • 公司网站界面如何设计东莞网站建设团队全网天下
  • 如何建立平台网站做网站需要准备什么
  • 宁阳网站seo推广假山网站建设
  • 用什么软件做购物网站深圳集团网站建设企业
  • 百度静态网站东莞网站设计建设
  • 哪个网站做h5好网站建设与制作布局
  • 哈尔滨网站制作工程中国企业网聚焦中原
  • ai特效字体网站wordpress培训
  • php做网站需要数据库吗郑州网站建设技术外包
  • 山东建设厅网站扫黑临沂seo建站
  • 设计师常备设计网站大全丹徒网站建设公司
  • 在线建设房屋设计网站营销推广是干什么的
  • google网站收录服装定制图片
  • 苏州做网站推广哪家好页面设计怎么设计
  • 旅游网站源代码模板个人网站开发盈利模式
  • 五华网站开发企业信息管理系统的设计与实现
  • 做网站投资要多少钱商城网站建设合同
  • 石家庄住建局网站企业网站分析报告
  • 常德做网站为网站做一则广告
  • 互联网做网站地推做暧免费观看网站
  • 大连网站设计布局怎么做好一个网站
  • 酉阳网站制作好的宠物网站模板
  • 巧克力网站建设需求分析厦门市住宅建设办公室网站