您的位置 首页 IOT

arm linux 内核 startkenal 的问题

armlinux内核start_kenal的问题我费解了很久还是不解::在includelinuxCupmaskh中有如下定义typedefstruct{DECLARE_BI

arm linux 内核 start_kenal 的问题我费解了好久 仍是不解::

在include\linux\Cupmask.h中有如下界说
typedef struct { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;
extern cpumask_t _unused_cpumask_arg_;

#define cpu_set(cpu, dst) __cpu_set((cpu), &(dst))
static inline void __cpu_set(int cpu, volatile cpumask_t *dstp)
{
set_bit(cpu, dstp->bits);
}

在include\linux\Types.h中有如下界说
#ifdef __KERNEL__
#define BITS_TO_LONGS(bits) \
(((bits)+BITS_PER_LONG-1)/BITS_PER_LONG)
#define DECLARE_BITMAP(name,bits) \
unsigned long name(这个bits =32)
#define BITS_PER_BYTE 8
#endif

awk变量运用单引号的问题

咱们能够得出:cpumask_t 等价于 unsigned long bits
那么cpumask_t *dstp 便是一个指向 unsigned long 数组的指针
那么 为什么会呈现 这样的 表达式 set_bit(cpu, dstp->bits); ?????cpusets是运用位掩码来表明的。
关于一个32位机上的unsigned int类型来说,它有32个bit位。那么每个bit位就对应一个CPU。比方0x1就表明0号位的那个CPU。0x3就表明0,1号位的那两个CPU。

也能够看看这个贴子第六楼:
http://www.chinaunix.net/index.php?uid=20551201&url=http://linux.chinaunix.net/bbs/viewthread.php?tid=904906感谢 scutan (冬日夜雨)的协助 (牛人啊 )
我愈加了解了代码表达的 意思

我还有一个当地不 理解
static inline void __cpu_set(int cpu, volatile cpumask_t *dstp) //dest是指向 unsigned long bits
//我就看不 个这个表达式了 dstp->bits
{
set_bit(cpuhttp://www.airmaxshoe.net, dstp->bits);
}-> 一般用于数据结构里边啊
例如
struct student
{
age;
heathy;
}

struct stdent *p;
假如我要拜访*p的age,能够这样写 p->age;

假如你界说一个 unsigned long aaa;unsigned long p; 没有这种用法吧 p->bit,,,,便是这儿不 理解原帖由 eezzrr 于 2009-2-17 01:36 宣布 cdecu4f3yw3.gif
-> 一般用于数据结构里边啊
例如
struct student
{
age;
heathy;
}

struct stdent *p;
假如我要拜访*p的age,能够这样写 p->age;

假如你界说一个 unsigned long aaa;unsigned long …

是这样的http://www.posercity.com,比方说 unsigned long a,此刻的a便是拜访这个数组的第一个元素的值。而相同也能够运用a,此刻的a就表明这个数组的首地址。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/262763.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部