verify_area

verify_area的作用是对当前进程的地址addr到addr+size这一段进程空间以页为单位执行写操作前的检测。若页面是只读的,则执行共享检验和复制页面操作

当你浏览ewrk3_ioctl()代码的时候,记住在一个应用中用户空间的指令是无法访问内核空间的,由于这个原因 ,2个特殊的步骤提供给了驱动编写人员.他们是memcpy_tofs()和memcpy_fromfs()。内核里的做法是用memcpy_tofs() 拷贝内核数据到用户空间,类似的memcpy_fromfs()也是这样的,只是他拷贝用户数据到内核空间.。这些程序步骤是由于调用verify_area()而被执行的,目的是确认数据访问不会违法。同样记住printk()的用法是打印调试信息,这个函数和printf()很相象,但是它不能处理浮点数据,printf()函数在内核中是不能被使用的。由printk()产生的输出被转储到了一个目录./usr/adm/messages

 

struct file *get_empty_filp(void)函数的功能是获得一个未使用的文件缓存空间即file结构体

https://blog.youkuaiyun.com/yanlinwang/article/details/8277534

 

verify_area_key/verify_key.c: In function ‘parse_geojson_to_region’: verify_area_key/verify_key.c:378:35: error: assignment of member ‘min_lat’ in read-only object 378 | region->bbox->min_lat = min_lat; | ^ verify_area_key/verify_key.c:379:35: error: assignment of member ‘max_lat’ in read-only object 379 | region->bbox->max_lat = max_lat; | ^ verify_area_key/verify_key.c:380:35: error: assignment of member ‘min_lon’ in read-only object 380 | region->bbox->min_lon = min_lon; | ^ verify_area_key/verify_key.c:381:35: error: assignment of member ‘max_lon’ in read-only object 381 | region->bbox->max_lon = max_lon; | ^ verify_area_key/verify_key.c:410:38: error: assignment of member ‘vertices’ in read-only object 410 | region->polygons[i].vertices = (Point*)malloc(npts * sizeof(Point)); | ^ verify_area_key/verify_key.c:412:42: error: assignment of member ‘num_vertices’ in read-only object 412 | region->polygons[i].num_vertices = npts; | ^ verify_area_key/verify_key.c:419:49: error: assignment of read-only location ‘*((region->polygons + (sizetype)((long unsigned int)i * 16))->vertices + (sizetype)((long unsigned int)j * 16))’ 419 | region->polygons[i].vertices[j] = (Point){.lat = lat, .lon = lon}; | ^ verify_area_key/verify_key.c:430:20: warning: passing argument 1 of ‘free’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 430 | free(region->bbox); | ~~~~~~^~~~~~ In file included from verify_area_key/verify_key.h:7, from verify_area_key/verify_key.c:1: /usr/include/stdlib.h:555:25: note: expected ‘void *’ but argument is of type ‘const BoundingBox *’ 555 | extern void free (void *__ptr) __THROW; | ~~~~~~^~~~~ verify_area_key/verify_key.c:433:41: warning: passing argument 1 of ‘free’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 433 | free(region->polygons[i].vertices); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~ In file included from verify_area_key/verify_key.h:7, from verify_area_key/verify_key.c:1: /usr/include/stdlib.h:555:25: note: expected ‘void *’ but argument is of type ‘const Point *’ 555 | extern void free (void *__ptr) __THROW; | ~~~~~~^~~~~ verify_area_key/verify_key.c:435:24: warning: passing argument 1 of ‘free’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 435 | free(region->polygons); | ~~~~~~^~~~~~~~~~ In file included from verify_area_key/verify_key.h:7, from verify_area_key/verify_key.c:1: /usr/include/stdlib.h:555:25: note: expected ‘void *’ but argument is of type ‘const Polygon *’ 555 | extern void free (void *__ptr) __THROW;
11-04
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值