10 2014 档案

资源的正确引用
摘要:对资源的引用应该发生在对资源的保护期间。比如在所保护内hold住资源、local_bh_disable内hold住资源;否则对资源的使用可能发生不一致的情况。PS: 代码逻辑应该符合真实世界的合理逻辑。 阅读全文

posted @ 2014-10-23 15:49 Kernel_wu 阅读(129) 评论(0) 推荐(0)

内核无锁
摘要:多核环境下,每个核只操作自身的资源,且操作时关闭下半部中断。PS:内核世界挺奇妙的。 阅读全文

posted @ 2014-10-23 15:45 Kernel_wu 阅读(136) 评论(0) 推荐(0)

多种方式操作同种资源时的免锁策略
摘要:内核模块编码时,对资源的管理经常需要hash表和lru链两种方式。可以在资源结点的数据结构中增加一个knpostion标识位,两者都操作完毕后,使能该位,从而保证操作的一致性。写了些简单的代码: 82 void resource_remove(resource_node_t *node) 83 { ... 阅读全文

posted @ 2014-10-22 17:07 Kernel_wu 阅读(183) 评论(0) 推荐(0)

内核资源管理模块
摘要:下午没事,写着玩~明天加上LRU链,用定时器检查资源是否超时,超时就删除。#include "priv.h"#include "kt_resource.h"#define RESOURCE_HASHSIZE (1 hash.hash_pos & (RESOURCE_HASHSIZE - 1); ... 阅读全文

posted @ 2014-10-21 19:17 Kernel_wu 阅读(266) 评论(0) 推荐(0)

自旋锁死锁
摘要:自旋锁内调用kmalloc或者copy_to_user之类的接口可能造成死锁。这类函数的实现内有睡眠操作,睡眠时产生了进程调度,新的进程内如果也使用了该自旋锁,就会导致死锁。这类问题非常普通,但很容易忽略;屏蔽的方式:1,使用get_free_page申请内存2,对资源使用引用计数保护3,使用互斥锁 阅读全文

posted @ 2014-10-21 12:56 Kernel_wu 阅读(792) 评论(0) 推荐(0)

导航