相關(guān)代碼在目錄:include/qom/捷绒,qom/兩個(gè)目錄下力麸。Qemu首先虛擬出了一個(gè)事物模型(ObjectModule)欧啤,通過(guò)結(jié)構(gòu)體TypeInfo來(lái)建立一個(gè)樹(shù)狀的事物繼承關(guān)系鼓择,最頂層有兩個(gè):Object脯爪,Interface则北。
下面具體看看TypeInfo矿微,TypeInfo中定義了如下幾類(lèi)信息:
1. Name
包括自己的Name,Parent的Name尚揣。
2. Class
Class的信息包括涌矢,class_size,class_data快骗,class相關(guān)函數(shù):class_base_init娜庇,class_init,class_finalize方篮。這些函數(shù)都是為了初始化名秀,釋放結(jié)構(gòu)體ObjectClass。
3. Instance
Instance信息包括:instance_size藕溅,instance相關(guān)函數(shù):instance_post_init匕得,instance_init,instance_finalize巾表。這些函數(shù)都是為了初始化汁掠,釋放結(jié)構(gòu)體Object。
4. 其他信息
是否為抽象集币。Interface數(shù)組考阱。
這整套模型是如何構(gòu)建的?是如何設(shè)計(jì)的鞠苟?我理解設(shè)計(jì)方案由兩部分構(gòu)成:元素和過(guò)程乞榨。元素指的是整個(gè)架構(gòu)中有哪些不可分割的元事物,由他們構(gòu)成架構(gòu)中的一個(gè)個(gè)模塊当娱。過(guò)程只的是現(xiàn)實(shí)運(yùn)行環(huán)境中如何用元素一步一步搭建起整個(gè)架構(gòu)的?