0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Rust構(gòu)建QEMU插件的框架

jf_wN0SrCdH ? 來源:Rust語言中文社區(qū) ? 2023-07-21 16:57 ? 次閱讀

Cannonball Rust 構(gòu)建的 QEMU 插件的框架


Cannonball 是一個用 Rust 構(gòu)建 QEMU 插件的框架!您可以在 C 語言的 QEMU TCG 插件中執(zhí)行的任何操作,都可以使用cannonball。編寫以最小的開銷和盡可能多的功能運行的插件!


例子


這里提供了幾個例子!

  • jaivana

一個簡單的跟蹤器,將一組可配置的事件記錄到文件或標(biāo)準(zhǔn)輸出中。

  • mons meg


一個跟蹤器,記錄與 Jaivana 相同的事件,但使用 Tokio 在異步環(huán)境中運行跟蹤,通過 UNIX 套接字而不是匿名管道與主機進行通信。 看看它們,它們是學(xué)習(xí)如何使用這個框架的最佳方式。


安裝


安裝 只需將其添加到您的 Cargo.toml:


	

cannonball = "0.2.4"

J
aivana 的演示例子:https://github.com/novafacing/cannonball/tree/main/examples/jaivana

kiddb 基于 Rust 的嵌入式存儲引擎


整體設(shè)計參考LevelDB,旨在作為NewSQL數(shù)據(jù)庫的存儲引擎

  • 支持嵌入式/單機存儲/遠(yuǎn)程調(diào)用等多應(yīng)用場景

  • 以Kiss作為開發(fā)理念,設(shè)計以簡單而高效為主導(dǎo)

  • 實現(xiàn)MVCC以支持ACID

  • 性能,BenchMark 讀取吞吐量約為 Sled 的兩倍,且大數(shù)據(jù)量下的讀取順序平均延遲為 1μs 左右

  • 遠(yuǎn)程連接使用ProtoBuf實現(xiàn),支持多語言通信

  • 極小內(nèi)存占用(占用/大量冷數(shù)據(jù))

  • 安全讀取

組件引入


	

kip_db = "0.1.1-alpha.0"

代碼

代碼編譯


	

cargo build

代碼編譯(正式環(huán)境)


	

cargo build --release

單元測試


	

cargo test

性能基準(zhǔn)測試


	

cargo bench

Docker鏡像編譯

編譯鏡像


	

docker build -t kould/kip-db:v1 .

運行鏡像


	

docker run kould/kip-db:v1


直接調(diào)用(基本使用)


	

/// 指定文件夾以開啟一個KvStore let kip_db = LsmStore::open("/welcome/kip_db").await?; // 插入數(shù)據(jù) kip_db.set(&b"https://github.com/KKould/KipDB", Bytes::from(&b"your star plz"[..])).await?; // 獲取數(shù)據(jù) let six_pence = kip_db.get(&b"my deposit").await?; // 已占有硬盤大小 let just_lot = kip_db.size_of_disk().await? // 已有數(shù)據(jù)數(shù)量 let how_many_times_you_inserted = kip_db.len().await?; // 刪除數(shù)據(jù) kip_db.remove(&b"ex girlfriend").await?; // 創(chuàng)建事務(wù) let mut transaction = kip_db.new_transaction().await?; // 插入數(shù)據(jù)至事務(wù)中 transaction.set(&b"this moment", Bytes::from(&b"hope u like it"[..])); // 刪除該事務(wù)中key對應(yīng)的value transaction.remove(&b"trouble")?; // 獲取此事務(wù)中key對應(yīng)的value let ping_cap = transaction.get(&b"dream job")?; // 提交事務(wù) transaction.commit().await?; // 創(chuàng)建持久化數(shù)據(jù)迭代器 let guard = kip_db.iter().await?; let mut iterator = guard.iter()?; // 獲取下一個元素 let hello = iterator.next_err()?; // 移動至第一個元素 let world = iterator.seek(Seek::Last)?; // 強制數(shù)據(jù)刷入硬盤 kip_db.flush().await?;


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 插件
    +關(guān)注

    關(guān)注

    0

    文章

    320

    瀏覽量

    22396
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    453

    瀏覽量

    11792
  • qemu
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    5318
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    228

    瀏覽量

    6542

原文標(biāo)題:【Rust日報】2023-07-19 Cannonball -- Rust 構(gòu)建的 QEMU 插件的框架

文章出處:【微信號:Rust語言中文社區(qū),微信公眾號:Rust語言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Rust GUI實踐之Rust-Qt模塊

    Rust-Qt 是 Rust 語言的一個 Qt 綁定庫,它允許 Rust 開發(fā)者使用 Qt 框架來創(chuàng)建跨平臺的圖形界面應(yīng)用程序。Qt 是一個跨平臺的應(yīng)用程序
    的頭像 發(fā)表于 09-30 16:43 ?1495次閱讀

    框架插件結(jié)構(gòu)

    這里說的框架插件結(jié)構(gòu)是指程序啟動時或運行中,去查看硬盤某個路徑下,有哪些插件模塊,然后把它們調(diào)用起來的這樣一種程序結(jié)構(gòu)。LabVIEW中實現(xiàn)這樣的程序機構(gòu)有兩種方法,一是利用LabVIEW Scripting中動的態(tài)調(diào)用VI,二
    發(fā)表于 11-14 15:43

    只會用Python?教你在樹莓派上開始使用Rust

    構(gòu)建所有腳本,但是您還需要代碼編輯器。在這個項目中,我將使用Code-OSS,這是VS Code的社區(qū)版本,您可以在Pi上安裝它,但這不是必需的。任何代碼編輯器都可以。創(chuàng)建Rust項目要創(chuàng)建Rust
    發(fā)表于 05-20 08:00

    QEMU簡介

    目錄2.1 QEMU2.1.1 創(chuàng)建非標(biāo)準(zhǔn)的Rust程序2.1.2 代碼簡介2.1.3 交叉編譯2.1.4 二進制文件分析工具2.1.5 運行2.1.6調(diào)試在本節(jié)中,我們將引導(dǎo)您完成編寫,構(gòu)建,刷新
    發(fā)表于 12-16 07:18

    RUST在嵌入式開發(fā)中的應(yīng)用是什么

    Rust是一種編程語言,它使用戶能夠構(gòu)建可靠、高效的軟件,尤其是用于嵌入式開發(fā)的軟件。它的特點是:高性能:Rust具有驚人的速度和高內(nèi)存利用率??煽啃裕涸诰幾g過程中可以消除內(nèi)存錯誤。生產(chǎn)效率:優(yōu)秀
    發(fā)表于 12-24 08:34

    如何利用C語言去調(diào)用rust靜態(tài)庫呢

    qemu-vexpress-a9這個bsp做為我們的目標(biāo)平臺。這樣不用開發(fā)板就可以測試了。先要安裝目標(biāo)環(huán)境,可以參考這個鏈接:Rust 嵌入式開發(fā) STM32 和 RISC-Vrustup target
    發(fā)表于 06-21 10:27

    在Windows平臺使用Eclipse調(diào)試RT-Thread qemu-vexpress-a9 BSP工程

    和 Python 等開發(fā)工具。Eclipse 的本身只是一個框架平臺,但是眾多插件的支持使得 Eclipse 擁有其他功能相對固定的 IDE 軟件很難具有的靈活性。本文主要介紹在 Windows 平臺
    發(fā)表于 10-26 15:31

    Dockerfile構(gòu)建環(huán)境報錯如何解決?

    版本,不是更高版本。作為參考,這里是構(gòu)建配置輸出。 誰能幫我理解為什么 rust-llvm 會出現(xiàn)這個錯誤?我是否需要手動更新 poky 存儲庫以使用更新版本的 rust-llvm?
    發(fā)表于 04-11 06:17

    Rust代碼中加載靜態(tài)庫時,出現(xiàn)錯誤 ` rust-lld: error: undefined symbol: malloc `怎么解決?

    我正在 MCUXpresso IDE 中創(chuàng)建一個靜態(tài)庫。我正在使用 redlib 在我的代碼中導(dǎo)入 ` [i]stdlib.h`。它成功地構(gòu)建了一個靜態(tài)庫。但是,靜態(tài)庫中未定義一些標(biāo)準(zhǔn)庫函數(shù),例如
    發(fā)表于 06-09 08:44

    嵌入式編程中為什么使用qemu?qemu的實際應(yīng)用

    qemu實際好用的應(yīng)用來進行詳細(xì)的描述。 2.嵌入式的裸機或RTOS編程 qemu的是指令翻譯進行的,所以可以根據(jù)實際的需求進行相應(yīng)的裸機開發(fā)和學(xué)習(xí),比如語言學(xué)習(xí),嵌入式C語言,嵌入式RUST語言,等等
    發(fā)表于 08-16 06:44

    KICAD插件使用說明書

    KiCad 插件系統(tǒng)是?個使?共享庫擴展 KiCad 功能的框架。 使?插件的?個主要優(yōu)點是在開發(fā)插件時沒有必要重建KiCad 套件; 事實上,可以借助 KiCad 源代碼樹中的??組
    發(fā)表于 02-25 11:58 ?8次下載

    Rust重寫的LSP:KCL IDE 插件的功能介紹與設(shè)計解析

    在這次更新中,我們發(fā)布了全新的 KCL VS Code 插件,并且用 Rust 重寫了 LSP 的 Server 端。我們提供了 IDE 中常用的代碼輔助功能,如高亮、跳轉(zhuǎn)、補全、Outline、懸停、錯誤提示等。
    的頭像 發(fā)表于 05-11 09:39 ?923次閱讀
    <b class='flag-5'>Rust</b>重寫的LSP:KCL IDE <b class='flag-5'>插件</b>的功能介紹與設(shè)計解析

    Rust UI框架:Slint UI簡單入門

    Slint 曾經(jīng)被稱為 SixtyFPS,特點是既快又小,是一個 Rust 編寫的綜合性 UI 工具包,用于為桌面和嵌入式設(shè)備構(gòu)建原生用戶界面。其開發(fā)團隊希望將 Slint 打造成下一代 GUI 工具包,因此從頭開始構(gòu)建項目時就
    的頭像 發(fā)表于 05-12 16:03 ?1.5w次閱讀
    <b class='flag-5'>Rust</b> UI<b class='flag-5'>框架</b>:Slint UI簡單入門

    JetBrains發(fā)布獨立Rust IDE:RustRover

    在推出 RustRover 之前,JetBrains 以插件形式在 IntelliJ IDEA 和 CLion 中支持 Rust 功能?,F(xiàn)在他們開發(fā)多年的開源插件已成為 RustRover 的基礎(chǔ)。此
    的頭像 發(fā)表于 09-18 16:47 ?992次閱讀
    JetBrains發(fā)布獨立<b class='flag-5'>Rust</b> IDE:RustRover

    [鴻蒙]OpenHarmony4.0的Rust開發(fā)

    背景 Rust 是一門靜態(tài)強類型語言,具有更安全的內(nèi)存管理、更好的運行性能、原生支持多線程開發(fā)等優(yōu)勢。Rust 官方也使用 Cargo 工具來專門為 Rust 代碼創(chuàng)建工程和構(gòu)建編譯
    的頭像 發(fā)表于 02-26 17:28 ?782次閱讀
    [鴻蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>開發(fā)