linux 内核 指针-请教linux内核模块指针的问题

问题描述

请教linux内核模块指针的问题
我在一个内核模块中写了下面一段代码,编译没问题,执行时报错(oops)好像是指针的问题,只要不在while循环中给j赋值就没问题,不知何故,第一次做内核模块,不知道内核态指针是不是还有什么特殊用法,求教

i = *hash_number + 1;
j = 0;
while ((i % HASH_MAX_REGIONS) != hash_number) {
if (dmc->access_stats[i].region_number != region_number) {
if (dmc->access_stats[i].Te == 0 && flag == 0) {
flag = 1;
j = i;
}
i++;
} else {
j = i;
break;
}

}if (i == *hash_number && flag < 0)    return -1;else    *hash_number = j;
时间: 2024-10-26 05:54:21

linux 内核 指针-请教linux内核模块指针的问题的相关文章

Linux内核剖析 之 Linux源代码组成

Linux内核剖析 之 Linux源代码组成   ++++Linux:           ++COPYING:有关公共许可证制度GPL的具体说明.           ++README:Linux内核安装和使用的简要说明.           ++Makefile:重构Linux内核可执行代码的make文件.用来组织内核的各模块,记录了个模块间的联系和依托关系,编译时使用:仔细阅读各子目录下的Makefile文件对弄清各个文件这间的联系和依托关系很有帮助.           ++CREDIT

linux内核 访问外设-Linux驱动中访问外设端口的outb为什么不是访问内存空间

问题描述 Linux驱动中访问外设端口的outb为什么不是访问内存空间 原文如下面,其中第一个宏的意思不是把值v赋给了内存地址为a的内存空间吗,为什么是访问outb是往外设端口写数据的? 在linux的驱动程序中,都会使用大量的outb.outw.inb.inw等等宏来访问硬件或寄存器.这些宏的定义都在相应处理器体系下的include/asm目录下的io.h中定义.追究下去,这些宏最终就是一个volatile变量的的赋值: #define arch_putb(v,a) (*(volatile u

如何使用linux内核自己制作linux

学习过linux的同学都只知道linux是开源免费的,也只是非常棒的,.但是既然开源,那我们是否自己也可以动手打造一个简单的linux呢?今天我们来实验一下 1.在虚拟机里添加一块新的硬盘

Linux内核中双向链表的经典实现

概要 前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法.其中,也会涉及到Linux内核中非常常用的两个经典宏定义offsetof和container_of.内容包括: 1. Linux中的两个经典宏定义 2. Linux中双向链表的经典实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3562146.html 更多内容: 数据结构与算法系列 目录

linux内核md源代码解读 十三 raid5重试读

上节我们讲到条块内读失败,在回调函数raid5_align_endio中将请求加入阵列重试链表,在唤醒raid5d线程之后,raid5d线程将该请求调用retry_aligned_read函数进行重试读: 4539static int retry_aligned_read(struct r5conf *conf, struct bio *raid_bio) 4540{ 4541 /* We may not be able to submit a whole bio at once as ther

linux内核md源代码解读 十二 raid读写

我们都知道,对一个linux块设备来说,都有一个对应的请求队列.注册在这个请求队列上的请求就是该块设备的请求入口.对于raid来说,分配struct mddev时就已经设置好了,在函数md_alloc中有这样的代码: 4846 blk_queue_make_request(mddev->queue, md_make_request); 4847 blk_set_stacking_limits(&mddev->queue->limits); 虽然全国的PM一直保持着稳健的增长,但丝

Linux内核剖析 之 内核同步

主要内容     1.内核请求何时以交错(interleave)的方式执行以及交错程度如何.     2.内核所实现的基本同步机制.     3.通常情况下如何使用内核提供的同步机制. 内核如何为不同的请求服务     哪些服务?     ====>>>     为了更好地理解内核是如何执行的,我们把内核看做必须满足两种请求的侍者:一种请求来自顾客,另一种请求来自数量有限的几个不同的老板.对于不同的请求,侍者采用如下的策略:     1.老板提出请求时,如果侍者空闲,则侍者开始为老板服务

linux内核数据结构之链表

1.前言 最近写代码需用到链表结构,正好公共库有关于链表的.第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域.后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h下.这个链表具备通用性,使用非常方便.只需要在结构定义一个链表结构就可以使用. 2.链表介绍 链表是非常基本的数据结构,根据链个数分为单链表.双链表,根据是否循环分为单向链表和循环链表.通常定义定义链表结构如下: typedef struct node {

Ubuntu中为Android系统上编写Linux内核驱动程序实现方法_Android

        在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore.随着Android系统逐步扩大市场占有率,终端设备的多样性亟需更多的移动开发人员的参与.据业内统计,Android研发人才缺口至