【发布时间】:2011-03-23 09:01:09
【问题描述】:
我即将使用 FOpen、FRead、FWrite、FSeek 和 FClose 为 Netburner 嵌入式设备(非 Windows)实现自定义 VFS(虚拟文件系统)。我很惊讶我找不到可用的 VFS 的 FOpen* 版本。它将使其对嵌入式设备更加便携。
我在这里找到了一些关于为 SQLite 创建 VFS 的信息 http://sqlite.org/c3ref/vfs.html 但信息非常详细,我对实施还有很多其他问题。
我在 Win、OS2、Linux 的 SQLite 源代码中有一些示例 VFS,但它们没有很多 cmets,只有源代码。
我可以使用上面链接中提供的信息和示例来创建我的自定义 VFS,但我敢肯定,如果我这样做,我会错过一些东西。
我的问题是:
- 还有关于我缺少的 SQLite VFS 的更多文档吗?也许是实施指南?
- 是否有可用的 SQLite VFS 的 Fopen 版本?
- 创建自定义 SQLite VFS 后,是否有可用的单元测试代码来测试它?
- 您希望分享的关于实施 SQLite VFS 的建议、cmets 和经验。
【问题讨论】:
-
如果您在嵌入式设备上运行 Linux,为什么需要实现新的 SQLite VFS?
-
它不是 Linux、Windows 或 OS2,它是 freertos.org 的修改版本,不包括 Linux/windows 库
-
我认为您的意思是“实施指南”而不是“实施公会”。行会是工匠的组织(有点像工会,但更多,嗯,中世纪)。我对你的问题没有很好的答案,但我怀疑
fopen和朋友不能用于 sqlite,因为没有锁定机制,并且语义,特别是与数据何时到达永久存储相关的语义,没有被确定下来因为 sqlite 需要它们。 -
错字。至于锁定,您可以设置 SQLITE_THREADSAFE=0 以消除对锁定机制的需要,或者您可以使用 sqlite3_file 结构创建自己的,或者我正在学习。我已经开始从 Win/Linux/OS2 的示例中创建一个 VFS,但是如果没有真正的文档,它会很慢。
标签: sqlite fopen vfs freertos netburner