0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为FreeBSD构建一个基本的Hello World概念验证内核模块

工程师邓生 来源:Rust语言中文社区 作者:Koalr 2022-09-07 10:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

使用 Rust 编写 FreeBSD 内核模块

目前主流的操作系统内核都是用 C/C++ 编写的,这些语言在避免常见的安全问题方面捉襟见肘。Rust 等现代语言默认提供更好的安全保证,并防止许多常见的内存安全漏洞。

在这篇文章中,我们将简要介绍 Rust 为实现这一安全目标所做的努力,并为 FreeBSD 构建一个基本的Hello World概念验证内核模块。

模式匹配兼容性策略

当使用枚举定义不同类型的数据时会非常方便,但是作为库的作者需要考虑的更多一点,比如 enum 字段拓展后的兼容性问题。假设开始的定义为:

而后增加了Http2



如何编写库代码才能用使用者感知到这个变化而不产生 breaking change 呢,这里作者结合自己编写库的经验给出了三个场景下的解决方案。分别是:

Non-exhaustive enums

Translating typical Error inheritance

Enums with an “open-ended” variant

学习使用 Rust 迭代器和组合子

Rust 的迭代器搭配组合器非常有趣,可以让你的代码更简洁、更实用。这篇文档侧重于如何借助迭代器使您的代码更易于阅读或重构。 ReadMore:https://kerkour.com/rust-combinators






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • freebsd
    +关注

    关注

    0

    文章

    37

    浏览量

    11145
  • 内核模块
    +关注

    关注

    0

    文章

    10

    浏览量

    4424
  • Rust
    +关注

    关注

    1

    文章

    241

    浏览量

    7649

原文标题:【Rust日报】2022-08-06 使用 Rust 编写 FreeBSD 内核模块

文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何将evkbmimxrt1170_hello_world_cm7.bin下载到 QSPI Flash?

    我修改了 hello_world.c 如下 PRINTF(“测试你好世界。 那么,是否在调试 USB 端口上呈现“TEST hello world”? 1. 使用哪个 USB 端口下载.bin
    发表于 04-22 11:20

    在 MCUXpresso for VSCode for imx93EVK 中导入 Trustzone hello_world_ns 的示例应用失败,为什么?

    我正在尝试从 MCUXpresso for VSCode 中的 mcuxsdk 存储库导入 hello_world_ns 示例项目。在“从存储库导入示例”对话框中,我选择 SDK(我已经尝试
    发表于 04-20 06:31

    小鹏汽车正式发布世界模型X-World技术报告

    近日,小鹏汽车正式发布世界模型X-World技术报告,从数据、模型、训练、验证及应用等多层面详解X-World构建与使用。
    的头像 发表于 04-02 10:27 2425次阅读
    小鹏汽车正式发布世界模型X-<b class='flag-5'>World</b>技术报告

    如何重新编译内核以启用BINFMT_MISC支持

    我喜欢启用这个内核功能。 实现这目标的最简单方法是什么? 我可以关注本说明毫无问题地构建内核
    发表于 03-18 07:26

    基于凌羽派的OpenHarmony北向应用开发:Hello World 示例应用

    本示例是基于 OpenHarmony 开发的第一个简单应用,用于展示如何创建、构建和部署基本的应用程序。 环境配置如下所示: API:18 SDK
    发表于 02-25 11:25

    Linux内核模块的加载机制

    init_module,或者更现代的finit_module。 这些系统调用将模块的二进制内容读入内核空间,并进行系列检查。 这些检查包括如下: 首先是验证
    发表于 11-25 06:59

    VS Code运行 pytest_hello_world.py

    VS Code运行 pytest_hello_world.py
    的头像 发表于 11-24 00:33 758次阅读

    【迅工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解

    【迅工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
    的头像 发表于 11-21 13:25 1619次阅读
    【迅<b class='flag-5'>为</b>工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568<b class='flag-5'>内核模块</b>符号导出详解

    ddr200t开发板运行hello world

    进入hello world目录进行交叉编译 下载驱动,板子和电脑连接后,驱动正常的时候,查看设备管理器发现增加了com4,数字可能不
    发表于 10-27 08:34

    【OK3506-S12Mini试用评测】编译你的第一个内核模块

    将以 OK3506 开发板例,介绍如何在 Ubuntu 虚拟机中使用提供的交叉编译工具链编译简单的 hello.ko 内核模块,并将其
    发表于 10-24 21:00

    【Milk-V Duo S 开发板免费体验】2 - 安装编译环境并测试Hello world!

    其中的gcc/riscv64-linux-musl-x86_64对我们才有用。 测试Hello world 程序编译 以hello-world例,进入该例子目录直接执行 make 即
    发表于 07-07 21:18

    RK3568开发板内核模块实现-查看模块信息

    在驱动模块加载之后,使用“modinfo helloworld.ko”命令可以获得模块的信息,包括模块作者,模块说明,模块支持的参数等等。
    发表于 05-16 11:18

    RK3568开发板内核模块实现-模块加载与卸载

    有了内核模块以后,我们要如何使用呢?编译驱动有俩种方式,那 Linux 驱动的运行方式也肯定有俩种。种就是将驱动编译进内核,这样 Linux 系统启动后会自动运行程序。第二种就是将驱动编译成
    发表于 05-14 10:56

    RK3568开发板内核模块实现-编译模块

    内核模块是以 ko 后缀名,如下图(图 4-8)所示: 输入“make clean”命令清除编译文件,如下图(图 4-9)所示:
    发表于 05-12 11:09

    RK3568开发板内核模块实现-编写 Makefile

    编译驱动程序还需要使用 Makefile 文件。我们 helloworld.c 编写简单的 Makefile, Makefile 文件和源文件 helloworld.c 位于同
    发表于 04-24 13:36