qemu 队列的实现原理是什么

发布时间:2021-06-21 18:40:22 作者:Leah
来源:亿速云 阅读:332

今天就跟大家聊聊有关qemu 队列的实现原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

#define QLIST_HEAD(name, type)                                          \

struct name {                                                           \

        struct type *lh_first;  /* first element */                     \

}


#define QLIST_HEAD_INITIALIZER(head)                                    \

        { NULL }


#define QLIST_ENTRY(type)                                               \

struct {                                                                \

        struct type *le_next;   /* next element */                      \

        struct type **le_prev;  /* address of previous next element */  \

}


/*

 * List functions.

 */

#define QLIST_INIT(head) do {                                           \

        (head)->lh_first = NULL;                                        \

} while (/*CONSTCOND*/0)


#define QLIST_INSERT_AFTER(listelm, elm, field) do {                    \

        if (((elm)->field.le_next = (listelm)->field.le_next) != NULL)  \

                (listelm)->field.le_next->field.le_prev =               \

                    &(elm)->field.le_next;                              \

        (listelm)->field.le_next = (elm);                               \

        (elm)->field.le_prev = &(listelm)->field.le_next;               \

} while (/*CONSTCOND*/0)


#define QLIST_INSERT_BEFORE(listelm, elm, field) do {                   \

        (elm)->field.le_prev = (listelm)->field.le_prev;                \

        (elm)->field.le_next = (listelm);                               \

        *(listelm)->field.le_prev = (elm);                              \

        (listelm)->field.le_prev = &(elm)->field.le_next;               \

} while (/*CONSTCOND*/0)


#define QLIST_INSERT_HEAD(head, elm, field) do {                        \

        if (((elm)->field.le_next = (head)->lh_first) != NULL)          \

                (head)->lh_first->field.le_prev = &(elm)->field.le_next;\

        (head)->lh_first = (elm);                                       \

        (elm)->field.le_prev = &(head)->lh_first;                       \

} while (/*CONSTCOND*/0)


qemu 队列的实现原理是什么

node->next  就是指向下一个节点,

node->prev就是指向上一个节点的entry,所以*(node->prev)就是上一个节点的next域的地址了

也就是说( *node->prev ) ->next ==node


看完上述内容,你们对qemu 队列的实现原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. QEMU架构浅析
  2. qemu trace使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

qemu

上一篇:Calico 网络通信的原理是什么

下一篇:SpringBoot自动装配的原理是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》