第十一章:内核的数据处理

原创 2012年03月30日 14:33:45

在编译时使用-Wall –Wstrict-prototypes选项编译可以防止大多数的代码缺陷。

使用标准C语言类型

内核中的普通内存地址通常是unsigned long ,因为:至少在当前linux支持的所有平台上,指针和long整型的大小是一样的。

为数据项分配确定的空间大小

<asm/types.h>中定义若干类型:u8, u16, u32, u64

使用新的编译器可以定义如下类型等等:uint8_t, uint32_t

其他有关移植性的问题

页分配常见代码:假设需要16KB空间来存储临时数据,则分配页的代码是

#include <asm/pages.h>

int order = get_order(16*1024);

buf = get_free_pages(FGP_KERNEL, order);

传给order的值必须是2的幂。

链表

相关类型以及API

struct list_head{struct list_head *next, *prev;};

初始化

sturct list_head todo_list;

INIT_LIST_HEAD(&todo_list);

也可以这样初始化:

LIST_HEAD(todo_list);

API:

list_add(struct list_head *new, struct list_head *head);

list_add_tail(struct list_head *new, struct list_head *head);

list_del(struct list_head *entry);

list_del_init(struct list_head *entry);

list_empty(struct list_head *head);

list_entry(entry, type, name);

list_move(struct list_head *entry, struct list_head *head);

list_move_tail(struct list_head *entry, struct list_head *head);

list_splice(struct list_head *list, struct list_head *head);

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux内核异步数据处理--kfifo

引题: 在驱动编程中,经常会遇到异步数据处理的情况,比如采用中断或定时器处理数据输入输出等情况 此时数据的采集与处理往往不同步,于是驱动编程中数据采集方需要将采集的数据暂时放到一个缓冲...

第十一章--内核的数据类型

本文作为第十一章--内核的数据结构,主要讲述: 1、数据类型。 2、其他有关移植性的问题。 3、链表。

第十一章 内核的数据类型

1、有关移植性的问题 (1)时间间隔 (2)页大小 (3)字节序 (4)数据对齐      若果要访问未对齐的数据,则应该使用下面的宏:      #include      get_...

第十一章 内核数据类型

Attenton:将linux 移植到新的体系架构时,开发者遇到的若干问题都与不正确的数据类型有关。坚持使用严格的数据类型且使用 -Wall -Wstrict-prototypes 进行编译可以避...

Hadoop实战之专利数据处理

运行环境VMware10、CentOS6.6、hadoop1.2.1 本实验依照Hadoop in action一书第四章进行 首先拿到专利数据:http://data.nber.org/patent...

Oracle数据库之数据处理

SQL> SQL的类型SQL> 1. DML(Data Manipulation Language 数据操作语言):insert update delete select SQL> 2. DDL(D...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)