cuốn sách gpt4 ai đã làm

c - Cách cung cấp thiết bị của tôi cho QEMU

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 23:58:07 32 4
mua khóa gpt4 Nike

Tôi đã viết những gì tôi nghĩ là một công cụ tùy chỉnh tối thiểu để kiểm tra hiểu biết chung của tôi về QOM và QEMU. Dưới đây là mã có liên quan với các nhận xét bị bỏ qua. Thật không may, khi tôi khởi động máy khách và chuyển tên thiết bị của mình làm đối số dòng lệnh, nó không tìm thấy thiết bị của tôi và thoát ra. Tôi đang ban hành:

qemu-system-x86_64-device hello-world-device ...

Làm cách nào để cho QEMU biết về thiết bị của tôi? Tôi cần thực hiện những bước nào để xây dựng thiết bị của mình đúng cách?

Tôi có thể xem danh sách các đối tượng trong thư mục nơi tôi đặt mã nguồn (qemu/hw/misc), nhưng tôi không thể tìm thấy nơi các mục tiêu khác được xác định để thêm vào mục tiêu cho thiết bị mới của mình. Mã số:

#include "qom/object.h"
#include "hw/qdev-core.h"
#define TYPE_HELLO "hello-world-thiết bị"
#define HELLO(obj) OBJECT_CHECK(Xin chàoState, (obj), TYPE_HELLO)

cấu trúc typedef{
DeviceClass parent_obj;
uint8_t thành viên0, thành viên1;
} Xin chàoState;

const tĩnh TypeInfo hello_info = {
.name = TYPE_HELLO,
.parent = TYPE_DEVICE,
.instance_size = sizeof(HelloState),
.class_init = class_init,
};

static void class_init(ObjectClass *klass, void *data){
DeviceClass *dc = DEVICE_CLASS(klass);
}

khoảng trống tĩnh hello_register_types(void){
type_register_static(&hello_info);
}

type_init(hello_register_types)

câu trả lời hay nhất

có liên quannênTài liệu về cách thực hiện việc này không rõ ràng hoặc bị thiếu, nhưng tôi đã tìm ra giải pháp tạm thời có hiệu quả.

Trong thư mục lưu trữ các tệp nguồn (ở đây là qemu/hw/misc/), có một tệp có tên Makefile.objs chứa danh sách đích của các tệp đối tượng sẽ được tạo. Việc thêm dòng sau sẽ khiến Makefile chính (trong thư mục gốc QEMU) tạo mục tiêu khi cờ cấu hình CONFIG_HELLO được xác định:

common-obj-$(CONFIG_HELLO) += hello-world-device.o

Để xác định cờ tùy chỉnh này, hãy thêm một mục vào kiến ​​trúc đích đã chọn. Ở đây tôi thêm nó vào cấu hình x86_64 trong qemu/default-configs/x86_64-softmmu.mak:

CONFIG_HELLO=y

Sau khi thực hiện các thay đổi ở trên, hãy chạy make để tạo các quy tắc xây dựng thiết bị tùy chỉnh và chạy nó vào thời điểm thích hợp khi xây dựng lược đồ. Điều này cho thấy có lỗi đưa vào mã hiện có, việc sửa được lặp lại ở đây để thuận tiện:

#include "qemu/osdeps.h"
#include "hw/hw.h"
#define TYPE_HELLO "hello-world-thiết bị"
#define HELLO(obj) OBJECT_CHECK(Xin chàoState, (obj), TYPE_HELLO)

cấu trúc typedef{
DeviceClass parent_obj;
uint8_t thành viên0, thành viên1;
} Xin chàoState;

const tĩnh TypeInfo hello_info = {
.name = TYPE_HELLO,
.parent = TYPE_DEVICE,
.instance_size = sizeof(HelloState),
.class_init = class_init,
};

static void class_init(ObjectClass *klass, void *data){
DeviceClass *dc = DEVICE_CLASS(klass);
}

khoảng trống tĩnh hello_register_types(void){
type_register_static(&hello_info);
}

type_init(hello_register_types)

Về c - Cách cung cấp thiết bị của tôi cho QEMU, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/56707632/

32 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress