内核操作 Linux2.6内核驱动移植参考

时间:2007-04-29 16:44:08  来源:站长资讯收集整理  作者:佚名

pe, name);

DEFINE_PER_CPU(int, mypcint);

2.6内核采用了可剥夺得调度方式这些宏都不安全。

17、 内核时间变化

1、现在的各个平台的HZ为

Alpha: 1024/1200; ARM: 100/128/200/1000; CRIS: 100; i386: 1000; IA-64:

1024; M68K: 100; M68K-nommu: 50-1000; MIPS: 100/128/1000; MIPS64: 100;

PA-RISC: 100/1000; PowerPC32: 100; PowerPC64: 1000; S/390: 100; SPARC32:

100; SPARC64: 100; SuperH: 100/1000; UML: 100; v850: 24-100; x86-64: 1000.

2、由于HZ的变化,原来的jiffies计数器很快就溢出了,引入了新的计数器jiffies_64

3、#include <linux/jiffies.h>

u64 my_time = get_jiffies_64();

4、新的时间结构增加了纳秒成员变量

struct timespec current_kernel_time(void);

5、他的timer函数没变,新增

void add_timer_on(struct timer_list *timer, int cpu);

6、新增纳秒级延时函数

ndelay();

7、POSIX clocks 参考kernel/posix-timers.c

18、 工作队列(workqueue)

1、任务队列(task queue )接口函数都被取消,新增了workqueue接口函数

struct workqueue_struct *create_workqueue(const char *name);

DECLARE_WORK(name, void (*function)(void *), void *data);

INIT_WORK(struct work_struct *work,

void (*function)(void *), void *data);

PREPARE_WORK(struct work_struct *work,

void (*function)(void *), void *data);

2、申明struct work_struct结构

int queue_work(struct workqueue_struct *queue,

struct work_struct *work);

int queue_delayed_work(struct workqueue_struct *queue,

struct work_struct *work,

unsigned long delay);

int cancel_delayed_work(struct work_struct *work);

void flush_workqueue(struct workqueue_struct *queue);

void destroy_workqueue(struct workqueue_struct *queue);

int schedule_work(struct work_struct *work);

int schedule_delayed_work(struct work_struct *work, unsigned long

delay);

19、 新增创建VFS的"libfs"

libfs给创建一个新的文件系统提供了大量的API.

主要是对struct file_system_type的实现。

参考源代码:

drivers/hotplug/pci_hotplug_core.c

drivers/usb/core/inode.c

drivers/oprofile/oprofilefs.c

fs/ramfs/inode.c

fs/nfsd/nfsctl.c (simple_fill_super() example)

文章评论

共有 位CH网友发表了评论 查看完整内容