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

地产网站互动设计wordpress打赏链接怎么实现

地产网站互动设计,wordpress打赏链接怎么实现,买好域名后怎么做网站,东阿网站制作在2.4#xff08;具体哪个版本记不清了#xff09;以后的Linux内核中引入了一种新的向内核传递参数的方法tag标记。内核参数通过一个静态的tag链表在启动的时候传递到内核。每个tag的结构为 ----------- tag_header ----------- tag_xxx ----------- 其中tag_header为tag头具体哪个版本记不清了以后的Linux内核中引入了一种新的向内核传递参数的方法tag标记。内核参数通过一个静态的tag链表在启动的时候传递到内核。每个tag的结构为 ----------- tag_header ----------- tag_xxx ----------- 其中tag_header为tag头表明tag_xxx的类型和大小之所以要标识tag_xxx的类型是因为不同的tag需要不同的处理函数下文讲tagtable的时候会分析到。tag_header的结构为 struct tag_header {     int size;     int tag; } size表示tag的结构大小tag为表示tag类型的常量。这个静态的链表必须以tag_header.tag ATAG_CORE开始并以tag_header.tag ATAG_NONE结束。由于不同的tag所使用的格式可能不尽相同所以内核又定义了一个结构tagtable来把tag和相应的操作函数关联起来 struct tagtable {        u32 tag;        int (*parse)(const struct tag*); } 其中tag为标识入ATAG_NONE,ATAG_CORE等。parse为处理函数。Linux内核将tagtable也组成了一个静态的链表放入.taglist.init节中这是通过__tagtable宏来实现的 #define __tag __attribute_used__ __attribute__((__section__ (“.taglist.init”))) #define __tagble(tag,fn) static struct tagtable __tagtable_##fn __tag {tag, fn} 以处理命令行参数为例: static int __init parse_tag_cmdline(const struct tag* tag) {     strlcpy(default_command_line, tag-u.cmdline.cmdline, COMMAND_LINE_SIZE); } __tagtable(ATAG_CMDLINE, parse_tag_cmdline) 可以看到parse_tag_cmdline将命令行参数拷贝到default_command_line里__tagtable将ATAG_CMDLINE和parse_tag_cmdline挂钩。 以上已经分析了内核和tag相关的两个重要结构。现在分析具体的实现。内核中定义了一些默认的tags static struct init_tags {        struct tag_header hdr1;        struct tag_core core;        struct tag_header hdr2;        struct tag_mem32 mem;        struct tag_header hdr3; }init_tags __initdata {        { tag_size(tag_core), ATAG_CORE },        { 1, PAGE_SIZE, 0xff },        { tag_size(tag_mem32), ATAG_MEM },        { MEM_SIZE, PHYS_OFFSET },        { 0, ATAG_NONE } } 上述结构中一个tag_header和tag_xxx形成了tag的完整描述tag_size返回tag_head和tag_xxx的总大小在tag_size中我们要注意的是u32*指针加1地址值实际上地址加了4 #define tag_next(t) ((struct tag*)((u32*)(t)(t)-hdr.size)) #define tag_size(type) ((sizeof(struct tag_header)sizeof(struct type)) 2 tag_size实际上计算的是(tag_headtag_xxx)/4。经过进一步的分析还发现每个tag在内存中的大小并不是相同的这一点可以从tag_next看出tag_next只是将指针移到了下一个tag的tag_header处这种内存布局更加紧凑。对tag的处理代码在arch/arm/setup.c setup_arch里面。以下是一部分的关键代码 struct tag *tags (struct tag*)init_tags; //tags指向默认的tag链表 …… mdesc setup_machine(machine_arch_type);// mdesc包含启动参数在内存中的地址 if( mdesc-boot_params )        tags phys_to_vert(mdesc-boot_params);// bootloader有传递启动参数到内核 if( tags-hdr.tag ! ATAG_CORE )        convert_to_tag_list(tags);//如果是旧的启动参数结构将其转成新的tag链表的形式 if( tags-hdr.tags ! ATAG_CORE )        tags (struct tag*)init_tags;//转换失败使用内置的启动参数 if( tags-hdr.tag ATAG_CORE ) {        if( meminfo.nr_banks ! 0 )               squash_mem_tags(tags);//如果在meminfo中有配置内存tag则跳过对内存tag的处理        parse_tags(tags); } *注:2.6.18内核smdk2410的meminfo没有设置nr_banks所以必须在内核的启动参数里面传递mem”memory size””memory base address”否则系统识别内存错误这点从系统的启动信息就可以看出来而且在加载initrd的时候也会遇到内存溢出的错误 static void __init parse_tags(const struct tag* t) {        for(; t-hdr.size; ttag_next(t))        {            if( !parse_tag(t))               printk(…);        } } parse_tags遍历tag链表调用parse_tag对tag进行处理。parse_tags在tabtable中寻找tag的处理函数通过tag_header结构中的tag。
http://www.yutouwan.com/news/476439/

相关文章:

  • 找企业案例的网站广州哪里学网络营销比较好
  • 安溪网站制作网站设计与制作软件
  • 遵义网站制作外包东光做淘宝网站
  • 关于建设学校网站策划书的范本wordpress 迁移
  • wordpress网站换域名怎么制作网站主题
  • 网站开发后台结构网站开发与软件研发有什么区别
  • 做婚礼网站的公司网站验证码文件
  • 寻找石家庄网站建设平台app
  • 企业网站推广策划足球世界排名一览表
  • 做个网站得投入多少wordpress评论显示游客
  • 公司网站用哪个软件做google 浏览器
  • 网站建设 提成丽江网站建设
  • 网站制作合肥嘉兴网站建设低价推荐
  • 如何申请com网站网站空间付款方式
  • 做旅游网站的开题报告网站策划书模板
  • 如何搭建一个个人网站免费推广网站
  • 专门帮人做网站的公司河南建设集团有限公司
  • 万网网站域名it外包的收益主要有
  • c 网站开发类似优酷网站优化试题
  • 做网站的作品思路及步骤自己建网站 知乎
  • 玉林网站建设公司深圳市建筑工程股份有限公司
  • 龙岗商城网站建设最好水印wordpress
  • 手机怎么建立自己网站网站模板的使用
  • 网站描述怎么修改吗城固县网站建设
  • 网站怎么做前台跟后台的接口怎么仿网站链接
  • 陕西省工程建设交易服务中心网站广告投放运营方式
  • 视频网站信息资源建设wordpress 添加播放器
  • wordpress 目录 导航站项目管理的软件有哪些
  • 国内漂亮网站欣赏网络工程师培训班在哪里
  • 泰安网络营销网站建设app与网站的区别是什么