一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

為FreeBSD構(gòu)建一個(gè)基本的Hello World概念驗(yàn)證內(nèi)核模塊

工程師鄧生 ? 來(lái)源:Rust語(yǔ)言中文社區(qū) ? 作者:Koalr ? 2022-09-07 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

使用 Rust 編寫(xiě) FreeBSD 內(nèi)核模塊

目前主流的操作系統(tǒng)內(nèi)核都是用 C/C++ 編寫(xiě)的,這些語(yǔ)言在避免常見(jiàn)的安全問(wèn)題方面捉襟見(jiàn)肘。Rust 等現(xiàn)代語(yǔ)言默認(rèn)提供更好的安全保證,并防止許多常見(jiàn)的內(nèi)存安全漏洞。

在這篇文章中,我們將簡(jiǎn)要介紹 Rust 為實(shí)現(xiàn)這一安全目標(biāo)所做的努力,并為 FreeBSD 構(gòu)建一個(gè)基本的Hello World概念驗(yàn)證內(nèi)核模塊。

模式匹配兼容性策略

當(dāng)使用枚舉定義不同類型的數(shù)據(jù)時(shí)會(huì)非常方便,但是作為庫(kù)的作者需要考慮的更多一點(diǎn),比如 enum 字段拓展后的兼容性問(wèn)題。假設(shè)開(kāi)始的定義為:

而后增加了Http2



如何編寫(xiě)庫(kù)代碼才能用使用者感知到這個(gè)變化而不產(chǎn)生 breaking change 呢,這里作者結(jié)合自己編寫(xiě)庫(kù)的經(jīng)驗(yàn)給出了三個(gè)場(chǎng)景下的解決方案。分別是:

Non-exhaustive enums

Translating typical Error inheritance

Enums with an “open-ended” variant

學(xué)習(xí)使用 Rust 迭代器和組合子

Rust 的迭代器搭配組合器非常有趣,可以讓你的代碼更簡(jiǎn)潔、更實(shí)用。這篇文檔側(cè)重于如何借助迭代器使您的代碼更易于閱讀或重構(gòu)。 ReadMore:https://kerkour.com/rust-combinators






審核編輯:劉清

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

    關(guān)注

    0

    文章

    37

    瀏覽量

    10981
  • 內(nèi)核模塊
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    3277
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    234

    瀏覽量

    7099

原文標(biāo)題:【Rust日?qǐng)?bào)】2022-08-06 使用 Rust 編寫(xiě) FreeBSD 內(nèi)核模塊

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】2 - 安裝編譯環(huán)境并測(cè)試Hello world!

    其中的gcc/riscv64-linux-musl-x86_64對(duì)我們才有用。 測(cè)試Hello world 程序編譯 以hello-world例,進(jìn)入該例子目錄直接執(zhí)行 make 即
    發(fā)表于 07-07 21:18

    RK3568開(kāi)發(fā)板內(nèi)核模塊實(shí)現(xiàn)-查看模塊信息

    在驅(qū)動(dòng)模塊加載之后,使用“modinfo helloworld.ko”命令可以獲得模塊的信息,包括模塊作者,模塊說(shuō)明,模塊支持的參數(shù)等等。
    發(fā)表于 05-16 11:18

    RK3568開(kāi)發(fā)板內(nèi)核模塊實(shí)現(xiàn)-模塊加載與卸載

    有了內(nèi)核模塊以后,我們要如何使用呢?編譯驅(qū)動(dòng)有倆種方式,那 Linux 驅(qū)動(dòng)的運(yùn)行方式也肯定有倆種。種就是將驅(qū)動(dòng)編譯進(jìn)內(nèi)核,這樣 Linux 系統(tǒng)啟動(dòng)后會(huì)自動(dòng)運(yùn)行程序。第二種就是將驅(qū)動(dòng)編譯成
    發(fā)表于 05-14 10:56

    RK3568開(kāi)發(fā)板內(nèi)核模塊實(shí)現(xiàn)-編譯模塊

    。內(nèi)核模塊是以 ko 后綴名,如下圖(圖 4-8)所示: 輸入“make clean”命令清除編譯文件,如下圖(圖 4-9)所示:
    發(fā)表于 05-12 11:09

    RK3568開(kāi)發(fā)板內(nèi)核模塊實(shí)現(xiàn)-編寫(xiě) Makefile

    編譯驅(qū)動(dòng)程序還需要使用 Makefile 文件。我們 helloworld.c 編寫(xiě)個(gè)簡(jiǎn)單的 Makefile, Makefile 文件和源文件 helloworld.c 位于同
    發(fā)表于 04-24 13:36

    在mimxrt1170_evk調(diào)試hello_world出現(xiàn)硬件傳輸錯(cuò)誤怎么解決?

    我按照視頻在 cm7 中調(diào)試hello_world示例,我的鏈接服務(wù)器正在運(yùn)行, debug prove 的 FW 也是最新的。 但是我仍然收到這個(gè)錯(cuò)誤。 16:status-poll 中的目標(biāo)
    發(fā)表于 03-25 07:31

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux驅(qū)動(dòng)模塊之帶參數(shù)的驅(qū)動(dòng)模塊

    命令行或配置文件進(jìn)行配置。驅(qū)動(dòng)模塊參數(shù)提供了種動(dòng)態(tài)配置和調(diào)整驅(qū)動(dòng)行為的方式。 在Linux內(nèi)核中,驅(qū)動(dòng)模塊參數(shù)通常使用module_param宏進(jìn)行定義和注冊(cè)。下面是
    發(fā)表于 03-13 09:52

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux驅(qū)動(dòng)模塊之helloworld驅(qū)動(dòng)

    )))將cleanup_module()函數(shù)與退出函數(shù)進(jìn)行關(guān)聯(lián)。 在Linux內(nèi)核卸載模塊時(shí),會(huì)調(diào)用cleanup_module()函數(shù),它實(shí)際上是個(gè)出口點(diǎn)函數(shù)。通過(guò)將module_
    發(fā)表于 03-12 10:35

    飛凌嵌入式ElfBoard ELF 1板卡-Linux驅(qū)動(dòng)模塊之帶參數(shù)的驅(qū)動(dòng)模塊

    命令行或配置文件進(jìn)行配置。驅(qū)動(dòng)模塊參數(shù)提供了種動(dòng)態(tài)配置和調(diào)整驅(qū)動(dòng)行為的方式。在Linux內(nèi)核中,驅(qū)動(dòng)模塊參數(shù)通常使用module_param宏進(jìn)行定義和注冊(cè)。下面是
    發(fā)表于 03-12 10:34

    飛凌嵌入式ElfBoard ELF 1板卡-Linux驅(qū)動(dòng)模塊之helloworld驅(qū)動(dòng)

    關(guān)聯(lián)。在Linux內(nèi)核卸載模塊時(shí),會(huì)調(diào)用cleanup_module()函數(shù),它實(shí)際上是個(gè)出口點(diǎn)函數(shù)。通過(guò)將module_exit()定義
    發(fā)表于 03-12 10:15

    使用MCUXpresso for VS Code插件開(kāi)發(fā)Zephyr的hello world

    本期來(lái)到Zephyr實(shí)戰(zhàn)經(jīng)驗(yàn)演練,小編帶著大家起使用MCUXpresso for VS Code插件來(lái)開(kāi)發(fā)個(gè)屬于Zephyr的hello wor
    的頭像 發(fā)表于 01-03 09:21 ?1262次閱讀
    使用MCUXpresso for VS Code插件開(kāi)發(fā)Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>

    THS3001構(gòu)建個(gè)簡(jiǎn)單的SPICE模型

    電子發(fā)燒友網(wǎng)站提供《THS3001構(gòu)建個(gè)簡(jiǎn)單的SPICE模型.pdf》資料免費(fèi)下載
    發(fā)表于 10-29 10:11 ?1次下載
    <b class='flag-5'>為</b>THS3001<b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>簡(jiǎn)單的SPICE模型

    linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核

    ,需要了解Linux內(nèi)核的基本概念和API。以下是些關(guān)鍵概念: 1.1 內(nèi)核模塊:Linux內(nèi)核模塊
    的頭像 發(fā)表于 08-30 15:02 ?1104次閱讀

    NVIDIA全面轉(zhuǎn)向開(kāi)源GPU內(nèi)核模塊

    借助 R515 驅(qū)動(dòng)程序,NVIDIA 于 2022 年 5 月發(fā)布了套開(kāi)源的 Linux GPU 內(nèi)核模塊,該模塊采用雙許可證,即 GPL 和 MIT 許可。初始版本主要面向數(shù)據(jù)中心計(jì)算 GPU,而 GeForce 和工作站
    的頭像 發(fā)表于 07-25 09:56 ?1083次閱讀
    NVIDIA全面轉(zhuǎn)向開(kāi)源GPU<b class='flag-5'>內(nèi)核模塊</b>

    英偉達(dá)將全面轉(zhuǎn)向開(kāi)源GPU內(nèi)核模塊

    英偉達(dá)公司近期宣布了項(xiàng)重大決策,即全面轉(zhuǎn)向開(kāi)源GPU內(nèi)核模塊,并計(jì)劃最終以此取代閉源驅(qū)動(dòng)程序。這戰(zhàn)略轉(zhuǎn)變標(biāo)志著英偉達(dá)在開(kāi)源領(lǐng)域邁出了重要步,旨在為用戶提供更強(qiáng)大、更全面的Linu
    的頭像 發(fā)表于 07-19 15:26 ?899次閱讀