Closed gjz010 closed 5 years ago
(关于break掉的东西的一些讨论)
impl BlockDevice for ide::IDE
和impl BlockDevice for EmmcDriver
之类驱动和文件系统耦合过强,impl BlockDevice for BlockDriver
应该是足够的,但是会掉进Arc陷阱(Arc关于设备文件我能想到的重构方案有两种:(模仿Linux)基于File进行改造和(模仿现有的Stdin Stdout Vga等伪INode)基于INode进行改造 基于File的改造模仿Linux的file_operations,允许驱动注册设备文件,并劫持对于设备文件的所有操作。(我的代码仓库的现有的dev分支里已经实现了这种机制,并且提供了一个serial驱动作为样例。)缺点是使本来就混乱的FileLike更加混乱:文件和驱动共用File,只有套接字占用Socket,给进一步重构带来困难。 基于INode的改造则是模仿现有的Pipe、Vga等设备用INode,允许驱动注册一类INode并且对其进行操作。缺点是INode的操作和File的操作并不一定重合,编写不小心可能会再次导致“把mmap直接落到read_at上”之类问题。
Seems thinpad
board support is broken. However, I do not deem it a regression.
Refactored entire path-resolution system into a more Linux one: relative-based path resolution. Added basic support for mounting. Now ramfs module should work. This commit breaks these things:
Shared library breaks. (No absolute path for program)Fixed. Standalone version: #59