linux_Freax 2015-11-14 08:03 采纳率: 0%
浏览 1511

how current marco works in IA32

When I brose the code in Linux kernel 2.6.24, I find this.

 static __always_inline struct task_struct *get_current(void)
{
        return x86_read_percpu(current_task);
}

When I am looking for x86_read_percpue, It looks like this.

 #define x86_read_percpu(var) percpu_from_op("mov", per_cpu__##var)

But it seems like this.

 #define percpu_from_op(op,var)                                  \
        ({                                                      \
                typeof(var) ret__;                              \
                switch (sizeof(var)) {                          \
                case 1:                                         \
                        asm(op "b "__percpu_seg"%1,%0"          \
                            : "=r" (ret__)                      \
                            : "m" (var));                       \
                        break;                                  \
                case 2:                                         \
                        asm(op "w "__percpu_seg"%1,%0"          \
                            : "=r" (ret__)                      \
                            : "m" (var));                       \
                        break;                                  \
                case 4:                                         \
                        asm(op "l "__percpu_seg"%1,%0"          \
                            : "=r" (ret__)                      \
                            : "m" (var));                       \
                        break;                                  \
                default: __bad_percpu_size();                   \
                }                                               \
                ret__; })

I can't find per_cpu_current_task in source code!!!!!!!

  • 写回答

1条回答 默认 最新

  • Robot-C 2015-11-14 08:11
    关注

    This had me beating my head against the wall for days. Now as you know, It is fairly straightforward to open an SDL surface in a window:
    SDL_Surface *screen = SDL_SetVideoMode(width, height, 24, SDL_......
    答案就在这里:How to make an SDL window the child of another window in Win32
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥15 问题遇到的现象和发生背景 360导航页面千次ip是20元,但是我们是刷量的 超过100ip就不算量了,假量超过100就不算了 这是什么逻辑呢 有没有人能懂的 1000元红包感谢费
  • ¥30 计算机硬件实验报告寻代
  • ¥15 51单片机写代码,要求是图片上的要求,请大家积极参与,设计一个时钟,时间从12:00开始计时,液晶屏第一行显示time,第二行显示时间
  • ¥15 用C语言判断命题逻辑关系
  • ¥15 原子操作+O3编译,程序挂住
  • ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。
  • ¥15 在yolo1到yolo11网络模型中,具体有哪些模型可以用作图像分类?
  • ¥15 AD9910输出波形向上偏移,波谷不为0V
  • ¥15 淘宝自动下单XPath自动点击插件无法点击特定<span>元素,如何解决?
  • ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘