今天就跟大家聊聊有关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)
node->next 就是指向下一个节点,node->prev就是指向上一个节点的entry,所以*(node->prev)就是上一个节点的next域的地址了也就是说( *node->prev ) ->next ==node
看完上述内容,你们对qemu 队列的实现原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注开发云行业资讯频道,感谢大家的支持。
1.查看当前集群full以及nearfull的设置值,在Mon节点查询Mon配置ceph –admin-daemon /run/ceph/ceph-mon.IP.asok config show | grep full_ratio2.查看当前集群full以及…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。