<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Rust構建QEMU插件的框架

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

Cannonball Rust 構建的 QEMU 插件的框架


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


例子


這里提供了幾個例子!

  • jaivana

一個簡單的跟蹤器,將一組可配置的事件記錄到文件或標準輸出中。

  • mons meg


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


安裝


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


	

cannonball = "0.2.4"

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

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


整體設計參考LevelDB,旨在作為NewSQL數據庫的存儲引擎

  • 支持嵌入式/單機存儲/遠程調用等多應用場景

  • 以Kiss作為開發理念,設計以簡單而高效為主導

  • 實現MVCC以支持ACID

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

  • 遠程連接使用ProtoBuf實現,支持多語言通信

  • 極小內存占用(占用/大量冷數據)

  • 安全讀取

組件引入


	

kip_db = "0.1.1-alpha.0"

代碼

代碼編譯


	

cargo build

代碼編譯(正式環境)


	

cargo build --release

單元測試


	

cargo test

性能基準測試


	

cargo bench

Docker鏡像編譯

編譯鏡像


	

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

運行鏡像


	

docker run kould/kip-db:v1


直接調用(基本使用)


	

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


審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 插件
    +關注

    關注

    0

    文章

    313

    瀏覽量

    22215
  • Docker
    +關注

    關注

    0

    文章

    438

    瀏覽量

    11633
  • qemu
    +關注

    關注

    0

    文章

    54

    瀏覽量

    5232
  • Rust
    +關注

    關注

    1

    文章

    224

    瀏覽量

    6401

原文標題:【Rust日報】2023-07-19 Cannonball -- Rust 構建的 QEMU 插件的框架

文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Rust GUI實踐之Rust-Qt模塊

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

    框架插件結構

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

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

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

    QEMU簡介

    目錄2.1 QEMU2.1.1 創建非標準的Rust程序2.1.2 代碼簡介2.1.3 交叉編譯2.1.4 二進制文件分析工具2.1.5 運行2.1.6調試在本節中,我們將引導您完成編寫,構建,刷新
    發表于 12-16 07:18

    RUST在嵌入式開發中的應用是什么

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

    如何利用C語言去調用rust靜態庫呢

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

    在Windows平臺使用Eclipse調試RT-Thread qemu-vexpress-a9 BSP工程

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

    Dockerfile構建環境報錯如何解決?

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

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

    我正在 MCUXpresso IDE 中創建一個靜態庫。我正在使用 redlib 在我的代碼中導入 ` [i]stdlib.h`。它成功地構建了一個靜態庫。但是,靜態庫中未定義一些標準庫函數,例如
    發表于 06-09 08:44

    嵌入式編程中為什么使用qemu?qemu的實際應用

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

    KICAD插件使用說明書

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

    Leptos利用細粒度的響應式來構建聲明性用戶界面

    Leptos 是一個全棧、同構的 Rust Web 框架,利用細粒度的響應式來構建聲明性用戶界面。
    的頭像 發表于 10-17 09:58 ?916次閱讀

    Rust GUI 庫發展現狀

    Rust GUI 庫發展現狀 最近有一篇關于 Rust GUI 的博客,這不,kas?這個? Another GUI toolkit ?框架也針對 Rust 的 GUI
    的頭像 發表于 12-21 15:00 ?2197次閱讀

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

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

    [鴻蒙]OpenHarmony4.0的Rust開發

    背景 Rust 是一門靜態強類型語言,具有更安全的內存管理、更好的運行性能、原生支持多線程開發等優勢。Rust 官方也使用 Cargo 工具來專門為 Rust 代碼創建工程和構建編譯
    的頭像 發表于 02-26 17:28 ?363次閱讀
    [鴻蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>開發
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>