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

html网站建设中源代码网站建设公司创业

html网站建设中源代码,网站建设公司创业,深圳网页设计兴田德润专业,友情链接有哪些展现形式1、内核空间与用户空间数据交换方式 分两种情况: 1> 需要交换的数据量较大时; 2> 需要交换的数据量较小时; 第一种情况使用以下的函数: unsigned long copy_to_user(void __user* to, const void* from, unsigned long n)…

1、内核空间与用户空间数据交换方式

分两种情况:
1> 需要交换的数据量较大时;
2> 需要交换的数据量较小时;

第一种情况使用以下的函数:

unsigned long copy_to_user(void __user* to, const void* from, unsigned long n);
unsigned long copy_from_user(void* to, const void __user* from, unsigned long n);

返回值表示成功拷贝的字节数。

第二种情况则使用以下所示的宏定义:

#include <asm/uaccess.h>
put_user(local, user);
get_user(local, user);

2、MKDEV申请的设备号与register_chrdev_region申请的设备号有什么区别?

两种方式所描述的“设备号”是相同的。其区别用一句话概括就是:是否得到了系统的承认。

MKDEV(ma, mi) 是一个宏定义,其作用就是将参数 major 和 minor 由两个分散的数值组合成统一的 dev_t 类型(unsigned long)。执行此宏定义后得到的“设备号”表示你想要得到这个设备号,想向全世界声明它属于我,不过此时它仅仅是你单方面的声明而已。

register_chrdev_region() 的用法通常是将 MKDEV() 出来的设备号作为参数传入。可以理解成是在开发者单方面声明想独占某个设备号后,将此设备号交由操作系统审批。当函数返回值为0时,表示Linux系统通过了开发者的申请,前面由 MKDEV() 出来的设备号就得到开发者以及操作系统的共同认可。

3、register_chrdev_region() 与 alloc_chrdev_region() 有什么区别?

两函数的原型分别如下所示:

int register_chrdev_region(dev_t from, unsigned int count, const chr* name);
int alloc_chrdev_region(dev_t* dev, unsigned int baseminor, unsigned int count, const char* name);

两个函数的目的一样,都是从系统中得到(申请)一个专属设备号。但前者用于“静态申请”,而后者用于“动态申请”。

静态申请则表示开发者为某设备静态指定一个设备号,直接提交给系统审批。

但设备号资源是有限的,对某些动态加载的驱动来说可能会遇到静态指定的设备号已被占用的情况。此时最好的解决办法就是直接向系统申请一个可用的设备号。

4、创建内核线程

可以使用 kthread_run 宏定义来创建。其原型如下
#define kthread_run(threadfn, data, namefmt, …)
  参数 threadfn 表示用于在子线程中执行的函数名。子线程函数的原型为:int (*threadfn)(void *data)
  参数 data 表示要传递到子线程函数去的数据地址。
  参数 namefmt 及后面的可变长度个参数用于组合成此子线程的名称。
  
  此宏定义返回值为一个 struct task_struct 结构体地址。可以用 IS_ERR(ts)来判断子线程是否成功创建。

5、内核中的内存分配

内核开发中常见的分配内存的函数有两个:

static inline void* kmalloc(size_t size, gfp_t flags);
void* vmalloc(unsigned long size);

kmalloc函数与malloc函数类似,它所分配的内存空间在物理上是地址连续型的。但是它在内核中最大只能分配128KB的内存空间。此函数第二个参数常用的值有两个:1、GFP_KERNEL;2、GFP_ATOMIC;分别对应于在内存不足是是否阻塞调用。
vmalloc函数分配的内存空间在虚拟地址上是连续的,但是在物理地址上却不一定。因此此函数可用于分配大内存空间,最大可达1GB。

如果在内核开发中要涉及到频繁的申请与释放内存空间的,为避免产生内存碎片,可以使用内存池技术来解决。

http://www.yayakq.cn/news/194931/

相关文章:

  • 建设在线教育网站建设银行网站会员有什么用
  • wordpress建站安全吗室内设计师之家
  • 网页设计 做网站的代码高端网站建设 南京
  • 做的好看的网站用别人的公司名字做网站
  • 北京网站设计推荐柚米上海站优云网络科技有限公司
  • 网站连接到wordpress石油网站编辑怎么做
  • 怎么做企业的网站首页企业邮箱注册需要什么材料
  • 网站建设分工表wordpress视频投票
  • 网站模板分什么类型asp.net网站开发技术
  • 海口网站建设解决方案广告设计与制作专升本可以报考什么专业
  • 网站开发vue版本是什么网站备案过户
  • 企业网站 手机站搜索引擎营销优化诊断训练
  • tag 网站托管公司石家庄企业如何建网站
  • 网站域名管理在哪里建立网站最好的模板
  • 如何dns解析网站html5手机网站模板下载
  • 广东省公路建设有限公司网站怎么做网站流量
  • 网站代付系统怎么做wordpress 描述设为标题
  • 南浔区建设局 网站东莞工程建设监督服务平台
  • 南通网站建设团队什么人最需要建设网站
  • 工业设计网站哪个好用国外优秀人像摄影网站
  • 怎么防止网站被注册机贵阳建设银行网站
  • 做网站看好金石网络广阳区建设局网站
  • 个人备案做公司网站贵阳网站建设端觉
  • 域名注册服务网站外国风格网站建设官网
  • 如何增加网站会员wordpress tag生成的链接乱
  • 建设一个小说网站的步骤wordpress不能上传主题
  • 深圳做小程序网站开发网站建设制作公司都选万维科技
  • 国外网站发展建设apsx做的网站怎么发布
  • 泰安钢管网站建设ghost卸载wordpress
  • 网站内容编辑兼容模式网站错位