现象 今天在为DragonOS编译http服务器程序时,遇到了一个神奇的bug: 程序在一台机器A上能够正常编 …
DragonOS网络子系统介绍
本文将对DragonOS网络子系统进行简要介绍。出于“快速实现功能”的考虑,DragonOS目前网络子系统基于 …
Rust Arc指针类型转换:dyn转换为具体类型
前言 在写代码的时候,经常通过dyn关键字+Arc指针来实现多态。但是,有时候会遇到这样一个需求:我们想获取具 …
DragonOS新版地址映射管理及VMA机制设计
DragonOS官网:https://dragonos.org 1. 地址映射管理 1.1. 映射机制设计 对 …
Fork进程后,是否与父进程共享stdio?
今天想到一个问题:如果我在代码里面,fork当前进程,然后两个进程都执行scanf(),那会发生什么?键盘输入 …
wireshark调试DragonOS的网络
由于开发的需要,要调试DragonOS的网卡驱动,在此写个博客记录一下。 qemu参数设置 设置qemu的启动 …
教程:为Linux系统导出内核头文件
最近由于项目需要,要编译mlibc,其中需要linux kernel headers,而使用apt安装的头文件 …
Rust数组默认初始化:初始化未实现Copy trait的类型
在安全的Rust中,编译器要求数组一旦被声明,它所占用的内存应当被完全初始化。但是,在一些情况下,这样会导致没 …
RAII技术:在Rust中实现带有守卫的自旋锁,支持一定程度上的编译期并发安全检查
本文介绍了一种使用了RAII技术的自旋锁,配合Rust的生命周期及所有权机制,能够在减少代码量的同时,很好的解决自旋锁的“忘记放锁”、“双重释放”、“未加锁就访问”的并发安全问题。并且这种自旋锁能够支持编译期的检查,任何不符合以上安全要求的代码,将无法通过编译。
在Rust中优雅地向上级传递Result<>中的错误信息
在Rust中,我们会经常使用Result<xxxx,xxxx>来返回正确结果和错误信息。但是,在这样的需 …